X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FScenery%2Fscenery.hxx;h=4d506e4b709b1ea4877c2216197ecc9a6e1e0c27;hb=0fe90a83dd5df063252c10f50d9f8320e9055637;hp=a0fc95e8ae10794948d0af944cd64b67e0e830f9;hpb=d79bfda33f02bbf679a3dd22e36b7dbcb2ab1e4e;p=flightgear.git diff --git a/src/Scenery/scenery.hxx b/src/Scenery/scenery.hxx index a0fc95e8a..4d506e4b7 100644 --- a/src/Scenery/scenery.hxx +++ b/src/Scenery/scenery.hxx @@ -31,11 +31,15 @@ #include +#include + #include +#include
+ // Define a structure containing global scenery parameters -struct fgSCENERY { +class FGScenery : public FGSubsystem { // center of current scenery chunk Point3D center; @@ -55,13 +59,80 @@ struct fgSCENERY { // unit normal at point used to determine current elevation sgdVec3 cur_normal; -}; -extern struct fgSCENERY scenery; - - -// Initialize the Scenery Management system -int fgSceneryInit( void ); + // SSG scene graph + ssgRoot *scene_graph; + ssgBranch *terrain_branch; + ssgRoot *gnd_lights_root; + ssgRoot *rwy_lights_root; + ssgRoot *taxi_lights_root; + ssgBranch *models_branch; + ssgBranch *aircraft_branch; + +public: + + FGScenery(); + ~FGScenery(); + + // Implementation of FGSubsystem. + void init (); + void bind (); + void unbind (); + void update (double dt); + + inline double get_cur_elev() const { return cur_elev; } + inline void set_cur_elev( double e ) { cur_elev = e; } + + inline Point3D get_center() const { return center; } + inline void set_center( Point3D p ) { center = p; } + + inline Point3D get_next_center() const { return next_center; } + inline void set_next_center( Point3D p ) { next_center = p; } + + inline void set_cur_radius( double r ) { cur_radius = r; } + inline void set_cur_normal( sgdVec3 n ) { sgdCopyVec3( cur_normal, n ); } + + inline ssgRoot *get_scene_graph () const { return scene_graph; } + inline void set_scene_graph (ssgRoot * s) { scene_graph = s; } + + inline ssgBranch *get_terrain_branch () const { return terrain_branch; } + inline void set_terrain_branch (ssgBranch * t) { terrain_branch = t; } + + inline ssgRoot *get_gnd_lights_root () const { + return gnd_lights_root; + } + inline void set_gnd_lights_root (ssgRoot *r) { + gnd_lights_root = r; + } + + inline ssgRoot *get_rwy_lights_root () const { + return rwy_lights_root; + } + inline void set_rwy_lights_root (ssgRoot *r) { + rwy_lights_root = r; + } + + inline ssgRoot *get_taxi_lights_root () const { + return taxi_lights_root; + } + inline void set_taxi_lights_root (ssgRoot *r) { + taxi_lights_root = r; + } + + inline ssgBranch *get_models_branch () const { + return models_branch; + } + inline void set_models_branch (ssgBranch *t) { + models_branch = t; + } + + inline ssgBranch *get_aircraft_branch () const { + return aircraft_branch; + } + inline void set_aircraft_branch (ssgBranch *t) { + aircraft_branch = t; + } +}; #endif // _SCENERY_HXX