source: GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/src/OgreTypeConverter.cpp @ 2122

Revision 2122, 2.2 KB checked in by mattausch, 17 years ago (diff)
RevLine 
[860]1#include "OgreTypeConverter.h"
[1593]2#include "Mesh.h"
3#include <OgreManualObject.h>
4#include <OgreSceneManager.h>
[860]5
6
[863]7namespace Ogre
8{
9
10GtpVisibilityPreprocessor::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]19GtpVisibilityPreprocessor::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]25AxisAlignedBox 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]34Vector3 OgreTypeConverter::ConvertToOgre(const GtpVisibilityPreprocessor::Vector3 &v)
[860]35{
[863]36        return Vector3(v.getX(), v.getY(), v.getZ());
[860]37}
[1593]38
39
40ManualObject *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}
Note: See TracBrowser for help on using the repository browser.