15 #include <osg/ref_ptr>
16 #include <osg/PositionAttitudeTransform>
18 #include <osg/BoundingBox>
22 #include <OsgST_Forest.h>
24 #include <boost/unordered_map.hpp>
28 namespace makOsgSpeedTree
31 struct TreeInstanceDescriptor;
36 class DtAgentUpdateResolverInterface;
37 class DtSpeedTreeModelInstance;
38 class DtSpeedTreeCore;
39 class DtOsgCullVisitorParameters;
47 friend class DtSpeedTreeForestClassesCreator;
54 virtual void removeAllTrees();
58 virtual void removeAllUniqueTreesAndUniqueCell(
DtUniqueID cellID);
60 virtual void setTreeClippingPlane(
float fFar);
61 virtual void getTreeClippingPlane(
float& fFar );
63 virtual void setTree3DLodDistances(
float fNear,
float fFar);
64 virtual void getTree3DLodDistances(
float& fNear,
float& fFar );
66 virtual void setTreeBillboardDistances(
float fStart,
float fEnd);
67 virtual void getTreeBillboardDistances(
float& fStart,
float& fEnd);
69 void enableBillboardRendering(
bool enable);
70 void enable3DTreeRendering(
bool enable);
72 void setBoundingBox(
const osg::BoundingBox& box);
73 const osg::BoundingBox& getBoundingBox(
void)
const;
77 osg::ref_ptr<osg::Node> getRootNode(
void);
81 void programBoundCallback(osg::ref_ptr<makOsgSpeedTree::Forest> pForest,
82 const makOsgSpeedTree::TreeType* pTreeType,
uint32 programID);
86 virtual void slot_reloadShaders();
89 virtual void slot_useGlobalAmbientChanged(
bool enabled);
92 virtual void slot_useGlobalDiffuseChanged(
bool enabled);
96 virtual void slot_perPixelLightingEnabledChanged(
bool enabled);
106 const std::string& strVisManagerType);
108 void init(
const std::string& strVisManagerType);
122 void connectSignals(
void);
124 osg::Vec3f computeWindDirection(
float fDirection);
126 void setWindStrength(
float fStrength);
127 void setWindDirection(
float fDirection);
129 bool preUpdateCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
130 osg::RenderInfo& renderInfo);
131 bool preRenderCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
132 osg::RenderInfo& renderInfo);
133 void postUpdateCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
134 osg::RenderInfo& renderInfo);
135 void postRenderCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
136 osg::RenderInfo& renderInfo);
137 void provideTimeCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
140 void pushGraphicsState(osg::RenderInfo& renderInfo);
141 void popGraphicsState(osg::RenderInfo& renderInfo);
145 const std::string& modelDef);
150 void initTreeDesc(makOsgSpeedTree::TreeInstanceDescriptor& desc,
152 void initTreeDesc(makOsgSpeedTree::TreeInstanceDescriptor& desc,
154 void applyModelDefParameters(makOsgSpeedTree::TreeInstanceDescriptor& desc,
159 osg::RenderInfo& renderInfo);
172 makOsgSpeedTree::TreeInstanceDescriptorCollection
193 osg::ref_ptr<osg::PositionAttitudeTransform>
myPat;
202 typedef boost::unordered_map<DtUniqueID, makOsgSpeedTree::TreeInstance*>
228 const std::string& strVisManagerType);