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();
277 void clearStateGraphForAllChannels(
void);
287 static DtSceneRoot visualizerTypeRoot(
int modelSet,
int visualizerType)
296 virtual void moveRootToShadowRoot(
const DtSceneRoot& targetRoot,
297 osg::Group* shadowRoot, osg::Group* modelSetRoot );
303 virtual osgViewer::ViewerBase& viewer();
311 osg::Group* sgRenderRoot();
315 osg::Group* sgEnvironmentRoot();
318 osg::Group* sgPropsRoot();
321 osg::Group* sgTerrainRoot();
324 osg::Group* sgScaledTerrainRoot();
327 osg::Group* sgScaledPropsRoot();
334 osg::Group* sgModelSetRoot(
int modelSet );
341 osg::Group* sgVisualizerRoot(
int modelSet,
int visualizerType,
342 bool createOnAccess=
true );
349 osg::Group* sgChannelRoot(
int modelSet,
350 DtChannel* channel,
bool createOnAccess=
true );
353 void slot_onViewCreated();
357 void slot_onViewToBeDestroyed();
360 void slot_onWireframeModeChanged(
bool mode);
363 void slot_onDdsFlipChanged(
bool flip);
366 virtual void slot_onProfilerOverlayOnChanged(
bool mode);
369 virtual void slot_onPerformanceStatsOverlayOnChanged(
bool mode);
372 void slot_onShadowStateChanged(
bool shadowMode);
375 void slot_onTerrainScalingEnabledChanged(
bool enabled );
378 void slot_onTerrainScaleFactorChanged(
double scaleFactor );
381 void slot_onCoordinateSystemChanged(
const std::string& coordinateSystemType);
386 void updateSceneGraph();
390 void clearEmptyWindows();
394 virtual void removeShadows();
397 virtual void createShadowRoots();
402 virtual bool exportTerrainAndProps(
const std::string&);
404 virtual osg::Group* createModelSetRoot(
int modelSet );
405 virtual osg::Group* createVisualizerRoot(
int modelSet,
409 virtual osg::Group* createChannelRoot(
int modelSet,
DtChannel* );
411 virtual osgShadow::ShadowedScene*
412 createModelSetSpecificShadowRootAndScene(
int modelSet );
413 virtual osg::Group* modelSetSpecificShadowRoot(
int modelSet );
414 virtual osgShadow::ShadowedScene*
415 modelSetSpecificShadowScene(
int modelSet );
417 virtual void updateTerrainScaling();
419 virtual void initAerodromeManagers();
420 virtual void updateAerodrome();
423 void swapChildren( osg::Node* currentChild, osg::Node* newChild );
427 virtual void updateRenderMap(
const CullSet& cullSet );
431 void postInitialize();
476 typedef boost::unordered_map<int, osg::ref_ptr<osg::Group> >
RootMap;
477 typedef boost::unordered_map<int, osg::ref_ptr<osgShadow::ShadowedScene> >
ShadowedSceneMap;
484 typedef boost::unordered_map<ModelSet, osg::ref_ptr<osg::Group> >
487 typedef boost::unordered_map<VisualizerType, osg::ref_ptr<osg::Group> >
493 typedef boost::unordered_map<ModelSet, VisualizerTypeRootMap>
513 typedef boost::unordered_map<DtChannel*, ModelSetRootMap >