16 #include <osg/ref_ptr>
17 #include <osgShadow/ShadowedScene>
18 #include <osgUtil/RenderBin>
19 #include <osgViewer/Viewer>
23 #include <boost/unordered_map.hpp>
24 #include <boost/signals.hpp>
43 class DtEffectManager;
45 class DtOsgWindowManager;
46 class DtOsgProfilerOverlay;
47 class DtOsgPerformanceStatsOverlay;
48 class DtFastMatrixTransform;
51 class DtOsgGlobalShaderComponent;
52 class DtShadowSettingsObject;
89 : myDomain(ModelSetSpecific)
91 myParameter.modelSetId = modelSet;
94 : myDomain(VisualizerTypeSpecific)
96 myParameter.modelSetId = modelSet;
97 myParameter.visualizerType = visualizerType;
101 : myDomain(ChannelSpecific)
103 myParameter.modelSetId = modelSet;
104 myParameter.channel = channel;
109 if ( myDomain == ModelSetSpecific )
114 if ( myDomain == VisualizerTypeSpecific )
120 if ( myDomain == ChannelSpecific )
152 const static int SKY_RENDERBIN = -10;
153 const static int DEFAULT_RENDERBIN = 0;
154 const static int OCEAN_RENDERBIN = 7;
155 const static int LIGHTPOINT_RENDERBIN = 8;
156 const static int CLOUD_RENDERBIN = 9;
157 const static int DEFAULT_TRANSPARENT_RENDERBIN = 10;
158 const static int COCKPIT_RENDERBIN = 25;
177 virtual void update();
180 virtual void render();
183 virtual bool viewExists()
const;
186 virtual void resetSceneGraph();
190 virtual void removeChannelRoot(
DtChannel* channel);
193 virtual void addNodeToRoot(osg::Node* node,
SceneRoot sr,
bool createOnAccess=
true );
196 virtual void removeNodeFromRoot(osg::Node* node,
SceneRoot sr);
199 virtual void traverseRoot(osg::NodeVisitor& nv,
SceneRoot sr);
202 virtual void setSceneRootNodeMask(
SceneRoot sr,
203 osg::Node::NodeMask nodemask);
206 virtual osg::Node::NodeMask sceneRootNodeMask(
SceneRoot sr);
209 virtual osg::BoundingSphere sceneRootBound(
SceneRoot sr);
212 virtual osg::BoundingSphere sceneRootListBound(
const RootList& srList);
215 virtual void addChannelToModelSetRoot(
int modelSetId,
219 virtual void removeChannelFromModelSetRoot(
int modelSetId,
223 virtual void addChannelToVisualizerRoot(
int modelSetId,
224 int visualizerType,
DtChannel* channel );
227 virtual void removeChannelFromVisualizerRoot(
int modelSetId,
228 int visualizerType,
DtChannel* channel );
231 virtual void setSceneDataToRenderRoot( osgViewer::View& view );
234 virtual void addSceneToCamera(osg::Camera* camera);
241 osg::Group* node,
bool createOnAccess=
true);
247 virtual osg::Group* findSceneRootChildByName(
SceneRoot parent,
248 const std::string& rootName );
251 virtual void releaseResources()
257 virtual void releaseResources(osg::State* state);
261 void setRootNode(osg::Group*,
bool copyChildrenFromOldRoot);
268 void registerPagedLODs(osg::Node* node);
272 void clearPagedLODs();
275 virtual void setPerformanceStatsOverlayEnabled(
bool show);
278 virtual bool performanceStatsOverlayEnabled()
const;
281 virtual void setProfilerOverlayEnabled(
bool show);
284 virtual bool profilerOverlayEnabled()
const;
287 virtual void setWireframeRendering(
bool enabled);
290 virtual void setDdsFlip(
bool flip);
293 virtual bool wireframeRendering()
const;
296 virtual void setShadowState(
bool enabled);
299 virtual bool shadowsEnabled()
const;
302 void setTerrainScalingEnabled(
bool enabled );
305 void setTerrainScaleFactor(
double scaleFactor );
309 virtual bool makeContextCurrent();
323 void debugDrawBox(
const osg::Vec3& center,
const osg::Vec3& extents);
326 void debugDrawBox(
const osg::Vec3& center,
const osg::Vec3& extents,
const osg::Quat& orientation);
329 void setChannelShadowState(
DtOsgChannel* osgChannel,
bool enable);
335 bool getChannelCloudShadowMap(
DtOsgChannel* osgChannel,
unsigned int* textureIndex, osg::Matrix* textureViewProjMatrix);
338 bool getCameraCloudShadowMap(osg::Camera* camera,
unsigned int* textureIndex, osg::Matrix* textureViewProjMatrix);
349 static SceneRoot visualizerTypeRoot(
int modelSet,
int visualizerType)
350 {
return SceneRoot(modelSet, visualizerType); }
358 virtual void moveRootToShadowRoot( SceneRoot targetRoot, osg::Group* shadowRoot, osg::Group* modelSetRoot );
364 virtual osgViewer::ViewerBase& viewer();
372 osg::Group* sgRenderRoot();
376 osg::Group* sgEnvironmentRoot();
379 osg::Group* sgPropsRoot();
382 osg::Group* sgTerrainRoot();
385 osg::Group* sgScaledTerrainRoot();
388 osg::Group* sgScaledPropsRoot();
395 osg::Group* sgModelSetRoot(
int modelSet );
402 osg::Group* sgVisualizerRoot(
int modelSet,
int visualizerType,
403 bool createOnAccess=
true );
410 osg::Group* sgChannelRoot(
int modelSet,
411 DtChannel* channel,
bool createOnAccess=
true );
414 void slot_onViewCreated();
418 void slot_onViewToBeDestroyed();
421 void slot_onWireframeModeChanged(
bool mode);
424 void slot_onDdsFlipChanged(
bool flip);
427 virtual void slot_onProfilerOverlayOnChanged(
bool mode);
430 virtual void slot_onPerformanceStatsOverlayOnChanged(
bool mode);
433 void slot_onShadowStateChanged(
bool shadowMode);
436 void slot_onTerrainScalingEnabledChanged(
bool enabled );
439 void slot_onTerrainScaleFactorChanged(
double scaleFactor );
442 void slot_onCoordinateSystemChanged(
const std::string& coordinateSystemType);
447 void updateSceneGraph();
451 void clearEmptyWindows();
455 virtual void removeShadows();
458 virtual void createShadowRoots();
463 virtual bool exportTerrainAndProps(
const std::string&);
465 virtual osg::Group* createModelSetRoot(
int modelSet );
466 virtual osg::Group* createVisualizerRoot(
int modelSet,
470 virtual osg::Group* createChannelRoot(
int modelSet,
DtChannel* );
472 virtual osgShadow::ShadowedScene*
473 createModelSetSpecificShadowRootAndScene(
int modelSet );
474 virtual osg::Group* modelSetSpecificShadowRoot(
int modelSet );
475 virtual osgShadow::ShadowedScene*
476 modelSetSpecificShadowScene(
int modelSet );
478 virtual void updateTerrainScaling();
481 void swapChildren( osg::Node* currentChild, osg::Node* newChild );
525 typedef boost::unordered_map<int, osg::ref_ptr<osg::Group> >
RootMap;
526 typedef boost::unordered_map<int, osg::ref_ptr<osgShadow::ShadowedScene> >
ShadowedSceneMap;
533 typedef boost::unordered_map<ModelSet, osg::ref_ptr<osg::Group> >
536 typedef boost::unordered_map<VisualizerType, osg::ref_ptr<osg::Group> >
542 typedef boost::unordered_map<ModelSet, VisualizerTypeRootMap>
562 typedef boost::unordered_map<DtChannel*, ModelSetRootMap >