Vulkan Schnee
0.0.1
High-performance rendering engine
Loading...
Searching...
No Matches
ArcadeGliderFlightModel.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <glm/glm.hpp>
4
5
namespace
Engine::Components
6
{
11
struct
ArcadeGliderTuning
12
{
13
float
momentumDrag
= 0.12f;
14
float
highSpeedDrag
= 0.005f;
15
float
minGlideSink
= 0.65f;
16
float
maxClimbRate
= 6.0f;
17
float
climbMomentumCost
= 0.48f;
18
float
diveSinkRate
= 7.0f;
19
float
diveMomentumGain
= 0.72f;
20
float
windMomentumGain
= 0.72f;
21
float
windDiminishingSpeed
= 12.0f;
22
float
windAlignmentPower
= 1.6f;
23
float
crosswindTurnRate
= 0.06f;
24
float
headwindPenalty
= 0.55f;
25
float
glideTurnRate
= 7.0f;
26
float
stallSpeed
= 3.5f;
27
float
stallRecoverySpeed
= 4.7f;
28
float
stallSinkSpeed
= 6.0f;
29
float
stallDiveSinkScale
= 0.35f;
30
float
stallExtraDrag
= 0.12f;
31
float
stallRecoveryDelay
= 0.18f;
32
float
emergencyMaxSpeed
= 80.0f;
33
};
34
35
struct
ArcadeGliderState
36
{
37
bool
stalled
=
false
;
38
float
stallRecoveryTimer
= 0.0f;
39
};
40
41
struct
ArcadeGliderInput
42
{
43
glm::vec3
velocity
{ 0.0f };
44
glm::vec3
glideDirection
{ 0.0f, 0.0f, -1.0f };
45
glm::vec3
windVelocity
{ 0.0f };
46
float
palmTilt
= 0.0f;
47
float
deltaTime
= 0.0f;
48
ArcadeGliderState
state
{};
49
};
50
51
struct
ArcadeGliderStep
52
{
53
glm::vec3
velocity
{ 0.0f };
54
glm::vec3
glideDirection
{ 0.0f, 0.0f, -1.0f };
55
float
momentum
= 0.0f;
56
float
verticalVelocity
= 0.0f;
57
float
climbDemand
= 0.0f;
58
float
diveDemand
= 0.0f;
59
float
windAlignment
= 0.0f;
60
float
windMomentumDelta
= 0.0f;
61
float
dragDelta
= 0.0f;
62
float
climbMomentumDelta
= 0.0f;
63
bool
stalled
=
false
;
64
bool
enteredStall
=
false
;
65
bool
recoveredStall
=
false
;
66
float
stallRecoveryTimer
= 0.0f;
67
};
68
69
[[nodiscard]]
ArcadeGliderStep
stepArcadeGliderFlight
(
70
const
ArcadeGliderTuning
& tuning,
71
const
ArcadeGliderInput
& input
72
);
73
}
// namespace Engine::Components
Engine::Components
Definition
ArcadeGliderFlightModel.h:6
Engine::Components::stepArcadeGliderFlight
ArcadeGliderStep stepArcadeGliderFlight(const ArcadeGliderTuning &tuning, const ArcadeGliderInput &input)
Engine::Components::ArcadeGliderInput
Definition
ArcadeGliderFlightModel.h:42
Engine::Components::ArcadeGliderInput::windVelocity
glm::vec3 windVelocity
Definition
ArcadeGliderFlightModel.h:45
Engine::Components::ArcadeGliderInput::velocity
glm::vec3 velocity
Definition
ArcadeGliderFlightModel.h:43
Engine::Components::ArcadeGliderInput::glideDirection
glm::vec3 glideDirection
Definition
ArcadeGliderFlightModel.h:44
Engine::Components::ArcadeGliderInput::state
ArcadeGliderState state
Definition
ArcadeGliderFlightModel.h:48
Engine::Components::ArcadeGliderInput::deltaTime
float deltaTime
Definition
ArcadeGliderFlightModel.h:47
Engine::Components::ArcadeGliderInput::palmTilt
float palmTilt
Definition
ArcadeGliderFlightModel.h:46
Engine::Components::ArcadeGliderState
Definition
ArcadeGliderFlightModel.h:36
Engine::Components::ArcadeGliderState::stallRecoveryTimer
float stallRecoveryTimer
Definition
ArcadeGliderFlightModel.h:38
Engine::Components::ArcadeGliderState::stalled
bool stalled
Definition
ArcadeGliderFlightModel.h:37
Engine::Components::ArcadeGliderStep
Definition
ArcadeGliderFlightModel.h:52
Engine::Components::ArcadeGliderStep::velocity
glm::vec3 velocity
Definition
ArcadeGliderFlightModel.h:53
Engine::Components::ArcadeGliderStep::stalled
bool stalled
Definition
ArcadeGliderFlightModel.h:63
Engine::Components::ArcadeGliderStep::climbMomentumDelta
float climbMomentumDelta
Definition
ArcadeGliderFlightModel.h:62
Engine::Components::ArcadeGliderStep::verticalVelocity
float verticalVelocity
Definition
ArcadeGliderFlightModel.h:56
Engine::Components::ArcadeGliderStep::windMomentumDelta
float windMomentumDelta
Definition
ArcadeGliderFlightModel.h:60
Engine::Components::ArcadeGliderStep::stallRecoveryTimer
float stallRecoveryTimer
Definition
ArcadeGliderFlightModel.h:66
Engine::Components::ArcadeGliderStep::windAlignment
float windAlignment
Definition
ArcadeGliderFlightModel.h:59
Engine::Components::ArcadeGliderStep::dragDelta
float dragDelta
Definition
ArcadeGliderFlightModel.h:61
Engine::Components::ArcadeGliderStep::diveDemand
float diveDemand
Definition
ArcadeGliderFlightModel.h:58
Engine::Components::ArcadeGliderStep::momentum
float momentum
Definition
ArcadeGliderFlightModel.h:55
Engine::Components::ArcadeGliderStep::glideDirection
glm::vec3 glideDirection
Definition
ArcadeGliderFlightModel.h:54
Engine::Components::ArcadeGliderStep::climbDemand
float climbDemand
Definition
ArcadeGliderFlightModel.h:57
Engine::Components::ArcadeGliderStep::recoveredStall
bool recoveredStall
Definition
ArcadeGliderFlightModel.h:65
Engine::Components::ArcadeGliderStep::enteredStall
bool enteredStall
Definition
ArcadeGliderFlightModel.h:64
Engine::Components::ArcadeGliderTuning
Stores the config values for the glider. Can be used to change the flight behavior of the glider move...
Definition
ArcadeGliderFlightModel.h:12
Engine::Components::ArcadeGliderTuning::glideTurnRate
float glideTurnRate
Definition
ArcadeGliderFlightModel.h:25
Engine::Components::ArcadeGliderTuning::stallSpeed
float stallSpeed
Definition
ArcadeGliderFlightModel.h:26
Engine::Components::ArcadeGliderTuning::windMomentumGain
float windMomentumGain
Definition
ArcadeGliderFlightModel.h:20
Engine::Components::ArcadeGliderTuning::stallExtraDrag
float stallExtraDrag
Definition
ArcadeGliderFlightModel.h:30
Engine::Components::ArcadeGliderTuning::climbMomentumCost
float climbMomentumCost
Definition
ArcadeGliderFlightModel.h:17
Engine::Components::ArcadeGliderTuning::crosswindTurnRate
float crosswindTurnRate
Definition
ArcadeGliderFlightModel.h:23
Engine::Components::ArcadeGliderTuning::stallRecoverySpeed
float stallRecoverySpeed
Definition
ArcadeGliderFlightModel.h:27
Engine::Components::ArcadeGliderTuning::minGlideSink
float minGlideSink
Definition
ArcadeGliderFlightModel.h:15
Engine::Components::ArcadeGliderTuning::stallRecoveryDelay
float stallRecoveryDelay
Definition
ArcadeGliderFlightModel.h:31
Engine::Components::ArcadeGliderTuning::stallSinkSpeed
float stallSinkSpeed
Definition
ArcadeGliderFlightModel.h:28
Engine::Components::ArcadeGliderTuning::diveMomentumGain
float diveMomentumGain
Definition
ArcadeGliderFlightModel.h:19
Engine::Components::ArcadeGliderTuning::maxClimbRate
float maxClimbRate
Definition
ArcadeGliderFlightModel.h:16
Engine::Components::ArcadeGliderTuning::emergencyMaxSpeed
float emergencyMaxSpeed
Definition
ArcadeGliderFlightModel.h:32
Engine::Components::ArcadeGliderTuning::headwindPenalty
float headwindPenalty
Definition
ArcadeGliderFlightModel.h:24
Engine::Components::ArcadeGliderTuning::highSpeedDrag
float highSpeedDrag
Definition
ArcadeGliderFlightModel.h:14
Engine::Components::ArcadeGliderTuning::stallDiveSinkScale
float stallDiveSinkScale
Definition
ArcadeGliderFlightModel.h:29
Engine::Components::ArcadeGliderTuning::diveSinkRate
float diveSinkRate
Definition
ArcadeGliderFlightModel.h:18
Engine::Components::ArcadeGliderTuning::windAlignmentPower
float windAlignmentPower
Definition
ArcadeGliderFlightModel.h:22
Engine::Components::ArcadeGliderTuning::momentumDrag
float momentumDrag
Definition
ArcadeGliderFlightModel.h:13
Engine::Components::ArcadeGliderTuning::windDiminishingSpeed
float windDiminishingSpeed
Definition
ArcadeGliderFlightModel.h:21
Engine
include
Engine
Component
ArcadeGliderFlightModel.h
Generated by
1.14.0