1
0
Fork 0

More property node optimizations.

This commit is contained in:
curt 2001-06-06 19:12:24 +00:00
parent 64254d7410
commit c64e284c51
8 changed files with 72 additions and 54 deletions

View file

@ -84,9 +84,9 @@ FGRadioStack::FGRadioStack() {
nav2_radial = 0.0;
nav2_dme_dist = 0.0;
need_update = true;
longitudeVal = fgGetValue("/position/longitude");
latitudeVal = fgGetValue("/position/latitude");
altitudeVal = fgGetValue("/position/altitude");
lon_node = fgGetNode("/position/longitude");
lat_node = fgGetNode("/position/latitude");
alt_node = fgGetNode("/position/altitude");
}
@ -308,9 +308,9 @@ double FGRadioStack::adjustILSRange( double stationElev, double aircraftElev,
void
FGRadioStack::update()
{
double lon = longitudeVal->getDoubleValue() * SGD_DEGREES_TO_RADIANS;
double lat = latitudeVal->getDoubleValue() * SGD_DEGREES_TO_RADIANS;
double elev = altitudeVal->getDoubleValue() * SG_FEET_TO_METER;
double lon = lon_node->getDoubleValue() * SGD_DEGREES_TO_RADIANS;
double lat = lat_node->getDoubleValue() * SGD_DEGREES_TO_RADIANS;
double elev = alt_node->getDoubleValue() * SG_FEET_TO_METER;
need_update = false;
@ -603,9 +603,9 @@ void FGRadioStack::search()
{
static FGMkrBeacon::fgMkrBeacType last_beacon = FGMkrBeacon::NOBEACON;
double lon = longitudeVal->getDoubleValue() * SGD_DEGREES_TO_RADIANS;
double lat = latitudeVal->getDoubleValue() * SGD_DEGREES_TO_RADIANS;
double elev = altitudeVal->getDoubleValue() * SG_FEET_TO_METER;
double lon = lon_node->getDoubleValue() * SGD_DEGREES_TO_RADIANS;
double lat = lat_node->getDoubleValue() * SGD_DEGREES_TO_RADIANS;
double elev = alt_node->getDoubleValue() * SG_FEET_TO_METER;
// nav1
FGILS ils;

View file

@ -48,9 +48,9 @@ class FGRadioStack : public FGSubsystem
SGInterpTable *low_tbl;
SGInterpTable *high_tbl;
SGValue * latitudeVal;
SGValue * longitudeVal;
SGValue * altitudeVal;
SGPropertyNode *lat_node;
SGPropertyNode *lon_node;
SGPropertyNode *alt_node;
bool need_update;

View file

@ -70,7 +70,7 @@ FGControls::init ()
brake[wheel] = 0.0;
}
auto_coordination = fgGetValue("/sim/auto-coordination", true);
auto_coordination = fgGetNode("/sim/auto-coordination", true);
}

View file

@ -66,7 +66,7 @@ private:
double brake[MAX_WHEELS];
bool throttle_idle;
SGValue * auto_coordination;
SGPropertyNode * auto_coordination;
inline void CLAMP(double *x, double min, double max ) {
if ( *x < min ) { *x = min; }

View file

@ -105,9 +105,15 @@ FGJSBsim::FGJSBsim( double dt )
fgSetDouble("/fdm/trim/aileron", FCS->GetDaCmd());
fgSetDouble("/fdm/trim/rudder", FCS->GetDrCmd());
trimmed = fgGetValue("/fdm/trim/trimmed",true);
startup_trim = fgGetNode("/sim/startup/trim", true);
trimmed = fgGetNode("/fdm/trim/trimmed", true);
trimmed->setBoolValue(false);
pitch_trim = fgGetNode("/fdm/trim/pitch-trim", true );
throttle_trim = fgGetNode("/fdm/trim/throttle", true );
aileron_trim = fgGetNode("/fdm/trim/aileron", true );
rudder_trim = fgGetNode("/fdm/trim/rudder", true );
}
/******************************************************************************/
@ -192,7 +198,7 @@ bool FGJSBsim::update( int multiloop ) {
trimmed->setBoolValue(false);
if (needTrim && fgGetBool("/sim/startup/trim")) {
if ( needTrim && startup_trim->getBoolValue() ) {
//fgic->SetSeaLevelRadiusFtIC( get_Sea_level_radius() );
//fgic->SetTerrainAltitudeFtIC( scenery.cur_elev * SG_METER_TO_FEET );
@ -215,10 +221,10 @@ bool FGJSBsim::update( int multiloop ) {
needTrim=false;
fgSetDouble("/fdm/trim/pitch-trim", FCS->GetPitchTrimCmd());
fgSetDouble("/fdm/trim/throttle", FCS->GetThrottleCmd(0));
fgSetDouble("/fdm/trim/aileron", FCS->GetDaCmd());
fgSetDouble("/fdm/trim/rudder", FCS->GetDrCmd());
pitch_trim->setDoubleValue( FCS->GetPitchTrimCmd() );
throttle_trim->setDoubleValue( FCS->GetThrottleCmd(0) );
aileron_trim->setDoubleValue( FCS->GetDaCmd() );
rudder_trim->setDoubleValue( FCS->GetDrCmd() );
controls.set_elevator_trim(FCS->GetPitchTrimCmd());
controls.set_elevator(FCS->GetDeCmd());

View file

@ -50,6 +50,8 @@ DEFINITIONS
FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <simgear/misc/props.hxx>
#include <FDM/JSBSim/FGFDMExec.h>
class FGState;
@ -233,7 +235,12 @@ private:
float trim_elev;
float trim_throttle;
SGValue *trimmed;
SGPropertyNode *startup_trim;
SGPropertyNode *trimmed;
SGPropertyNode *pitch_trim;
SGPropertyNode *throttle_trim;
SGPropertyNode *aileron_trim;
SGPropertyNode *rudder_trim;
void snap_shot(void);
};

View file

@ -41,8 +41,11 @@
FGLaRCsim::FGLaRCsim( double dt ) {
set_delta_t( dt );
ls_toplevel_init( 0.0,
(char *)fgGetString("/sim/aircraft").c_str() );
speed_up = fgGetNode("/sim/speed-up", true);
aircraft = fgGetNode("/sim/aircraft", true);
ls_toplevel_init( 0.0, (char *)(aircraft->getStringValue().c_str()) );
lsic=new LaRCsimIC; //this needs to be brought up after LaRCsim is
copy_to_LaRCsim(); // initialize all of LaRCsim's vars
//this should go away someday -- formerly done in fg_init.cxx
@ -71,8 +74,6 @@ void FGLaRCsim::init() {
// init method first.
FGInterface::init();
speed_up = fgGetValue("/sim/speed-up", true);
ls_set_model_dt( get_delta_t() );
// Initialize our little engine that hopefully might
eng.init( get_delta_t() );
@ -121,7 +122,7 @@ void FGLaRCsim::init() {
// Run an iteration of the EOM (equations of motion)
bool FGLaRCsim::update( int multiloop ) {
if ( fgGetString("/sim/aircraft") == "c172" ) {
if ( aircraft->getStringValue() == "c172" ) {
// set control inputs
// cout << "V_calibrated_kts = " << V_calibrated_kts << '\n';
eng.set_IAS( V_calibrated_kts );
@ -188,7 +189,7 @@ bool FGLaRCsim::update( int multiloop ) {
speed_up->getIntValue();
Flap_handle = 30.0 * controls.get_flaps();
if ( fgGetString("/sim/aircraft") == "c172" ) {
if ( aircraft->getStringValue() == "c172" ) {
Use_External_Engine = 1;
} else {
Use_External_Engine = 0;

View file

@ -33,14 +33,18 @@
class FGLaRCsim: public FGInterface {
private:
FGNewEngine eng;
LaRCsimIC* lsic;
void set_ls(void);
void snap_shot(void);
double time_step;
SGValue * speed_up;
SGPropertyNode *speed_up;
SGPropertyNode *aircraft;
public:
FGLaRCsim( double dt );
~FGLaRCsim(void);