#include "OgreTypeConverter.h" #include "Mesh.h" #include #include namespace Ogre { GtpVisibilityPreprocessor::AxisAlignedBox3 OgreTypeConverter::ConvertFromOgre(const AxisAlignedBox &box) { const GtpVisibilityPreprocessor::Vector3 bmin = ConvertFromOgre(box.getMinimum()); const GtpVisibilityPreprocessor::Vector3 bmax = ConvertFromOgre(box.getMaximum()); return GtpVisibilityPreprocessor::AxisAlignedBox3(bmin, bmax); } GtpVisibilityPreprocessor::Vector3 OgreTypeConverter::ConvertFromOgre(const Vector3 &v) { return GtpVisibilityPreprocessor::Vector3(v.x, v.y, v.z); } AxisAlignedBox OgreTypeConverter::ConvertToOgre(const GtpVisibilityPreprocessor::AxisAlignedBox3 &box) { const Vector3 bmin = ConvertToOgre(box.Min()); const Vector3 bmax = ConvertToOgre(box.Max()); return AxisAlignedBox(bmin, bmax); } Vector3 OgreTypeConverter::ConvertToOgre(const GtpVisibilityPreprocessor::Vector3 &v) { return Vector3(v.getX(), v.getY(), v.getZ()); } ManualObject *OgreTypeConverter::ConvertToOgre(GtpVisibilityPreprocessor::Mesh *mesh, SceneManager *sceneMgr) { //if (!mesh) return NULL; char name[100]; sprintf(name, "mesh%06d", mesh->GetId()); ManualObject* manual = sceneMgr->createManualObject(name); manual->begin("BaseWhiteNoLighting", RenderOperation::OT_LINE_STRIP); // create vertices GtpVisibilityPreprocessor::VertexContainer::const_iterator vit, vit_end = mesh->mVertices.end(); for (vit = mesh->mVertices.begin(); vit != vit_end; ++ vit) { const GtpVisibilityPreprocessor::Vector3 vtx = *vit; manual->position(vtx.x, vtx.y, vtx.z); manual->colour(1.0f, 0.0f, 0.0f); } // create faces indices GtpVisibilityPreprocessor::FaceContainer::const_iterator fit, fit_end = mesh->mFaces.end(); for (fit = mesh->mFaces.begin(); fit != fit_end; ++ fit) { GtpVisibilityPreprocessor::Face *face = *fit; GtpVisibilityPreprocessor::VertexIndexContainer::const_iterator iit, iit_end = face->mVertexIndices.end(); //GtpVisibilityPreprocessor::VertexIndexContainer::const_reverse_iterator // iit, iit_end = face->mVertexIndices.rend(); for (iit = face->mVertexIndices.begin(); iit != iit_end; ++ iit) { const int index = *iit; manual->index(index); } } manual->end(); //mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(manual); return manual; } }