}
class SGSky;
+class SGUpdateVisitor;
class FGRenderer {
/** Just pick into the scene and return the pick callbacks on the way ...
*/
- bool pick( std::vector<SGSceneryPick>& pickList,
- const osgGA::GUIEventAdapter* ea );
+ bool pick( std::vector<SGSceneryPick>& pickList, const osg::Vec2& windowPos);
/** Get and set the OSG Viewer object, if any.
*/
protected:
osg::ref_ptr<osgViewer::Viewer> viewer;
osg::ref_ptr<flightgear::FGEventHandler> eventHandler;
+
+ osg::ref_ptr<osg::FrameStamp> _frameStamp;
+ osg::ref_ptr<SGUpdateVisitor> _updateVisitor;
+ osg::ref_ptr<osg::Group> _viewerSceneRoot;
+ osg::ref_ptr<osg::Group> _deferredRealRoot;
+ osg::ref_ptr<osg::Group> _root;
+
SGPropertyNode_ptr _scenery_loaded, _position_finalized;
- SGPropertyNode_ptr _skyblend, _splash_alpha;
+
+ SGPropertyNode_ptr _splash_alpha;
SGPropertyNode_ptr _point_sprites, _enhanced_lighting, _distance_attenuation;
SGPropertyNode_ptr _textures;
SGPropertyNode_ptr _cloud_status, _visibility_m;
float _cascadeFar[4];
bool _useColorForDepth;
+ typedef std::vector<SGPropertyChangeListener*> SGPropertyChangeListenerVec;
+ SGPropertyChangeListenerVec _listeners;
+
flightgear::CameraInfo* buildCameraFromRenderingPipeline(FGRenderingPipeline* rpipe, flightgear::CameraGroup* cgroup, unsigned flags, osg::Camera* camera,
const osg::Matrix& view, const osg::Matrix& projection, osg::GraphicsContext* gc);
osg::ref_ptr<osg::Uniform> _depthInColor;
osg::ref_ptr<FGRenderingPipeline> _pipeline;
+
+ void addChangeListener(SGPropertyChangeListener* l, const char* path);
+
+ void updateSky();
+
+ void setupRoot();
};
bool fgDumpSceneGraphToFile(const char* filename);