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();
private:
void initFrom( SGPropertyNode_ptr rootNode, const char * childName );
vector<string> _autopilotNames;
+ std::string _nodeName;
};
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();
}
}
-FGXMLAutopilotGroup * FGXMLAutopilotGroup::createInstance()
+FGXMLAutopilotGroup * FGXMLAutopilotGroup::createInstance(const std::string& nodeName)
{
- return new FGXMLAutopilotGroupImplementation();
+ return new FGXMLAutopilotGroupImplementation(nodeName);
}
class FGXMLAutopilotGroup : public SGSubsystemGroup
{
public:
- static FGXMLAutopilotGroup * createInstance();
+ static FGXMLAutopilotGroup * createInstance(const std::string& nodeName);
void addAutopilotFromFile( const std::string & name, SGPropertyNode_ptr apNode, const char * path );
virtual void addAutopilot( const std::string & name, SGPropertyNode_ptr apNode, SGPropertyNode_ptr config ) = 0;
virtual void removeAutopilot( const std::string & name ) = 0;
// Initialize the XML Autopilot subsystem.
////////////////////////////////////////////////////////////////////
- globals->add_subsystem( "xml-autopilot", FGXMLAutopilotGroup::createInstance(), SGSubsystemMgr::FDM );
+ globals->add_subsystem( "xml-autopilot", FGXMLAutopilotGroup::createInstance("autopilot"), SGSubsystemMgr::FDM );
+ globals->add_subsystem( "xml-proprules", FGXMLAutopilotGroup::createInstance("property-rule"), SGSubsystemMgr::GENERAL );
globals->add_subsystem( "route-manager", new FGRouteMgr );
////////////////////////////////////////////////////////////////////