19 #include <osgUtil/RenderBin>
20 #include <osgViewer/Viewer>
46 class DtEffectManager;
48 class DtOsgWindowManager;
49 class DtOsgProfilerOverlay;
50 class DtOsgPerformanceStatsOverlay;
51 class DtFastMatrixTransform;
54 class DtOsgGlobalShaderComponent;
55 class DtShadowSettingsObject;
56 class DtTaxiwaySignManager;
57 class DtRunwayMarkingManager;
58 class DtLightIndicatorManager;
74 const static int SKY_RENDERBIN = -10;
75 const static int DEFAULT_RENDERBIN = 0;
76 const static int DEPTH_ONLY_RENDERBIN = 6;
77 const static int OCEAN_RENDERBIN = 7;
78 const static int LIGHTPOINT_RENDERBIN = 8;
79 const static int CLOUD_RENDERBIN = 9;
80 const static int DEFAULT_TRANSPARENT_RENDERBIN = 10;
81 const static int COCKPIT_RENDERBIN = 25;
101 virtual void update();
104 virtual void render();
107 virtual bool viewExists()
const;
110 virtual void resetSceneGraph();
114 virtual void removeChannelRoot(
DtChannel* channel);
117 virtual void addNodeToRoot(osg::Node* node,
const DtSceneRoot& sr,
bool createOnAccess=
true );
120 virtual void removeNodeFromRoot(osg::Node* node,
const DtSceneRoot& sr);
123 virtual void traverseRoot(osg::NodeVisitor& nv,
const DtSceneRoot& sr);
126 virtual void setSceneRootNodeMask(
const DtSceneRoot& sr,
127 osg::Node::NodeMask nodemask);
130 virtual osg::Node::NodeMask sceneRootNodeMask(
const DtSceneRoot& sr);
133 virtual osg::BoundingSphere sceneRootBound(
const DtSceneRoot& sr);
136 virtual osg::BoundingSphere sceneRootListBound(
const DtSceneRootList& srList);
139 virtual void addChannelToModelSetRoot(
int modelSetId,
143 virtual void removeChannelFromModelSetRoot(
int modelSetId,
147 virtual void addChannelToVisualizerRoot(
int modelSetId,
148 int visualizerType,
DtChannel* channel );
151 virtual void removeChannelFromVisualizerRoot(
int modelSetId,
152 int visualizerType,
DtChannel* channel );
155 virtual void setSceneDataToRenderRoot( osgViewer::View& view );
158 virtual void addSceneToCamera(osg::Camera* camera);
164 virtual void addSceneRootToNode(
const DtSceneRoot& sr,
165 osg::Group* node,
bool createOnAccess=
true);
171 virtual osg::Group* findSceneRootChildByName(
const DtSceneRoot& parent,
172 const std::string& rootName );
175 virtual bool matchesSceneRoot(
const DtSceneRoot& sr, osg::Group* group );
178 virtual void releaseResources()
184 virtual void releaseResources(osg::State* state);
188 void setRootNode(osg::Group*,
bool copyChildrenFromOldRoot);
195 void registerPagedLODs(osg::Node* node);
199 void clearPagedLODs();
202 virtual void setPerformanceStatsOverlayEnabled(
bool show);
205 virtual bool performanceStatsOverlayEnabled()
const;
208 virtual void setProfilerOverlayEnabled(
bool show);
211 virtual bool profilerOverlayEnabled()
const;
214 virtual void setWireframeRendering(
bool enabled);
217 virtual void setDdsFlip(
bool flip);
220 virtual bool wireframeRendering()
const;
223 virtual void setShadowState(
bool enabled);
226 virtual bool shadowsEnabled()
const;
229 void setTerrainScalingEnabled(
bool enabled );
232 void setTerrainScaleFactor(
double scaleFactor );
236 virtual bool makeContextCurrent();
250 void debugDrawBox(
const osg::Vec3& center,
const osg::Vec3& extents);
253 void debugDrawBox(
const osg::Vec3& center,
const osg::Vec3& extents,
const osg::Quat& orientation);
256 void setChannelShadowState(
DtOsgChannel* osgChannel,
bool enable);
262 bool getChannelCloudShadowMap(
DtOsgChannel* osgChannel,
unsigned int* textureIndex, osg::Matrix* textureViewProjMatrix);
265 bool getCameraCloudShadowMap(osg::Camera* camera,
unsigned int* textureIndex, osg::Matrix* textureViewProjMatrix);
268 osg::StateSet* sgRenderRootStateSet();
279 static DtSceneRoot visualizerTypeRoot(
int modelSet,
int visualizerType)
288 virtual void moveRootToShadowRoot(
const DtSceneRoot& targetRoot,
289 osg::Group* shadowRoot, osg::Group* modelSetRoot );
295 virtual osgViewer::ViewerBase& viewer();
303 osg::Group* sgRenderRoot();
307 osg::Group* sgEnvironmentRoot();
310 osg::Group* sgPropsRoot();
313 osg::Group* sgTerrainRoot();
316 osg::Group* sgScaledTerrainRoot();
319 osg::Group* sgScaledPropsRoot();
326 osg::Group* sgModelSetRoot(
int modelSet );
333 osg::Group* sgVisualizerRoot(
int modelSet,
int visualizerType,
334 bool createOnAccess=
true );
341 osg::Group* sgChannelRoot(
int modelSet,
342 DtChannel* channel,
bool createOnAccess=
true );
345 void slot_onViewCreated();
349 void slot_onViewToBeDestroyed();
352 void slot_onWireframeModeChanged(
bool mode);
355 void slot_onDdsFlipChanged(
bool flip);
358 virtual void slot_onProfilerOverlayOnChanged(
bool mode);
361 virtual void slot_onPerformanceStatsOverlayOnChanged(
bool mode);
364 void slot_onShadowStateChanged(
bool shadowMode);
367 void slot_onTerrainScalingEnabledChanged(
bool enabled );
370 void slot_onTerrainScaleFactorChanged(
double scaleFactor );
373 void slot_onCoordinateSystemChanged(
const std::string& coordinateSystemType);
378 void updateSceneGraph();
382 void clearEmptyWindows();
386 virtual void removeShadows();
389 virtual void createShadowRoots();
394 virtual bool exportTerrainAndProps(
const std::string&);
396 virtual osg::Group* createModelSetRoot(
int modelSet );
397 virtual osg::Group* createVisualizerRoot(
int modelSet,
401 virtual osg::Group* createChannelRoot(
int modelSet,
DtChannel* );
403 virtual osgShadow::ShadowedScene*
404 createModelSetSpecificShadowRootAndScene(
int modelSet );
405 virtual osg::Group* modelSetSpecificShadowRoot(
int modelSet );
406 virtual osgShadow::ShadowedScene*
407 modelSetSpecificShadowScene(
int modelSet );
409 virtual void updateTerrainScaling();
411 virtual void initAerodromeManagers();
412 virtual void updateAerodrome();
415 void swapChildren( osg::Node* currentChild, osg::Node* newChild );
419 virtual void updateRenderMap(
const CullSet& cullSet );
423 void postInitialize();
468 typedef boost::unordered_map<int, osg::ref_ptr<osg::Group> >
RootMap;
469 typedef boost::unordered_map<int, osg::ref_ptr<osgShadow::ShadowedScene> >
ShadowedSceneMap;
476 typedef boost::unordered_map<ModelSet, osg::ref_ptr<osg::Group> >
479 typedef boost::unordered_map<VisualizerType, osg::ref_ptr<osg::Group> >
485 typedef boost::unordered_map<ModelSet, VisualizerTypeRootMap>
505 typedef boost::unordered_map<DtChannel*, ModelSetRootMap >