33 void Init(
DynamicBody *b,
SceneGraph::Model *m,
const int tank_mass,
const double effExVel,
const float lin_Thrust[],
const float ang_Thrust,
const float lin_AccelerationCap[]);
89 return (m_thrusterFuel > 0.05f) ?
91 (m_thrusterFuel > 0.0f) ?
96 inline double GetFuel()
const {
return m_thrusterFuel; }
98 inline void SetFuel(
const double f) { m_thrusterFuel =
Clamp(f, 0.0, 1.0); }
136 double m_thrusterFuel;
137 double m_reserveFuel;
138 double m_effectiveExhaustVelocity;
139 bool m_fuelStateChange;
nlohmann::json Json
Definition: Json.h:8
const T & Clamp(const T &x, const T &min, const T &max)
Definition: MathUtil.h:15
Thruster
Definition: Propulsion.h:16
@ THRUSTER_UP
Definition: Propulsion.h:19
@ THRUSTER_REVERSE
Definition: Propulsion.h:17
@ THRUSTER_LEFT
Definition: Propulsion.h:21
@ THRUSTER_RIGHT
Definition: Propulsion.h:22
@ THRUSTER_FORWARD
Definition: Propulsion.h:18
@ THRUSTER_MAX
Definition: Propulsion.h:23
@ THRUSTER_DOWN
Definition: Propulsion.h:20
Definition: DynamicBody.h:15
virtual double GetMass() const override
Definition: DynamicBody.h:37
Definition: Renderer.h:45
Definition: Propulsion.h:26
double GetAccelRev() const
Definition: Propulsion.h:55
virtual ~Propulsion()
Definition: Propulsion.h:30
vector3d AIGetLeadDir(const Body *target, const vector3d &targaccel, double projspeed)
Definition: Propulsion.cpp:457
bool IsFuelStateChanged()
Definition: Propulsion.h:110
double GetThrustMin() const
Definition: Propulsion.cpp:186
void ClearAngThrusterState()
Definition: Propulsion.h:75
void SetFuelReserve(const double f)
Definition: Propulsion.h:99
vector3d GetActualLinThrust() const
Definition: Propulsion.h:77
double ClampLinThrusterState(int axis, double level) const
Definition: Propulsion.cpp:114
double GetAccelUp() const
Definition: Propulsion.h:56
void SetFuel(const double f)
Definition: Propulsion.h:98
void SetAccelerationCapMult(double p, const float lin_AccelerationCap[])
Definition: Propulsion.cpp:97
double GetFuelReserve() const
Definition: Propulsion.h:97
void ClearLinThrusterState()
Definition: Propulsion.h:74
void SetAngThrusterState(int axis, double level)
Definition: Propulsion.h:68
double GetThrustUp() const
Definition: Propulsion.h:48
double GetFuel() const
Definition: Propulsion.h:96
FuelState
Definition: Propulsion.h:81
@ FUEL_OK
Definition: Propulsion.h:82
@ FUEL_EMPTY
Definition: Propulsion.h:84
@ FUEL_WARNING
Definition: Propulsion.h:83
double AIFaceUpdir(const vector3d &updir, double av=0)
Definition: Propulsion.cpp:389
void SetFuelTankMass(int fTank)
Definition: Propulsion.h:108
double GetAccelMin() const
Definition: Propulsion.h:57
vector3d AIChangeVelDir(const vector3d &diffvel)
Definition: Propulsion.cpp:346
double GetThrust(Thruster thruster) const
Definition: Propulsion.cpp:165
vector3d GetThrustUncapped(const vector3d &dir) const
Definition: Propulsion.cpp:195
void AIMatchAngVelObjSpace(const vector3d &angvel, const vector3d &powerLimit=vector3d(1.0), bool ignoreZeroValues=false)
Definition: Propulsion.cpp:367
void Render(Graphics::Renderer *r, const Camera *camera, const vector3d &viewCoords, const matrix4x4d &viewTransform)
Definition: Propulsion.cpp:237
void Init(DynamicBody *b, SceneGraph::Model *m, const int tank_mass, const double effExVel, const float lin_Thrust[], const float ang_Thrust)
Definition: Propulsion.cpp:69
void SetLinThrusterState(int axis, double level)
Definition: Propulsion.cpp:150
virtual void SaveToJson(Json &jsonObj, Space *space)
Definition: Propulsion.cpp:23
double GetThrustFwd() const
Definition: Propulsion.h:46
double GetSpeedReachedWithFuel() const
Definition: Propulsion.cpp:227
vector3d GetActualAngThrust() const
Definition: Propulsion.h:78
bool AIMatchVel(const vector3d &vel, const vector3d &powerLimit=vector3d(1.0))
Definition: Propulsion.cpp:320
double GetAccelFwd() const
Definition: Propulsion.h:54
double AIFaceDirection(const vector3d &dir, double av=0)
Definition: Propulsion.cpp:418
void UpdateFuel(const float timeStep)
Definition: Propulsion.cpp:212
void AIModelCoordsMatchSpeedRelTo(const vector3d &v, const DynamicBody *other)
Definition: Propulsion.cpp:247
void SetThrustPowerMult(double p, const float lin_Thrust[], const float ang_Thrust)
Definition: Propulsion.cpp:89
float GetFuelUseRate()
Definition: Propulsion.cpp:206
float FuelTankMassLeft()
Definition: Propulsion.h:107
double GetAccel(Thruster thruster) const
Definition: Propulsion.h:53
void AIAccelToModelRelativeVelocity(const vector3d &v)
Definition: Propulsion.cpp:256
Propulsion()
Definition: Propulsion.cpp:51
virtual void LoadFromJson(const Json &jsonObj, Space *space)
Definition: Propulsion.cpp:35
vector3d GetLinThrusterState() const
Definition: Propulsion.h:71
bool AIChangeVelBy(const vector3d &diffvel, const vector3d &powerLimit=vector3d(1.0))
Definition: Propulsion.cpp:328
FuelState GetFuelState() const
Definition: Propulsion.h:87
vector3d GetAngThrusterState() const
Definition: Propulsion.h:72
double GetThrustRev() const
Definition: Propulsion.h:47
Definition: RefCounted.h:11
vector3< double > vector3d
Definition: vector3.h:329