]> git.mxchange.org Git - flightgear.git/blob - src/Main/renderer.hxx
Improve timing statistics
[flightgear.git] / src / Main / renderer.hxx
1
2 #ifndef __FG_RENDERER_HXX
3 #define __FG_RENDERER_HXX 1
4
5 #include <simgear/scene/util/SGPickCallback.hxx>
6
7 #include <osg/ref_ptr>
8
9 namespace osg
10 {
11 class Camera;
12 class Group;
13 }
14
15 namespace osgGA
16 {
17 class GUIEventAdapter;
18 }
19
20 namespace osgShadow
21 {
22 class ShadowedScene;
23 }
24
25 namespace osgViewer
26 {
27 class Viewer;
28 }
29
30 namespace flightgear
31 {
32 class FGEventHandler;
33 }
34
35 class SGSky;
36 extern SGSky *thesky;
37
38 class FGRenderer {
39
40 public:
41
42     FGRenderer();
43     ~FGRenderer();
44
45     void splashinit();
46     void init();
47
48     static void resize(int width, int height );
49
50     // calling update( refresh_camera_settings = false ) will not
51     // touch window or camera settings.  This is useful for the tiled
52     // renderer which needs to set the view frustum itself.
53     static void update( bool refresh_camera_settings );
54     inline static void update() { update( true ); }
55
56     /** Just pick into the scene and return the pick callbacks on the way ...
57      */
58     static bool pick( std::vector<SGSceneryPick>& pickList,
59                       const osgGA::GUIEventAdapter* ea );
60
61     /** Get and set the OSG Viewer object, if any.
62      */
63     osgViewer::Viewer* getViewer() { return viewer.get(); }
64     const osgViewer::Viewer* getViewer() const { return viewer.get(); }
65     void setViewer(osgViewer::Viewer* viewer);
66     /** Get and set the manipulator object, if any.
67      */
68     flightgear::FGEventHandler* getEventHandler() { return eventHandler.get(); }
69     const flightgear::FGEventHandler* getEventHandler() const { return eventHandler.get(); }
70     void setEventHandler(flightgear::FGEventHandler* manipulator);
71
72     /** Add a top level camera.
73     */
74     void addCamera(osg::Camera* camera, bool useSceneData);
75
76 protected:
77     osg::ref_ptr<osgViewer::Viewer> viewer;
78     osg::ref_ptr<flightgear::FGEventHandler> eventHandler;
79 };
80
81 bool fgDumpSceneGraphToFile(const char* filename);
82 bool fgDumpTerrainBranchToFile(const char* filename);
83
84 namespace flightgear
85 {
86 bool printVisibleSceneInfo(FGRenderer* renderer);
87 }
88
89 #endif