FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
ShipConsoleInput.h
1#ifndef _CSHIPCONSOLE_H_
2#define _CSHIPCONSOLE_H_
3
32#include <memory>
33#include <string>
34#include <fhsim/simobject/SimObject.h>
35
36#include "JoystickInput.h"
37
38#ifdef FH_VISUALIZATION
39class FhCamera;
40#endif
41
42#include <Eigen/Eigen>
43
44namespace Ship{
45 #ifdef FH_VISUALIZATION
46 namespace joystick { class SdlJoystickPoller; }
47 #endif
48
49 class ShipConsoleInput: public SimObject, public joystick::JoystickListener{
50 public:
51 EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
52 enum engines{
53 PORT_ENGINE,
54 STARBOARD_ENGINE,
55 NUM_ENGINE
56 };
57
58 enum thrusters{
59 THRUSTER0,
60 THRUSTER1,
61 THRUSTER2,
62 NUM_THRUSTER
63 };
64
65 ShipConsoleInput(const std::string simObjectName, ISimObjectCreator* const creator);
66 ~ShipConsoleInput() override;
67
68 void OdeFcn(const double T, const double *const X, double *const XDot) const{}
69
70 const double *RudderAngle(const double T, const double* const X);
71 const double *EngineCommand(const double T, const double* const X);
72 const double *EngineCommandPort(const double T, const double* const X);
73 const double *EngineCommandStarboard(const double T, const double* const X);
74
75 const double *EnginePower(const double T, const double* const X);
76 const double *EnginePowerPort(const double T, const double* const X);
77 const double *EnginePowerStarboard(const double T, const double* const X);
78
79 const double *ThrusterPower(const double T, const double* const X);
80 const double *Thruster0Power(const double T, const double* const X);
81 const double *Thruster1Power(const double T, const double* const X);
82 const double *Thruster2Power(const double T, const double* const X);
83
84 const double *ThrusterCommand(const double T, const double* const X);
85 const double *Thruster0Command(const double T, const double* const X);
86 const double *Thruster1Command(const double T, const double* const X);
87 const double *Thruster2Command(const double T, const double* const X);
88
89#ifdef FH_VISUALIZATION
90 virtual void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
91 virtual void RenderUpdate( const double T, const double* const X );
92 void RenderRelease() override;
93#endif
95
96 void ButtonReleased(int button, const joystick::JoystickState& state) override;
97 void AxisMoved(int axis, const joystick::JoystickState& state) override;
98 void HatMoved(int hat, const joystick::JoystickState& state) override;
100
101 private:
102 int m_joypadID;
103
104#ifdef FH_VISUALIZATION
105 FhCamera* m_cam = nullptr;
106 std::unique_ptr<joystick::SdlJoystickPoller> m_joystick;
107#endif
108
109 ISignalPort *m_inParentOrientation;
110 ISignalPort *m_inParentPosition;
111
112 bool m_controlCamera;
113
114 size_t m_activeCamera;
115 Eigen::Vector3d m_cameraPositons[4];
116 double m_cameraRotZ[4];
117 double m_cameraRotY[4];
118
119
120 double m_rudderAngle;
121
122 bool m_engineEnable[NUM_ENGINE];
123 double m_enginePower[NUM_ENGINE];
124 double m_engineCommand[NUM_ENGINE];
125
126 double m_enginePowerOut[NUM_ENGINE];
127
128 double m_thrusterPower[NUM_THRUSTER];
129 double m_thrusterPowerOut[NUM_THRUSTER];
130 bool m_thrusterEnable[NUM_THRUSTER];
131 double m_thrusterCommandOut[NUM_THRUSTER];
132 int m_thrusterInput[NUM_THRUSTER];
133
134 };
135}
136#endif
Definition ShipConsoleInput.h:49
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:16
Definition JoystickInput.h:79