X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FEnvironment%2Fridge_lift.cxx;h=3b675a93ff686f3d4c3eef285018f8fda05fa1da;hb=dc76290d6e7d2f24d6c352d8f9da4b0f9f1e5f40;hp=9598f2bbb908400c9ead7f396232aeaf8b0f6f80;hpb=fba05c527f3bb48a5dd2ed7bb10e3cc6f0be1cec;p=flightgear.git diff --git a/src/Environment/ridge_lift.cxx b/src/Environment/ridge_lift.cxx index 9598f2bbb..3b675a93f 100644 --- a/src/Environment/ridge_lift.cxx +++ b/src/Environment/ridge_lift.cxx @@ -36,25 +36,12 @@ #include #include #include - +#include using std::string; #include "ridge_lift.hxx" -static string CreateIndexedPropertyName(string Property, int index) -{ - std::stringstream str; - str << index; - string tmp; - str >> tmp; - return Property + "[" + tmp + "]"; -} - -static inline double sign(double x) { - return x == 0 ? 0 : x > 0 ? 1.0 : -1.0; -} - static const double BOUNDARY1_m = 40.0; const double FGRidgeLift::dist_probe_m[] = { // in meters @@ -103,42 +90,20 @@ void FGRidgeLift::init(void) void FGRidgeLift::bind() { string prop; + _tiedProperties.setRoot( fgGetNode("/environment/ridge-lift",true)); for( int i = 0; i < 5; i++ ) { - prop = CreateIndexedPropertyName("/environment/ridge-lift/probe-elev-m", i ); - fgTie( prop.c_str(), this, i, &FGRidgeLift::get_probe_elev_m); // read-only - - prop = CreateIndexedPropertyName("/environment/ridge-lift/probe-lat-deg", i ); - fgTie( prop.c_str(), this, i, &FGRidgeLift::get_probe_lat_deg); // read-only - - prop = CreateIndexedPropertyName("/environment/ridge-lift/probe-lon-deg", i ); - fgTie( prop.c_str(), this, i, &FGRidgeLift::get_probe_lon_deg); // read-only + _tiedProperties.Tie( "probe-elev-m", i, this, i, &FGRidgeLift::get_probe_elev_m ); + _tiedProperties.Tie( "probe-lat-deg", i, this, i, &FGRidgeLift::get_probe_lat_deg ); + _tiedProperties.Tie( "probe-lon-deg", i, this, i, &FGRidgeLift::get_probe_lon_deg ); } for( int i = 0; i < 4; i++ ) { - prop = CreateIndexedPropertyName("/environment/ridge-lift/slope", i ); - fgTie( prop.c_str(), this, i, &FGRidgeLift::get_slope); // read-only + _tiedProperties.Tie( "slope", i, this, i, &FGRidgeLift::get_slope ); } } void FGRidgeLift::unbind() { - string prop; - - for( int i = 0; i < 5; i++ ) { - - prop = CreateIndexedPropertyName("/environment/ridge-lift/probe-elev-m", i ); - fgUntie( prop.c_str() ); - - prop = CreateIndexedPropertyName("/environment/ridge-lift/probe-lat-deg", i ); - fgUntie( prop.c_str() ); - - prop = CreateIndexedPropertyName("/environment/ridge-lift/probe-lon-deg", i ); - fgUntie( prop.c_str() ); - } - - for( int i = 0; i < 4; i++ ) { - prop = CreateIndexedPropertyName("/environment/ridge-lift/slope", i ); - fgUntie( prop.c_str() ); - } + _tiedProperties.Untie(); } void FGRidgeLift::update(double dt) { @@ -194,7 +159,7 @@ void FGRidgeLift::update(double dt) { slope[3] = (probe_elev_m[4] - probe_elev_m[0]) / -dist_probe_m[4]; for (unsigned i = 0; i < sizeof(slope)/sizeof(slope[0]); i++) - adj_slope[i] = sin(atan(5.0 * pow ( (fabs(slope[i])),1.7) ) ) *sign(slope[i]); + adj_slope[i] = sin(atan(5.0 * pow ( (fabs(slope[i])),1.7) ) ) *SG_SIGN(slope[i]); //adjustment adj_slope[0] *= 0.2;