Rigs of Rods 2026.01
Soft-body Physics Simulation
Loading...
Searching...
No Matches
TurboJet.h
Go to the documentation of this file.
1/*
2 This source file is part of Rigs of Rods
3 Copyright 2005-2012 Pierre-Michel Ricordel
4 Copyright 2007-2012 Thomas Fischer
5
6 For more information, see http://www.rigsofrods.org/
7
8 Rigs of Rods is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License version 3, as
10 published by the Free Software Foundation.
11
12 Rigs of Rods is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>.
19*/
20
21#pragma once
22
23#include "Application.h"
24#include "AeroEngine.h"
25#include "RigDef_File.h"
26#include "SimData.h"
27
28namespace RoR {
29
31{
32public:
34 void SetupVisuals(RigDef::Turbojet & def, int num, std::string const& propname, Ogre::Entity* nozzle, Ogre::Entity* afterburner_flame);
35 void SetNodes(NodeNum_t front, NodeNum_t back, NodeNum_t ref);
36 void UpdateVisuals(RoR::GfxActor* gfx_actor);
37 void SetVisible(bool visible);
38 bool IsVisible() const { return m_visible; }
39
40private:
41 Ogre::SceneNode* m_smoke_scenenode;
42 Ogre::ParticleSystem* m_smoke_particle;
43 Ogre::Entity* m_flame_entity;
44 Ogre::SceneNode* m_flame_scenenode;
45 Ogre::Entity* m_nozzle_entity;
46 Ogre::SceneNode* m_nozzle_scenenode;
47
48 bool m_visible = false; // Needed for flames which are hidden by default.
50 float m_radius;
54};
55
58
61
62class Turbojet: public AeroEngine
63{
64
65public:
66
67 Turbojet(ActorPtr actor, NodeNum_t tnodefront, NodeNum_t tnodeback, NodeNum_t tnoderef, RigDef::Turbojet & def);
68 virtual ~Turbojet() override;
69
70 void flipStart();
71 void reset();
72 void setRPM(float _rpm);
73 void setThrottle(float val);
74 void toggleReverse();
75 void setReverse(bool val);
76 bool getReverse() { return m_reverse; };
77 void updateForces(float dt, int doUpdate);
78
79 Ogre::Vector3 getAxis() { return m_axis; };
80
81 bool getIgnition() { return m_ignition; };
82 void setIgnition(bool val) { m_ignition = val; };
83 bool getWarmup() { return m_warmup; };
84 bool isFailed() { return m_is_failed; };
85 float getMaxDryThrust() { return m_max_dry_thrust; };
86 float getAfterburner() { return (float)m_afterburner_active; };
87 float getAfterburnThrust() const { return m_afterburn_thrust; }
88 void setMaxDryThrust(float thrust);
89 void setAfterburnThrust(float abThrust);
90 float getExhaustVelocity() const { return m_exhaust_velocity; }
91 float getRPM() { return m_rpm_percent; }; // FIXME - bad func name
92 float getRPMpc() { return m_rpm_percent; };
93 float getRadius() { return m_radius; };
94 float getThrottle();
95 float getpropwash() { return m_propwash; };
96 int getNoderef() { return m_node_back; };
97 NodeNum_t GetFrontNode() const override { return m_node_front; };
98 NodeNum_t GetBackNode() const override { return m_node_back; };
100
101 // AeroEngine visuals
102
103 void updateVisuals(RoR::GfxActor* gfx_actor) override;
104 void setVisible(bool visible) override;
105
108
109private:
110 Ogre::Vector3 m_axis;
118 float m_area;
123 float m_radius;
124 float m_reflen;
127 float m_timer;
134
135 // Attachment
140};
141
144
145} // namespace RoR
Central state/object manager and communications hub.
Data structures representing 'truck' file format, see https://docs.rigsofrods.org/vehicle-creation/fi...
Core data structures for simulation; Everything affected by by either physics, network or user intera...
float m_reflen
Definition TurboJet.h:124
float m_warmup_time
Definition TurboJet.h:129
float m_timer
Definition TurboJet.h:127
void updateForces(float dt, int doUpdate)
Definition TurboJet.cpp:227
bool getWarmup()
Definition TurboJet.h:83
AeroEngineType getType()
Definition TurboJet.h:99
void setReverse(bool val)
Definition TurboJet.cpp:342
Ogre::Vector3 m_axis
Definition TurboJet.h:110
bool tjet_afterburnable
Definition TurboJet.h:106
float getRPMpc()
Definition TurboJet.h:92
bool getIgnition()
Definition TurboJet.h:81
float getAfterburnThrust() const
Definition TurboJet.h:87
TurbojetVisual tjet_visual
Definition TurboJet.h:107
void setRPM(float _rpm)
Definition TurboJet.cpp:303
float getRPM()
Definition TurboJet.h:91
float m_radius
Definition TurboJet.h:123
void toggleReverse()
Definition TurboJet.cpp:334
float m_throtle
Definition TurboJet.h:126
void setVisible(bool visible) override
Definition TurboJet.cpp:148
void setIgnition(bool val)
Definition TurboJet.h:82
float m_warmup_start
Definition TurboJet.h:128
NodeNum_t GetBackNode() const override
Definition TurboJet.h:98
bool m_afterburner_active
Definition TurboJet.h:111
ActorPtr m_actor
Definition TurboJet.h:136
float m_rpm_percent
in percent!
Definition TurboJet.h:125
bool isFailed()
Definition TurboJet.h:84
NodeNum_t m_node_ref
Definition TurboJet.h:139
bool m_ignition
Definition TurboJet.h:113
float m_exhaust_velocity
in m/s
Definition TurboJet.h:119
void setThrottle(float val)
Definition TurboJet.cpp:286
void updateVisuals(RoR::GfxActor *gfx_actor) override
Definition TurboJet.cpp:142
float getExhaustVelocity() const
Definition TurboJet.h:90
Ogre::Vector3 getAxis()
Definition TurboJet.h:79
void setMaxDryThrust(float thrust)
Definition TurboJet.cpp:308
bool m_is_failed
Definition TurboJet.h:112
float getpropwash()
Definition TurboJet.h:95
void setAfterburnThrust(float abThrust)
Definition TurboJet.cpp:316
float getMaxDryThrust()
Definition TurboJet.h:85
bool m_reversable
Definition TurboJet.h:114
virtual ~Turbojet() override
Definition TurboJet.cpp:114
NodeNum_t m_node_back
Definition TurboJet.h:137
float m_last_flip
Definition TurboJet.h:120
int getNoderef()
Definition TurboJet.h:96
float m_propwash
Definition TurboJet.h:122
void flipStart()
Definition TurboJet.cpp:347
float getRadius()
Definition TurboJet.h:93
float getThrottle()
Definition TurboJet.cpp:298
NodeNum_t GetFrontNode() const override
Definition TurboJet.h:97
bool getReverse()
Definition TurboJet.h:76
float m_max_dry_thrust
in kN
Definition TurboJet.h:121
NodeNum_t m_node_front
Definition TurboJet.h:138
float m_afterburn_thrust
in kN
Definition TurboJet.h:117
float getAfterburner()
Definition TurboJet.h:86
Ogre::SceneNode * m_smoke_scenenode
Definition TurboJet.h:41
void SetupVisuals(RigDef::Turbojet &def, int num, std::string const &propname, Ogre::Entity *nozzle, Ogre::Entity *afterburner_flame)
Definition TurboJet.cpp:73
NodeNum_t m_node_front
Definition TurboJet.h:52
void UpdateVisuals(RoR::GfxActor *gfx_actor)
Definition TurboJet.cpp:153
Ogre::Entity * m_flame_entity
Definition TurboJet.h:43
Ogre::Entity * m_nozzle_entity
Definition TurboJet.h:45
bool IsVisible() const
Definition TurboJet.h:38
Ogre::SceneNode * m_flame_scenenode
Definition TurboJet.h:44
void SetNodes(NodeNum_t front, NodeNum_t back, NodeNum_t ref)
Definition TurboJet.cpp:104
Ogre::SceneNode * m_nozzle_scenenode
Definition TurboJet.h:46
NodeNum_t m_node_back
Definition TurboJet.h:51
NodeNum_t m_node_ref
Definition TurboJet.h:53
void SetVisible(bool visible)
Definition TurboJet.cpp:215
Ogre::ParticleSystem * m_smoke_particle
Definition TurboJet.h:42
AeroEngineType
Definition SimData.h:249
static const NodeNum_t NODENUM_INVALID
uint16_t NodeNum_t
Node position within Actor::ar_nodes; use RoR::NODENUM_INVALID as empty value.