source: branches/VUT/0.2/Ogre/include/OgreOctreeHierarchyInterface.h @ 174

Revision 174, 2.3 KB checked in by mattausch, 19 years ago (diff)
Line 
1#ifndef _OctreeHierarchyInterface_H__
2#define _OctreeHierarchyInterface_H__
3
4#include <OgreOctree.h>
5#include <OgreOctreeSceneManager.h>
6#include "OgreSceneNodeHierarchyInterface.h"
7
8namespace Ogre {
9/**
10        This class implements the hierarchy interface for the Ogre octree hierarchy.
11*/
12class OctreeHierarchyInterface : public SceneNodeHierarchyInterface
13{
14public:
15        OctreeHierarchyInterface(OctreeSceneManager *sm, RenderSystem *rsys);
16       
17        /** Sets the number of nodes in this octree
18                @remark do not confuse this with the OctreeNode class which is derived from SceneNode
19                @param num number of nodes in the octree
20        */
21        void SetNumOctreeNodes(unsigned int num);
22
23        /** Gets the given option for the scene traverser.
24            @remarks
25                See setOption
26        */
27        void PullUpVisibility(GtpVisibility::HierarchyNode *node);
28       
29        /** Traverses and renders the given node.
30                @param node current node
31                @remark pushes children on a distance queue.
32        */
33        void TraverseNode(GtpVisibility::HierarchyNode *node);
34        /** @copydoc HierarchyInterface::RenderNode */
35        void RenderNode(GtpVisibility::HierarchyNode *node);
36        bool IsLeaf(GtpVisibility::HierarchyNode *node) const;
37        bool HasGeometry(GtpVisibility::HierarchyNode *node) const;
38        float GetSquaredDistance(GtpVisibility::HierarchyNode *node) const;
39       
40        void SetNodeVisible(GtpVisibility::HierarchyNode *node, const bool visible);
41        void SetLastVisited(GtpVisibility::HierarchyNode *node, const unsigned int frameId);
42
43        bool IsNodeVisible(GtpVisibility::HierarchyNode *node) const;
44        unsigned int LastVisited(GtpVisibility::HierarchyNode *node) const;
45
46        void VisualizeCulledNode(GtpVisibility::HierarchyNode *node,
47                                                         GtpVisibility::CullingType type);
48
49        void GetNodeGeometryList(GtpVisibility::HierarchyNode *node,
50                                                         GtpVisibility::GeometryList *geometryList,
51                                                         bool includeChildren);
52       
53protected:
54        /** Returns pointer to the bounding box of the node.
55                @param node current hierarchy node
56                @returns bounding box of current node
57        */
58        AxisAlignedBox *GetBoundingBox(GtpVisibility::HierarchyNode *node);
59        /** Returns squared distance of center of box with respect to the camera .
60                @param cam current camera
61                @param box axis aligned box
62        */
63        Real GetSquaredViewDepth(const Camera* cam, const AxisAlignedBox* box) const;
64};
65} // namespace Ogre
66
67#endif // OctreeHierarchyInterface_H
Note: See TracBrowser for help on using the repository browser.