X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Frenderer.hxx;h=5fd8e9b36f652fdb91735920215e276017602ca3;hb=c053de6b4c4c3a9b22648d3c7e798cfd087887c7;hp=c8db96d5e4185eced02a995baef31797cf1d41a7;hpb=986492d72d0e84c2ba2dfdad366f5c7414ee6ac9;p=flightgear.git diff --git a/src/Main/renderer.hxx b/src/Main/renderer.hxx index c8db96d5e..5fd8e9b36 100644 --- a/src/Main/renderer.hxx +++ b/src/Main/renderer.hxx @@ -2,31 +2,83 @@ #ifndef __FG_RENDERER_HXX #define __FG_RENDERER_HXX 1 -#include -#include +#include -#define FG_ENABLE_MULTIPASS_CLOUDS 1 +#include -class SGSky; -extern SGSky *thesky; +namespace osg +{ +class Camera; +class Group; +} + +namespace osgGA +{ +class GUIEventAdapter; +} + +namespace osgShadow +{ +class ShadowedScene; +} -extern glPointParameterfProc glPointParameterfPtr; -extern glPointParameterfvProc glPointParameterfvPtr; -extern bool glPointParameterIsSupported; +namespace osgViewer +{ +class Viewer; +} +namespace flightgear +{ +class FGEventHandler; +} + +class SGSky; +extern SGSky *thesky; class FGRenderer { public: - FGRenderer() {} - ~FGRenderer() {} + FGRenderer(); + ~FGRenderer(); + + void splashinit(); void init(); - static void update(); + static void resize(int width, int height ); - void screendump(); - void build_states(); + // calling update( refresh_camera_settings = false ) will not + // touch window or camera settings. This is useful for the tiled + // renderer which needs to set the view frustum itself. + static void update( bool refresh_camera_settings ); + inline static void update() { update( true ); } + + /** Just pick into the scene and return the pick callbacks on the way ... + */ + static bool pick( std::vector& pickList, + const osgGA::GUIEventAdapter* ea ); + + /** Get and set the OSG Viewer object, if any. + */ + osgViewer::Viewer* getViewer() { return viewer.get(); } + const osgViewer::Viewer* getViewer() const { return viewer.get(); } + void setViewer(osgViewer::Viewer* viewer); + /** Get and set the manipulator object, if any. + */ + flightgear::FGEventHandler* getEventHandler() { return eventHandler.get(); } + const flightgear::FGEventHandler* getEventHandler() const { return eventHandler.get(); } + void setEventHandler(flightgear::FGEventHandler* manipulator); + + /** Add a top level camera. + */ + void addCamera(osg::Camera* camera, bool useSceneData); + +protected: + osg::ref_ptr viewer; + osg::ref_ptr eventHandler; }; +bool fgDumpSceneGraphToFile(const char* filename); +bool fgDumpTerrainBranchToFile(const char* filename); + #endif