}
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;
- SGPropertyNode_ptr _scenery_loaded,_scenery_override;
- SGPropertyNode_ptr _skyblend, _splash_alpha;
+
+ 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 _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::Camera* buildDeferredGeometryCamera( flightgear::CameraInfo* info, osg::GraphicsContext* gc, const std::string& name, const FGRenderingPipeline::AttachmentList& attachments );
osg::Camera* buildDeferredShadowCamera( flightgear::CameraInfo* info, osg::GraphicsContext* gc, const std::string& name, const FGRenderingPipeline::AttachmentList& attachments );
- osg::Camera* buildDeferredLightingCamera( flightgear::CameraInfo* info, osg::GraphicsContext* gc, const std::string& name, const FGRenderingPipeline::AttachmentList& attachments );
osg::Camera* buildDeferredLightingCamera( flightgear::CameraInfo* info, osg::GraphicsContext* gc, const FGRenderingPipeline::Stage* stage );
osg::Camera* buildDeferredFullscreenCamera( flightgear::CameraInfo* info, osg::GraphicsContext* gc, const FGRenderingPipeline::Stage* stage );
osg::Camera* buildDeferredFullscreenCamera( flightgear::CameraInfo* info, const FGRenderingPipeline::Pass* pass );
- void buildDeferredDisplayCamera( osg::Camera* camera, flightgear::CameraInfo* info, const std::string& name, osg::GraphicsContext* gc );
+ void buildDeferredDisplayCamera( osg::Camera* camera, flightgear::CameraInfo* info, const FGRenderingPipeline::Stage* stage, osg::GraphicsContext* gc );
void updateShadowCascade(const flightgear::CameraInfo* info, osg::Camera* camera, osg::Group* grp, int idx, double left, double right, double bottom, double top, double zNear, double f1, double f2);
osg::Vec3 getSunDirection() const;
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);