better follow simgear conventions.
double pitch; //degrees
char* model_path; //Path to the 3D model
- FGModelPlacement aip;
+ SGModelPlacement aip;
void Transform();
};
string planepath = "Aircraft/c172/Models/c172-dpm.ac";
SGPath path = globals->get_fg_root();
path.append(planepath);
- ssgBranch *model = fgLoad3DModel( path.str(),
+ ssgBranch *model = sgLoad3DModel( path.str(),
planepath.c_str(),
globals->get_props(),
globals->get_sim_time_sec() );
//cout << "In IN_PATTERN\n";
if(!inAir) DoGroundElev();
if(!elevInitGood) {
- if(aip.getFGLocation()->get_cur_elev_m() > -9990.0) {
- pos.setelev(aip.getFGLocation()->get_cur_elev_m() + wheelOffset);
+ if(aip.getSGLocation()->get_cur_elev_m() > -9990.0) {
+ pos.setelev(aip.getSGLocation()->get_cur_elev_m() + wheelOffset);
//cout << "TAKEOFF_ROLL, POS = " << pos.lon() << ", " << pos.lat() << ", " << pos.elev() << '\n';
//Transform();
aip.setVisible(true);
//cout << "*" << flush;
if(!elevInitGood) {
//DoGroundElev();
- if(aip.getFGLocation()->get_cur_elev_m() > -9990.0) {
- pos.setelev(aip.getFGLocation()->get_cur_elev_m() + wheelOffset);
+ if(aip.getSGLocation()->get_cur_elev_m() > -9990.0) {
+ pos.setelev(aip.getSGLocation()->get_cur_elev_m() + wheelOffset);
//Transform();
aip.setVisible(true);
//Transform();
//cout << "In PARKED\n";
if(!elevInitGood) {
DoGroundElev();
- if(aip.getFGLocation()->get_cur_elev_m() > -9990.0) {
- pos.setelev(aip.getFGLocation()->get_cur_elev_m() + wheelOffset);
+ if(aip.getSGLocation()->get_cur_elev_m() > -9990.0) {
+ pos.setelev(aip.getSGLocation()->get_cur_elev_m() + wheelOffset);
//Transform();
aip.setVisible(true);
//Transform();
double dveldt = 5.0;
vel += dveldt * dt;
}
- if(aip.getFGLocation()->get_cur_elev_m() > -9990.0) {
- pos.setelev(aip.getFGLocation()->get_cur_elev_m() + wheelOffset);
+ if(aip.getSGLocation()->get_cur_elev_m() > -9990.0) {
+ pos.setelev(aip.getSGLocation()->get_cur_elev_m() + wheelOffset);
}
IAS = vel + (cos((hdg - wind_from) * DCL_DEGREES_TO_RADIANS) * wind_speed);
if(IAS >= 70) {
// for us in update(...) when the inAir flag is false.
}
if(pos.elev() < (rwy.threshold_pos.elev()+10.0+wheelOffset)) {
- if(aip.getFGLocation()->get_cur_elev_m() > -9990.0) {
- if((aip.getFGLocation()->get_cur_elev_m() + wheelOffset) > pos.elev()) {
+ if(aip.getSGLocation()->get_cur_elev_m() > -9990.0) {
+ if((aip.getSGLocation()->get_cur_elev_m() + wheelOffset) > pos.elev()) {
slope = 0.0;
pitch = 0.0;
leg = LANDING_ROLL;
break;
case LANDING_ROLL:
//inAir = false;
- if(aip.getFGLocation()->get_cur_elev_m() > -9990.0) {
- pos.setelev(aip.getFGLocation()->get_cur_elev_m() + wheelOffset);
+ if(aip.getSGLocation()->get_cur_elev_m() > -9990.0) {
+ pos.setelev(aip.getSGLocation()->get_cur_elev_m() + wheelOffset);
}
track = rwy.hdg;
double dveldt = -5.0;
double slope = 0.0;
pos = dclUpdatePosition(pos, track, slope, dist);
//cout << "Updated position...\n";
- if(aip.getFGLocation()->get_cur_elev_m() > -9990) {
- pos.setelev(aip.getFGLocation()->get_cur_elev_m() + wheelOffset);
+ if(aip.getSGLocation()->get_cur_elev_m() > -9990) {
+ pos.setelev(aip.getSGLocation()->get_cur_elev_m() + wheelOffset);
} // else don't change the elev until we get a valid ground elev again!
} else if(lastNode) {
if(taxiState == TD_LINING_UP) {
double slope = 0.0;
pos = dclUpdatePosition(pos, track, slope, dist);
//cout << "Updated position...\n";
- if(aip.getFGLocation()->get_cur_elev_m() > -9990) {
- pos.setelev(aip.getFGLocation()->get_cur_elev_m() + wheelOffset);
+ if(aip.getSGLocation()->get_cur_elev_m() > -9990) {
+ pos.setelev(aip.getSGLocation()->get_cur_elev_m() + wheelOffset);
} // else don't change the elev until we get a valid ground elev again!
if(fabs(hdg - rwy.hdg) <= 1.0) {
operatingState = IN_PATTERN;
// answer with one call to the function, but what I tried in the two commented-out lines
// below only intermittently worked, and I haven't quite groked why yet.
//SGBucket buck(pos.lon(), pos.lat());
- //aip.getFGLocation()->set_tile_center(Point3D(buck.get_center_lon(), buck.get_center_lat(), 0.0));
+ //aip.getSGLocation()->set_tile_center(Point3D(buck.get_center_lon(), buck.get_center_lat(), 0.0));
double visibility_meters = fgGetDouble("/environment/visibility-m");
//globals->get_tile_mgr()->prep_ssg_nodes( acmodel_location,
- globals->get_tile_mgr()->prep_ssg_nodes( aip.getFGLocation(), visibility_meters );
+ globals->get_tile_mgr()->prep_ssg_nodes( aip.getSGLocation(), visibility_meters );
Point3D scenery_center = globals->get_scenery()->get_center();
- globals->get_tile_mgr()->update( aip.getFGLocation(), visibility_meters, (aip.getFGLocation())->get_absolute_view_pos( scenery_center ) );
- // save results of update in FGLocation for fdm...
+ globals->get_tile_mgr()->update( aip.getSGLocation(), visibility_meters, (aip.getSGLocation())->get_absolute_view_pos( scenery_center ) );
+ // save results of update in SGLocation for fdm...
//if ( globals->get_scenery()->get_cur_elev() > -9990 ) {
// acmodel_location->
//}
// The need for this here means that at least 2 consecutive passes are needed :-(
- aip.getFGLocation()->set_tile_center( globals->get_scenery()->get_next_center() );
+ aip.getSGLocation()->set_tile_center( globals->get_scenery()->get_next_center() );
//cout << "Transform Elev is " << globals->get_scenery()->get_cur_elev() << '\n';
- aip.getFGLocation()->set_cur_elev_m(globals->get_scenery()->get_cur_elev());
+ aip.getSGLocation()->set_cur_elev_m(globals->get_scenery()->get_cur_elev());
//return(globals->get_scenery()->get_cur_elev());
}
* or joystick, but they are tied to specific mouse actions in
* rectangular areas of the panel.
*/
-class FGPanelAction : public FGConditional
+class FGPanelAction : public SGConditional
{
public:
FGPanelAction ();
/**
* A transformation for a layer.
*/
-class FGPanelTransformation : public FGConditional
+class FGPanelTransformation : public SGConditional
{
public:
* on current FGFS instrument readings: for example, a texture
* representing a needle can rotate to show the airspeed.
*/
-class FGInstrumentLayer : public FGConditional
+class FGInstrumentLayer : public SGConditional
{
public:
* may show up in the future (some complex instruments could be
* entirely hand-coded, for example).
*/
-class FGPanelInstrument : public FGConditional
+class FGPanelInstrument : public SGConditional
{
public:
FGPanelInstrument ();
DOUBLE_VALUE
};
- class Chunk : public FGConditional
+ class Chunk : public SGConditional
{
public:
Chunk (const string &text, const string &fmt = "%s");
////////////////////////////////////////////////////////////////////////
static void
-readConditions (FGConditional * component, const SGPropertyNode * node)
+readConditions (SGConditional *component, const SGPropertyNode *node)
{
const SGPropertyNode * conditionNode = node->getChild("condition");
if (conditionNode != 0)
// The top level is implicitly AND
- component->setCondition(fgReadCondition(globals->get_props(),
+ component->setCondition(sgReadCondition(globals->get_props(),
conditionNode) );
}
// Inform LaRCsim of the local terrain altitude
// Runway_altitude = get_Runway_altitude();
- Runway_altitude = getACModel()->get3DModel()->getFGLocation()->get_cur_elev_m() * SG_METER_TO_FEET;
+ Runway_altitude = getACModel()->get3DModel()->getSGLocation()->get_cur_elev_m() * SG_METER_TO_FEET;
// Weather
/* V_north_airmass = get_V_north_airmass();
V_east_airmass = get_V_east_airmass();
wind[2] = get_V_down_airmass() * FT2M * -1.0;
// Get ground elevation from the FGinterface's FGlocation data
- double ground = getACModel()->get3DModel()->getFGLocation()->get_cur_elev_m();
+ double ground = getACModel()->get3DModel()->getSGLocation()->get_cur_elev_m();
// cout << "YASIM: ground = " << ground << endl;
float pressure = fgGetFloat("/environment/pressure-inhg") * INHG2PA;
* SGD_DEGREES_TO_RADIANS );
double ground_elev_m = globals->get_scenery()->get_cur_elev();
double ground_elev_ft = ground_elev_m * SG_METER_TO_FEET;
- _acmodel->get3DModel()->getFGLocation()->set_cur_elev_m( ground_elev_m );
+ _acmodel->get3DModel()->getSGLocation()->set_cur_elev_m( ground_elev_m );
_set_Runway_altitude ( ground_elev_ft );
if ( fgGetBool("/sim/presets/onground")
|| fgGetDouble("/sim/presets/altitude-ft") < ground_elev_ft ) {
_set_Sea_level_radius( sl_radius * SG_METER_TO_FEET );
if ( getACModel() != NULL ) {
- _set_Runway_altitude( getACModel()->get3DModel()->getFGLocation()->get_cur_elev_m() * SG_METER_TO_FEET );
+ _set_Runway_altitude( getACModel()->get3DModel()->getSGLocation()->get_cur_elev_m() * SG_METER_TO_FEET );
}
_set_sin_lat_geocentric( lat_geoc );
_set_Geodetic_Position( lat_geod, lon, alt );
_set_Sea_level_radius( sl_radius2 * SG_METER_TO_FEET );
- _set_Runway_altitude( getACModel()->get3DModel()->getFGLocation()->get_cur_elev_m() * SG_METER_TO_FEET );
+ _set_Runway_altitude( getACModel()->get3DModel()->getSGLocation()->get_cur_elev_m() * SG_METER_TO_FEET );
_set_sin_lat_geocentric( lat_geoc );
_set_cos_lat_geocentric( lat_geoc );
{
const SGPropertyNode * conditionNode = node->getChild("condition");
if (conditionNode != 0)
- setCondition(fgReadCondition(globals->get_props(), conditionNode));
+ setCondition(sgReadCondition(globals->get_props(), conditionNode));
_command_name = node->getStringValue("command", "");
if (_command_name.empty()) {
* keyboard key, a joystick button or axis, or even a panel
* instrument.</p>
*/
-class FGBinding : public FGConditional
+class FGBinding : public SGConditional
{
public:
bool fgInitPosition() {
bool set_pos = false;
- // Do a first guess if we should be on the ground or in the air
- // (to be refined later based on other input.
+ // If glideslope is specified, then calculate offset-distance or
+ // altitude relative to glide slope if either of those was not
+ // specified.
+ if ( fgGetDouble("/sim/presets/glideslope-deg") > 0.1 ) {
+ fgSetDistOrAltFromGlideSlope();
+ }
+
+ // Select ground or air start depending on if an altitude is
+ // specified (this choice can be refined later based on other
+ // input.)
if ( fgGetDouble("/sim/presets/altitude-ft") > -9990.0 ) {
fgSetBool("/sim/presets/onground", false);
} else {
fgSetBool("/sim/presets/onground", true);
}
- // If glideslope is specified, then calculate offset-distance or
- // altitude relative to glide slope if either of those was not
- // specified.
- fgSetDistOrAltFromGlideSlope();
-
// If we have an explicit, in-range lon/lat, don't change it, just use it.
// If not, check for an airport-id and use that.
// If not, default to the middle of the KSFO field.
if ( !set_pos && !vor.empty() ) {
// a VOR is requested
if ( fgSetPosFromNAV( vor, vor_freq ) ) {
- if ( fgGetDouble("/sim/presets/altitude-ft") > -9990.0 ) {
- fgSetBool("/sim/presets/onground", false);
- } else {
- fgSetBool("/sim/presets/onground", true);
- }
set_pos = true;
}
}
if ( !set_pos && !ndb.empty() ) {
// an NDB is requested
if ( fgSetPosFromNAV( ndb, ndb_freq ) ) {
- if ( fgGetDouble("/sim/presets/altitude-ft") > -9990.0 ) {
- fgSetBool("/sim/presets/onground", false);
- } else {
- fgSetBool("/sim/presets/onground", true);
- }
set_pos = true;
}
}
if ( !set_pos && !fix.empty() ) {
// a Fix is requested
if ( fgSetPosFromFix( fix ) ) {
- if ( fgGetDouble("/sim/presets/altitude-ft") > -9990.0 ) {
- fgSetBool("/sim/presets/onground", false);
- } else {
- fgSetBool("/sim/presets/onground", true);
- }
set_pos = true;
}
}
class SGCommandMgr;
class SGMagVar;
+class SGModelLoader;
class SGPropertyNode;
class SGRoute;
class SGTime;
class FGEnvironment;
class FGEnvironmentMgr;
class FGIO;
-class FGModelLoader;
class FGModelMgr;
class FGScenery;
#ifdef FG_MPLAYER_AS
SGCommandMgr *commands;
- FGModelLoader * model_loader;
+ SGModelLoader * model_loader;
FGAircraftModel *acmodel;
inline SGCommandMgr *get_commands () { return commands; }
- inline FGModelLoader * get_model_loader () { return model_loader; }
+ inline SGModelLoader * get_model_loader () { return model_loader; }
- inline void set_model_loader (FGModelLoader * loader) {
+ inline void set_model_loader (SGModelLoader * loader) {
model_loader = loader;
}
}
// Keep resetting sim time while the sim is initializing
globals->set_sim_time_sec( 0.0 );
- Animation::set_sim_time_sec( 0.0 );
+ SGAnimation::set_sim_time_sec( 0.0 );
} else {
// idle_state is now 1000 meaning we've finished all our
// initializations and are running the main loop, so this will
delta_time_sec = 0;
last_time_stamp = current_time_stamp;
globals->inc_sim_time_sec( delta_time_sec );
- Animation::set_sim_time_sec( globals->get_sim_time_sec() );
+ SGAnimation::set_sim_time_sec( globals->get_sim_time_sec() );
static long remainder = 0;
long elapsed;
sglog().setLogLevels( SG_ALL, (sgDebugPriority)fgGetInt("/sim/log-level") );
sglog().setLogLevels( SG_ALL, SG_INFO );
- FGLocation * acmodel_location = 0;
+ SGLocation * acmodel_location = 0;
if(cur_fdm_state->getACModel() != 0) {
- acmodel_location = (FGLocation *) cur_fdm_state->getACModel()->get3DModel()->getFGLocation();
+ acmodel_location = (SGLocation *) cur_fdm_state->getACModel()->get3DModel()->getSGLocation();
}
SG_LOG( SG_ALL, SG_DEBUG, "Running Main Loop");
// update tile manager for FDM...
// ...only if location is different than the viewer (to avoid duplicating effort)
- if( acmodel_location != current_view->getFGLocation() ) {
+ if( acmodel_location != current_view->getSGLocation() ) {
if( acmodel_location != 0 ) {
globals->get_tile_mgr()->prep_ssg_nodes( acmodel_location,
visibility_meters );
globals->get_tile_mgr()->
update( acmodel_location, visibility_meters,
acmodel_location->get_absolute_view_pos(globals->get_scenery()->get_center()) );
- // save results of update in FGLocation for fdm...
+ // save results of update in SGLocation for fdm...
if ( globals->get_scenery()->get_cur_elev() > -9990 ) {
acmodel_location->
set_cur_elev_m( globals->get_scenery()->get_cur_elev() );
}
}
- globals->get_tile_mgr()->prep_ssg_nodes( current_view->getFGLocation(),
+ globals->get_tile_mgr()->prep_ssg_nodes( current_view->getSGLocation(),
visibility_meters );
// update tile manager for view...
// IMPORTANT!!! the tilemgr update for view location _must_ be done last
// after the FDM's until all of Flight Gear code references the viewer's location
// for elevation instead of the "scenery's" current elevation.
- FGLocation *view_location = globals->get_current_view()->getFGLocation();
+ SGLocation *view_location = globals->get_current_view()->getSGLocation();
globals->get_tile_mgr()->update( view_location, visibility_meters,
current_view->get_absolute_view_pos() );
- // save results of update in FGLocation for fdm...
+ // save results of update in SGLocation for fdm...
if ( globals->get_scenery()->get_cur_elev() > -9990 ) {
- current_view->getFGLocation()->set_cur_elev_m( globals->get_scenery()->get_cur_elev() );
+ current_view->getSGLocation()->set_cur_elev_m( globals->get_scenery()->get_cur_elev() );
}
- current_view->getFGLocation()->set_tile_center( globals->get_scenery()->get_next_center() );
+ current_view->getSGLocation()->set_tile_center( globals->get_scenery()->get_next_center() );
// If fdm location is same as viewer's then we didn't do the update for fdm location
- // above so we need to save the viewer results in the fdm FGLocation as well...
- if( acmodel_location == current_view->getFGLocation() ) {
+ // above so we need to save the viewer results in the fdm SGLocation as well...
+ if( acmodel_location == current_view->getSGLocation() ) {
if( acmodel_location != 0 ) {
if ( globals->get_scenery()->get_cur_elev() > -9990 ) {
acmodel_location->set_cur_elev_m( globals->get_scenery()->get_cur_elev() );
// Initialize the general model subsystem.
////////////////////////////////////////////////////////////////////
- globals->set_model_loader(new FGModelLoader);
+ globals->set_model_loader(new SGModelLoader);
globals->set_model_mgr(new FGModelMgr);
globals->get_model_mgr()->init();
globals->get_model_mgr()->bind();
FGViewer::init ()
{
if ( _from_model )
- _location = (FGLocation *) globals->get_aircraft_model()->get3DModel()->getFGLocation();
+ _location = (SGLocation *) globals->get_aircraft_model()->get3DModel()->getSGLocation();
else
- _location = (FGLocation *) new FGLocation;
+ _location = (SGLocation *) new SGLocation;
if ( _type == FG_LOOKAT ) {
if ( _at_model )
- _target_location = (FGLocation *) globals->get_aircraft_model()->get3DModel()->getFGLocation();
+ _target_location = (SGLocation *) globals->get_aircraft_model()->get3DModel()->getSGLocation();
else
- _target_location = (FGLocation *) new FGLocation;
+ _target_location = (SGLocation *) new SGLocation;
}
}
}
void
-FGViewer::updateFromModelLocation (FGLocation * location)
+FGViewer::updateFromModelLocation (SGLocation * location)
{
sgCopyMat4(LOCAL, location->getCachedTransformMatrix());
}
void
-FGViewer::updateAtModelLocation (FGLocation * location)
+FGViewer::updateAtModelLocation (SGLocation * location)
{
sgCopyMat4(ATLOCAL,
location->getCachedTransformMatrix());
}
void
-FGViewer::recalcOurOwnLocation (FGLocation * location, double lon_deg, double lat_deg, double alt_ft,
+FGViewer::recalcOurOwnLocation (SGLocation * location, double lon_deg, double lat_deg, double alt_ft,
double roll_deg, double pitch_deg, double heading_deg)
{
// update from our own data...
}
// copy results from location class to viewer...
-// FIXME: some of these should be changed to reference directly to FGLocation...
+// FIXME: some of these should be changed to reference directly to SGLocation...
void
FGViewer::copyLocationData()
{
inline void set_clean() { _dirty = false; }
// return eye location...
- virtual FGLocation * getFGLocation () const { return _location; }
+ virtual SGLocation * getSGLocation () const { return _location; }
private:
bool _at_model;
int _at_model_index; // number of model (for multi model)
- FGLocation * _location;
- FGLocation * _target_location;
+ SGLocation * _location;
+ SGLocation * _target_location;
// the nominal field of view (angle, in degrees)
double _fov_deg;
void recalcLookFrom();
void recalcLookAt();
void copyLocationData();
- void updateFromModelLocation (FGLocation * location);
- void updateAtModelLocation (FGLocation * location);
- void recalcOurOwnLocation (FGLocation * location, double lon_deg, double lat_deg, double alt_ft,
+ void updateFromModelLocation (SGLocation * location);
+ void updateAtModelLocation (SGLocation * location);
+ void recalcOurOwnLocation (SGLocation * location, double lon_deg, double lat_deg, double alt_ft,
double roll_deg, double pitch_deg, double heading_deg);
// add to _heading_offset_deg
void
FGAircraftModel::init ()
{
- _aircraft = new FGModelPlacement;
+ _aircraft = new SGModelPlacement;
string path = fgGetString("/sim/model/path", "Models/Geometry/glider.ac");
try {
ssgBranch *model = fgLoad3DModelPanel( globals->get_fg_root(),
// Don't pull in the headers, since we don't need them here.
class ssgRoot;
class ssgSelector;
-class FGModelPlacement;
+class SGModelPlacement;
class FGAircraftModel : public FGSubsystem
virtual void unbind ();
virtual void update (double dt);
virtual void draw ();
- virtual FGModelPlacement * get3DModel() { return _aircraft; }
+ virtual SGModelPlacement * get3DModel() { return _aircraft; }
private:
- FGModelPlacement * _aircraft;
+ SGModelPlacement * _aircraft;
ssgSelector * _selector;
ssgRoot * _scene;
float _nearplane;
ssgTransform * alignmainmodel = new ssgTransform;
alignmainmodel->addKid(model);
sgMat4 res_matrix;
- fgMakeOffsetsMatrix(&res_matrix,
+ sgMakeOffsetsMatrix(&res_matrix,
props.getFloatValue("/offsets/heading-deg", 0.0),
props.getFloatValue("/offsets/roll-deg", 0.0),
props.getFloatValue("/offsets/pitch-deg", 0.0),
const char * name = animation_nodes[i]->getStringValue("name", 0);
vector<SGPropertyNode_ptr> name_nodes =
animation_nodes[i]->getChildren("object-name");
- fgMakeAnimation( model, name, name_nodes, prop_root, animation_nodes[i],
+ sgMakeAnimation( model, name, name_nodes, prop_root, animation_nodes[i],
sim_time_sec);
}
SGPropertyNode_ptr node = model_nodes[i];
ssgTransform * align = new ssgTransform;
sgMat4 res_matrix;
- fgMakeOffsetsMatrix(&res_matrix,
+ sgMakeOffsetsMatrix(&res_matrix,
node->getFloatValue("offsets/heading-deg", 0.0),
node->getFloatValue("offsets/roll-deg", 0.0),
node->getFloatValue("offsets/pitch-deg", 0.0),
node->getFloatValue("offsets/z-m", 0.0));
align->setTransform(res_matrix);
- ssgBranch * kid = fgLoad3DModel( fg_root, node->getStringValue("path"),
+ ssgBranch * kid = sgLoad3DModel( fg_root, node->getStringValue("path"),
prop_root, sim_time_sec );
align->addKid(kid);
model->addKid(align);
* list wrapper to add animations to the model.
*
* Subsystems should not normally invoke this function directly;
- * instead, they should use the FGModelLoader declared in loader.hxx.
+ * instead, they should use the SGModelLoader declared in loader.hxx.
*/
ssgBranch *fgLoad3DModelPanel( const string& fg_root, const string &path,
SGPropertyNode *prop_root,
SG_LOG(SG_GENERAL, SG_INFO,
"Adding model " << node->getStringValue("name", "[unnamed]"));
Instance * instance = new Instance;
- FGModelPlacement *model = new FGModelPlacement;
+ SGModelPlacement *model = new SGModelPlacement;
instance->model = model;
ssgBranch *object
- = fgLoad3DModel( globals->get_fg_root(),
+ = sgLoad3DModel( globals->get_fg_root(),
node->getStringValue("path",
"Models/Geometry/glider.ac"),
globals->get_props(),
{
for (unsigned int i = 0; i < _instances.size(); i++) {
Instance * instance = _instances[i];
- FGModelPlacement * model = instance->model;
+ SGModelPlacement * model = instance->model;
// Optionally set position from properties
if (instance->lon_deg_node != 0)
// Don't pull in headers, since we don't need them here.
class ssgSelector;
class SGPropertyNode;
-class FGModelPlacement;
+class SGModelPlacement;
/**
* The model manager uses the property nodes to update the model's
* position and orientation; any of the property node pointers may
* be set to zero to avoid update. Normally, a caller should
- * load the model by instantiating FGModelPlacement with the path
+ * load the model by instantiating SGModelPlacement with the path
* to the model or its XML wrapper, then assign any relevant
* property node pointers.
*
- * @see FGModelPlacement
+ * @see SGModelPlacement
* @see FGModelMgr#add_instance
*/
struct Instance
{
Instance ();
virtual ~Instance ();
- FGModelPlacement * model;
+ SGModelPlacement * model;
SGPropertyNode * lon_deg_node;
SGPropertyNode * lat_deg_node;
SGPropertyNode * elev_ft_node;
double *bounding_radius,
ssgBranch* geometry )
{
- FGNewMat *newmat;
+ SGMaterial *newmat;
ssgSimpleState *state = NULL;
public:
bool is_filled_in;
ssgLeaf * leaf;
- FGNewMat * mat;
+ SGMaterial * mat;
ssgBranch * branch;
float sin_lat;
float cos_lat;
float * p3;
sgVec3 center;
double area;
- FGNewMat::ObjectGroup * object_group;
+ SGMaterial::ObjectGroup * object_group;
ssgBranch * branch;
LeafUserData * leafData;
unsigned int seed;
void fill_in_triangle();
- void add_object_to_triangle(FGNewMat::Object * object);
+ void add_object_to_triangle(SGMaterial::Object * object);
void makeWorldMatrix (sgMat4 ROT, double hdg_deg );
};
int nObjects = object_group->get_object_count();
for (int i = 0; i < nObjects; i++) {
- FGNewMat::Object * object = object_group->get_object(i);
+ SGMaterial::Object * object = object_group->get_object(i);
double num = area / object->get_coverage_m2();
// place an object each unit of area
}
}
-void TriUserData::add_object_to_triangle (FGNewMat::Object * object)
+void TriUserData::add_object_to_triangle (SGMaterial::Object * object)
{
// Set up the random heading if required.
double hdg_deg = 0;
- if (object->get_heading_type() == FGNewMat::Object::HEADING_RANDOM)
+ if (object->get_heading_type() == SGMaterial::Object::HEADING_RANDOM)
hdg_deg = sg_random() * 360;
sgMat4 mat;
int num_groups = mat->get_object_group_count();
for (int j = 0; j < num_groups; j++) {
// Look up the random object.
- FGNewMat::ObjectGroup * group = mat->get_object_group(j);
+ SGMaterial::ObjectGroup * group = mat->get_object_group(j);
// Set up the range selector for the entire
// triangle; note that we use the object
return;
// Get the material for this surface.
- FGNewMat * mat = material_lib.find(material_name);
+ SGMaterial * mat = material_lib.find(material_name);
if (mat == 0) {
SG_LOG(SG_INPUT, SG_ALERT, "Unknown material " << material_name);
return;
ssgSimpleState *state = NULL;
float coverage = -1;
- FGNewMat *newmat = material_lib.find( material );
+ SGMaterial *newmat = material_lib.find( material );
if ( newmat == NULL ) {
// see if this is an on the fly texture
string file = path;
ssgLeaf *leaf =
new ssgVtxTable ( GL_TRIANGLES, vl, nl, NULL, cl );
- FGNewMat *newmat = material_lib.find( material );
+ SGMaterial *newmat = material_lib.find( material );
if ( newmat != NULL ) {
leaf->setState( newmat->get_state() );
ssgLeaf *leaf =
new ssgVtxTable ( GL_TRIANGLES, vl, nl, NULL, cl );
- FGNewMat *newmat = material_lib.find( material );
+ SGMaterial *newmat = material_lib.find( material );
if ( newmat != NULL ) {
leaf->setState( newmat->get_state() );
ssgLeaf *leaf =
new ssgVtxTable ( GL_TRIANGLES, vl, nl, NULL, cl );
- FGNewMat *newmat = material_lib.find( "RWY_WHITE_LIGHTS" );
+ SGMaterial *newmat = material_lib.find( "RWY_WHITE_LIGHTS" );
if ( newmat != NULL ) {
leaf->setState( newmat->get_state() );
new ssgVtxTable ( GL_POINTS, vl, NULL, NULL, cl );
// we don't want directional lights here
- FGNewMat *newmat = material_lib.find( "GROUND_LIGHTS" );
+ SGMaterial *newmat = material_lib.find( "GROUND_LIGHTS" );
if ( newmat != NULL ) {
leaf->setState( newmat->get_state() );
new ssgVtxTable ( GL_POINTS, vl, NULL, NULL, cl );
// we don't want directional lights here
- FGNewMat *newmat = material_lib.find( "GROUND_LIGHTS" );
+ SGMaterial *newmat = material_lib.find( "GROUND_LIGHTS" );
if ( newmat != NULL ) {
leaf->setState( newmat->get_state() );
ssgLeaf *leaf =
new ssgVtxTable ( GL_TRIANGLES, vl, nl, NULL, cl );
- FGNewMat *newmat = material_lib.find( "RWY_WHITE_LIGHTS" );
+ SGMaterial *newmat = material_lib.find( "RWY_WHITE_LIGHTS" );
if ( newmat != NULL ) {
leaf->setState( newmat->get_state() );
ssgLeaf *leaf =
new ssgVtxTable ( GL_LINES, vl, NULL, NULL, cl );
- FGNewMat *newmat = material_lib.find( "GROUND_LIGHTS" );
+ SGMaterial *newmat = material_lib.find( "GROUND_LIGHTS" );
leaf->setState( newmat->get_state() );
return leaf;
* Lock and synchronize access to tile queue.
*/
SGMutex mutex;
- SGCondition frame_cond;
+ SGPthreadCond frame_cond;
/**
* Thread cleanup handler.
new ssgVtxTable ( GL_POINTS, vl, nl, tl, cl );
// assign state
- FGNewMat *newmat = material_lib.find( "GROUND_LIGHTS" );
+ SGMaterial *newmat = material_lib.find( "GROUND_LIGHTS" );
leaf->setState( newmat->get_state() );
leaf->setCallback( SSG_CALLBACK_PREDRAW, fgLightsPredraw );
leaf->setCallback( SSG_CALLBACK_POSTDRAW, fgLightsPostdraw );
// disk.
int FGTileMgr::update( double visibility_meters )
{
- FGLocation *location = globals->get_current_view()->getFGLocation();
+ SGLocation *location = globals->get_current_view()->getSGLocation();
sgdVec3 abs_pos_vector;
sgdCopyVec3( abs_pos_vector,
globals->get_current_view()->get_absolute_view_pos() );
}
-int FGTileMgr::update( FGLocation *location, double visibility_meters,
+int FGTileMgr::update( SGLocation *location, double visibility_meters,
sgdVec3 abs_pos_vector )
{
longitude = location->getLongitude_deg();
}
-void FGTileMgr::prep_ssg_nodes( FGLocation *location, float vis ) {
+void FGTileMgr::prep_ssg_nodes( SGLocation *location, float vis ) {
// traverse the potentially viewable tile list and update range
// selector and transform
// local chunks. If the chunk isn't already in the cache, then
// read it from disk.
int update( double visibility_meters );
- int update( FGLocation *location, double visibility_meters,
+ int update( SGLocation *location, double visibility_meters,
sgdVec3 abs_pos_vector );
int updateCurrentElevAtPos(sgdVec3 abs_pos_vector, Point3D center );
// tile, set the ssg transform and update it's range selector
// based on current visibilty void prep_ssg_nodes( float
// visibility_meters );
- void prep_ssg_nodes( FGLocation *location, float visibility_meters );
+ void prep_ssg_nodes( SGLocation *location, float visibility_meters );
// Set flag with event manager so that non-moving view refreshes
// tiles...