13 #ifndef DtSpeedTreeForest_H_
14 #define DtSpeedTreeForest_H_
18 #include <osg/ref_ptr>
19 #include <osg/PositionAttitudeTransform>
21 #include <osg/BoundingBox>
23 #include <OsgST_Forest.h>
25 #include <boost/unordered_map.hpp>
27 namespace makOsgSpeedTree
34 class DtAgentUpdateResolverInterface;
35 class DtSpeedTreeModelInstance;
36 class DtSpeedTreeCore;
43 friend class DtSpeedTreeForestClassesCreator;
51 virtual void setTreeClippingPlane(
float fFar);
52 virtual void setTree3DLodDistances(
float fNear,
float fFar);
53 virtual void setTreeBillboardDistances(
float fStart,
float fEnd);
58 void setBoundingBox(
const osg::BoundingBox& box);
59 const osg::BoundingBox& getBoundingBox(
void)
const;
62 osg::ref_ptr<osg::Node> getRootNode(
void);
65 void programBoundCallback(osg::ref_ptr<makOsgSpeedTree::Forest> pForest,
const makOsgSpeedTree::TreeType* pTreeType,
uint32 programID);
73 virtual void slot_treeModelInstanceToBeDestroyed(
const std::string& modelDef);
76 virtual void slot_treeModelInstanceCreated(
const std::string& modelDef);
86 osg::ref_ptr<osg::PositionAttitudeTransform>
myPat;
88 osg::ref_ptr<makOsgSpeedTree::Forest>
myForest;
95 void connectSignals(
void);
96 void disconnectSignals(
void);
98 osg::Vec3f computeWindDirection(
float fDirection);
100 void setWindStrength(
float fStrength);
101 void setWindDirection(
float fDirection);
106 bool preUpdateCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest, osg::RenderInfo& renderInfo);
107 bool preRenderCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest, osg::RenderInfo& renderInfo);
108 void postUpdateCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest, osg::RenderInfo& renderInfo);
109 void postRenderCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest, osg::RenderInfo& renderInfo);
110 void provideTimeCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
double& fTime);
120 void pushGraphicsState(osg::RenderInfo& renderInfo);
121 void popGraphicsState(osg::RenderInfo& renderInfo);