/* ----------------------------------------------------------------------------- This source file is part of the GameTools Project http://www.gametools.org Author: Martin Szydlowski ----------------------------------------------------------------------------- */ #ifndef _OgreBvHierarchySceneNode_H__ #define _OgreBvHierarchySceneNode_H__ #include #include "OgreBvhRenderable.h" namespace Ogre { class BvHierarchySceneNode : public SceneNode, public BvhRenderable { public: BvHierarchySceneNode(SceneManager *creator): SceneNode(creator) {}; BvHierarchySceneNode(SceneManager *creator, const String& name): SceneNode(creator, name) {}; ~BvHierarchySceneNode() {}; // gather info for kd-tree creation virtual void computeScene(BvhPlaneEventList& events, AxisAlignedBox& aabb, int& nObjects, bool includeChildren = true); // add all contained objects to render queue virtual void queueObjects(Camera* cam, RenderQueue* queue, bool onlyShadowCasters); // place all entities in geometry queue (for CHC) virtual void getGeometryList(GtpVisibility::GeometryVector *geometryList); // return a bounding box enclosing all objects virtual AxisAlignedBox getBoundingBox(void) const; // DEBUG String dumpToString(void); protected: virtual void _updateBounds(void); typedef std::set StringSet; static StringSet& getExcludedMovables(void); }; } // namespace Ogre #endif // _OgreBvHierarchySceneNode_H__