Dayz Explorer
1.29.162510
Loading...
Searching...
No Matches
flaresimulation.c
Go to the documentation of this file.
1
class
FlareSimulation
:
Managed
2
{
3
protected
Particle
m_ParMainFire
;
4
protected
EffectSound
m_BurningSound
;
5
protected
FlareLight
m_FlareLight
;
6
const
static
float
MAX_FARLIGHT_DIST
= 40;
7
const
static
float
MIN_FARLIGHT_DIST
= 5;
8
9
static
ref
NoiseParams
m_NoisePar
;
// Contains the noise data ( template and strength )
10
float
m_LastNoiseTime
= -1;
11
float
m_NoiseTimer
= 0;
12
const
float
NOISE_DELAY
= 5;
// How much time between two consecutive noise pings
13
14
// flare effect rotation
15
protected
const
float
FLARE_SPIN_RATE
= 1.15;
// in degrees per simul tick
16
protected
const
float
FLARE_SPIN_RADIUS
= 0.18;
// radius of circling motion
17
protected
Entity
m_Flare
;
18
protected
vector
m_RotationPoint
;
19
protected
vector
m_FlarePosition
;
20
protected
float
m_RotationDegrees
;
21
22
static
protected
typename
m_ScriptedLight
;
23
static
protected
int
m_ParticleId
;
24
25
void
FlareSimulation
()
26
{
27
m_ScriptedLight
=
FlareLight
;
28
m_ParticleId
=
ParticleList
.FLAREPROJ_ACTIVATE;
29
}
30
31
void
OnActivation
(
Entity
flare)
32
{
33
if
( !
g_Game
.IsServer() || !
g_Game
.IsMultiplayer() )
34
{
35
m_FlareLight
=
FlareLight
.Cast(
ScriptedLightBase
.CreateLight(
m_ScriptedLight
,
Vector
(0,0,0) ) );
36
if
(
m_FlareLight
)
37
m_FlareLight
.AttachOnObject( flare );
38
39
if
(
m_ParMainFire
)
40
m_ParMainFire
.Stop();
41
42
m_Flare
= flare;
43
m_RotationPoint
=
m_Flare
.GetOrigin();
44
m_FlarePosition
=
m_Flare
.GetOrigin() +
Vector
(
FLARE_SPIN_RADIUS
,0,
FLARE_SPIN_RADIUS
);
45
46
m_ParMainFire
=
ParticleManager
.GetInstance().PlayInWorld(
m_ParticleId
,
m_FlarePosition
);
47
48
flare.PlaySoundSetLoop(
m_BurningSound
,
"roadflareLoop_SoundSet"
, 0, 0 );
49
}
50
51
if
(
g_Game
.IsServer() )
52
{
53
// Create and load noise parameters
54
m_NoisePar
=
new
NoiseParams
();
55
m_NoisePar
.LoadFromPath(
"cfgWeapons Flaregun_Base NoiseFlare"
);
56
}
57
}
58
59
void
OnTermination
(
Entity
flare)
60
{
61
//MiscGameplayFunctions.GenerateAINoiseAtPosition(flare.GetPosition(), NOISE_DELAY, m_NoisePar);
62
}
63
64
void
OnFire
(
Entity
flare)
65
{
66
//m_ParMainFire = ParticleManager.GetInstance().PlayOnObject( ParticleList.FLAREPROJ_FIRE, flare);
67
//m_ParMainFire.SetWiggle( 7, 0.3);
68
}
69
70
void
Simulate
(
Entity
flare )
71
{
72
DayZPlayer
player =
g_Game
.GetPlayer();
73
if
( player )
74
vector
playerPos = player.GetPosition();
75
76
float
dist =
vector
.DistanceSq(flare.GetPosition(), playerPos);
77
78
if
( ( dist <=
MAX_FARLIGHT_DIST
*
MAX_FARLIGHT_DIST
) && ( dist >
MIN_FARLIGHT_DIST
*
MIN_FARLIGHT_DIST
) )
79
m_ParMainFire
.SetParameter( 0,
EmitorParam
.SIZE, MiscGameplayFunctions.Normalize(dist,
MAX_FARLIGHT_DIST
*
MAX_FARLIGHT_DIST
) );
80
81
if
( dist <=
MIN_FARLIGHT_DIST
*
MIN_FARLIGHT_DIST
)
82
TurnOffDistantLight
();
83
84
//CastFlareAINoise( flare.GetPosition() );
85
FlareParticleUpdate
();
86
}
87
88
// Rotate flare particle and set its new position
89
protected
void
FlareParticleUpdate
()
90
{
91
m_RotationDegrees
+=
FLARE_SPIN_RATE
;
92
if
(
m_RotationDegrees
> 360)
93
m_RotationDegrees
= 0;
94
95
float
angleRad =
m_RotationDegrees
*
Math
.DEG2RAD;
96
float
sin =
Math
.Sin(angleRad);
97
float
cos =
Math
.Cos(angleRad);
98
99
vector
newFlarePos =
m_ParMainFire
.GetOrigin();
100
float
surfacePos =
g_Game
.SurfaceY(newFlarePos[0], newFlarePos[2]);
101
102
if
(newFlarePos[1] - surfacePos < 1)
// reached ground
103
{
104
if
(
m_Flare
.GetOrigin()[1] <= surfacePos)
// actual flare pos might not match and height could be underground
105
m_ParMainFire
.SetPosition(
Vector
(newFlarePos[0], surfacePos, newFlarePos[2]));
106
else
107
m_ParMainFire
.SetPosition(
Vector
(newFlarePos[0],
m_Flare
.GetOrigin()[1] ,newFlarePos[2]));
108
109
return
;
110
}
111
112
// rotate vector around point
113
float
xRotated = ((
m_FlarePosition
[0] -
m_RotationPoint
[0]) * cos) - ((
m_FlarePosition
[2] -
m_RotationPoint
[2]) * sin) +
m_RotationPoint
[0];
114
float
yRotated = ((
m_FlarePosition
[0] -
m_RotationPoint
[0]) * sin) + ((
m_FlarePosition
[2] -
m_RotationPoint
[2]) * cos) +
m_RotationPoint
[2];
115
116
newFlarePos[0] = xRotated;
117
newFlarePos[1] =
m_Flare
.GetOrigin()[1];
118
newFlarePos[2] = yRotated;
119
120
m_ParMainFire
.SetPosition(newFlarePos);
121
122
}
123
124
void
CastFlareAINoise
(
vector
position )
125
{
126
int
currentTime =
g_Game
.GetTime();
127
float
timeAdjusted = currentTime * 0.0033;
128
if
(
m_LastNoiseTime
< 0 )
129
m_LastNoiseTime
= timeAdjusted;
130
131
float
delta_time = timeAdjusted -
m_LastNoiseTime
;
132
m_LastNoiseTime
= timeAdjusted;
133
134
m_NoiseTimer
+= delta_time;
135
136
if
(
m_NoiseTimer
>=
NOISE_DELAY
)
137
{
138
MiscGameplayFunctions.GenerateAINoiseAtPosition(position,
NOISE_DELAY
,
m_NoisePar
);
139
140
m_NoiseTimer
= 0;
141
}
142
}
143
144
void
TurnOffDistantLight
()
145
{
146
if
(
m_ParMainFire
)
147
{
148
m_ParMainFire
.SetParameter(0,
EmitorParam
.LIFETIME, 0);
149
m_ParMainFire
.SetParameter(0,
EmitorParam
.LIFETIME_RND, 0);
150
m_ParMainFire
.SetParameter(0,
EmitorParam
.REPEAT, 0);
151
m_ParMainFire
.SetParameter(0,
EmitorParam
.SIZE, 0);
152
}
153
}
154
155
void
~FlareSimulation
()
156
{
157
if
(
m_ParMainFire
)
158
m_ParMainFire
.Stop();
159
160
if
(
m_BurningSound
)
161
m_BurningSound
.SoundStop();
162
163
if
(
m_FlareLight
)
164
m_FlareLight
.FadeOut();
165
}
166
}
167
168
class
FlareSimulation_Red
:
FlareSimulation
169
{
170
void
FlareSimulation_Red
()
171
{
172
m_ScriptedLight =
FlareLightRed
;
173
m_ParticleId =
ParticleList
.FLAREPROJ_ACTIVATE_RED;
174
}
175
}
176
177
class
FlareSimulation_Green :
FlareSimulation
178
{
179
void
FlareSimulation_Green
()
180
{
181
m_ScriptedLight =
FlareLightGreen
;
182
m_ParticleId =
ParticleList
.FLAREPROJ_ACTIVATE_GREEN;
183
}
184
}
185
186
class
FlareSimulation_Blue
:
FlareSimulation
187
{
188
void
FlareSimulation_Blue
()
189
{
190
m_ScriptedLight =
FlareLightBlue
;
191
m_ParticleId =
ParticleList
.FLAREPROJ_ACTIVATE_BLUE;
192
}
193
}
DayZPlayer
Definition
dayzplayerimplement.c:87
EffectSound
Wrapper class for managing sound through SEffectManager.
Definition
effectsound.c:5
Entity
Definition
camera.c:2
FlareLight
Definition
flarelight.c:46
FlareLightRed
Definition
flarelight.c:64
FlareSimulation
Definition
flaresimulation.c:2
FlareSimulation::m_NoiseTimer
float m_NoiseTimer
Definition
flaresimulation.c:11
FlareSimulation::m_Flare
Entity m_Flare
Definition
flaresimulation.c:17
FlareSimulation::m_BurningSound
EffectSound m_BurningSound
Definition
flaresimulation.c:4
FlareSimulation::~FlareSimulation
void ~FlareSimulation()
Definition
flaresimulation.c:155
FlareSimulation::m_ParMainFire
Particle m_ParMainFire
Definition
flaresimulation.c:3
FlareSimulation::m_FlareLight
FlareLight m_FlareLight
Definition
flaresimulation.c:5
FlareSimulation::MAX_FARLIGHT_DIST
static const float MAX_FARLIGHT_DIST
Definition
flaresimulation.c:6
FlareSimulation::CastFlareAINoise
void CastFlareAINoise(vector position)
Definition
flaresimulation.c:124
FlareSimulation::FLARE_SPIN_RATE
const float FLARE_SPIN_RATE
Definition
flaresimulation.c:15
FlareSimulation::TurnOffDistantLight
void TurnOffDistantLight()
Definition
flaresimulation.c:144
FlareSimulation::FLARE_SPIN_RADIUS
const float FLARE_SPIN_RADIUS
Definition
flaresimulation.c:16
FlareSimulation::m_NoisePar
static ref NoiseParams m_NoisePar
Definition
flaresimulation.c:9
FlareSimulation::m_FlarePosition
vector m_FlarePosition
Definition
flaresimulation.c:19
FlareSimulation::m_LastNoiseTime
float m_LastNoiseTime
Definition
flaresimulation.c:10
FlareSimulation::m_ParticleId
int m_ParticleId
Definition
flaresimulation.c:23
FlareSimulation::OnTermination
void OnTermination(Entity flare)
Definition
flaresimulation.c:59
FlareSimulation::FlareSimulation
void FlareSimulation()
Definition
flaresimulation.c:25
FlareSimulation::OnActivation
void OnActivation(Entity flare)
Definition
flaresimulation.c:31
FlareSimulation::FlareParticleUpdate
void FlareParticleUpdate()
Definition
flaresimulation.c:89
FlareSimulation::m_ScriptedLight
m_ScriptedLight
Definition
flaresimulation.c:22
FlareSimulation::MIN_FARLIGHT_DIST
static const float MIN_FARLIGHT_DIST
Definition
flaresimulation.c:7
FlareSimulation::OnFire
void OnFire(Entity flare)
Definition
flaresimulation.c:64
FlareSimulation::m_RotationPoint
vector m_RotationPoint
Definition
flaresimulation.c:18
FlareSimulation::m_RotationDegrees
float m_RotationDegrees
Definition
flaresimulation.c:20
FlareSimulation::NOISE_DELAY
const float NOISE_DELAY
Definition
flaresimulation.c:12
FlareSimulation::Simulate
void Simulate(Entity flare)
Definition
flaresimulation.c:70
Managed
TODO doc.
Definition
enscript.c:118
Math
Definition
enmath.c:7
Particle
Legacy way of using particles in the game.
Definition
particle.c:7
ParticleList
Definition
particlelist.c:12
ScriptedLightBase
Definition
pointlightbase.c:2
vector
Definition
enconvert.c:119
g_Game
DayZGame g_Game
Definition
dayzgame.c:3942
FlareLightGreen
void FlareLightGreen()
Definition
flarelight.c:57
FlareLightBlue
class FlareLightGreen extends FlareLight FlareLightBlue()
Definition
flarelight.c:56
FlareSimulation_Blue
FlareSimulation_Green FlareSimulation FlareSimulation_Blue()
Definition
flaresimulation.c:188
FlareSimulation_Green
void FlareSimulation_Green()
Definition
flaresimulation.c:189
FlareSimulation_Red
FlareSimulation Managed FlareSimulation_Red()
Definition
flaresimulation.c:170
Vector
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
EmitorParam
EmitorParam
Definition
envisual.c:114
NoiseParams
class NoiseSystem NoiseParams()
Definition
noise.c:15
ParticleManager
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor).
Definition
particlemanager.c:88
Daten
4_world
entities
firearms
flaresimulation.c
Generated by
1.16.1