X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FScenery%2Fscenery.cxx;h=88435c10cd7dc72a6677c388232e3a841f95e970;hb=e83af4e235800d04f4ecba10499228865baf3d54;hp=163a4da58e1d249041d01bc2f0db78c77664b5d2;hpb=c90db01dc8d5462a3da22771ffa7c96f5ea31217;p=flightgear.git diff --git a/src/Scenery/scenery.cxx b/src/Scenery/scenery.cxx index 163a4da58..88435c10c 100644 --- a/src/Scenery/scenery.cxx +++ b/src/Scenery/scenery.cxx @@ -25,58 +25,78 @@ # include #endif -#ifdef HAVE_WINDOWS_H -# include -#endif - -#include -#include - #include #include -#include -#include
+#include +#include -// #include "obj.hxx" -#include "scenery.hxx" -// #include "texload.h" +#include
+#include "scenery.hxx" -// Temporary hack until we get a better texture management system running -GLint area_texture; +// Scenery Management system +FGScenery::FGScenery() { + SG_LOG( SG_TERRAIN, SG_INFO, "Initializing scenery subsystem" ); -// Shared structure to hold current scenery parameters -struct fgSCENERY scenery; + center = Point3D(0.0); + cur_elev = -9999; +} // Initialize the Scenery Management system -int fgSceneryInit( void ) { - fgOPTIONS *o; - // char path[1024], fgpath[1024]; - // GLubyte *texbuf; - // int width, height; +FGScenery::~FGScenery() { +} - o = ¤t_options; - FG_LOG( FG_TERRAIN, FG_INFO, "Initializing scenery subsystem" ); +void FGScenery::init() { + // Scene graph root + scene_graph = new ssgRoot; + scene_graph->setName( "Scene" ); - scenery.cur_elev = -9999; + // Terrain branch + terrain_branch = new ssgBranch; + terrain_branch->setName( "Terrain" ); + scene_graph->addKid( terrain_branch ); - return(1); + models_branch = new ssgBranch; + models_branch->setName( "Models" ); + scene_graph->addKid( models_branch ); + + aircraft_branch = new ssgBranch; + aircraft_branch->setName( "Aircraft" ); + scene_graph->addKid( aircraft_branch ); + + // Lighting + gnd_lights_root = new ssgRoot; + gnd_lights_root->setName( "Ground Lighting Root" ); + + vasi_lights_root = new ssgRoot; + vasi_lights_root->setName( "VASI/PAPI Lighting Root" ); + + rwy_lights_root = new ssgRoot; + rwy_lights_root->setName( "Runway Lighting Root" ); + + taxi_lights_root = new ssgRoot; + taxi_lights_root->setName( "Taxi Lighting Root" ); + + // Initials values needed by the draw-time object loader + sgUserDataInit( globals->get_model_lib(), globals->get_fg_root(), + globals->get_props(), globals->get_sim_time_sec() ); } -// Tell the scenery manager where we are so it can load the proper data, and -// build the proper structures. -void fgSceneryUpdate(double lon, double lat, double elev) { - // does nothing; +void FGScenery::update(double dt) { } -// Render out the current scene -void fgSceneryRender( void ) { +void FGScenery::bind() { + fgTie("/environment/ground-elevation-m", this, + &FGScenery::get_cur_elev, &FGScenery::set_cur_elev); } +void FGScenery::unbind() { + fgUntie("/environment/ground-elevation-m"); +}