1
0
Fork 0
flightgear/src/FDM/YASim/ControlMap.hpp

55 lines
1.5 KiB
C++
Raw Normal View History

#ifndef _CONTROL_MAP_HPP
#define _CONTROL_MAP_HPP
2001-12-06 18:16:22 +00:00
#include "Vector.hpp"
namespace yasim {
class ControlMap {
public:
~ControlMap();
2001-12-06 18:13:24 +00:00
enum OutputType { THROTTLE, MIXTURE, ADVANCE, REHEAT, PROP,
BRAKE, STEER, EXTEND,
INCIDENCE, FLAP0, FLAP1, SLAT, SPOILER };
static const int OPT_SPLIT = 0x01;
static const int OPT_INVERT = 0x02;
static const int OPT_SQUARE = 0x04;
// Returns a new, not-yet-used "input handle" for addMapping and
// setInput. This typically corresponds to one user axis.
int newInput();
// Adds a mapping to between input handle and a particular setting
// on an output object. The value of output MUST match the type
// of object!
void addMapping(int input, int output, void* object, int options=0);
// Resets our accumulated input values. Call before any
// setInput() invokations.
void reset();
// Sets the specified input (as returned by newInput) to the
// specified value.
void setInput(int input, float value);
// Calculates and applies the settings received since the last reset().
void applyControls();
private:
struct OutRec { int type; void* object; int n;
float* values; Vector options; };
struct MapRec { OutRec* out; int idx; };
// A list of (sub)Vectors containing a bunch of MapRec objects for
// each input handle.
Vector _inputs;
// An unordered list of output settings.
Vector _outputs;
};
}; // namespace yasim
#endif // _CONTROL_MAP_HPP