FlightGear next
renderer.hxx
Go to the documentation of this file.
1/*
2 * SPDX-FileName: renderer.hxx
3 * SPDX-FileComment: Written by Curtis Olson, started May 1997.
4 * SPDX-FileCopyrightText: Copyright (C) 1997 - 2002 Curtis L. Olson - http://www.flightgear.org/~curt
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
8#pragma once
9
10#include <osg/ref_ptr>
11#include <osgViewer/CompositeViewer>
12
13#include <simgear/props/props.hxx>
14#include <simgear/scene/util/SGPickCallback.hxx>
15#include <simgear/timing/timestamp.hxx>
16
17
18namespace osg {
19class Camera;
20class Group;
21class FrameStamp;
22}
23namespace flightgear {
24class FGEventHandler;
25}
26class SGSky;
27class SGUpdateVisitor;
28class SplashScreen;
29
30class FGRenderer final {
31public:
32 FGRenderer();
34
40 void init();
41
46 void postinit();
47
53 void setupView();
54
61 bool runInitOperation();
62
71 void resize(int width, int height);
72 void resize(int width, int height, int x, int y);
73
79 void update();
80
81 typedef std::vector<SGSceneryPick> PickList;
86 PickList pick(const osg::Vec2& windowPos);
87
92 void addCanvasCamera(osg::Camera* camera);
93
98 void removeCanvasCamera(osg::Camera* camera);
99
100 osgViewer::ViewerBase* getViewerBase() const;
101
103 osg::ref_ptr<osgViewer::CompositeViewer> getCompositeViewer();
104 void setCompositeViewer(osg::ref_ptr<osgViewer::CompositeViewer> composite_viewer);
105
106 osg::FrameStamp* getFrameStamp() const;
107
108 osgViewer::View* getView();
109 const osgViewer::View* getView() const;
110 void setView(osgViewer::View* view);
111
114 void setEventHandler(flightgear::FGEventHandler* event_handler);
115
116 SGSky* getSky() const;
117
119
120private:
121 void addChangeListener(SGPropertyChangeListener* l, const char* path);
122 void updateSky();
123
124 osg::ref_ptr<osgViewer::CompositeViewer> _composite_viewer;
125 osg::ref_ptr<flightgear::FGEventHandler> _event_handler;
126 osg::ref_ptr<SGUpdateVisitor> _update_visitor;
127 osg::ref_ptr<osg::Group> _scene_root;
128
129 SGPropertyNode_ptr _scenery_loaded, _position_finalized;
130 SGPropertyNode_ptr _splash_alpha;
131 SGPropertyNode_ptr _splashHiddenSignal;
132 SGPropertyNode_ptr _textures;
133 SGPropertyNode_ptr _cloud_status, _visibility_m;
134 SGPropertyNode_ptr _xsize, _ysize;
135 SGPropertyNode_ptr _xpos, _ypos;
136 SGPropertyNode_ptr _panel_hotspots, _sim_delta_sec, _altitude_ft;
137 SGTimeStamp _splash_time;
138 int _maximum_texture_size{0};
139
140 typedef std::vector<SGPropertyChangeListener*> SGPropertyChangeListenerVec;
141 SGPropertyChangeListenerVec _listeners;
142
143 osg::ref_ptr<SplashScreen> _splash;
144
145 // NOTE: Raw pointer, must be deleted in destructor
146 SGSky* _sky;
147};
148
149bool fgDumpSceneGraphToFile(const char* filename);
150bool fgDumpTerrainBranchToFile(const char* filename);
151bool fgDumpNodeToFile(osg::Node* node, const char* filename);
152bool fgPrintVisibleSceneInfo(FGRenderer* renderer);
153
void removeCanvasCamera(osg::Camera *camera)
Remove a Canvas RTT camera from the renderer.
Definition renderer.cxx:755
osgViewer::View * getView()
Definition renderer.cxx:807
SplashScreen * getSplash()
Definition renderer.cxx:862
osg::ref_ptr< osgViewer::CompositeViewer > getCompositeViewer()
Both should only be used on reset.
Definition renderer.cxx:788
SGSky * getSky() const
Definition renderer.cxx:856
void setView(osgViewer::View *view)
Definition renderer.cxx:827
void setupView()
Setup the scene graph root.
Definition renderer.cxx:361
flightgear::FGEventHandler * getEventHandler()
Definition renderer.cxx:838
PickList pick(const osg::Vec2 &windowPos)
Pick into the scene and return the pick callbacks on the way.
Definition renderer.cxx:685
void init()
Initialize the renderer.
Definition renderer.cxx:233
void addCanvasCamera(osg::Camera *camera)
Add a Canvas RTT camera to the renderer.
Definition renderer.cxx:731
osgViewer::ViewerBase * getViewerBase() const
Definition renderer.cxx:782
void update()
Update rendering-related parameters.
Definition renderer.cxx:483
bool runInitOperation()
Run a graphics operation that retrieves some OpenGL parameters.
Definition renderer.cxx:457
void setEventHandler(flightgear::FGEventHandler *event_handler)
Definition renderer.cxx:850
void postinit()
Called after init() was called, the graphics window has been created and the CameraGroup has been ini...
Definition renderer.cxx:337
void setCompositeViewer(osg::ref_ptr< osgViewer::CompositeViewer > composite_viewer)
Definition renderer.cxx:794
void resize(int width, int height)
Handle a window resize event.
Definition renderer.cxx:625
std::vector< SGSceneryPick > PickList
Definition renderer.hxx:81
osg::FrameStamp * getFrameStamp() const
Definition renderer.cxx:800
FlightPlan.hxx - defines a full flight-plan object, including departure, cruise, arrival information ...
Definition Addon.cxx:53
Definition AIBase.hxx:25
bool fgPrintVisibleSceneInfo(FGRenderer *renderer)
bool fgDumpTerrainBranchToFile(const char *filename)
Definition renderer.cxx:886
bool fgPreliminaryGLVersionCheck()
Attempt to create an off-screen pixel buffer to check whether our target OpenGL version is available ...
bool fgDumpNodeToFile(osg::Node *node, const char *filename)
Definition renderer.cxx:893
bool fgDumpSceneGraphToFile(const char *filename)
Definition renderer.cxx:879