FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
ShipConsoleInput.h
1#ifndef _CSHIPCONSOLE_H_
2#define _CSHIPCONSOLE_H_
3
74#include <memory>
75#include <string>
76#include <fhsim/simobject/SimObject.h>
77
78#include "JoystickInput.h"
79
80#ifdef FH_VISUALIZATION
81class FhCamera;
82#endif
83
84#include <Eigen/Eigen>
85
86namespace Ship{
87 #ifdef FH_VISUALIZATION
88 namespace joystick { class SdlJoystickPoller; }
89 #endif
90
91 class ShipConsoleInput: public SimObject, public joystick::JoystickListener{
92 public:
93 EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
94 enum engines{
95 PORT_ENGINE,
96 STARBOARD_ENGINE,
97 NUM_ENGINE
98 };
99
100 enum thrusters{
101 THRUSTER0,
102 THRUSTER1,
103 THRUSTER2,
104 NUM_THRUSTER
105 };
106
107 ShipConsoleInput(const std::string simObjectName, ISimObjectCreator* const creator);
108 ~ShipConsoleInput() override;
109
110 void OdeFcn(const double T, const double *const X, double *const XDot) const{}
111
112 const double *RudderAngle(const double T, const double* const X);
113 const double *EngineCommand(const double T, const double* const X);
114 const double *EngineCommandPort(const double T, const double* const X);
115 const double *EngineCommandStarboard(const double T, const double* const X);
116
117 const double *EnginePower(const double T, const double* const X);
118 const double *EnginePowerPort(const double T, const double* const X);
119 const double *EnginePowerStarboard(const double T, const double* const X);
120
121 const double *ThrusterPower(const double T, const double* const X);
122 const double *Thruster0Power(const double T, const double* const X);
123 const double *Thruster1Power(const double T, const double* const X);
124 const double *Thruster2Power(const double T, const double* const X);
125
126 const double *ThrusterCommand(const double T, const double* const X);
127 const double *Thruster0Command(const double T, const double* const X);
128 const double *Thruster1Command(const double T, const double* const X);
129 const double *Thruster2Command(const double T, const double* const X);
130
131#ifdef FH_VISUALIZATION
132 virtual void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
133 virtual void RenderUpdate( const double T, const double* const X );
134 void RenderRelease() override;
135#endif
137
138 void ButtonReleased(int button, const joystick::JoystickState& state) override;
139 void AxisMoved(int axis, const joystick::JoystickState& state) override;
140 void HatMoved(int hat, const joystick::JoystickState& state) override;
142
143 private:
144 int m_joypadID;
145
146#ifdef FH_VISUALIZATION
147 FhCamera* m_cam = nullptr;
148 std::unique_ptr<joystick::SdlJoystickPoller> m_joystick;
149#endif
150
151 ISignalPort *m_inParentOrientation;
152 ISignalPort *m_inParentPosition;
153
154 bool m_controlCamera;
155
156 size_t m_activeCamera;
157 Eigen::Vector3d m_cameraPositons[4];
158 double m_cameraRotZ[4];
159 double m_cameraRotY[4];
160
161
162 double m_rudderAngle;
163
164 bool m_engineEnable[NUM_ENGINE];
165 double m_enginePower[NUM_ENGINE];
166 double m_engineCommand[NUM_ENGINE];
167
168 double m_enginePowerOut[NUM_ENGINE];
169
170 double m_thrusterPower[NUM_THRUSTER];
171 double m_thrusterPowerOut[NUM_THRUSTER];
172 bool m_thrusterEnable[NUM_THRUSTER];
173 double m_thrusterCommandOut[NUM_THRUSTER];
174 int m_thrusterInput[NUM_THRUSTER];
175
176 };
177}
178#endif
Definition ShipConsoleInput.h:91
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 AxisMoved(int axis, const joystick::JoystickState &state) override
SDL axis axis changed (OIS axisMoved, or sliderMoved for a slider axis).
Receives the changes between two joystick states, as an OIS JoyStickListener received events.
Definition JoystickInput.h:96
Simple waypoint object.
Definition CableAttach.h:58
Definition JoystickInput.h:79