29# error This library requires C++
35#include <simgear/compiler.h>
36#include <simgear/math/SGMath.hxx>
37#include <simgear/scene/model/particles.hxx>
38#include <simgear/structure/subsystem_mgr.hxx>
56 osg::ref_ptr<osg::Switch> scene_graph;
57 osg::ref_ptr<osg::Group> terrain_branch;
58 osg::ref_ptr<osg::Group> models_branch;
59 osg::ref_ptr<osg::Group> aircraft_branch;
60 osg::ref_ptr<osg::Group> interior_branch;
61 osg::ref_ptr<osg::Group> particles_branch;
62 osg::ref_ptr<osg::Group> precipitation_branch;
64 osg::ref_ptr<flightgear::SceneryPager> _pager;
85 void update(
double dt)
override;
101 const simgear::BVHMaterial** material,
102 const osg::Node* butNotFrom = 0);
117 const simgear::BVHMaterial** material,
118 const osg::Node* butNotFrom = 0);
127 const osg::Node* butNotFrom = 0);
150 bool schedule_scenery(
const SGGeod& position,
double range_m,
double duration=0.0);
154 std::unique_ptr<FGTerrain> _terrain;
static void resetPagerSingleton()
osg::Group * get_models_branch() const
osg::Group * get_scene_graph() const
bool get_cart_elevation_m(const SGVec3d &pos, double max_altoff, double &elevation, const simgear::BVHMaterial **material, const osg::Node *butNotFrom=0)
Compute the elevation of the scenery below the cartesian point pos.
osg::Group * get_particles_branch() const
osg::Group * get_aircraft_branch() const
bool schedule_scenery(const SGGeod &position, double range_m, double duration=0.0)
osg::Group * get_interior_branch() const
bool get_cart_ground_intersection(const SGVec3d &start, const SGVec3d &dir, SGVec3d &nearestHit, const osg::Node *butNotFrom=0)
Compute the nearest intersection point of the line starting from start going in direction dir with th...
void update(double dt) override
flightgear::SceneryPager * getPager()
bool get_elevation_m(const SGGeod &geod, double &alt, const simgear::BVHMaterial **material, const osg::Node *butNotFrom=0)
Compute the elevation of the scenery at geodetic latitude lat, geodetic longitude lon and not higher ...
void materialLibChanged()
bool scenery_available(const SGGeod &position, double range_m)
Returns true if scenery is available for the given lat, lon position within a range of range_m.
static flightgear::SceneryPager * getPagerSingleton()
osg::Group * get_terrain_branch() const
osg::Group * get_precipitation_branch() const
static const char * staticSubsystemClassId()