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

Revision 2122, 2.2 KB checked in by mattausch, 17 years ago (diff)
Line 
1#include "OgreTypeConverter.h"
2#include "Mesh.h"
3#include <OgreManualObject.h>
4#include <OgreSceneManager.h>
5
6
7namespace Ogre
8{
9
10GtpVisibilityPreprocessor::AxisAlignedBox3 OgreTypeConverter::ConvertFromOgre(const AxisAlignedBox &box)
11{
12        const GtpVisibilityPreprocessor::Vector3 bmin = ConvertFromOgre(box.getMinimum());
13        const GtpVisibilityPreprocessor::Vector3 bmax = ConvertFromOgre(box.getMaximum());
14
15        return GtpVisibilityPreprocessor::AxisAlignedBox3(bmin, bmax);
16}
17
18
19GtpVisibilityPreprocessor::Vector3 OgreTypeConverter::ConvertFromOgre(const Vector3 &v)
20{
21    return GtpVisibilityPreprocessor::Vector3(v.x, v.y, v.z);
22}
23
24
25AxisAlignedBox OgreTypeConverter::ConvertToOgre(const GtpVisibilityPreprocessor::AxisAlignedBox3 &box)
26{
27        const Vector3 bmin = ConvertToOgre(box.Min());
28        const Vector3 bmax = ConvertToOgre(box.Max());
29
30        return AxisAlignedBox(bmin, bmax);
31}
32
33
34Vector3 OgreTypeConverter::ConvertToOgre(const GtpVisibilityPreprocessor::Vector3 &v)
35{
36        return Vector3(v.getX(), v.getY(), v.getZ());
37}
38
39
40ManualObject *OgreTypeConverter::ConvertToOgre(GtpVisibilityPreprocessor::Mesh *mesh, SceneManager *sceneMgr)
41{
42        //if (!mesh)    return NULL;
43
44        char name[100];
45        sprintf(name, "mesh%06d", mesh->GetId());
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);
58                manual->colour(1.0f, 0.0f, 0.0f);
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
83}
Note: See TracBrowser for help on using the repository browser.