]> git.mxchange.org Git - flightgear.git/blobdiff - src/Instrumentation/agradar.cxx
NavDisplay enhancements for Syd.
[flightgear.git] / src / Instrumentation / agradar.cxx
index 4666f0b19f254c8c719a9fc3fa8762b55703c705..e5be21b86332a2066333b7ead655e29d6c31088b 100644 (file)
@@ -25,6 +25,8 @@
 #  include "config.h"
 #endif
 
+#include <Main/fg_props.hxx>
+#include <Main/globals.hxx>
 #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<string>& names = _material->get_names();
+            const std::vector<std::string>& 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()