15 #include <osg/ref_ptr>
16 #include <osg/PositionAttitudeTransform>
18 #include <osg/BoundingBox>
23 #include <OsgST_Forest.h>
25 #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 virtual void enableBillboardRendering(
bool enable);
71 virtual bool isBillboardRenderingEnabled()
const;
73 virtual void enable3DTreeRendering(
bool enable);
74 virtual bool is3DTreeRenderingEnabled()
const;
76 virtual void enableReceiveShadows(
bool enable);
79 void setBoundingBox(
const osg::BoundingBox& box);
80 const osg::BoundingBox& getBoundingBox(
void)
const;
84 osg::ref_ptr<osg::Node> getRootNode(
void);
88 void programBoundCallback(osg::ref_ptr<makOsgSpeedTree::Forest> pForest,
89 const makOsgSpeedTree::TreeType* pTreeType,
uint32 programID);
93 virtual void slot_reloadShaders();
96 virtual void slot_useGlobalAmbientChanged(
bool enabled);
99 virtual void slot_useGlobalDiffuseChanged(
bool enabled);
103 virtual void slot_perPixelLightingEnabledChanged(
bool enabled);
106 virtual void slot_planarReflectionsShowSpeedTreesChanged(
bool enabled);
115 const std::string& strVisManagerType);
117 void init(
const std::string& strVisManagerType);
131 void connectSignals(
void);
133 osg::Vec3f computeWindDirection(
float fDirection);
135 void setWindStrength(
float fStrength);
136 void setWindDirection(
float fDirection);
138 bool preUpdateCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
139 osg::RenderInfo& renderInfo);
141 bool preRenderCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
142 osg::RenderInfo& renderInfo);
143 void postUpdateCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
144 osg::RenderInfo& renderInfo);
145 void postRenderCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
146 osg::RenderInfo& renderInfo);
147 void provideTimeCallback(osg::ref_ptr<makOsgSpeedTree::Forest> forest,
150 void pushGraphicsState(osg::RenderInfo& renderInfo);
151 void popGraphicsState(osg::RenderInfo& renderInfo);
155 const std::string& modelDef);
160 void initTreeDesc(makOsgSpeedTree::TreeInstanceDescriptor& desc,
162 void initTreeDesc(makOsgSpeedTree::TreeInstanceDescriptor& desc,
164 void applyModelDefParameters(makOsgSpeedTree::TreeInstanceDescriptor& desc,
169 osg::RenderInfo& renderInfo);
174 static bool isReflectionCamera(osg::Camera *camera);
185 makOsgSpeedTree::TreeInstanceDescriptorCollection
205 osg::ref_ptr<osg::PositionAttitudeTransform>
myPat;
215 typedef boost::unordered_map<DtUniqueID, makOsgSpeedTree::TreeInstance*>
248 const std::string& strVisManagerType);