Rigs of Rods 2023.09
Soft-body Physics Simulation
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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 float getExhaustVelocity() const { return m_exhaust_velocity; }
89 float getRPM() { return m_rpm_percent; }; // FIXME - bad func name
90 float getRPMpc() { return m_rpm_percent; };
91 float getRadius() { return m_radius; };
92 float getThrottle();
93 float getpropwash() { return m_propwash; };
94 int getNoderef() { return m_node_back; };
95 NodeNum_t GetFrontNode() const override { return m_node_front; };
96 NodeNum_t GetBackNode() const override { return m_node_back; };
98
99 // AeroEngine visuals
100
101 void updateVisuals(RoR::GfxActor* gfx_actor) override;
102 void setVisible(bool visible) override;
103
106
107private:
108 Ogre::Vector3 m_axis;
116 float m_area;
121 float m_radius;
122 float m_reflen;
125 float m_timer;
132
133 // Attachment
138};
139
142
143} // 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:122
float m_warmup_time
Definition TurboJet.h:127
float m_timer
Definition TurboJet.h:125
void updateForces(float dt, int doUpdate)
Definition TurboJet.cpp:227
bool getWarmup()
Definition TurboJet.h:83
AeroEngineType getType()
Definition TurboJet.h:97
void setReverse(bool val)
Definition TurboJet.cpp:326
Ogre::Vector3 m_axis
Definition TurboJet.h:108
bool tjet_afterburnable
Definition TurboJet.h:104
float getRPMpc()
Definition TurboJet.h:90
bool getIgnition()
Definition TurboJet.h:81
float getAfterburnThrust() const
Definition TurboJet.h:87
TurbojetVisual tjet_visual
Definition TurboJet.h:105
void setRPM(float _rpm)
Definition TurboJet.cpp:303
float getRPM()
Definition TurboJet.h:89
float m_radius
Definition TurboJet.h:121
void toggleReverse()
Definition TurboJet.cpp:318
float m_throtle
Definition TurboJet.h:124
void setVisible(bool visible) override
Definition TurboJet.cpp:148
void setIgnition(bool val)
Definition TurboJet.h:82
float m_warmup_start
Definition TurboJet.h:126
NodeNum_t GetBackNode() const override
Definition TurboJet.h:96
bool m_afterburner_active
Definition TurboJet.h:109
ActorPtr m_actor
Definition TurboJet.h:134
float m_rpm_percent
in percent!
Definition TurboJet.h:123
bool isFailed()
Definition TurboJet.h:84
NodeNum_t m_node_ref
Definition TurboJet.h:137
bool m_ignition
Definition TurboJet.h:111
float m_exhaust_velocity
in m/s
Definition TurboJet.h:117
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:88
Ogre::Vector3 getAxis()
Definition TurboJet.h:79
bool m_is_failed
Definition TurboJet.h:110
float getpropwash()
Definition TurboJet.h:93
float getMaxDryThrust()
Definition TurboJet.h:85
bool m_reversable
Definition TurboJet.h:112
virtual ~Turbojet() override
Definition TurboJet.cpp:114
NodeNum_t m_node_back
Definition TurboJet.h:135
float m_last_flip
Definition TurboJet.h:118
int getNoderef()
Definition TurboJet.h:94
float m_propwash
Definition TurboJet.h:120
void flipStart()
Definition TurboJet.cpp:331
float getRadius()
Definition TurboJet.h:91
float getThrottle()
Definition TurboJet.cpp:298
NodeNum_t GetFrontNode() const override
Definition TurboJet.h:95
bool getReverse()
Definition TurboJet.h:76
float m_max_dry_thrust
in kN
Definition TurboJet.h:119
NodeNum_t m_node_front
Definition TurboJet.h:136
float m_afterburn_thrust
in kN
Definition TurboJet.h:115
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.