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 DtEnvironmentInfo;
40 class DtOsgCullVisitorParameters;
48 friend class DtSpeedTreeForestClassesCreator;
55 virtual void removeAllTrees();
59 virtual void removeAllUniqueTreesAndUniqueCell(
DtUniqueID cellID);
61 virtual void setTreeClippingPlane(
float fFar);
62 virtual void getTreeClippingPlane(
float& fFar );
64 virtual void setTree3DLodDistances(
float fNear,
float fFar);
65 virtual void getTree3DLodDistances(
float& fNear,
float& fFar );
67 virtual void setTreeBillboardDistances(
float fStart,
float fEnd);
68 virtual void getTreeBillboardDistances(
float& fStart,
float& fEnd);
70 void enableBillboardRendering(
bool enable);
71 void enable3DTreeRendering(
bool enable);
73 void setBoundingBox(
const osg::BoundingBox& box);
74 const osg::BoundingBox& getBoundingBox(
void)
const;
78 osg::ref_ptr<osg::Node> getRootNode(
void);
82 void programBoundCallback(osg::ref_ptr<makOsgSpeedTree::Forest> pForest,
83 const makOsgSpeedTree::TreeType* pTreeType,
uint32 programID);
87 virtual void slot_reloadShaders();
90 virtual void slot_useGlobalAmbientChanged(
bool enabled);
93 virtual void slot_useGlobalDiffuseChanged(
bool enabled);
97 virtual void slot_perPixelLightingEnabledChanged(
bool enabled);
107 const std::string& strVisManagerType);
109 void init(
const std::string& strVisManagerType);
123 void connectSignals(
void);
125 osg::Vec3f computeWindDirection(
float fDirection);
127 void setWindStrength(
float fStrength);
128 void setWindDirection(
float fDirection);
130 bool preUpdateCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
131 osg::RenderInfo& renderInfo);
132 bool preRenderCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
133 osg::RenderInfo& renderInfo);
134 void postUpdateCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
135 osg::RenderInfo& renderInfo);
136 void postRenderCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
137 osg::RenderInfo& renderInfo);
138 void provideTimeCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
141 void pushGraphicsState(osg::RenderInfo& renderInfo);
142 void popGraphicsState(osg::RenderInfo& renderInfo);
146 const std::string& modelDef);
151 void initTreeDesc(makOsgSpeedTree::TreeInstanceDescriptor& desc,
153 void initTreeDesc(makOsgSpeedTree::TreeInstanceDescriptor& desc,
155 void applyModelDefParameters(makOsgSpeedTree::TreeInstanceDescriptor& desc,
160 osg::RenderInfo& renderInfo);
173 makOsgSpeedTree::TreeInstanceDescriptorCollection
194 osg::ref_ptr<osg::PositionAttitudeTransform>
myPat;
204 typedef boost::unordered_map<DtUniqueID, makOsgSpeedTree::TreeInstance*>
229 const std::string& strVisManagerType);