2004-09-19 17:02:16 +00:00
|
|
|
|
|
|
|
#ifndef __FG_RENDERER_HXX
|
|
|
|
#define __FG_RENDERER_HXX 1
|
|
|
|
|
2007-01-07 12:02:50 +00:00
|
|
|
#include <simgear/scene/util/SGPickCallback.hxx>
|
2004-09-19 17:02:16 +00:00
|
|
|
|
2008-11-18 22:45:57 +00:00
|
|
|
#include <osg/ref_ptr>
|
|
|
|
|
|
|
|
namespace osg
|
|
|
|
{
|
|
|
|
class Camera;
|
|
|
|
class Group;
|
|
|
|
}
|
|
|
|
|
|
|
|
namespace osgGA
|
|
|
|
{
|
|
|
|
class GUIEventAdapter;
|
|
|
|
}
|
|
|
|
|
|
|
|
namespace osgShadow
|
|
|
|
{
|
|
|
|
class ShadowedScene;
|
|
|
|
}
|
|
|
|
|
|
|
|
namespace osgViewer
|
|
|
|
{
|
|
|
|
class Viewer;
|
|
|
|
}
|
|
|
|
|
|
|
|
namespace flightgear
|
|
|
|
{
|
|
|
|
class FGEventHandler;
|
|
|
|
}
|
2007-05-21 17:50:02 +00:00
|
|
|
|
2004-09-19 17:02:16 +00:00
|
|
|
class SGSky;
|
|
|
|
extern SGSky *thesky;
|
|
|
|
|
|
|
|
class FGRenderer {
|
|
|
|
|
|
|
|
public:
|
2005-02-25 19:41:53 +00:00
|
|
|
|
2004-10-06 09:57:37 +00:00
|
|
|
FGRenderer();
|
|
|
|
~FGRenderer();
|
2004-09-19 17:02:16 +00:00
|
|
|
|
2007-05-03 18:12:29 +00:00
|
|
|
void splashinit();
|
2004-09-19 17:02:16 +00:00
|
|
|
void init();
|
|
|
|
|
2004-10-06 03:29:14 +00:00
|
|
|
static void resize(int width, int height );
|
|
|
|
|
|
|
|
// 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 ); }
|
2005-02-25 19:41:53 +00:00
|
|
|
|
2007-01-07 12:02:50 +00:00
|
|
|
/** Just pick into the scene and return the pick callbacks on the way ...
|
2005-12-12 21:15:20 +00:00
|
|
|
*/
|
2008-08-01 15:57:29 +00:00
|
|
|
static bool pick( std::vector<SGSceneryPick>& pickList,
|
2007-05-26 13:53:46 +00:00
|
|
|
const osgGA::GUIEventAdapter* ea );
|
2007-05-21 17:50:02 +00:00
|
|
|
|
|
|
|
/** Get and set the OSG Viewer object, if any.
|
|
|
|
*/
|
|
|
|
osgViewer::Viewer* getViewer() { return viewer.get(); }
|
|
|
|
const osgViewer::Viewer* getViewer() const { return viewer.get(); }
|
2008-11-18 22:45:57 +00:00
|
|
|
void setViewer(osgViewer::Viewer* viewer);
|
2007-05-21 17:50:02 +00:00
|
|
|
/** Get and set the manipulator object, if any.
|
|
|
|
*/
|
2008-11-18 22:45:57 +00:00
|
|
|
flightgear::FGEventHandler* getEventHandler() { return eventHandler.get(); }
|
|
|
|
const flightgear::FGEventHandler* getEventHandler() const { return eventHandler.get(); }
|
|
|
|
void setEventHandler(flightgear::FGEventHandler* manipulator);
|
2007-06-24 07:52:50 +00:00
|
|
|
|
|
|
|
/** Add a top level camera.
|
|
|
|
*/
|
|
|
|
void addCamera(osg::Camera* camera, bool useSceneData);
|
|
|
|
|
2007-05-21 17:50:02 +00:00
|
|
|
protected:
|
|
|
|
osg::ref_ptr<osgViewer::Viewer> viewer;
|
2008-11-18 22:45:57 +00:00
|
|
|
osg::ref_ptr<flightgear::FGEventHandler> eventHandler;
|
2004-09-19 17:02:16 +00:00
|
|
|
};
|
|
|
|
|
2007-05-26 11:39:13 +00:00
|
|
|
bool fgDumpSceneGraphToFile(const char* filename);
|
2007-11-21 20:51:49 +00:00
|
|
|
bool fgDumpTerrainBranchToFile(const char* filename);
|
2007-05-26 11:39:13 +00:00
|
|
|
|
2004-09-19 17:02:16 +00:00
|
|
|
#endif
|