X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Frenderer.hxx;h=0a8096cd4bf41f19049b2858c90f590e7a4cc5be;hb=18d1593c42c2df60d7fb44ace722ca3e8a7fd82c;hp=b80087da6b8e1ff8fd0b1c6b11050227447a14ec;hpb=a788ebf48791342f82a2e17e452c781a33945822;p=flightgear.git diff --git a/src/Main/renderer.hxx b/src/Main/renderer.hxx index b80087da6..0a8096cd4 100644 --- a/src/Main/renderer.hxx +++ b/src/Main/renderer.hxx @@ -3,9 +3,36 @@ #define __FG_RENDERER_HXX 1 #include -#include #include +#include + +namespace osg +{ +class Camera; +class Group; +} + +namespace osgGA +{ +class GUIEventAdapter; +} + +namespace osgShadow +{ +class ShadowedScene; +} + +namespace osgViewer +{ +class Viewer; +} + +namespace flightgear +{ +class FGEventHandler; +} + #define FG_ENABLE_MULTIPASS_CLOUDS 1 class SGSky; @@ -24,6 +51,7 @@ public: FGRenderer(); ~FGRenderer(); + void splashinit(); void init(); static void resize(int width, int height ); @@ -34,22 +62,36 @@ public: static void update( bool refresh_camera_settings ); inline static void update() { update( true ); } - - /** FlightGear code should use this routine to set the FOV rather - * than calling the ssg routine directly + /** Set all the camera parameters at once. aspectRatio is height / width. */ - static void setFOV( float w, float h ); - - - /** FlightGear code should use this routine to set the Near/Far - * clip planes rather than calling the ssg routine directly + static void setCameraParameters(float vfov, float aspectRatio, + float zNear, float zFar); + /** Just pick into the scene and return the pick callbacks on the way ... */ - static void setNearFar( float n, float f ); + static bool pick( std::vector& pickList, + const osgGA::GUIEventAdapter* ea ); - /** Just pick into the scene and return the pick callbacks on the way ... + /** 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. */ - static bool pick( unsigned x, unsigned y, - std::vector& pickList ); + 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