]> git.mxchange.org Git - flightgear.git/blobdiff - src/Autopilot/autopilotgroup.cxx
toggle fullscreen: also adapt GUI plane when resizing
[flightgear.git] / src / Autopilot / autopilotgroup.cxx
index a856c342fb8d0d4f2bcbbcb49913074eea97b45e..c60ea3010a6d2f8c27dc6ee0f22d51f74bfcedcc 100644 (file)
@@ -44,14 +44,18 @@ using simgear::PropertyList;
 class FGXMLAutopilotGroupImplementation : public FGXMLAutopilotGroup
 {
 public:
+    FGXMLAutopilotGroupImplementation(const std::string& nodeName) :
+        FGXMLAutopilotGroup(), _nodeName(nodeName) {}
     virtual void addAutopilot( const std::string & name, SGPropertyNode_ptr apNode, SGPropertyNode_ptr config );
     virtual void removeAutopilot( const std::string & name );
     void init();
+    InitStatus incrementalInit();
     void reinit();
     void update( double dt );
 private:
     void initFrom( SGPropertyNode_ptr rootNode, const char * childName );
     vector<string> _autopilotNames;
+    std::string _nodeName;
 
 };
 
@@ -65,7 +69,9 @@ void FGXMLAutopilotGroupImplementation::addAutopilot( const std::string & name,
     }
     FGXMLAutopilot::Autopilot * ap = new FGXMLAutopilot::Autopilot( apNode, config );
     ap->set_name( name );
-    set_subsystem( name, ap );
+
+    double updateInterval = config->getDoubleValue( "update-interval-secs", 0.0 );
+    set_subsystem( name, ap, updateInterval );
     _autopilotNames.push_back( name );
 }
 
@@ -96,14 +102,15 @@ void FGXMLAutopilotGroupImplementation::reinit()
     init();
 }
 
+SGSubsystem::InitStatus FGXMLAutopilotGroupImplementation::incrementalInit()
+{
+  init();
+  return INIT_DONE;
+}
+
 void FGXMLAutopilotGroupImplementation::init()
 {
-    static const char * nodeNames[] = {
-        "autopilot",
-        "property-rule"
-    };
-    for( unsigned i = 0; i < sizeof(nodeNames)/sizeof(nodeNames[0]); i++ )
-        initFrom( fgGetNode( "/sim/systems" ), nodeNames[i] );
+    initFrom( fgGetNode( "/sim/systems" ), _nodeName.c_str() );
 
     SGSubsystemGroup::bind();
     SGSubsystemGroup::init();
@@ -171,7 +178,7 @@ void FGXMLAutopilotGroup::addAutopilotFromFile( const std::string & name, SGProp
     }
 }
 
-FGXMLAutopilotGroup * FGXMLAutopilotGroup::createInstance()
+FGXMLAutopilotGroup * FGXMLAutopilotGroup::createInstance(const std::string& nodeName)
 {
-    return new FGXMLAutopilotGroupImplementation();
+    return new FGXMLAutopilotGroupImplementation(nodeName);
 }