FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
GenericGamepadInput.h
1#ifndef _CGENERICGAMEPADINPUT_H_
2#define _CGENERICGAMEPADINPUT_H_
3#include <memory>
4#include <string>
5#include <fhsim/simobject/SimObject.h>
6
7#include "JoystickInput.h"
8
33namespace Ship{
34 #ifdef FH_VISUALIZATION
35 namespace joystick { class SdlJoystickPoller; }
36 #endif
37
38 class GenericGamepadInput: public SimObject, public joystick::JoystickListener{
39 public:
40 enum button_index{
41 BUTTON1 = 0,//< Cross
42 BUTTON2, //< Circle
43 BUTTON3, //< Square
44 BUTTON4, //< Triangle
45 BUTTON5, //< L1
46 BUTTON6, //< R1
47 BUTTON7, //< Select
48 BUTTON8, //< Start
49 BUTTON9, //< Left analog button
50 BUTTON10, //< Right analog button
51 NUMBUTTON
52 };
53
54 enum axes_index{
55 XAXIS=0,//< Vertical left analog
56 YAXIS, //< Horizontal left analog
57 ZAXIS,// L2/R2
58 NUMAXIS
59 };
60
61 enum rotation_index{
62 ROTATION_X,// Vertical right analog
63 ROTATION_Y,// horizontal right analog
64 NUMROTATION
65 };
66
67 enum pov_index{
68 POV_VERTICAL,
69 POV_HORIZONTAL,
70 NUM_POV
71 };
72
73 GenericGamepadInput(const std::string simObjectName, ISimObjectCreator* const creator);
74 ~GenericGamepadInput() override;
75
76 void OdeFcn(const double T, const double *const X, double *const XDot) const;
77
78#ifdef FH_VISUALIZATION
79 virtual void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
80 virtual void RenderUpdate( const double T, const double* const X );
81 void RenderRelease() override;
82#endif
84
85 void ButtonPressed(int button, const joystick::JoystickState& state) override;
86 void ButtonReleased(int button, const joystick::JoystickState& state) override;
87 void AxisMoved(int axis, const joystick::JoystickState& state) override;
88 void HatMoved(int hat, const joystick::JoystickState& state) override;
90 const double *XAxis(const double T, const double* const X); ; //< Vertical left analog
91 const double *YAxis(const double T, const double* const X); ; //< Horizontal left analog
92 const double *ZAxis(const double T, const double* const X); ; // L2/R2
93 const double *XAxisrotation(const double T, const double* const X); ; // Vertical right analog
94 const double *YAxisrotation(const double T, const double* const X); ; // horizontal right analog
95
96 const double *POVVertical(const double T, const double* const X); ; // Vertical d-pad
97 const double *POVHorizontal(const double T, const double* const X); ; // horizontal d-pad
98
99 const double *XDotAxis(const double T, const double* const X); ; //< Vertical left analog
100 const double *YDotAxis(const double T, const double* const X); ; //< Horizontal left analog
101 const double *ZDotAxis(const double T, const double* const X); ; // L2/R2
102 const double *XDotAxisrotation(const double T, const double* const X); ; // Vertical right analog
103 const double *YDotAxisrotation(const double T, const double* const X); ; // horizontal right analog
104
105 const double *XIntAxis(const double T, const double* const X); ; //< Vertical left analog
106 const double *YIntAxis(const double T, const double* const X); ; //< Horizontal left analog
107 const double *ZIntAxis(const double T, const double* const X); ; // L2/R2
108 const double *XIntAxisrotation(const double T, const double* const X); ; // Vertical right analog
109 const double *YIntAxisrotation(const double T, const double* const X); ; // horizontal right analog
110 const double *POVIntVertical(const double T, const double* const X); ; // Vertical d-pad
111 const double *POVIntHorizontal(const double T, const double* const X); ; // horizontal d-pad
112
113 const double *Button1(const double T, const double* const X); //< Cross
114 const double *Button2(const double T, const double* const X); //< Circle
115 const double *Button3(const double T, const double* const X); //< Square
116 const double *Button4(const double T, const double* const X); //< Triangle
117 const double *Button5(const double T, const double* const X); //< L1
118 const double *Button6(const double T, const double* const X); //< R1
119 const double *Button7(const double T, const double* const X); //< Select
120 const double *Button8(const double T, const double* const X); //< Start
121 const double *Button9(const double T, const double* const X); //< Left analog button
122 const double *Button10(const double T, const double* const X);//< Right analog button
123
124 const double *AxisVector(const double T, const double* const X); ; //< Vertical left analog
125 const double *RotationVector(const double T, const double* const X); ; //< Vertical left analog
126 const double *ButtonVector(const double T, const double* const X); ; //< Vertical left analog
127
128 private:
129 bool m_stickButtons;
130 double m_invertVertical;
131
132 double m_axis[NUMAXIS];
133 double m_dotAxis[NUMAXIS];
134 double m_intAxis[NUMAXIS];
135 int m_stateAxis[NUMAXIS];
136 double m_rotation[NUMROTATION];
137 double m_dotRotation[NUMROTATION];
138 double m_intRotation[NUMROTATION];
139 int m_stateRotation[NUMROTATION];
140 double m_button[NUMBUTTON];
141 double m_pov[NUM_POV];
142 int m_statePov[NUM_POV];
143
144#ifdef FH_VISUALIZATION
145 std::unique_ptr<joystick::SdlJoystickPoller> m_joystick;
146#endif
147 };
148}
149#endif
Definition GenericGamepadInput.h:38
void AxisMoved(int axis, const joystick::JoystickState &state) override
SDL axis axis changed (OIS axisMoved, or sliderMoved for a slider axis).
void HatMoved(int hat, const joystick::JoystickState &state) override
Hat hat changed (OIS povMoved).
void ButtonReleased(int button, const joystick::JoystickState &state) override
Button button went up (OIS buttonReleased).
void ButtonPressed(int button, const joystick::JoystickState &state) override
Button button went down (OIS buttonPressed).
Receives the changes between two joystick states, as an OIS JoyStickListener received events.
Definition JoystickInput.h:96
Simple waypoint object.
Definition CableAttach.h:16
Definition JoystickInput.h:79