16 #include <osgUtil/RenderBin>
17 #include <osgViewer/Viewer>
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 DEPTH_ONLY_RENDERBIN = 6;
155 const static int OCEAN_RENDERBIN = 7;
156 const static int LIGHTPOINT_RENDERBIN = 8;
157 const static int CLOUD_RENDERBIN = 9;
158 const static int DEFAULT_TRANSPARENT_RENDERBIN = 10;
159 const static int COCKPIT_RENDERBIN = 25;
179 virtual void update();
182 virtual void render();
185 virtual bool viewExists()
const;
188 virtual void resetSceneGraph();
192 virtual void removeChannelRoot(
DtChannel* channel);
195 virtual void addNodeToRoot(osg::Node* node,
const SceneRoot& sr,
bool createOnAccess=
true );
198 virtual void removeNodeFromRoot(osg::Node* node,
const SceneRoot& sr);
201 virtual void traverseRoot(osg::NodeVisitor& nv,
const SceneRoot& sr);
204 virtual void setSceneRootNodeMask(
const SceneRoot& sr,
205 osg::Node::NodeMask nodemask);
208 virtual osg::Node::NodeMask sceneRootNodeMask(
const SceneRoot& sr);
211 virtual osg::BoundingSphere sceneRootBound(
const SceneRoot& sr);
214 virtual osg::BoundingSphere sceneRootListBound(
const RootList& srList);
217 virtual void addChannelToModelSetRoot(
int modelSetId,
221 virtual void removeChannelFromModelSetRoot(
int modelSetId,
225 virtual void addChannelToVisualizerRoot(
int modelSetId,
226 int visualizerType,
DtChannel* channel );
229 virtual void removeChannelFromVisualizerRoot(
int modelSetId,
230 int visualizerType,
DtChannel* channel );
233 virtual void setSceneDataToRenderRoot( osgViewer::View& view );
236 virtual void addSceneToCamera(osg::Camera* camera);
242 virtual void addSceneRootToNode(
const SceneRoot& sr,
243 osg::Group* node,
bool createOnAccess=
true);
249 virtual osg::Group* findSceneRootChildByName(
const SceneRoot& parent,
250 const std::string& rootName );
253 virtual bool matchesSceneRoot(
const SceneRoot& sr, osg::Group* group );
256 virtual void releaseResources()
262 virtual void releaseResources(osg::State* state);
266 void setRootNode(osg::Group*,
bool copyChildrenFromOldRoot);
273 void registerPagedLODs(osg::Node* node);
277 void clearPagedLODs();
280 virtual void setPerformanceStatsOverlayEnabled(
bool show);
283 virtual bool performanceStatsOverlayEnabled()
const;
286 virtual void setProfilerOverlayEnabled(
bool show);
289 virtual bool profilerOverlayEnabled()
const;
292 virtual void setWireframeRendering(
bool enabled);
295 virtual void setDdsFlip(
bool flip);
298 virtual bool wireframeRendering()
const;
301 virtual void setShadowState(
bool enabled);
304 virtual bool shadowsEnabled()
const;
307 void setTerrainScalingEnabled(
bool enabled );
310 void setTerrainScaleFactor(
double scaleFactor );
314 virtual bool makeContextCurrent();
328 void debugDrawBox(
const osg::Vec3& center,
const osg::Vec3& extents);
331 void debugDrawBox(
const osg::Vec3& center,
const osg::Vec3& extents,
const osg::Quat& orientation);
334 void setChannelShadowState(
DtOsgChannel* osgChannel,
bool enable);
340 bool getChannelCloudShadowMap(
DtOsgChannel* osgChannel,
unsigned int* textureIndex, osg::Matrix* textureViewProjMatrix);
343 bool getCameraCloudShadowMap(osg::Camera* camera,
unsigned int* textureIndex, osg::Matrix* textureViewProjMatrix);
354 static SceneRoot visualizerTypeRoot(
int modelSet,
int visualizerType)
355 {
return SceneRoot(modelSet, visualizerType); }
363 virtual void moveRootToShadowRoot(
const SceneRoot& targetRoot,
364 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();
486 virtual void updateAerodrome();
489 void swapChildren( osg::Node* currentChild, osg::Node* newChild );
497 void postInitialize();
542 typedef boost::unordered_map<int, osg::ref_ptr<osg::Group> >
RootMap;
543 typedef boost::unordered_map<int, osg::ref_ptr<osgShadow::ShadowedScene> >
ShadowedSceneMap;
550 typedef boost::unordered_map<ModelSet, osg::ref_ptr<osg::Group> >
553 typedef boost::unordered_map<VisualizerType, osg::ref_ptr<osg::Group> >
559 typedef boost::unordered_map<ModelSet, VisualizerTypeRootMap>
579 typedef boost::unordered_map<DtChannel*, ModelSetRootMap >