source: GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SceneEntity.cpp @ 2841

Revision 2841, 1.8 KB checked in by mattausch, 16 years ago (diff)
Line 
1#include "SceneEntity.h"
2#include "glInterface.h"
3#include "Geometry.h"
4#include "Material.h"
5#include "RenderState.h"
6#include "Shape.h"
7#include <Cg/cg.h>
8#include <Cg/cgGL.h>
9
10
11namespace CHCDemoEngine
12{
13
14SceneEntity::SceneEntity(Transform3 *trafo): mTransform(trafo)
15{
16}
17
18
19SceneEntity::~SceneEntity()
20{
21}
22
23
24void SceneEntity::GetCurrentLODLevel(ShapeContainer &shapes)
25{
26        ShapeContainer::const_iterator sit, sit_end;
27
28        if (mLODInfos->empty())
29        {
30                sit = mShapes.begin(); sit_end = mShapes.end();
31        }
32
33        float mDistance = 0.0f;
34
35        int i = 0;
36
37        LODInfo *info;
38
39        LODInfoContainer::const_iterator lid, lid_end = mLODInfos.end();
40
41        for (lid = mLODInfos.begin(); lid != lid_end; ++ lid)
42        {
43                info = *lid;
44
45                if (info->mDistance > mDistance)
46                {
47                        sit = info->mShapes.begin();
48                        sit_end = info->mShapes.end();
49                        break;
50                }
51        }
52
53        for (; sit != sit_end; ++ sit)
54        {
55                shapes.push_back(*sit);
56        }
57}
58
59
60void SceneEntity::Render(RenderState *state)
61{
62        //if (mMaterial) mMaterial->Render(state);
63        float mDistance = 0.0f;
64
65        static ShapeContainer shapes;
66        shapes.clear();
67
68        GetCurrentLODLevel(shapes);
69
70        ShapeContainer::const_iterator sit, sit_end = shapes.end();
71
72        for (; sit != sit_end; ++ sit)
73        {
74                (*sit)->Render(state);
75        }
76}
77
78
79void SceneEntity::AddShape(Shape *shape)
80{
81        mShapes.push_back(shape);
82}
83
84
85void SceneEntity::SetTransform(Transform3 *trafo)
86{
87        mTransform = trafo;
88}
89
90
91void SceneEntity::SetLastRendered(int lastRendered)
92{
93        mLastRendered = lastRendered;
94}
95
96
97int SceneEntity::GetLastRendered() const
98{
99        return mLastRendered;
100}
101
102
103AxisAlignedBox3 SceneEntity::GetBoundingBox() const
104{
105#ifdef TODO
106        AxisAlignedBox3 box = mGeometry->GetBoundingBox();
107        if (mTransform) Transform(box, *mTransform);
108#else
109        AxisAlignedBox3 box;
110#endif
111       
112
113        return box;
114}
115
116
117}
Note: See TracBrowser for help on using the repository browser.