[860] | 1 | #include "OgreTypeConverter.h" |
---|
[1593] | 2 | #include "Mesh.h" |
---|
| 3 | #include <OgreManualObject.h> |
---|
| 4 | #include <OgreSceneManager.h> |
---|
[860] | 5 | |
---|
| 6 | |
---|
[863] | 7 | namespace Ogre |
---|
| 8 | { |
---|
| 9 | |
---|
| 10 | GtpVisibilityPreprocessor::AxisAlignedBox3 OgreTypeConverter::ConvertFromOgre(const AxisAlignedBox &box)
|
---|
[860] | 11 | {
|
---|
[863] | 12 | const GtpVisibilityPreprocessor::Vector3 bmin = ConvertFromOgre(box.getMinimum());
|
---|
| 13 | const GtpVisibilityPreprocessor::Vector3 bmax = ConvertFromOgre(box.getMaximum());
|
---|
| 14 |
|
---|
| 15 | return GtpVisibilityPreprocessor::AxisAlignedBox3(bmin, bmax);
|
---|
[860] | 16 | }
|
---|
| 17 |
|
---|
[1593] | 18 |
|
---|
[863] | 19 | GtpVisibilityPreprocessor::Vector3 OgreTypeConverter::ConvertFromOgre(const Vector3 &v)
|
---|
[860] | 20 | {
|
---|
[863] | 21 | return GtpVisibilityPreprocessor::Vector3(v.x, v.y, v.z);
|
---|
[860] | 22 | }
|
---|
[1593] | 23 |
|
---|
| 24 |
|
---|
[863] | 25 | AxisAlignedBox OgreTypeConverter::ConvertToOgre(const GtpVisibilityPreprocessor::AxisAlignedBox3 &box)
|
---|
[860] | 26 | {
|
---|
[863] | 27 | const Vector3 bmin = ConvertToOgre(box.Min());
|
---|
| 28 | const Vector3 bmax = ConvertToOgre(box.Max());
|
---|
| 29 |
|
---|
| 30 | return AxisAlignedBox(bmin, bmax);
|
---|
[860] | 31 | }
|
---|
| 32 |
|
---|
[1593] | 33 |
|
---|
[863] | 34 | Vector3 OgreTypeConverter::ConvertToOgre(const GtpVisibilityPreprocessor::Vector3 &v) |
---|
[860] | 35 | { |
---|
[863] | 36 | return Vector3(v.getX(), v.getY(), v.getZ()); |
---|
[860] | 37 | } |
---|
[1593] | 38 | |
---|
| 39 | |
---|
| 40 | ManualObject *OgreTypeConverter::ConvertToOgre(GtpVisibilityPreprocessor::Mesh *mesh, SceneManager *sceneMgr) |
---|
| 41 | { |
---|
[1621] | 42 | //if (!mesh) return NULL; |
---|
[1616] | 43 | |
---|
[1593] | 44 | char name[100]; |
---|
[1616] | 45 | sprintf(name, "mesh%06d", mesh->GetId()); |
---|
[1593] | 46 | |
---|
| 47 | ManualObject* manual = sceneMgr->createManualObject(name);
|
---|
| 48 | manual->begin("BaseWhiteNoLighting", RenderOperation::OT_LINE_STRIP);
|
---|
| 49 |
|
---|
| 50 | // create vertices
|
---|
| 51 | GtpVisibilityPreprocessor::VertexContainer::const_iterator vit,
|
---|
| 52 | vit_end = mesh->mVertices.end();
|
---|
| 53 |
|
---|
| 54 | for (vit = mesh->mVertices.begin(); vit != vit_end; ++ vit)
|
---|
| 55 | {
|
---|
| 56 | const GtpVisibilityPreprocessor::Vector3 vtx = *vit;
|
---|
| 57 | manual->position(vtx.x, vtx.y, vtx.z);
|
---|
[1602] | 58 | manual->colour(1.0f, 0.0f, 0.0f);
|
---|
[1593] | 59 | }
|
---|
| 60 |
|
---|
| 61 | // create faces indices
|
---|
| 62 | GtpVisibilityPreprocessor::FaceContainer::const_iterator fit, fit_end = mesh->mFaces.end();
|
---|
| 63 |
|
---|
| 64 | for (fit = mesh->mFaces.begin(); fit != fit_end; ++ fit)
|
---|
| 65 | {
|
---|
| 66 | GtpVisibilityPreprocessor::Face *face = *fit;
|
---|
| 67 | GtpVisibilityPreprocessor::VertexIndexContainer::const_iterator
|
---|
| 68 | iit, iit_end = face->mVertexIndices.end();
|
---|
| 69 |
|
---|
| 70 | for (iit = face->mVertexIndices.begin(); iit != iit_end; ++ iit)
|
---|
| 71 | {
|
---|
| 72 | const int index = *iit;
|
---|
| 73 | manual->index(index);
|
---|
| 74 | } |
---|
| 75 | } |
---|
| 76 | |
---|
| 77 | manual->end();
|
---|
| 78 | |
---|
| 79 | return manual; |
---|
| 80 | } |
---|
| 81 | |
---|
| 82 | |
---|
[863] | 83 | } |
---|