1 | #ifndef _SceneNodeHierarchyInterface_H__
|
---|
2 | #define _SceneNodeHierarchyInterface_H__
|
---|
3 |
|
---|
4 | #include "OgrePlatformHierarchyInterface.h"
|
---|
5 | #include "VisibilityInfo.h"
|
---|
6 | #include "QueryManager.h"
|
---|
7 |
|
---|
8 |
|
---|
9 | namespace Ogre {
|
---|
10 |
|
---|
11 | /**
|
---|
12 | This class implements the hierarchy interface for the Ogre scene node hierarchy.
|
---|
13 | */
|
---|
14 | class SceneNodeHierarchyInterface: public PlatformHierarchyInterface
|
---|
15 | {
|
---|
16 | public:
|
---|
17 | /** Construction taking the current scene manager and the current
|
---|
18 | rendersystem as argument
|
---|
19 | @param sm current scene manager
|
---|
20 | @param rsys current render system
|
---|
21 | */
|
---|
22 | SceneNodeHierarchyInterface(SceneManager *sm, RenderSystem *rsys);
|
---|
23 |
|
---|
24 | bool IsLeaf(GtpVisibility::HierarchyNode *node) const;
|
---|
25 |
|
---|
26 | void TraverseNode(GtpVisibility::HierarchyNode *node);
|
---|
27 | void RenderNode(GtpVisibility::HierarchyNode *node);
|
---|
28 | void PullUpVisibility(GtpVisibility::HierarchyNode *node) const;
|
---|
29 | bool HasGeometry(GtpVisibility::HierarchyNode *node) const;
|
---|
30 | float GetSquaredDistance(GtpVisibility::HierarchyNode *node) const;
|
---|
31 |
|
---|
32 | void SetNodeVisible(GtpVisibility::HierarchyNode *node, const bool visible) const;
|
---|
33 | void SetLastVisited(GtpVisibility::HierarchyNode *node,
|
---|
34 | const unsigned int frameId) const;
|
---|
35 |
|
---|
36 | bool IsNodeVisible(GtpVisibility::HierarchyNode *node) const;
|
---|
37 | unsigned int LastVisited(GtpVisibility::HierarchyNode *node) const;
|
---|
38 |
|
---|
39 | AxisAlignedBox *GetBoundingBox(GtpVisibility::HierarchyNode *node);
|
---|
40 |
|
---|
41 | void VisualizeCulledNode(GtpVisibility::HierarchyNode *node,
|
---|
42 | GtpVisibility::CullingType type) const;
|
---|
43 |
|
---|
44 | void GetNodeGeometryList(GtpVisibility::HierarchyNode *node,
|
---|
45 | GeometryVector *geometryList,
|
---|
46 | bool includeChildren);
|
---|
47 |
|
---|
48 | void DetermineFullVisibility(GtpVisibility::HierarchyNode *node) const {}
|
---|
49 |
|
---|
50 | GtpVisibility::HierarchyNode *GetRandomLeaf(GtpVisibility::HierarchyNode *root) { return NULL;}
|
---|
51 |
|
---|
52 | bool IsNodeFullyVisible(GtpVisibility::HierarchyNode *node) const { return false;}
|
---|
53 |
|
---|
54 | void CollectLeaves(GtpVisibility::HierarchyNode *root, GtpVisibility::HierarchyNodeContainer &nodes) {};
|
---|
55 | };
|
---|
56 |
|
---|
57 | } // namespace Ogre
|
---|
58 | #endif // SceneNodeHierarchyInterface_H |
---|