/* ----------------------------------------------------------------------------- This source file is part of the GameTools Project http://www.gametools.org Author: Martin Szydlowski ----------------------------------------------------------------------------- */ #ifndef _OgreKdTreeSceneNode_H__ #define _OgreKdTreeSceneNode_H__ #include #include "OgreKdRenderable.h" namespace Ogre { class KdTreeSceneNode : public SceneNode, public KdRenderable { public: KdTreeSceneNode(SceneManager *creator): SceneNode(creator) {}; KdTreeSceneNode(SceneManager *creator, const String& name): SceneNode(creator, name) {}; ~KdTreeSceneNode() {}; // gather info for kd-tree creation virtual void computeScene(PlaneEventList& 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 // _OgreKdTreeSceneNode_H__