sgCoord shippos;
FastWorldCoordinate(&shippos, sc);
position->setTransform( &shippos );
- globals->get_scene_graph()->addKid(position);
+ globals->get_scenery()->get_scene_graph()->addKid(position);
//cout << "Transform called\n";
}
// Initialize the scenery management subsystem.
////////////////////////////////////////////////////////////////////
- globals->set_scenery( new FGScenery );
globals->get_scenery()->init();
globals->get_scenery()->bind();
class FGModelMgr;
class FGScenery;
-class ssgRoot;
-class ssgBranch;
-
/**
* Bucket for subsystem pointers representing the sim's state.
// FlightGear scenery manager
FGScenery *scenery;
- // SSG scene graph
- ssgRoot * scene_graph;
- ssgBranch * terrain_branch;
- ssgBranch * gnd_lights_branch;
- ssgBranch * rwy_lights_branch;
- ssgBranch * models_branch;
- ssgBranch * aircraft_branch;
-
public:
FGGlobals();
inline FGScenery * get_scenery () const { return scenery; }
inline void set_scenery ( FGScenery *s ) { scenery = s; }
- 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 ssgBranch * get_gnd_lights_branch () const {
- return gnd_lights_branch;
- }
- inline void set_gnd_lights_branch (ssgBranch * t) {
- gnd_lights_branch = t;
- }
-
- inline ssgBranch * get_rwy_lights_branch () const {
- return rwy_lights_branch;
- }
- inline void set_rwy_lights_branch (ssgBranch * t) {
- rwy_lights_branch = t;
- }
-
- 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;
- }
-
-
/**
* Save the current state as the initial state.
*/
ssgGetLight( 0 ) -> setColour( GL_DIFFUSE, l->scene_diffuse );
glEnable( GL_DEPTH_TEST );
ssgSetNearFar( scene_nearplane, scene_farplane );
- ssgCullAndDraw( globals->get_scene_graph() );
+ ssgCullAndDraw( globals->get_scenery()->get_scene_graph() );
// draw the lights
glFogf (GL_FOG_DENSITY, fog_exp2_punch_through);
glEnable( GL_DEPTH_TEST );
ssgSetNearFar( scene_nearplane, scene_farplane );
- ssgCullAndDraw( globals->get_scene_graph() );
+ ssgCullAndDraw( globals->get_scenery()->get_scene_graph() );
// change state for lighting here
SGPath modelpath( globals->get_fg_root() );
ssgModelPath( (char *)modelpath.c_str() );
-
+
+ // Initialize the global scenery manager
+ globals->set_scenery( new FGScenery );
+
// Scene graph root
- globals->set_scene_graph(new ssgRoot);
- globals->get_scene_graph()->setName( "Scene" );
+ globals->get_scenery()->set_scene_graph(new ssgRoot);
+ globals->get_scenery()->get_scene_graph()->setName( "Scene" );
lighting = new ssgRoot;
lighting->setName( "Lighting" );
// Terrain branch
- globals->set_terrain_branch(new ssgBranch);
- globals->get_terrain_branch()->setName( "Terrain" );
- globals->get_scene_graph()->addKid( globals->get_terrain_branch() );
+ globals->get_scenery()->set_terrain_branch(new ssgBranch);
+ globals->get_scenery()->get_terrain_branch()->setName( "Terrain" );
+ globals->get_scenery()->get_scene_graph()->addKid( globals->get_scenery()->get_terrain_branch() );
- globals->set_models_branch(new ssgBranch);
- globals->get_models_branch()->setName( "Models" );
- globals->get_scene_graph()->addKid( globals->get_models_branch() );
+ globals->get_scenery()->set_models_branch(new ssgBranch);
+ globals->get_scenery()->get_models_branch()->setName( "Models" );
+ globals->get_scenery()->get_scene_graph()->addKid( globals->get_scenery()->get_models_branch() );
- globals->set_aircraft_branch(new ssgBranch);
- globals->get_aircraft_branch()->setName( "Aircraft" );
- globals->get_scene_graph()->addKid( globals->get_aircraft_branch() );
+ globals->get_scenery()->set_aircraft_branch(new ssgBranch);
+ globals->get_scenery()->get_aircraft_branch()->setName( "Aircraft" );
+ globals->get_scenery()->get_scene_graph()->addKid( globals->get_scenery()->get_aircraft_branch() );
// Lighting
- globals->set_gnd_lights_branch(new ssgBranch);
- globals->get_gnd_lights_branch()->setName( "Ground Lighting" );
- lighting->addKid( globals->get_gnd_lights_branch() );
+ globals->get_scenery()->set_gnd_lights_branch(new ssgBranch);
+ globals->get_scenery()->get_gnd_lights_branch()->setName( "Ground Lighting" );
+ lighting->addKid( globals->get_scenery()->get_gnd_lights_branch() );
- globals->set_rwy_lights_branch(new ssgBranch);
- globals->get_rwy_lights_branch()->setName( "Runway Lighting" );
- lighting->addKid( globals->get_rwy_lights_branch() );
+ globals->get_scenery()->set_rwy_lights_branch(new ssgBranch);
+ globals->get_scenery()->get_rwy_lights_branch()->setName( "Runway Lighting" );
+ lighting->addKid( globals->get_scenery()->get_rwy_lights_branch() );
////////////////////////////////////////////////////////////////////
// Initialize the general model subsystem.
// Do the network intialization
if ( fgGetBool("/sim/networking/network-olk") ) {
printf("Multipilot mode %s\n",
- fg_net_init( globals->get_scene_graph() ) );
+ fg_net_init( globals->get_scenery()->get_scene_graph() ) );
}
#endif
//dummy_tile->lightmaps_sequence->setTraversalMaskBits( SSGTRAV_HOT );
lightpoints_transform->addKid( dummy_tile->lightmaps_sequence );
lightpoints_transform->ref();
- globals->get_gnd_lights_branch()->addKid( lightpoints_transform );
+ globals->get_scenery()->get_gnd_lights_branch()->addKid( lightpoints_transform );
}
} //if in1
} //if objc
SG_LOG ( SG_TERRAIN, SG_ALERT, "Finished object processing." );
- globals->get_terrain_branch()->addKid( ship_sel ); //add selector node to root node
+ globals->get_scenery()->get_terrain_branch()->addKid( ship_sel ); //add selector node to root node
}
return;
#include <Main/globals.hxx>
#include <Main/fg_props.hxx>
#include <Main/viewmgr.hxx>
+#include <Scenery/scenery.hxx>
#include "acmodel.hxx"
#include "model.hxx"
delete _aircraft;
delete _scene;
// SSG will delete it
- globals->get_aircraft_branch()->removeKid(_selector);
+ globals->get_scenery()->get_aircraft_branch()->removeKid(_selector);
}
void
_aircraft->init(fgGetString("/sim/model/path", "Models/Geometry/glider.ac"));
_scene->addKid(_aircraft->getSceneGraph());
_selector->addKid(_aircraft->getSceneGraph());
- globals->get_aircraft_branch()->addKid(_selector);
+ globals->get_scenery()->get_aircraft_branch()->addKid(_selector);
}
void
#include <plib/ssg.h>
#include <Main/fg_props.hxx>
+#include <Scenery/scenery.hxx>
#include "modelmgr.hxx"
#include "model.hxx"
FGModelMgr::~FGModelMgr ()
{
- for (int i = 0; i < _instances.size(); i++) {
- globals->get_models_branch()
+ for (unsigned int i = 0; i < _instances.size(); i++) {
+ globals->get_scenery()->get_models_branch()
->removeKid(_instances[i]->model->getSceneGraph());
delete _instances[i];
}
{
vector<SGPropertyNode_ptr> model_nodes =
fgGetNode("/models", true)->getChildren("model");
- for (int i = 0; i < model_nodes.size(); i++) {
+ for (unsigned int i = 0; i < model_nodes.size(); i++) {
SGPropertyNode * node = model_nodes[i];
SG_LOG(SG_GENERAL, SG_INFO,
"Adding model " << node->getStringValue("name", "[unnamed]"));
model->setHeadingDeg(node->getDoubleValue("heading-deg"));
// Add this model to the global scene graph
- globals->get_scene_graph()->addKid(model->getSceneGraph());
+ globals->get_scenery()->get_scene_graph()->addKid(model->getSceneGraph());
// Save this instance for updating
_instances.push_back(instance);
void
FGModelMgr::update (double dt)
{
- for (int i = 0; i < _instances.size(); i++) {
+ for (unsigned int i = 0; i < _instances.size(); i++) {
Instance * instance = _instances[i];
FG3DModel * model = instance->model;
#include <Main/globals.hxx>
#include <Main/viewer.hxx>
+#include <Scenery/scenery.hxx>
#include "hitlist.hxx"
sgdCopyVec3(orig, view_pos );
sgdCopyVec3(dir, abs_view_pos );
- hit_list->Intersect( globals->get_terrain_branch(), orig, dir );
+ hit_list->Intersect( globals->get_scenery()->get_terrain_branch(),
+ orig, dir );
int this_hit=0;
Point3D geoc;
}
// and ... just in case we missed something ...
- globals->get_terrain_branch()->removeAllKids();
+ globals->get_scenery()->get_terrain_branch()->removeAllKids();
}
#include <plib/sg.h>
+#include <plib/ssg.h>
+
#include <simgear/math/point3d.hxx>
#include <Main/fgfs.hxx>
// unit normal at point used to determine current elevation
sgdVec3 cur_normal;
+ // SSG scene graph
+ ssgRoot * scene_graph;
+ ssgBranch * terrain_branch;
+ ssgBranch * gnd_lights_branch;
+ ssgBranch * rwy_lights_branch;
+ ssgBranch * models_branch;
+ ssgBranch * aircraft_branch;
+
public:
FGScenery();
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 ssgBranch * get_gnd_lights_branch () const {
+ return gnd_lights_branch;
+ }
+ inline void set_gnd_lights_branch (ssgBranch * t) {
+ gnd_lights_branch = t;
+ }
+
+ inline ssgBranch * get_rwy_lights_branch () const {
+ return rwy_lights_branch;
+ }
+ inline void set_rwy_lights_branch (ssgBranch * t) {
+ rwy_lights_branch = t;
+ }
+
+ 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;
+ }
};
FGTileEntry* e = attach_queue.front();
attach_queue.pop();
#endif
- e->add_ssg_nodes( globals->get_terrain_branch(),
- globals->get_gnd_lights_branch(),
- globals->get_rwy_lights_branch() );
+ e->add_ssg_nodes( globals->get_scenery()->get_terrain_branch(),
+ globals->get_scenery()->get_gnd_lights_branch(),
+ globals->get_scenery()->get_rwy_lights_branch() );
// cout << "Adding ssg nodes for "
}