Add the ability to specify an initial state (on/off) for a connector switch.
If nothing is specifed the switch defaults to on, but this is a problem for the starter switch.
This commit is contained in:
parent
fc095c7061
commit
9e35d33657
2 changed files with 27 additions and 0 deletions
|
@ -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.
|
||||
|
|
|
@ -170,6 +170,9 @@ public:
|
|||
switches.push_back( node );
|
||||
}
|
||||
|
||||
// set all switches to the specified state
|
||||
void set_switches( bool state );
|
||||
|
||||
bool get_state();
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue