X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FInstrumentation%2Fagradar.cxx;h=e5be21b86332a2066333b7ead655e29d6c31088b;hb=0b9adf8854398461333eba43df18fa2f5c8231a1;hp=4666f0b19f254c8c719a9fc3fa8762b55703c705;hpb=7800918499e77a6c7f2bb444c53e229a643baf09;p=flightgear.git diff --git a/src/Instrumentation/agradar.cxx b/src/Instrumentation/agradar.cxx index 4666f0b19..e5be21b86 100644 --- a/src/Instrumentation/agradar.cxx +++ b/src/Instrumentation/agradar.cxx @@ -25,6 +25,8 @@ # include "config.h" #endif +#include
+#include
#include "agradar.hxx" @@ -71,25 +73,28 @@ agRadar::init () _Instrument->setBoolValue("stabilisation/roll", false); _Instrument->setBoolValue("stabilisation/pitch", false); - _Instrument->getNode("antenna/x-offset-m", true); - _Instrument->getNode("antenna/y-offset-m", true); - _Instrument->getNode("antenna/z-offset-m", true); - - _Instrument->getNode("terrain-warning/elev-limit-deg", true); - _Instrument->getNode("terrain-warning/elev-step-deg", true); - _Instrument->getNode("terrain-warning/az-limit-deg", true); - _Instrument->getNode("terrain-warning/az-step-deg", true); - _Instrument->getNode("terrain-warning/max-range-m", true); - _Instrument->getNode("terrain-warning/min-range-m", true); - _Instrument->getNode("terrain-warning/tilt",true); - - _Instrument->getNode("terrain-warning/hit/brg-deg", true); - _Instrument->getNode("terrain-warning/hit/range-m", true); - _Instrument->getNode("terrain-warning/hit/material", true); - _Instrument->getNode("terrain-warning/hit/bumpiness", true); - - _Instrument->getNode("terrain-warning/stabilisation/roll", true); - _Instrument->getNode("terrain-warning/stabilisation/pitch", true); + _xOffsetMNode = getInstrumentNode("antenna/x-offset-m", 0.0); + _yOffsetMNode = getInstrumentNode("antenna/y-offset-m", 0.0); + _zOffsetMNode = getInstrumentNode("antenna/z-offset-m", 0.0); + + _elevLimitDegNode = getInstrumentNode("terrain-warning/elev-limit-deg", 2.0); + _elevStepDegNode = getInstrumentNode("terrain-warning/elev-step-deg", 1.0); + _azLimitDegNode = getInstrumentNode("terrain-warning/az-limit-deg", 1.0); + _azStepDegNode = getInstrumentNode("terrain-warning/az-step-deg", 1.5); + _maxRangeMNode = getInstrumentNode("terrain-warning/max-range-m", 4000.0); + _minRangeMNode = getInstrumentNode("terrain-warning/min-range-m", 250.0); + _tiltNode = getInstrumentNode("terrain-warning/tilt", -2.0); + + _brgDegNode = getInstrumentNode("terrain-warning/hit/brg-deg", 0.0); + _rangeMNode = getInstrumentNode("terrain-warning/hit/range-m", 0.0); + _elevationMNode = getInstrumentNode("terrain-warning/hit/elevation-m", 0.0); + _materialNode = getInstrumentNode("terrain-warning/hit/material", ""); + _bumpinessNode = getInstrumentNode("terrain-warning/hit/bumpiness", 0.0); + + _rollStabNode = getInstrumentNode("terrain-warning/stabilisation/roll", + true); + _pitchStabNode = getInstrumentNode("terrain-warning/stabilisation/pitch", + false); // cout << "init done" << endl; } @@ -97,13 +102,8 @@ agRadar::init () void agRadar::update (double delta_time_sec) { - if ( ! _sim_init_done ) { - - if ( ! fgGetBool("sim/sceneryloaded", false) ) - return; - - _sim_init_done = true; - } + if (!_sceneryLoaded->getBoolValue()) + return; if ( !_odg || ! _serviceable_node->getBoolValue() ) { _Instrument->setStringValue("status",""); @@ -117,7 +117,6 @@ agRadar::update (double delta_time_sec) _time = 0.0; - update_terrain(); // wxRadarBg::update(delta_time_sec); } @@ -143,9 +142,9 @@ agRadar::getCartAntennaPos() const { float pitch = _user_pitch_deg_node->getDoubleValue(); float roll = _user_roll_deg_node->getDoubleValue(); - double x_offset_m =_Instrument->getDoubleValue("antenna/x-offset-m", 0); - double y_offset_m =_Instrument->getDoubleValue("antenna/y-offset-m", 0); - double z_offset_m =_Instrument->getDoubleValue("antenna/y-offset-m", 0); + double x_offset_m =_xOffsetMNode->getDoubleValue(); + double y_offset_m =_yOffsetMNode->getDoubleValue(); + double z_offset_m =_zOffsetMNode->getDoubleValue(); // convert geodetic positions to geocentered SGVec3d cartuserPos = getCartUserPos(); @@ -184,7 +183,6 @@ agRadar::setUserVec(double az, double el) float yaw = _user_hdg_deg_node->getDoubleValue(); float pitch = _user_pitch_deg_node->getDoubleValue(); float roll = _user_roll_deg_node->getDoubleValue(); - int mode = _radar_mode_control_node->getIntValue(); double tilt = _Instrument->getDoubleValue("tilt"); double trk = _Instrument->getDoubleValue("trk"); bool roll_stab = _Instrument->getBoolValue("stabilisation/roll"); @@ -215,7 +213,7 @@ agRadar::getMaterial(){ if (globals->get_scenery()->get_elevation_m(hitpos, _elevation_m, &_material)){ //_ht_agl_ft = pos.getElevationFt() - _elevation_m * SG_METER_TO_FEET; if (_material) { - const vector& names = _material->get_names(); + const std::vector& names = _material->get_names(); _solid = _material->get_solid(); _load_resistance = _material->get_load_resistance(); @@ -253,24 +251,21 @@ agRadar::update_terrain() double max_range = 40000; double min_range = 250; double tilt = -2.5; - bool roll_stab = _Instrument->getBoolValue("stabilisation/roll"); - bool pitch_stab = _Instrument->getBoolValue("stabilisation/pitch"); - //string status = ""; - const char* status; + bool roll_stab = _rollStabNode->getBoolValue(); + bool pitch_stab = _pitchStabNode->getBoolValue(); + const char* status = ""; bool hdg_mkr = true; if (mode == 5){ status = "TW"; hdg_mkr = false; - roll_stab = _Instrument->getBoolValue("terrain-warning/stabilisation/roll", true); - pitch_stab = _Instrument->getBoolValue("terrain-warning/stabilisation/pitch", false); - tilt = _Instrument->getDoubleValue("terrain-warning/tilt", -2); - el_limit = _Instrument->getDoubleValue("terrain-warning/elev-limit-deg", 2); - el_step = _Instrument->getDoubleValue("terrain-warning/elev-step-deg", 1); - az_limit = _Instrument->getDoubleValue("terrain-warning/az-limit-deg", 1); - az_step = _Instrument->getDoubleValue("terrain-warning/az-step-deg", 1.5); - max_range = _Instrument->getDoubleValue("terrain-warning/max-range-m", 4000); - min_range = _Instrument->getDoubleValue("terrain-warning/min-range-m", 250); + tilt = _tiltNode->getDoubleValue(); + el_limit = _elevLimitDegNode->getDoubleValue(); + el_step = _elevStepDegNode->getDoubleValue(); + az_limit = _azLimitDegNode->getDoubleValue(); + az_step = _azStepDegNode->getDoubleValue(); + max_range = _maxRangeMNode->getDoubleValue(); + min_range = _minRangeMNode->getDoubleValue(); } _Instrument->setDoubleValue("tilt", tilt); @@ -297,18 +292,18 @@ agRadar::update_terrain() if (distance >= min_range && distance <= max_range) { _terrain_warning_node->setBoolValue(true); getMaterial(); - _Instrument->setDoubleValue("terrain-warning/hit/brg-deg", course2); - _Instrument->setDoubleValue("terrain-warning/hit/range-m", distance); - _Instrument->setStringValue("terrain-warning/hit/material", _mat_name.c_str()); - _Instrument->setDoubleValue("terrain-warning/hit/bumpiness", _bumpinessFactor); - _Instrument->setDoubleValue("terrain-warning/hit/elevation-m", _elevation_m); + _brgDegNode->setDoubleValue(course2); + _rangeMNode->setDoubleValue(distance); + _materialNode->setStringValue(_mat_name.c_str()); + _bumpinessNode->setDoubleValue(_bumpinessFactor); + _elevationMNode->setDoubleValue(_elevation_m); } else { _terrain_warning_node->setBoolValue(false); - _Instrument->setDoubleValue("terrain-warning/hit/brg-deg", 0); - _Instrument->setDoubleValue("terrain-warning/hit/range-m", 0); - _Instrument->setStringValue("terrain-warning/hit/material", ""); - _Instrument->setDoubleValue("terrain-warning/hit/bumpiness", 0); - _Instrument->setDoubleValue("terrain-warning/hit/elevation-m",0); + _brgDegNode->setDoubleValue(0); + _rangeMNode->setDoubleValue(0); + _materialNode->setStringValue(""); + _bumpinessNode->setDoubleValue(0); + _elevationMNode->setDoubleValue(0); } //cout << "usr hdg " << _user_hdg_deg_node->getDoubleValue()