]> git.mxchange.org Git - flightgear.git/commitdiff
Altimeter node tweaks.
authorJames Turner <zakalawe@mac.com>
Sat, 11 May 2013 17:35:54 +0000 (18:35 +0100)
committerJames Turner <zakalawe@mac.com>
Sat, 11 May 2013 17:35:54 +0000 (18:35 +0100)
Fix the default name based on whether a regular altimeter or
encoder was requested, and delay creating the node until bind(), ctor
is too early.

src/Instrumentation/altimeter.cxx
src/Instrumentation/altimeter.hxx
src/Instrumentation/instrument_mgr.cxx

index 700a48c501723f089c55bd3c6b5078a11de3de6f..a691f1e90814d7f77180eb7845a4c2087edcb5af 100644 (file)
 
 #include "altimeter.hxx"
 
-Altimeter::Altimeter ( SGPropertyNode *node, double quantum )
-    : _rootNode( 
-       fgGetNode("/instrumentation",true)->
-           getChild( node->getStringValue("name", "altimeter"),
-                     node->getIntValue("number", 0),
-                     true)),
+Altimeter::Altimeter ( SGPropertyNode *node, const std::string& aDefaultName, double quantum ) :
+      _name(node->getStringValue("name", aDefaultName.c_str())),
+      _num(node->getIntValue("number", 0)),
       _static_pressure(node->getStringValue("static-pressure", "/systems/static/pressure-inhg")),
       _tau(node->getDoubleValue("tau", 0.1)),
       _quantum(node->getDoubleValue("quantum", quantum)),
@@ -106,6 +103,9 @@ Altimeter::reinit ()
 void
 Altimeter::bind()
 {
+    _rootNode = fgGetNode("/instrumentation/" + _name, _num, true );
+    _tiedProperties.setRoot(_rootNode);
+    
     _tiedProperties.Tie("setting-inhg", this, &Altimeter::getSettingInHg, &Altimeter::setSettingInHg );
     _tiedProperties.Tie("setting-hpa", this, &Altimeter::getSettingHPa, &Altimeter::setSettingHPa );
 }
index d45a1249eeb340c114fdc43008d575e59ef2d50a..38c6ba63f0c85c3311dbd4b8c957cab400fbbdca 100644 (file)
@@ -32,7 +32,7 @@ class Altimeter : public SGSubsystem
 
 public:
 
-    Altimeter (SGPropertyNode *node, double quantum = 0);
+    Altimeter (SGPropertyNode *node, const std::string& aDefaultName, double quantum = 0);
     virtual ~Altimeter ();
 
     virtual void init ();
@@ -47,6 +47,8 @@ public:
     void setSettingHPa( double value );
 
 private:
+    std::string _name;
+    int _num;
     SGPropertyNode_ptr _rootNode;
     string _static_pressure;
     double _tau;
index 2a707448c42d2003938870d6a57f9bb5ccc25e46..ec8aa69ec10d8a7a649292ca6fb6c34948a3dabe 100644 (file)
@@ -127,7 +127,7 @@ bool FGInstrumentMgr::build (SGPropertyNode* config_props)
             set_subsystem( id, new AirspeedIndicator( node ) );
 
         } else if ( name == "altimeter" ) {
-            set_subsystem( id, new Altimeter( node ) );
+            set_subsystem( id, new Altimeter( node, "altimeter" ) );
 
         } else if ( name == "attitude-indicator" ) {
             set_subsystem( id, new AttitudeIndicator( node ) );
@@ -139,7 +139,7 @@ bool FGInstrumentMgr::build (SGPropertyNode* config_props)
             set_subsystem( id, new DME( node ), 1.0 );
 
         } else if ( name == "encoder" ) {
-            set_subsystem( id, new Altimeter( node ), 0.15 );
+            set_subsystem( id, new Altimeter( node, "encoder" ), 0.15 );
 
         } else if ( name == "gps" ) {
             set_subsystem( id, new GPS( node ) );