diff --git a/src/Systems/electrical.cxx b/src/Systems/electrical.cxx index 75a1a4fbc..2559874ca 100644 --- a/src/Systems/electrical.cxx +++ b/src/Systems/electrical.cxx @@ -180,9 +180,33 @@ FGElectricalConnector::FGElectricalConnector ( SGPropertyNode *node, add_switch( fgGetNode( child->getStringValue(), true ) ); } } + + // do a 2nd pass to pick up starting switch value if specified + for ( i = 0; i < node->nChildren(); ++i ) { + SGPropertyNode *child = node->getChild(i); + string cname = child->getName(); + string cval = child->getStringValue(); + // cout << " " << cname << " = " << cval << endl; + if ( cname == "initial-state" ) { + if ( cval == "off" ) { + set_switches( false ); + } else { + set_switches( true ); + } + } + } } +// set all switches to the specified state +void FGElectricalConnector::set_switches( bool state ) { + cout << "setting switch state to " << state << endl; + for ( unsigned int i = 0; i < switches.size(); ++i ) { + switches[i]->setBoolValue( state ); + } +} + + // return true if all switches are true, false otherwise. A connector // could have multiple switches, but they all need to be true(closed) // for current to get through. diff --git a/src/Systems/electrical.hxx b/src/Systems/electrical.hxx index da29db546..30c3cc33c 100644 --- a/src/Systems/electrical.hxx +++ b/src/Systems/electrical.hxx @@ -170,6 +170,9 @@ public: switches.push_back( node ); } + // set all switches to the specified state + void set_switches( bool state ); + bool get_state(); };