Fix false-positive listener warnings for /controls
Mark the properties as listener-safe, and ensure all C++ callers use new wrapper methods which manually invoke fireValueChanged
This commit is contained in:
parent
846cc54f0b
commit
1fd2797727
2 changed files with 328 additions and 344 deletions
|
@ -20,9 +20,9 @@
|
||||||
//
|
//
|
||||||
// $Id$
|
// $Id$
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
#include <Main/fg_props.hxx>
|
#include <Main/fg_props.hxx>
|
||||||
#include <simgear/sg_inlines.h>
|
#include <simgear/sg_inlines.h>
|
||||||
|
@ -83,11 +83,11 @@ FGControls::FGControls() :
|
||||||
|
|
||||||
void FGControls::reset_all()
|
void FGControls::reset_all()
|
||||||
{
|
{
|
||||||
set_aileron( 0.0 );
|
_inner_set_aileron( 0.0 );
|
||||||
set_aileron_trim( 0.0 );
|
_inner_set_aileron_trim( 0.0 );
|
||||||
set_elevator( 0.0 );
|
_inner_set_elevator( 0.0 );
|
||||||
set_elevator_trim( 0.0 );
|
_inner_set_elevator_trim( 0.0 );
|
||||||
set_rudder( 0.0 );
|
_inner_set_rudder( 0.0 );
|
||||||
set_rudder_trim( 0.0 );
|
set_rudder_trim( 0.0 );
|
||||||
BLC = false;
|
BLC = false;
|
||||||
set_spoilers( 0.0 );
|
set_spoilers( 0.0 );
|
||||||
|
@ -95,20 +95,20 @@ void FGControls::reset_all()
|
||||||
set_wing_sweep( 0.0 );
|
set_wing_sweep( 0.0 );
|
||||||
wing_fold = false;
|
wing_fold = false;
|
||||||
drag_chute = false;
|
drag_chute = false;
|
||||||
set_throttle( ALL_ENGINES, 0.0 );
|
_inner_set_throttle( ALL_ENGINES, 0.0 );
|
||||||
set_starter( ALL_ENGINES, false );
|
_inner_set_starter( ALL_ENGINES, false );
|
||||||
set_magnetos( ALL_ENGINES, 0 );
|
_inner_set_magnetos( ALL_ENGINES, 0 );
|
||||||
set_fuel_pump( ALL_ENGINES, false );
|
set_fuel_pump( ALL_ENGINES, false );
|
||||||
set_fire_switch( ALL_ENGINES, false );
|
set_fire_switch( ALL_ENGINES, false );
|
||||||
set_fire_bottle_discharge( ALL_ENGINES, false );
|
set_fire_bottle_discharge( ALL_ENGINES, false );
|
||||||
set_cutoff( ALL_ENGINES, true );
|
_inner_set_cutoff( ALL_ENGINES, true );
|
||||||
set_nitrous_injection( ALL_ENGINES, false );
|
set_nitrous_injection( ALL_ENGINES, false );
|
||||||
set_cowl_flaps_norm( ALL_ENGINES, 1.0 );
|
set_cowl_flaps_norm( ALL_ENGINES, 1.0 );
|
||||||
set_feather( ALL_ENGINES, false );
|
set_feather( ALL_ENGINES, false );
|
||||||
set_ignition( ALL_ENGINES, false );
|
set_ignition( ALL_ENGINES, false );
|
||||||
set_augmentation( ALL_ENGINES, false );
|
_inner_set_augmentation( ALL_ENGINES, false );
|
||||||
set_reverser( ALL_ENGINES, false );
|
_inner_set_reverser( ALL_ENGINES, false );
|
||||||
set_water_injection( ALL_ENGINES, false );
|
_inner_set_water_injection( ALL_ENGINES, false );
|
||||||
set_condition( ALL_ENGINES, 1.0 );
|
set_condition( ALL_ENGINES, 1.0 );
|
||||||
throttle_idle = true;
|
throttle_idle = true;
|
||||||
set_fuel_selector( ALL_TANKS, true );
|
set_fuel_selector( ALL_TANKS, true );
|
||||||
|
@ -150,7 +150,7 @@ void FGControls::reset_all()
|
||||||
|
|
||||||
set_alternate_extension(ALL_WHEELS, false);
|
set_alternate_extension(ALL_WHEELS, false);
|
||||||
|
|
||||||
set_mixture(ALL_ENGINES, 1.0);
|
_inner_set_mixture(ALL_ENGINES, 1.0);
|
||||||
set_prop_advance(ALL_ENGINES, 1.0);
|
set_prop_advance(ALL_ENGINES, 1.0);
|
||||||
set_generator_breaker(ALL_ENGINES, false);
|
set_generator_breaker(ALL_ENGINES, false);
|
||||||
set_bus_tie(ALL_ENGINES, false);
|
set_bus_tie(ALL_ENGINES, false);
|
||||||
|
@ -175,6 +175,7 @@ void
|
||||||
FGControls::reinit()
|
FGControls::reinit()
|
||||||
{
|
{
|
||||||
reset_all();
|
reset_all();
|
||||||
|
_tiedProperties.fireValueChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void _SetRoot( simgear::TiedPropertyList & tiedProperties, const char * root, int index = 0 )
|
static inline void _SetRoot( simgear::TiedPropertyList & tiedProperties, const char * root, int index = 0 )
|
||||||
|
@ -191,414 +192,259 @@ FGControls::bind ()
|
||||||
// flight controls
|
// flight controls
|
||||||
_SetRoot( _tiedProperties, "/controls/flight" );
|
_SetRoot( _tiedProperties, "/controls/flight" );
|
||||||
|
|
||||||
_tiedProperties.Tie( "aileron", this, &FGControls::get_aileron, &FGControls::set_aileron )
|
_aileronNode = _tiedProperties.Tie( "aileron", this, &FGControls::get_aileron, &FGControls::_inner_set_aileron );
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_aileronTrimNode = _tiedProperties.Tie( "aileron-trim", this, &FGControls::get_aileron_trim, &FGControls::_inner_set_aileron_trim );
|
||||||
|
_elevatorNode = _tiedProperties.Tie( "elevator", this, &FGControls::get_elevator, &FGControls::_inner_set_elevator );
|
||||||
|
_elevatorTrimNode = _tiedProperties.Tie( "elevator-trim", this, &FGControls::get_elevator_trim, &FGControls::_inner_set_elevator_trim );
|
||||||
|
_rudderNode = _tiedProperties.Tie( "rudder", this, &FGControls::get_rudder, &FGControls::_inner_set_rudder );
|
||||||
|
|
||||||
_tiedProperties.Tie( "aileron-trim", this, &FGControls::get_aileron_trim, &FGControls::set_aileron_trim )
|
_tiedProperties.Tie( "rudder-trim", this, &FGControls::get_rudder_trim, &FGControls::set_rudder_trim );
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "flaps", this, &FGControls::get_flaps, &FGControls::set_flaps );
|
||||||
|
_tiedProperties.Tie( "slats", this, &FGControls::get_slats, &FGControls::set_slats );
|
||||||
|
_tiedProperties.Tie( "BLC", this, &FGControls::get_BLC, &FGControls::set_BLC );
|
||||||
|
_tiedProperties.Tie( "spoilers", this, &FGControls::get_spoilers, &FGControls::set_spoilers );
|
||||||
|
_tiedProperties.Tie( "speedbrake", this, &FGControls::get_speedbrake, &FGControls::set_speedbrake );
|
||||||
|
_tiedProperties.Tie( "wing-sweep", this, &FGControls::get_wing_sweep, &FGControls::set_wing_sweep );
|
||||||
|
_tiedProperties.Tie( "wing-fold", this, &FGControls::get_wing_fold, &FGControls::set_wing_fold );
|
||||||
|
_tiedProperties.Tie( "drag-chute", this, &FGControls::get_drag_chute, &FGControls::set_drag_chute );
|
||||||
|
|
||||||
_tiedProperties.Tie( "elevator", this, &FGControls::get_elevator, &FGControls::set_elevator )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "elevator-trim", this, &FGControls::get_elevator_trim, &FGControls::set_elevator_trim )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "rudder", this, &FGControls::get_rudder, &FGControls::set_rudder )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "rudder-trim", this, &FGControls::get_rudder_trim, &FGControls::set_rudder_trim )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "flaps", this, &FGControls::get_flaps, &FGControls::set_flaps )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "slats", this, &FGControls::get_slats, &FGControls::set_slats )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "BLC", this, &FGControls::get_BLC, &FGControls::set_BLC )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "spoilers", this, &FGControls::get_spoilers, &FGControls::set_spoilers )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "speedbrake", this, &FGControls::get_speedbrake, &FGControls::set_speedbrake )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "wing-sweep", this, &FGControls::get_wing_sweep, &FGControls::set_wing_sweep )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "wing-fold", this, &FGControls::get_wing_fold, &FGControls::set_wing_fold )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "drag-chute", this, &FGControls::get_drag_chute, &FGControls::set_drag_chute )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
// engines
|
// engines
|
||||||
_tiedProperties.setRoot( fgGetNode("/controls/engines", true ) );
|
_tiedProperties.setRoot( fgGetNode("/controls/engines", true ) );
|
||||||
|
|
||||||
_tiedProperties.Tie( "throttle_idle", this, &FGControls::get_throttle_idle, &FGControls::set_throttle_idle )
|
_tiedProperties.Tie( "throttle_idle", this, &FGControls::get_throttle_idle, &FGControls::set_throttle_idle );
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
for (index = 0; index < MAX_ENGINES; index++) {
|
for (index = 0; index < MAX_ENGINES; index++) {
|
||||||
_SetRoot(_tiedProperties, "/controls/engines/engine", index );
|
_SetRoot(_tiedProperties, "/controls/engines/engine", index );
|
||||||
|
|
||||||
_tiedProperties.Tie( "throttle", this, index, &FGControls::get_throttle, &FGControls::set_throttle )
|
_engineThrottleNodes.push_back(_tiedProperties.Tie( "throttle", this, index, &FGControls::get_throttle, &FGControls::_inner_set_throttle ));
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_engineStarterNodes.push_back(_tiedProperties.Tie( "starter", this, index, &FGControls::get_starter, &FGControls::_inner_set_starter ));
|
||||||
|
_tiedProperties.Tie( "fuel-pump", this, index, &FGControls::get_fuel_pump, &FGControls::set_fuel_pump );
|
||||||
|
_tiedProperties.Tie( "fire-switch", this, index, &FGControls::get_fire_switch, &FGControls::set_fire_switch );
|
||||||
|
_tiedProperties.Tie( "fire-bottle-discharge", this, index, &FGControls::get_fire_bottle_discharge, &FGControls::set_fire_bottle_discharge );
|
||||||
|
_engineCutoffNodes.push_back(_tiedProperties.Tie( "cutoff", this, index, &FGControls::get_cutoff, &FGControls::_inner_set_cutoff ));
|
||||||
|
_engineMixtureNodes.push_back( _tiedProperties.Tie( "mixture", this, index, &FGControls::get_mixture, &FGControls::_inner_set_mixture ));
|
||||||
|
_tiedProperties.Tie( "propeller-pitch", this, index, &FGControls::get_prop_advance, &FGControls::set_prop_advance );
|
||||||
|
_engineMagnetoNodes.push_back(_tiedProperties.Tie( "magnetos", this, index, &FGControls::get_magnetos, &FGControls::_inner_set_magnetos ));
|
||||||
|
|
||||||
_tiedProperties.Tie( "starter", this, index, &FGControls::get_starter, &FGControls::set_starter )
|
_tiedProperties.Tie( "feed_tank", this, index, &FGControls::get_feed_tank, &FGControls::set_feed_tank );
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "WEP", this, index, &FGControls::get_nitrous_injection, &FGControls::set_nitrous_injection );
|
||||||
|
_tiedProperties.Tie( "cowl-flaps-norm", this, index, &FGControls::get_cowl_flaps_norm, &FGControls::set_cowl_flaps_norm );
|
||||||
|
_tiedProperties.Tie( "propeller-feather", this, index, &FGControls::get_feather, &FGControls::set_feather );
|
||||||
|
_tiedProperties.Tie( "ignition", this, index, &FGControls::get_ignition, &FGControls::set_ignition );
|
||||||
|
|
||||||
_tiedProperties.Tie( "fuel-pump", this, index, &FGControls::get_fuel_pump, &FGControls::set_fuel_pump )
|
_engineAugmentationNodes.push_back(_tiedProperties.Tie( "augmentation", this, index, &FGControls::get_augmentation, &FGControls::_inner_set_augmentation ));
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_engineReverserNodes.push_back(_tiedProperties.Tie( "reverser", this, index, &FGControls::get_reverser, &FGControls::_inner_set_reverser ));
|
||||||
|
_engineWaterInjectionNodes.push_back(_tiedProperties.Tie( "water-injection", this, index, &FGControls::get_water_injection, &FGControls::_inner_set_water_injection ));
|
||||||
|
_tiedProperties.Tie( "condition", this, index, &FGControls::get_condition, &FGControls::set_condition );
|
||||||
|
|
||||||
_tiedProperties.Tie( "fire-switch", this, index, &FGControls::get_fire_switch, &FGControls::set_fire_switch )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "fire-bottle-discharge", this, index, &FGControls::get_fire_bottle_discharge, &FGControls::set_fire_bottle_discharge )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "cutoff", this, index, &FGControls::get_cutoff, &FGControls::set_cutoff )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "mixture", this, index, &FGControls::get_mixture, &FGControls::set_mixture )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "propeller-pitch", this, index, &FGControls::get_prop_advance, &FGControls::set_prop_advance )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "magnetos", this, index, &FGControls::get_magnetos, &FGControls::set_magnetos )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "feed_tank", this, index, &FGControls::get_feed_tank, &FGControls::set_feed_tank )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "WEP", this, index, &FGControls::get_nitrous_injection, &FGControls::set_nitrous_injection )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "cowl-flaps-norm", this, index, &FGControls::get_cowl_flaps_norm, &FGControls::set_cowl_flaps_norm )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "propeller-feather", this, index, &FGControls::get_feather, &FGControls::set_feather )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "ignition", this, index, &FGControls::get_ignition, &FGControls::set_ignition )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "augmentation", this, index, &FGControls::get_augmentation, &FGControls::set_augmentation )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "reverser", this, index, &FGControls::get_reverser, &FGControls::set_reverser )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "water-injection", this, index, &FGControls::get_water_injection, &FGControls::set_water_injection )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "condition", this, index, &FGControls::get_condition, &FGControls::set_condition )
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// fuel
|
// fuel
|
||||||
_SetRoot( _tiedProperties, "/controls/fuel" );
|
_SetRoot( _tiedProperties, "/controls/fuel" );
|
||||||
|
|
||||||
_tiedProperties.Tie( "dump-valve", this, &FGControls::get_dump_valve, &FGControls::set_dump_valve)
|
_tiedProperties.Tie( "dump-valve", this, &FGControls::get_dump_valve, &FGControls::set_dump_valve);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
for (index = 0; index < MAX_TANKS; index++) {
|
for (index = 0; index < MAX_TANKS; index++) {
|
||||||
_SetRoot( _tiedProperties, "/controls/fuel/tank", index );
|
_SetRoot( _tiedProperties, "/controls/fuel/tank", index );
|
||||||
|
|
||||||
_tiedProperties.Tie( "fuel_selector", this, index, &FGControls::get_fuel_selector, &FGControls::set_fuel_selector)
|
_tiedProperties.Tie( "fuel_selector", this, index, &FGControls::get_fuel_selector, &FGControls::set_fuel_selector);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "to_engine", this, index, &FGControls::get_to_engine, &FGControls::set_to_engine);
|
||||||
|
_tiedProperties.Tie( "to_tank", this, index, &FGControls::get_to_tank, &FGControls::set_to_tank);
|
||||||
|
|
||||||
_tiedProperties.Tie( "to_engine", this, index, &FGControls::get_to_engine, &FGControls::set_to_engine)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "to_tank", this, index, &FGControls::get_to_tank, &FGControls::set_to_tank)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
for (i = 0; i < MAX_BOOSTPUMPS; i++) {
|
for (i = 0; i < MAX_BOOSTPUMPS; i++) {
|
||||||
_tiedProperties.Tie( "boost-pump", i,
|
_tiedProperties.Tie( "boost-pump", i,
|
||||||
this, index * 2 + i, &FGControls::get_boost_pump, &FGControls::set_boost_pump)
|
this, index * 2 + i, &FGControls::get_boost_pump, &FGControls::set_boost_pump);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// gear
|
// gear
|
||||||
_SetRoot( _tiedProperties, "/controls/gear" );
|
_SetRoot( _tiedProperties, "/controls/gear" );
|
||||||
|
|
||||||
_tiedProperties.Tie( "brake-left", this, &FGControls::get_brake_left, &FGControls::set_brake_left)
|
_tiedProperties.Tie( "brake-left", this, &FGControls::get_brake_left, &FGControls::set_brake_left);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "brake-right", this, &FGControls::get_brake_right, &FGControls::set_brake_right);
|
||||||
|
_tiedProperties.Tie( "copilot-brake-left", this, &FGControls::get_copilot_brake_left, &FGControls::set_copilot_brake_left);
|
||||||
|
_tiedProperties.Tie( "copilot-brake-right", this, &FGControls::get_copilot_brake_right, &FGControls::set_copilot_brake_right);
|
||||||
|
_tiedProperties.Tie( "brake-parking", this, &FGControls::get_brake_parking, &FGControls::set_brake_parking);
|
||||||
|
_tiedProperties.Tie( "steering", this, &FGControls::get_steering, &FGControls::set_steering);
|
||||||
|
_tiedProperties.Tie( "nose-wheel-steering", this, &FGControls::get_nose_wheel_steering, &FGControls::set_nose_wheel_steering);
|
||||||
|
_tiedProperties.Tie( "gear-down", this, &FGControls::get_gear_down, &FGControls::set_gear_down);
|
||||||
|
_tiedProperties.Tie( "antiskid", this, &FGControls::get_antiskid, &FGControls::set_antiskid);
|
||||||
|
_tiedProperties.Tie( "tailhook", this, &FGControls::get_tailhook, &FGControls::set_tailhook);
|
||||||
|
_tiedProperties.Tie( "launchbar", this, &FGControls::get_launchbar, &FGControls::set_launchbar);
|
||||||
|
_tiedProperties.Tie( "catapult-launch-cmd", this, &FGControls::get_catapult_launch_cmd, &FGControls::set_catapult_launch_cmd);
|
||||||
|
_tiedProperties.Tie( "tailwheel-lock", this, &FGControls::get_tailwheel_lock, &FGControls::set_tailwheel_lock);
|
||||||
|
|
||||||
_tiedProperties.Tie( "brake-right", this, &FGControls::get_brake_right, &FGControls::set_brake_right)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "copilot-brake-left", this, &FGControls::get_copilot_brake_left, &FGControls::set_copilot_brake_left)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "copilot-brake-right", this, &FGControls::get_copilot_brake_right, &FGControls::set_copilot_brake_right)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "brake-parking", this, &FGControls::get_brake_parking, &FGControls::set_brake_parking)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "steering", this, &FGControls::get_steering, &FGControls::set_steering)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "nose-wheel-steering", this, &FGControls::get_nose_wheel_steering, &FGControls::set_nose_wheel_steering)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "gear-down", this, &FGControls::get_gear_down, &FGControls::set_gear_down)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "antiskid", this, &FGControls::get_antiskid, &FGControls::set_antiskid)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "tailhook", this, &FGControls::get_tailhook, &FGControls::set_tailhook)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "launchbar", this, &FGControls::get_launchbar, &FGControls::set_launchbar)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "catapult-launch-cmd", this, &FGControls::get_catapult_launch_cmd, &FGControls::set_catapult_launch_cmd)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "tailwheel-lock", this, &FGControls::get_tailwheel_lock, &FGControls::set_tailwheel_lock)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
for (index = 0; index < MAX_WHEELS; index++) {
|
for (index = 0; index < MAX_WHEELS; index++) {
|
||||||
_SetRoot( _tiedProperties, "/controls/gear/wheel", index );
|
_SetRoot( _tiedProperties, "/controls/gear/wheel", index );
|
||||||
_tiedProperties.Tie( "alternate-extension", this, index, &FGControls::get_alternate_extension, &FGControls::set_alternate_extension)
|
_tiedProperties.Tie( "alternate-extension", this, index, &FGControls::get_alternate_extension, &FGControls::set_alternate_extension);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// anti-ice
|
// anti-ice
|
||||||
_SetRoot( _tiedProperties, "/controls/anti-ice" );
|
_SetRoot( _tiedProperties, "/controls/anti-ice" );
|
||||||
|
|
||||||
_tiedProperties.Tie( "wing-heat", this, &FGControls::get_wing_heat, &FGControls::set_wing_heat)
|
_tiedProperties.Tie( "wing-heat", this, &FGControls::get_wing_heat, &FGControls::set_wing_heat);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "pitot-heat", this, &FGControls::get_pitot_heat, &FGControls::set_pitot_heat);
|
||||||
|
_tiedProperties.Tie( "wiper", this, &FGControls::get_wiper, &FGControls::set_wiper);
|
||||||
_tiedProperties.Tie( "pitot-heat", this, &FGControls::get_pitot_heat, &FGControls::set_pitot_heat)
|
_tiedProperties.Tie( "window-heat", this, &FGControls::get_window_heat, &FGControls::set_window_heat);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "wiper", this, &FGControls::get_wiper, &FGControls::set_wiper)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "window-heat", this, &FGControls::get_window_heat, &FGControls::set_window_heat)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
for (index = 0; index < MAX_ENGINES; index++) {
|
for (index = 0; index < MAX_ENGINES; index++) {
|
||||||
_SetRoot( _tiedProperties, "/controls/anti-ice/engine", index );
|
_SetRoot( _tiedProperties, "/controls/anti-ice/engine", index );
|
||||||
|
|
||||||
_tiedProperties.Tie( "carb-heat", this, index, &FGControls::get_carb_heat, &FGControls::set_carb_heat)
|
_tiedProperties.Tie( "carb-heat", this, index, &FGControls::get_carb_heat, &FGControls::set_carb_heat);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "inlet-heat", this, index, &FGControls::get_inlet_heat, &FGControls::set_inlet_heat);
|
||||||
|
|
||||||
_tiedProperties.Tie( "inlet-heat", this, index, &FGControls::get_inlet_heat, &FGControls::set_inlet_heat)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// hydraulics
|
// hydraulics
|
||||||
for (index = 0; index < MAX_HYD_SYSTEMS; index++) {
|
for (index = 0; index < MAX_HYD_SYSTEMS; index++) {
|
||||||
_SetRoot( _tiedProperties, "/controls/hydraulic/system", index );
|
_SetRoot( _tiedProperties, "/controls/hydraulic/system", index );
|
||||||
|
|
||||||
_tiedProperties.Tie( "engine-pump", this, index, &FGControls::get_engine_pump, &FGControls::set_engine_pump)
|
_tiedProperties.Tie( "engine-pump", this, index, &FGControls::get_engine_pump, &FGControls::set_engine_pump);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "electric-pump", this, index, &FGControls::get_electric_pump, &FGControls::set_electric_pump);
|
||||||
|
|
||||||
_tiedProperties.Tie( "electric-pump", this, index, &FGControls::get_electric_pump, &FGControls::set_electric_pump)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// electric
|
// electric
|
||||||
_SetRoot( _tiedProperties, "/controls/electric" );
|
_SetRoot( _tiedProperties, "/controls/electric" );
|
||||||
|
|
||||||
_tiedProperties.Tie( "battery-switch", this, &FGControls::get_battery_switch, &FGControls::set_battery_switch)
|
_tiedProperties.Tie( "battery-switch", this, &FGControls::get_battery_switch, &FGControls::set_battery_switch);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "external-power", this, &FGControls::get_external_power, &FGControls::set_external_power);
|
||||||
|
_tiedProperties.Tie( "APU-generator", this, &FGControls::get_APU_generator, &FGControls::set_APU_generator);
|
||||||
_tiedProperties.Tie( "external-power", this, &FGControls::get_external_power, &FGControls::set_external_power)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "APU-generator", this, &FGControls::get_APU_generator, &FGControls::set_APU_generator)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
for (index = 0; index < MAX_ENGINES; index++) {
|
for (index = 0; index < MAX_ENGINES; index++) {
|
||||||
_SetRoot( _tiedProperties, "/controls/electric/engine", index );
|
_SetRoot( _tiedProperties, "/controls/electric/engine", index );
|
||||||
|
|
||||||
_tiedProperties.Tie( "generator", this, index, &FGControls::get_generator_breaker, &FGControls::set_generator_breaker)
|
_tiedProperties.Tie( "generator", this, index, &FGControls::get_generator_breaker, &FGControls::set_generator_breaker);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "bus-tie", this, index, &FGControls::get_bus_tie, &FGControls::set_bus_tie);
|
||||||
|
|
||||||
_tiedProperties.Tie( "bus-tie", this, index, &FGControls::get_bus_tie, &FGControls::set_bus_tie)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// pneumatic
|
// pneumatic
|
||||||
_SetRoot( _tiedProperties, "/controls/pneumatic" );
|
_SetRoot( _tiedProperties, "/controls/pneumatic" );
|
||||||
|
|
||||||
_tiedProperties.Tie( "APU-bleed", this, &FGControls::get_APU_bleed, &FGControls::set_APU_bleed)
|
_tiedProperties.Tie( "APU-bleed", this, &FGControls::get_APU_bleed, &FGControls::set_APU_bleed);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
for (index = 0; index < MAX_ENGINES; index++) {
|
for (index = 0; index < MAX_ENGINES; index++) {
|
||||||
_SetRoot( _tiedProperties, "/controls/pneumatic/engine", index );
|
_SetRoot( _tiedProperties, "/controls/pneumatic/engine", index );
|
||||||
|
_tiedProperties.Tie( "bleed", this, index, &FGControls::get_engine_bleed, &FGControls::set_engine_bleed);
|
||||||
_tiedProperties.Tie( "bleed", this, index, &FGControls::get_engine_bleed, &FGControls::set_engine_bleed)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// pressurization
|
// pressurization
|
||||||
_SetRoot( _tiedProperties, "/controls/pressurization" );
|
_SetRoot( _tiedProperties, "/controls/pressurization" );
|
||||||
|
|
||||||
_tiedProperties.Tie( "mode", this, &FGControls::get_mode, &FGControls::set_mode)
|
_tiedProperties.Tie( "mode", this, &FGControls::get_mode, &FGControls::set_mode);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "dump", this, &FGControls::get_dump, &FGControls::set_dump);
|
||||||
|
_tiedProperties.Tie( "outflow-valve", this, &FGControls::get_outflow_valve, &FGControls::set_outflow_valve);
|
||||||
_tiedProperties.Tie( "dump", this, &FGControls::get_dump, &FGControls::set_dump)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "outflow-valve", this, &FGControls::get_outflow_valve, &FGControls::set_outflow_valve)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
for (index = 0; index < MAX_PACKS; index++) {
|
for (index = 0; index < MAX_PACKS; index++) {
|
||||||
_SetRoot( _tiedProperties, "/controls/pressurization/pack", index );
|
_SetRoot( _tiedProperties, "/controls/pressurization/pack", index );
|
||||||
|
|
||||||
_tiedProperties.Tie( "pack-on", this, index, &FGControls::get_pack_on, &FGControls::set_pack_on)
|
_tiedProperties.Tie( "pack-on", this, index, &FGControls::get_pack_on, &FGControls::set_pack_on);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// lights
|
// lights
|
||||||
_SetRoot( _tiedProperties, "/controls/lighting" );
|
_SetRoot( _tiedProperties, "/controls/lighting" );
|
||||||
|
|
||||||
_tiedProperties.Tie( "landing-lights", this, &FGControls::get_landing_lights, &FGControls::set_landing_lights)
|
_tiedProperties.Tie( "landing-lights", this, &FGControls::get_landing_lights, &FGControls::set_landing_lights);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "turn-off-lights", this, &FGControls::get_turn_off_lights, &FGControls::set_turn_off_lights);
|
||||||
|
_tiedProperties.Tie( "taxi-light", this, &FGControls::get_taxi_light, &FGControls::set_taxi_light);
|
||||||
_tiedProperties.Tie( "turn-off-lights", this, &FGControls::get_turn_off_lights, &FGControls::set_turn_off_lights)
|
_tiedProperties.Tie( "logo-lights", this, &FGControls::get_logo_lights, &FGControls::set_logo_lights);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "nav-lights", this, &FGControls::get_nav_lights, &FGControls::set_nav_lights);
|
||||||
|
_tiedProperties.Tie( "beacon", this, &FGControls::get_beacon, &FGControls::set_beacon);
|
||||||
_tiedProperties.Tie( "taxi-light", this, &FGControls::get_taxi_light, &FGControls::set_taxi_light)
|
_tiedProperties.Tie( "strobe", this, &FGControls::get_strobe, &FGControls::set_strobe);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "panel-norm", this, &FGControls::get_panel_norm, &FGControls::set_panel_norm);
|
||||||
|
_tiedProperties.Tie( "instruments-norm", this, &FGControls::get_instruments_norm, &FGControls::set_instruments_norm);
|
||||||
_tiedProperties.Tie( "logo-lights", this, &FGControls::get_logo_lights, &FGControls::set_logo_lights)
|
_tiedProperties.Tie( "dome-norm", this, &FGControls::get_dome_norm, &FGControls::set_dome_norm);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "nav-lights", this, &FGControls::get_nav_lights, &FGControls::set_nav_lights)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "beacon", this, &FGControls::get_beacon, &FGControls::set_beacon)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "strobe", this, &FGControls::get_strobe, &FGControls::set_strobe)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "panel-norm", this, &FGControls::get_panel_norm, &FGControls::set_panel_norm)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "instruments-norm", this, &FGControls::get_instruments_norm, &FGControls::set_instruments_norm)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "dome-norm", this, &FGControls::get_dome_norm, &FGControls::set_dome_norm)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
// armament
|
// armament
|
||||||
_SetRoot( _tiedProperties, "/controls/armament" );
|
_SetRoot( _tiedProperties, "/controls/armament" );
|
||||||
|
|
||||||
_tiedProperties.Tie( "master-arm", this, &FGControls::get_master_arm, &FGControls::set_master_arm)
|
_tiedProperties.Tie( "master-arm", this, &FGControls::get_master_arm, &FGControls::set_master_arm);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "station-select", this, &FGControls::get_station_select, &FGControls::set_station_select);
|
||||||
|
_tiedProperties.Tie( "release-all", this, &FGControls::get_release_ALL, &FGControls::set_release_ALL);
|
||||||
|
|
||||||
_tiedProperties.Tie( "station-select", this, &FGControls::get_station_select, &FGControls::set_station_select)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "release-all", this, &FGControls::get_release_ALL, &FGControls::set_release_ALL)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
for (index = 0; index < MAX_STATIONS; index++) {
|
for (index = 0; index < MAX_STATIONS; index++) {
|
||||||
_SetRoot( _tiedProperties, "/controls/armament/station", index );
|
_SetRoot( _tiedProperties, "/controls/armament/station", index );
|
||||||
|
|
||||||
_tiedProperties.Tie( "stick-size", this, index, &FGControls::get_stick_size, &FGControls::set_stick_size)
|
_tiedProperties.Tie( "stick-size", this, index, &FGControls::get_stick_size, &FGControls::set_stick_size);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "release-stick", this, index, &FGControls::get_release_stick, &FGControls::set_release_stick);
|
||||||
|
_tiedProperties.Tie( "release-all", this, index, &FGControls::get_release_all, &FGControls::set_release_all);
|
||||||
_tiedProperties.Tie( "release-stick", this, index, &FGControls::get_release_stick, &FGControls::set_release_stick)
|
_tiedProperties.Tie( "jettison-all", this, index, &FGControls::get_jettison_all, &FGControls::set_jettison_all);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "release-all", this, index, &FGControls::get_release_all, &FGControls::set_release_all)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "jettison-all", this, index, &FGControls::get_jettison_all, &FGControls::set_jettison_all)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// seat
|
// seat
|
||||||
_SetRoot( _tiedProperties, "/controls/seat" );
|
_SetRoot( _tiedProperties, "/controls/seat" );
|
||||||
|
|
||||||
_tiedProperties.Tie( "vertical-adjust", this, &FGControls::get_vertical_adjust, &FGControls::set_vertical_adjust)
|
_tiedProperties.Tie( "vertical-adjust", this, &FGControls::get_vertical_adjust, &FGControls::set_vertical_adjust);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "fore-aft-adjust", this, &FGControls::get_fore_aft_adjust, &FGControls::set_fore_aft_adjust);
|
||||||
|
_tiedProperties.Tie( "cmd_selector_valve", this, &FGControls::get_cmd_selector_valve, &FGControls::set_cmd_selector_valve);
|
||||||
|
|
||||||
_tiedProperties.Tie( "fore-aft-adjust", this, &FGControls::get_fore_aft_adjust, &FGControls::set_fore_aft_adjust)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "cmd_selector_valve", this, &FGControls::get_cmd_selector_valve, &FGControls::set_cmd_selector_valve)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
for (index = 0; index < MAX_EJECTION_SEATS; index++) {
|
for (index = 0; index < MAX_EJECTION_SEATS; index++) {
|
||||||
_SetRoot( _tiedProperties, "/controls/seat/eject", index );
|
_SetRoot( _tiedProperties, "/controls/seat/eject", index );
|
||||||
|
|
||||||
_tiedProperties.Tie( "initiate", this, index, &FGControls::get_ejection_seat, &FGControls::set_ejection_seat)
|
_tiedProperties.Tie( "initiate", this, index, &FGControls::get_ejection_seat, &FGControls::set_ejection_seat);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "status", this, index, &FGControls::get_eseat_status, &FGControls::set_eseat_status);
|
||||||
|
|
||||||
_tiedProperties.Tie( "status", this, index, &FGControls::get_eseat_status, &FGControls::set_eseat_status)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// APU
|
// APU
|
||||||
_SetRoot( _tiedProperties, "/controls/APU" );
|
_SetRoot( _tiedProperties, "/controls/APU" );
|
||||||
|
|
||||||
_tiedProperties.Tie( "off-start-run", this, &FGControls::get_off_start_run, &FGControls::set_off_start_run)
|
_tiedProperties.Tie( "off-start-run", this, &FGControls::get_off_start_run, &FGControls::set_off_start_run);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "fire-switch", this, &FGControls::get_APU_fire_switch, &FGControls::set_APU_fire_switch);
|
||||||
|
|
||||||
_tiedProperties.Tie( "fire-switch", this, &FGControls::get_APU_fire_switch, &FGControls::set_APU_fire_switch)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
// autoflight
|
// autoflight
|
||||||
for (index = 0; index < MAX_AUTOPILOTS; index++) {
|
for (index = 0; index < MAX_AUTOPILOTS; index++) {
|
||||||
|
|
||||||
_SetRoot( _tiedProperties, "/controls/autoflight/autopilot", index );
|
_SetRoot( _tiedProperties, "/controls/autoflight/autopilot", index );
|
||||||
|
_tiedProperties.Tie( "engage", this, index, &FGControls::get_autopilot_engage, &FGControls::set_autopilot_engage);
|
||||||
_tiedProperties.Tie( "engage", this, index, &FGControls::get_autopilot_engage, &FGControls::set_autopilot_engage)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_SetRoot( _tiedProperties, "/controls/autoflight/" );
|
_SetRoot( _tiedProperties, "/controls/autoflight/" );
|
||||||
|
|
||||||
_tiedProperties.Tie( "autothrottle-arm", this, &FGControls::get_autothrottle_arm, &FGControls::set_autothrottle_arm)
|
_tiedProperties.Tie( "autothrottle-arm", this, &FGControls::get_autothrottle_arm, &FGControls::set_autothrottle_arm);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
_tiedProperties.Tie( "autothrottle-engage", this, &FGControls::get_autothrottle_engage, &FGControls::set_autothrottle_engage);
|
||||||
|
_tiedProperties.Tie( "heading-select", this, &FGControls::get_heading_select, &FGControls::set_heading_select);
|
||||||
|
_tiedProperties.Tie( "altitude-select", this, &FGControls::get_altitude_select, &FGControls::set_altitude_select);
|
||||||
|
_tiedProperties.Tie( "bank-angle-select", this, &FGControls::get_bank_angle_select, &FGControls::set_bank_angle_select);
|
||||||
|
_tiedProperties.Tie( "vertical-speed-select", this, &FGControls::get_vertical_speed_select, &FGControls::set_vertical_speed_select);
|
||||||
|
_tiedProperties.Tie( "speed-select", this, &FGControls::get_speed_select, &FGControls::set_speed_select);
|
||||||
|
_tiedProperties.Tie( "mach-select", this, &FGControls::get_mach_select, &FGControls::set_mach_select);
|
||||||
|
_tiedProperties.Tie( "vertical-mode", this, &FGControls::get_vertical_mode, &FGControls::set_vertical_mode);
|
||||||
|
_tiedProperties.Tie( "lateral-mode", this, &FGControls::get_lateral_mode, &FGControls::set_lateral_mode);
|
||||||
|
|
||||||
_tiedProperties.Tie( "autothrottle-engage", this, &FGControls::get_autothrottle_engage, &FGControls::set_autothrottle_engage)
|
_tiedProperties.setAttribute(SGPropertyNode::ARCHIVE, true);
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "heading-select", this, &FGControls::get_heading_select, &FGControls::set_heading_select)
|
// mark all the properties as listener-safe
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
// we can do this becuase we made all the accessors private
|
||||||
|
_tiedProperties.setAttribute(SGPropertyNode::LISTENER_SAFE, true);
|
||||||
_tiedProperties.Tie( "altitude-select", this, &FGControls::get_altitude_select, &FGControls::set_altitude_select)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "bank-angle-select", this, &FGControls::get_bank_angle_select, &FGControls::set_bank_angle_select)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "vertical-speed-select", this, &FGControls::get_vertical_speed_select, &FGControls::set_vertical_speed_select)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "speed-select", this, &FGControls::get_speed_select, &FGControls::set_speed_select)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "mach-select", this, &FGControls::get_mach_select, &FGControls::set_mach_select)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "vertical-mode", this, &FGControls::get_vertical_mode, &FGControls::set_vertical_mode)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
|
|
||||||
_tiedProperties.Tie( "lateral-mode", this, &FGControls::get_lateral_mode, &FGControls::set_lateral_mode)
|
|
||||||
->setAttribute( SGPropertyNode::ARCHIVE, true );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FGControls::unbind ()
|
void FGControls::unbind ()
|
||||||
{
|
{
|
||||||
_tiedProperties.Untie();
|
_tiedProperties.Untie();
|
||||||
}
|
|
||||||
|
|
||||||
|
_aileronNode.clear();
|
||||||
|
_elevatorNode.clear();
|
||||||
|
_aileronTrimNode.clear();
|
||||||
|
_elevatorTrimNode.clear();
|
||||||
|
_rudderNode.clear();
|
||||||
|
_engineThrottleNodes.clear();
|
||||||
|
_engineReverserNodes.clear();
|
||||||
|
_engineMixtureNodes.clear();
|
||||||
|
_engineCutoffNodes.clear();
|
||||||
|
_engineStarterNodes.clear();
|
||||||
|
_engineWaterInjectionNodes.clear();
|
||||||
|
_engineAugmentationNodes.clear();
|
||||||
|
_engineMagnetoNodes.clear();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
FGControls::update (double dt)
|
FGControls::update (double dt)
|
||||||
|
@ -615,6 +461,13 @@ FGControls::update (double dt)
|
||||||
|
|
||||||
void
|
void
|
||||||
FGControls::set_aileron (double pos)
|
FGControls::set_aileron (double pos)
|
||||||
|
{
|
||||||
|
_inner_set_aileron(pos);
|
||||||
|
_aileronNode->fireValueChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
FGControls::_inner_set_aileron (double pos)
|
||||||
{
|
{
|
||||||
aileron = pos;
|
aileron = pos;
|
||||||
SG_CLAMP_RANGE<double>( aileron, -1.0, 1.0 );
|
SG_CLAMP_RANGE<double>( aileron, -1.0, 1.0 );
|
||||||
|
@ -629,8 +482,14 @@ FGControls::move_aileron (double amt)
|
||||||
do_autocoordination();
|
do_autocoordination();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FGControls::set_aileron_trim(double pos)
|
||||||
|
{
|
||||||
|
_inner_set_aileron_trim(pos);
|
||||||
|
_aileronTrimNode->fireValueChanged();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
FGControls::set_aileron_trim( double pos )
|
FGControls::_inner_set_aileron_trim( double pos )
|
||||||
{
|
{
|
||||||
aileron_trim = pos;
|
aileron_trim = pos;
|
||||||
SG_CLAMP_RANGE<double>( aileron_trim, -1.0, 1.0 );
|
SG_CLAMP_RANGE<double>( aileron_trim, -1.0, 1.0 );
|
||||||
|
@ -643,8 +502,14 @@ FGControls::move_aileron_trim( double amt )
|
||||||
SG_CLAMP_RANGE<double>( aileron_trim, -1.0, 1.0 );
|
SG_CLAMP_RANGE<double>( aileron_trim, -1.0, 1.0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FGControls::set_elevator(double pos)
|
||||||
|
{
|
||||||
|
_inner_set_elevator(pos);
|
||||||
|
_elevatorNode->fireValueChanged();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
FGControls::set_elevator( double pos )
|
FGControls::_inner_set_elevator( double pos )
|
||||||
{
|
{
|
||||||
elevator = pos;
|
elevator = pos;
|
||||||
SG_CLAMP_RANGE<double>( elevator, -1.0, 1.0 );
|
SG_CLAMP_RANGE<double>( elevator, -1.0, 1.0 );
|
||||||
|
@ -657,8 +522,14 @@ FGControls::move_elevator( double amt )
|
||||||
SG_CLAMP_RANGE<double>( elevator, -1.0, 1.0 );
|
SG_CLAMP_RANGE<double>( elevator, -1.0, 1.0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FGControls::set_elevator_trim(double pos)
|
||||||
|
{
|
||||||
|
_inner_set_elevator_trim(pos);
|
||||||
|
_elevatorTrimNode->fireValueChanged();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
FGControls::set_elevator_trim( double pos )
|
FGControls::_inner_set_elevator_trim( double pos )
|
||||||
{
|
{
|
||||||
elevator_trim = pos;
|
elevator_trim = pos;
|
||||||
SG_CLAMP_RANGE<double>( elevator_trim, -1.0, 1.0 );
|
SG_CLAMP_RANGE<double>( elevator_trim, -1.0, 1.0 );
|
||||||
|
@ -671,8 +542,14 @@ FGControls::move_elevator_trim( double amt )
|
||||||
SG_CLAMP_RANGE<double>( elevator_trim, -1.0, 1.0 );
|
SG_CLAMP_RANGE<double>( elevator_trim, -1.0, 1.0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FGControls::set_rudder(double pos)
|
||||||
|
{
|
||||||
|
_inner_set_rudder(pos);
|
||||||
|
_rudderNode->fireValueChanged();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
FGControls::set_rudder( double pos )
|
FGControls::_inner_set_rudder( double pos )
|
||||||
{
|
{
|
||||||
rudder = pos;
|
rudder = pos;
|
||||||
SG_CLAMP_RANGE<double>( rudder, -1.0, 1.0 );
|
SG_CLAMP_RANGE<double>( rudder, -1.0, 1.0 );
|
||||||
|
@ -795,6 +672,13 @@ FGControls::set_throttle_idle( bool val )
|
||||||
|
|
||||||
void
|
void
|
||||||
FGControls::set_throttle( int engine, double pos )
|
FGControls::set_throttle( int engine, double pos )
|
||||||
|
{
|
||||||
|
_inner_set_throttle(engine, pos);
|
||||||
|
fireEngineValueChanged(engine, _engineThrottleNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
FGControls::_inner_set_throttle( int engine, double pos )
|
||||||
{
|
{
|
||||||
if ( engine == ALL_ENGINES ) {
|
if ( engine == ALL_ENGINES ) {
|
||||||
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
||||||
|
@ -825,8 +709,14 @@ FGControls::move_throttle( int engine, double amt )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FGControls::set_starter( int engine, bool flag )
|
||||||
|
{
|
||||||
|
_inner_set_starter(engine, flag);
|
||||||
|
fireEngineValueChanged(engine, _engineStarterNodes);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
FGControls::set_starter( int engine, bool flag )
|
FGControls::_inner_set_starter( int engine, bool flag )
|
||||||
{
|
{
|
||||||
if ( engine == ALL_ENGINES ) {
|
if ( engine == ALL_ENGINES ) {
|
||||||
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
||||||
|
@ -883,6 +773,13 @@ FGControls::set_fire_bottle_discharge( int engine, bool val )
|
||||||
|
|
||||||
void
|
void
|
||||||
FGControls::set_cutoff( int engine, bool val )
|
FGControls::set_cutoff( int engine, bool val )
|
||||||
|
{
|
||||||
|
_inner_set_cutoff(engine, val);
|
||||||
|
fireEngineValueChanged(engine, _engineCutoffNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
FGControls::_inner_set_cutoff( int engine, bool val )
|
||||||
{
|
{
|
||||||
if ( engine == ALL_ENGINES ) {
|
if ( engine == ALL_ENGINES ) {
|
||||||
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
||||||
|
@ -912,9 +809,15 @@ FGControls::set_feed_tank( int engine, int tank )
|
||||||
// feed_tank[engine] = engine;
|
// feed_tank[engine] = engine;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
FGControls::set_mixture( int engine, double pos )
|
FGControls::set_mixture( int engine, double pos )
|
||||||
|
{
|
||||||
|
_inner_set_mixture(engine, pos);
|
||||||
|
fireEngineValueChanged(engine, _engineMixtureNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
FGControls::_inner_set_mixture( int engine, double pos )
|
||||||
{
|
{
|
||||||
if ( engine == ALL_ENGINES ) {
|
if ( engine == ALL_ENGINES ) {
|
||||||
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
||||||
|
@ -979,6 +882,14 @@ FGControls::move_prop_advance( int engine, double amt )
|
||||||
|
|
||||||
void
|
void
|
||||||
FGControls::set_magnetos( int engine, int pos )
|
FGControls::set_magnetos( int engine, int pos )
|
||||||
|
{
|
||||||
|
_inner_set_magnetos(engine, pos);
|
||||||
|
fireEngineValueChanged(engine, _engineMagnetoNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
FGControls::_inner_set_magnetos( int engine, int pos )
|
||||||
{
|
{
|
||||||
if ( engine == ALL_ENGINES ) {
|
if ( engine == ALL_ENGINES ) {
|
||||||
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
||||||
|
@ -1088,6 +999,13 @@ FGControls::set_ignition( int engine, int pos )
|
||||||
|
|
||||||
void
|
void
|
||||||
FGControls::set_augmentation( int engine, bool val )
|
FGControls::set_augmentation( int engine, bool val )
|
||||||
|
{
|
||||||
|
_inner_set_augmentation(engine, val);
|
||||||
|
fireEngineValueChanged(engine, _engineAugmentationNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
FGControls::_inner_set_augmentation( int engine, bool val )
|
||||||
{
|
{
|
||||||
if ( engine == ALL_ENGINES ) {
|
if ( engine == ALL_ENGINES ) {
|
||||||
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
||||||
|
@ -1102,6 +1020,13 @@ FGControls::set_augmentation( int engine, bool val )
|
||||||
|
|
||||||
void
|
void
|
||||||
FGControls::set_reverser( int engine, bool val )
|
FGControls::set_reverser( int engine, bool val )
|
||||||
|
{
|
||||||
|
_inner_set_reverser(engine, val);
|
||||||
|
fireEngineValueChanged(engine, _engineReverserNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
FGControls::_inner_set_reverser( int engine, bool val )
|
||||||
{
|
{
|
||||||
if ( engine == ALL_ENGINES ) {
|
if ( engine == ALL_ENGINES ) {
|
||||||
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
||||||
|
@ -1116,6 +1041,13 @@ FGControls::set_reverser( int engine, bool val )
|
||||||
|
|
||||||
void
|
void
|
||||||
FGControls::set_water_injection( int engine, bool val )
|
FGControls::set_water_injection( int engine, bool val )
|
||||||
|
{
|
||||||
|
_inner_set_water_injection(engine, val);
|
||||||
|
fireEngineValueChanged(engine, _engineWaterInjectionNodes);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
FGControls::_inner_set_water_injection( int engine, bool val )
|
||||||
{
|
{
|
||||||
if ( engine == ALL_ENGINES ) {
|
if ( engine == ALL_ENGINES ) {
|
||||||
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
for ( int i = 0; i < MAX_ENGINES; i++ ) {
|
||||||
|
@ -1882,5 +1814,25 @@ FGControls::set_autopilot_engage( int ap, bool val )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FGControls::do_autocoordination()
|
||||||
|
{
|
||||||
|
// check for autocoordination
|
||||||
|
if ( auto_coordination->getBoolValue() ) {
|
||||||
|
double factor = auto_coordination_factor->getDoubleValue();
|
||||||
|
if( factor > 0.0 ) set_rudder( aileron * factor );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FGControls::fireEngineValueChanged(int index, simgear::PropertyList& props)
|
||||||
|
{
|
||||||
|
if (index == ALL_ENGINES) {
|
||||||
|
std::for_each(props.begin(), props.end(), [](const SGPropertyNode_ptr &p) {
|
||||||
|
p->fireValueChanged();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
props.at(index)->fireValueChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Register the subsystem.
|
// Register the subsystem.
|
||||||
SGSubsystemMgr::Registrant<FGControls> registrantFGControls;
|
SGSubsystemMgr::Registrant<FGControls> registrantFGControls;
|
||||||
|
|
|
@ -253,6 +253,23 @@ private:
|
||||||
SGPropertyNode_ptr auto_coordination_factor;
|
SGPropertyNode_ptr auto_coordination_factor;
|
||||||
simgear::TiedPropertyList _tiedProperties;
|
simgear::TiedPropertyList _tiedProperties;
|
||||||
|
|
||||||
|
// we need to node pointers as well, so we can manually
|
||||||
|
// fire valueChanged for these
|
||||||
|
SGPropertyNode_ptr _aileronNode;
|
||||||
|
SGPropertyNode_ptr _elevatorNode;
|
||||||
|
SGPropertyNode_ptr _aileronTrimNode;
|
||||||
|
SGPropertyNode_ptr _elevatorTrimNode;
|
||||||
|
SGPropertyNode_ptr _rudderNode;
|
||||||
|
|
||||||
|
simgear::PropertyList _engineThrottleNodes;
|
||||||
|
simgear::PropertyList _engineMixtureNodes;
|
||||||
|
simgear::PropertyList _engineStarterNodes;
|
||||||
|
simgear::PropertyList _engineCutoffNodes;
|
||||||
|
simgear::PropertyList _engineReverserNodes;
|
||||||
|
simgear::PropertyList _engineWaterInjectionNodes;
|
||||||
|
simgear::PropertyList _engineMagnetoNodes;
|
||||||
|
simgear::PropertyList _engineAugmentationNodes;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
FGControls();
|
FGControls();
|
||||||
~FGControls();
|
~FGControls();
|
||||||
|
@ -452,18 +469,38 @@ public:
|
||||||
return autopilot_engage[ap];
|
return autopilot_engage[ap];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void set_elevator( double pos );
|
||||||
|
void set_aileron_trim( double pos );
|
||||||
|
void set_elevator_trim( double pos );
|
||||||
|
void set_aileron( double pos );
|
||||||
|
void set_rudder( double pos );
|
||||||
|
|
||||||
|
void set_throttle( int engine, double pos );
|
||||||
|
void set_cutoff( int engine, bool val );
|
||||||
|
void set_augmentation( int engine, bool val );
|
||||||
|
void set_reverser( int engine, bool val );
|
||||||
|
void set_water_injection( int engine, bool val );
|
||||||
|
void set_magnetos( int engine, int pos );
|
||||||
|
void set_starter( int engine, bool flag );
|
||||||
|
void set_mixture( int engine, double pos );
|
||||||
|
|
||||||
|
private:
|
||||||
|
// IMPORTANT: do *not* make these setters public, or you will violate
|
||||||
|
// the listener-safety of them. If you need to make an accessor public,
|
||||||
|
// make these as 'inner', and make a public wrapper which correctly calls
|
||||||
|
// valueChanged (see, set_throttle, set_elevator etc for examples)
|
||||||
|
|
||||||
// Update functions
|
// Update functions
|
||||||
// controls/flight/
|
// controls/flight/
|
||||||
void set_aileron( double pos );
|
void _inner_set_aileron( double pos );
|
||||||
void move_aileron( double amt );
|
void move_aileron( double amt );
|
||||||
void set_aileron_trim( double pos );
|
void _inner_set_aileron_trim( double pos );
|
||||||
void move_aileron_trim( double amt );
|
void move_aileron_trim( double amt );
|
||||||
void set_elevator( double pos );
|
void _inner_set_elevator( double pos );
|
||||||
void move_elevator( double amt );
|
void move_elevator( double amt );
|
||||||
void set_elevator_trim( double pos );
|
void _inner_set_elevator_trim( double pos );
|
||||||
void move_elevator_trim( double amt );
|
void move_elevator_trim( double amt );
|
||||||
void set_rudder( double pos );
|
void _inner_set_rudder( double pos );
|
||||||
void move_rudder( double amt );
|
void move_rudder( double amt );
|
||||||
void set_rudder_trim( double pos );
|
void set_rudder_trim( double pos );
|
||||||
void move_rudder_trim( double amt );
|
void move_rudder_trim( double amt );
|
||||||
|
@ -485,18 +522,18 @@ public:
|
||||||
void set_throttle_idle( bool val );
|
void set_throttle_idle( bool val );
|
||||||
|
|
||||||
// controls/engines/engine[n]/
|
// controls/engines/engine[n]/
|
||||||
void set_throttle( int engine, double pos );
|
void _inner_set_throttle( int engine, double pos );
|
||||||
void move_throttle( int engine, double amt );
|
void move_throttle( int engine, double amt );
|
||||||
void set_starter( int engine, bool flag );
|
void _inner_set_starter( int engine, bool flag );
|
||||||
void set_fuel_pump( int engine, bool val );
|
void set_fuel_pump( int engine, bool val );
|
||||||
void set_fire_switch( int engine, bool val );
|
void set_fire_switch( int engine, bool val );
|
||||||
void set_fire_bottle_discharge( int engine, bool val );
|
void set_fire_bottle_discharge( int engine, bool val );
|
||||||
void set_cutoff( int engine, bool val );
|
void _inner_set_cutoff( int engine, bool val );
|
||||||
void set_mixture( int engine, double pos );
|
void _inner_set_mixture( int engine, double pos );
|
||||||
void move_mixture( int engine, double amt );
|
void move_mixture( int engine, double amt );
|
||||||
void set_prop_advance( int engine, double pos );
|
void set_prop_advance( int engine, double pos );
|
||||||
void move_prop_advance( int engine, double amt );
|
void move_prop_advance( int engine, double amt );
|
||||||
void set_magnetos( int engine, int pos );
|
void _inner_set_magnetos( int engine, int pos );
|
||||||
void move_magnetos( int engine, int amt );
|
void move_magnetos( int engine, int amt );
|
||||||
void set_feed_tank( int engine, int tank );
|
void set_feed_tank( int engine, int tank );
|
||||||
void set_nitrous_injection( int engine, bool val );
|
void set_nitrous_injection( int engine, bool val );
|
||||||
|
@ -504,9 +541,9 @@ public:
|
||||||
void move_cowl_flaps_norm( int engine, double amt );
|
void move_cowl_flaps_norm( int engine, double amt );
|
||||||
void set_feather( int engine, bool val );
|
void set_feather( int engine, bool val );
|
||||||
void set_ignition( int engine, int val );
|
void set_ignition( int engine, int val );
|
||||||
void set_augmentation( int engine, bool val );
|
void _inner_set_augmentation( int engine, bool val );
|
||||||
void set_reverser( int engine, bool val );
|
void _inner_set_reverser( int engine, bool val );
|
||||||
void set_water_injection( int engine, bool val );
|
void _inner_set_water_injection( int engine, bool val );
|
||||||
void set_condition( int engine, double val );
|
void set_condition( int engine, double val );
|
||||||
|
|
||||||
// controls/fuel
|
// controls/fuel
|
||||||
|
@ -639,14 +676,9 @@ public:
|
||||||
// controls/autoflight/autopilot[n]/
|
// controls/autoflight/autopilot[n]/
|
||||||
void set_autopilot_engage( int ap, bool val );
|
void set_autopilot_engage( int ap, bool val );
|
||||||
|
|
||||||
private:
|
void do_autocoordination();
|
||||||
inline void do_autocoordination() {
|
|
||||||
// check for autocoordination
|
void fireEngineValueChanged(int index, simgear::PropertyList& props);
|
||||||
if ( auto_coordination->getBoolValue() ) {
|
|
||||||
double factor = auto_coordination_factor->getDoubleValue();
|
|
||||||
if( factor > 0.0 ) set_rudder( aileron * factor );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _CONTROLS_HXX
|
#endif // _CONTROLS_HXX
|
||||||
|
|
Loading…
Add table
Reference in a new issue