19 #include <osg/ref_ptr>
20 #include <osgShadow/ShadowedScene>
21 #include <osgUtil/RenderBin>
22 #include <osgViewer/Viewer>
26 #include <boost/unordered_map.hpp>
27 #include <boost/signals.hpp>
46 class DtEffectManager;
48 class DtOsgWindowManager;
49 class DtOsgProfilerOverlay;
50 class DtOsgPerformanceStatsOverlay;
51 class DtFastMatrixTransform;
54 class DtOsgGlobalShaderComponent;
55 class DtShadowSettingsObject;
92 : myDomain(ModelSetSpecific)
94 myParameter.modelSetId = modelSet;
97 : myDomain(VisualizerTypeSpecific)
99 myParameter.modelSetId = modelSet;
100 myParameter.visualizerType = visualizerType;
104 : myDomain(ChannelSpecific)
106 myParameter.modelSetId = modelSet;
107 myParameter.channel = channel;
112 if ( myDomain == ModelSetSpecific )
117 if ( myDomain == VisualizerTypeSpecific )
123 if ( myDomain == ChannelSpecific )
155 const static int SKY_RENDERBIN = -10;
156 const static int DEFAULT_RENDERBIN = 0;
157 const static int OCEAN_RENDERBIN = 7;
158 const static int LIGHTPOINT_RENDERBIN = 8;
159 const static int CLOUD_RENDERBIN = 9;
160 const static int DEFAULT_TRANSPARENT_RENDERBIN = 10;
161 const static int COCKPIT_RENDERBIN = 25;
180 virtual void update();
183 virtual void render();
186 virtual bool viewExists()
const;
189 virtual void resetSceneGraph();
193 virtual void removeChannelRoot(
DtChannel* channel);
196 virtual void addNodeToRoot(osg::Node* node,
SceneRoot sr,
bool createOnAccess=
true );
199 virtual void removeNodeFromRoot(osg::Node* node,
SceneRoot sr);
202 virtual void traverseRoot(osg::NodeVisitor& nv,
SceneRoot sr);
205 virtual void setSceneRootNodeMask(
SceneRoot sr,
206 osg::Node::NodeMask nodemask);
209 virtual osg::Node::NodeMask sceneRootNodeMask(
SceneRoot sr);
212 virtual osg::BoundingSphere sceneRootBound(
SceneRoot sr);
215 virtual osg::BoundingSphere sceneRootListBound(
const RootList& srList);
218 virtual void addChannelToModelSetRoot(
int modelSetId,
222 virtual void removeChannelFromModelSetRoot(
int modelSetId,
226 virtual void addChannelToVisualizerRoot(
int modelSetId,
227 int visualizerType,
DtChannel* channel );
230 virtual void removeChannelFromVisualizerRoot(
int modelSetId,
231 int visualizerType,
DtChannel* channel );
234 virtual void setSceneDataToRenderRoot( osgViewer::View& view );
237 virtual void addSceneToCamera(osg::Camera* camera);
244 osg::Group* node,
bool createOnAccess=
true);
250 virtual osg::Group* findSceneRootChildByName(
SceneRoot parent,
251 const std::string& rootName );
254 virtual bool matchesSceneRoot(
SceneRoot sr, osg::Group* group );
257 virtual void releaseResources()
263 virtual void releaseResources(osg::State* state);
267 void setRootNode(osg::Group*,
bool copyChildrenFromOldRoot);
274 void registerPagedLODs(osg::Node* node);
278 void clearPagedLODs();
281 virtual void setPerformanceStatsOverlayEnabled(
bool show);
284 virtual bool performanceStatsOverlayEnabled()
const;
287 virtual void setProfilerOverlayEnabled(
bool show);
290 virtual bool profilerOverlayEnabled()
const;
293 virtual void setWireframeRendering(
bool enabled);
296 virtual void setDdsFlip(
bool flip);
299 virtual bool wireframeRendering()
const;
302 virtual void setShadowState(
bool enabled);
305 virtual bool shadowsEnabled()
const;
308 void setTerrainScalingEnabled(
bool enabled );
311 void setTerrainScaleFactor(
double scaleFactor );
315 virtual bool makeContextCurrent();
329 void debugDrawBox(
const osg::Vec3& center,
const osg::Vec3& extents);
332 void debugDrawBox(
const osg::Vec3& center,
const osg::Vec3& extents,
const osg::Quat& orientation);
335 void setChannelShadowState(
DtOsgChannel* osgChannel,
bool enable);
341 bool getChannelCloudShadowMap(
DtOsgChannel* osgChannel,
unsigned int* textureIndex, osg::Matrix* textureViewProjMatrix);
344 bool getCameraCloudShadowMap(osg::Camera* camera,
unsigned int* textureIndex, osg::Matrix* textureViewProjMatrix);
355 static SceneRoot visualizerTypeRoot(
int modelSet,
int visualizerType)
356 {
return SceneRoot(modelSet, visualizerType); }
364 virtual void moveRootToShadowRoot( SceneRoot targetRoot, osg::Group* shadowRoot, osg::Group* modelSetRoot );
370 virtual osgViewer::ViewerBase& viewer();
378 osg::Group* sgRenderRoot();
382 osg::Group* sgEnvironmentRoot();
385 osg::Group* sgPropsRoot();
388 osg::Group* sgTerrainRoot();
391 osg::Group* sgScaledTerrainRoot();
394 osg::Group* sgScaledPropsRoot();
401 osg::Group* sgModelSetRoot(
int modelSet );
408 osg::Group* sgVisualizerRoot(
int modelSet,
int visualizerType,
409 bool createOnAccess=
true );
416 osg::Group* sgChannelRoot(
int modelSet,
417 DtChannel* channel,
bool createOnAccess=
true );
420 void slot_onViewCreated();
424 void slot_onViewToBeDestroyed();
427 void slot_onWireframeModeChanged(
bool mode);
430 void slot_onDdsFlipChanged(
bool flip);
433 virtual void slot_onProfilerOverlayOnChanged(
bool mode);
436 virtual void slot_onPerformanceStatsOverlayOnChanged(
bool mode);
439 void slot_onShadowStateChanged(
bool shadowMode);
442 void slot_onTerrainScalingEnabledChanged(
bool enabled );
445 void slot_onTerrainScaleFactorChanged(
double scaleFactor );
448 void slot_onCoordinateSystemChanged(
const std::string& coordinateSystemType);
453 void updateSceneGraph();
457 void clearEmptyWindows();
461 virtual void removeShadows();
464 virtual void createShadowRoots();
469 virtual bool exportTerrainAndProps(
const std::string&);
471 virtual osg::Group* createModelSetRoot(
int modelSet );
472 virtual osg::Group* createVisualizerRoot(
int modelSet,
476 virtual osg::Group* createChannelRoot(
int modelSet,
DtChannel* );
478 virtual osgShadow::ShadowedScene*
479 createModelSetSpecificShadowRootAndScene(
int modelSet );
480 virtual osg::Group* modelSetSpecificShadowRoot(
int modelSet );
481 virtual osgShadow::ShadowedScene*
482 modelSetSpecificShadowScene(
int modelSet );
484 virtual void updateTerrainScaling();
487 void swapChildren( osg::Node* currentChild, osg::Node* newChild );
495 void postInitialize();
540 typedef boost::unordered_map<int, osg::ref_ptr<osg::Group> >
RootMap;
541 typedef boost::unordered_map<int, osg::ref_ptr<osgShadow::ShadowedScene> >
ShadowedSceneMap;
548 typedef boost::unordered_map<ModelSet, osg::ref_ptr<osg::Group> >
551 typedef boost::unordered_map<VisualizerType, osg::ref_ptr<osg::Group> >
557 typedef boost::unordered_map<ModelSet, VisualizerTypeRootMap>
577 typedef boost::unordered_map<DtChannel*, ModelSetRootMap >