1 // controls.hxx -- defines a standard interface to all flight sim controls
3 // Written by Curtis Olson, started May 1997.
5 // Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com
7 // This program is free software; you can redistribute it and/or
8 // modify it under the terms of the GNU General Public License as
9 // published by the Free Software Foundation; either version 2 of the
10 // License, or (at your option) any later version.
12 // This program is distributed in the hope that it will be useful, but
13 // WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 // General Public License for more details.
17 // You should have received a copy of the GNU General Public License
18 // along with this program; if not, write to the Free Software
19 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
27 #include <simgear/misc/props.hxx>
29 #include <Main/fgfs.hxx>
30 #include <Main/globals.hxx>
33 # error This library requires C++
37 // Define a structure containing the control parameters
39 class FGControls : public FGSubsystem
68 double throttle[MAX_ENGINES];
69 double mixture[MAX_ENGINES];
70 double prop_advance[MAX_ENGINES];
72 double brake[MAX_WHEELS];
73 int magnetos[MAX_ENGINES];
75 bool starter[MAX_ENGINES];
76 bool fuel_selector[MAX_TANKS];
79 SGPropertyNode * auto_coordination;
86 // Implementation of FGSubsystem.
90 void update (double dt);
96 inline double get_aileron() const { return aileron; }
97 inline double get_aileron_trim() const { return aileron_trim; }
98 inline double get_elevator() const { return elevator; }
99 inline double get_elevator_trim() const { return elevator_trim; }
100 inline double get_rudder() const { return rudder; }
101 inline double get_rudder_trim() const { return rudder_trim; }
102 inline double get_flaps() const { return flaps; }
103 inline double get_throttle(int engine) const { return throttle[engine]; }
104 inline double get_mixture(int engine) const { return mixture[engine]; }
105 inline double get_prop_advance(int engine) const {
106 return prop_advance[engine];
108 inline double get_parking_brake() const { return parking_brake; }
109 inline double get_brake(int wheel) const { return brake[wheel]; }
110 inline int get_magnetos(int engine) const { return magnetos[engine]; }
111 inline bool get_starter(int engine) const { return starter[engine]; }
112 inline bool get_fuel_selector(int tank) const {
113 return fuel_selector[tank];
115 inline bool get_gear_down() const { return gear_down; }
118 void set_aileron( double pos );
119 void move_aileron( double amt );
120 void set_aileron_trim( double pos );
121 void move_aileron_trim( double amt );
122 void set_elevator( double pos );
123 void move_elevator( double amt );
124 void set_elevator_trim( double pos );
125 void move_elevator_trim( double amt );
126 void set_rudder( double pos );
127 void move_rudder( double amt );
128 void set_rudder_trim( double pos );
129 void move_rudder_trim( double amt );
130 void set_flaps( double pos );
131 void move_flaps( double amt );
132 void set_throttle( int engine, double pos );
133 void move_throttle( int engine, double amt );
134 void set_mixture( int engine, double pos );
135 void move_mixture( int engine, double amt );
136 void set_prop_advance( int engine, double pos );
137 void move_prop_advance( int engine, double amt );
138 void set_magnetos( int engine, int pos );
139 void move_magnetos( int engine, int amt );
140 void set_starter( int engine, bool flag );
141 void set_fuel_selector( int tank, bool pos );
142 void set_parking_brake( double pos );
143 void set_brake( int wheel, double pos );
144 void move_brake( int wheel, double amt );
145 void set_gear_down( bool gear );
149 #endif // _CONTROLS_HXX