DayZ 1.29
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ OnTermination()

void FlareSimulation_Red::OnTermination ( Entity flare)
protected

См. определение в файле FlareSimulation.c строка 227

227 : Managed
228{
229 protected Particle m_ParMainFire;
230 protected EffectSound m_BurningSound;
231 protected FlareLight m_FlareLight;
232 const static float MAX_FARLIGHT_DIST = 40;
233 const static float MIN_FARLIGHT_DIST = 5;
234
235 static ref NoiseParams m_NoisePar; // Contains the noise data ( template and strength )
236 float m_LastNoiseTime = -1;
237 float m_NoiseTimer = 0;
238 const float NOISE_DELAY = 5; // How much time between two consecutive noise pings
239
240 // flare effect rotation
241 protected const float FLARE_SPIN_RATE = 1.15; // in degrees per simul tick
242 protected const float FLARE_SPIN_RADIUS = 0.18; // radius of circling motion
243 protected Entity m_Flare;
244 protected vector m_RotationPoint;
245 protected vector m_FlarePosition;
246 protected float m_RotationDegrees;
247
248 static protected typename m_ScriptedLight;
249 static protected int m_ParticleId;
250
251 void FlareSimulation()
252 {
255 }
256
257 void OnActivation(Entity flare)
258 {
259 if ( !g_Game.IsServer() || !g_Game.IsMultiplayer() )
260 {
261 m_FlareLight = FlareLight.Cast( ScriptedLightBase.CreateLight( m_ScriptedLight, Vector(0,0,0) ) );
262 if ( m_FlareLight )
263 m_FlareLight.AttachOnObject( flare );
264
265 if (m_ParMainFire)
266 m_ParMainFire.Stop();
267
268 m_Flare = flare;
269 m_RotationPoint = m_Flare.GetOrigin();
271
272 m_ParMainFire = ParticleManager.GetInstance().PlayInWorld( m_ParticleId, m_FlarePosition );
273
274 flare.PlaySoundSetLoop( m_BurningSound, "roadflareLoop_SoundSet", 0, 0 );
275 }
276
277 if ( g_Game.IsServer() )
278 {
279 // Create and load noise parameters
280 m_NoisePar = new NoiseParams();
281 m_NoisePar.LoadFromPath("cfgWeapons Flaregun_Base NoiseFlare");
282 }
283 }
284
285 void OnTermination(Entity flare)
286 {
287 //MiscGameplayFunctions.GenerateAINoiseAtPosition(flare.GetPosition(), NOISE_DELAY, m_NoisePar);
288 }
289
290 void OnFire( Entity flare)
291 {
292 //m_ParMainFire = ParticleManager.GetInstance().PlayOnObject( ParticleList.FLAREPROJ_FIRE, flare);
293 //m_ParMainFire.SetWiggle( 7, 0.3);
294 }
295
296 void Simulate( Entity flare )
297 {
298 DayZPlayer player = g_Game.GetPlayer();
299 if ( player )
300 vector playerPos = player.GetPosition();
301
302 float dist = vector.DistanceSq(flare.GetPosition(), playerPos);
303
305 m_ParMainFire.SetParameter( 0, EmitorParam.SIZE, MiscGameplayFunctions.Normalize(dist, MAX_FARLIGHT_DIST * MAX_FARLIGHT_DIST) );
306
307 if ( dist <= MIN_FARLIGHT_DIST * MIN_FARLIGHT_DIST )
309
310 //CastFlareAINoise( flare.GetPosition() );
312 }
313
314 // Rotate flare particle and set its new position
315 protected void FlareParticleUpdate()
316 {
318 if (m_RotationDegrees > 360)
320
321 float angleRad = m_RotationDegrees * Math.DEG2RAD;
322 float sin = Math.Sin(angleRad);
323 float cos = Math.Cos(angleRad);
324
325 vector newFlarePos = m_ParMainFire.GetOrigin();
326 float surfacePos = g_Game.SurfaceY(newFlarePos[0], newFlarePos[2]);
327
328 if (newFlarePos[1] - surfacePos < 1) // reached ground
329 {
330 if (m_Flare.GetOrigin()[1] <= surfacePos) // actual flare pos might not match and height could be underground
331 m_ParMainFire.SetPosition(Vector(newFlarePos[0], surfacePos, newFlarePos[2]));
332 else
333 m_ParMainFire.SetPosition(Vector(newFlarePos[0], m_Flare.GetOrigin()[1] ,newFlarePos[2]));
334
335 return;
336 }
337
338 // rotate vector around point
339 float xRotated = ((m_FlarePosition[0] - m_RotationPoint[0]) * cos) - ((m_FlarePosition[2] - m_RotationPoint[2]) * sin) + m_RotationPoint[0];
340 float yRotated = ((m_FlarePosition[0] - m_RotationPoint[0]) * sin) + ((m_FlarePosition[2] - m_RotationPoint[2]) * cos) + m_RotationPoint[2];
341
342 newFlarePos[0] = xRotated;
343 newFlarePos[1] = m_Flare.GetOrigin()[1];
344 newFlarePos[2] = yRotated;
345
346 m_ParMainFire.SetPosition(newFlarePos);
347
348 }
349
350 void CastFlareAINoise( vector position )
351 {
352 int currentTime = g_Game.GetTime();
353 float timeAdjusted = currentTime * 0.0033;
354 if ( m_LastNoiseTime < 0 )
355 m_LastNoiseTime = timeAdjusted;
356
357 float delta_time = timeAdjusted - m_LastNoiseTime;
358 m_LastNoiseTime = timeAdjusted;
359
360 m_NoiseTimer += delta_time;
361
362 if ( m_NoiseTimer >= NOISE_DELAY )
363 {
364 MiscGameplayFunctions.GenerateAINoiseAtPosition(position, NOISE_DELAY, m_NoisePar);
365
366 m_NoiseTimer = 0;
367 }
368 }
369
371 {
372 if (m_ParMainFire)
373 {
374 m_ParMainFire.SetParameter(0, EmitorParam.LIFETIME, 0);
375 m_ParMainFire.SetParameter(0, EmitorParam.LIFETIME_RND, 0);
376 m_ParMainFire.SetParameter(0, EmitorParam.REPEAT, 0);
377 m_ParMainFire.SetParameter(0, EmitorParam.SIZE, 0);
378 }
379 }
380
381 void ~FlareSimulation()
382 {
383 if (m_ParMainFire)
384 m_ParMainFire.Stop();
385
386 if (m_BurningSound)
387 m_BurningSound.SoundStop();
388
389 if (m_FlareLight)
390 m_FlareLight.FadeOut();
391 }
392}
393
395{
397 {
399 m_ParticleId = ParticleList.FLAREPROJ_ACTIVATE_RED;
400 }
401}
402
404{
406 {
408 m_ParticleId = ParticleList.FLAREPROJ_ACTIVATE_GREEN;
409 }
410}
411
413{
415 {
417 m_ParticleId = ParticleList.FLAREPROJ_ACTIVATE_BLUE;
418 }
419}
ref NoiseParams m_NoisePar
Определения ActionOpenDoors.c:94
FlareLight m_FlareLight
Определения ContaminatedArea_Dynamic.c:27
DayZGame g_Game
Определения DayZGame.c:3942
void FlareLightGreen()
Определения FlareLight.c:57
class FlareLightGreen extends FlareLight FlareLightBlue()
Определения FlareLight.c:56
class FlareLight extends PointLightBase FlareLightRed()
Определения FlareLight.c:38
static const float MIN_FARLIGHT_DIST
Определения FlareSimulation.c:175
void TurnOffDistantLight()
Определения FlareSimulation.c:312
vector m_RotationPoint
Определения FlareSimulation.c:186
void OnActivation(Entity flare)
Определения FlareSimulation.c:199
EffectSound m_BurningSound
Определения FlareSimulation.c:172
void FlareSimulation()
Определения FlareSimulation.c:193
const float NOISE_DELAY
Определения FlareSimulation.c:180
const float FLARE_SPIN_RADIUS
Определения FlareSimulation.c:184
void OnTermination(Entity flare)
Определения FlareSimulation.c:227
vector m_FlarePosition
Определения FlareSimulation.c:187
float m_LastNoiseTime
Определения FlareSimulation.c:178
void ~FlareSimulation()
Определения FlareSimulation.c:323
void OnFire(Entity flare)
Определения FlareSimulation.c:232
FlareSimulation_Green FlareSimulation FlareSimulation_Blue()
Определения FlareSimulation.c:188
float m_NoiseTimer
Определения FlareSimulation.c:179
FlareSimulation Managed FlareSimulation_Red()
Определения FlareSimulation.c:170
void FlareParticleUpdate()
Определения FlareSimulation.c:257
void CastFlareAINoise(vector position)
Определения FlareSimulation.c:292
m_ScriptedLight
Определения FlareSimulation.c:190
const float FLARE_SPIN_RATE
Определения FlareSimulation.c:183
void Simulate(Entity flare)
Определения FlareSimulation.c:238
static const float MAX_FARLIGHT_DIST
Определения FlareSimulation.c:174
int m_ParticleId
Определения FlareSimulation.c:191
float m_RotationDegrees
Определения FlareSimulation.c:188
Entity m_Flare
Определения FlareSimulation.c:185
Particle m_ParMainFire
Определения FlareSimulation.c:171
class NoiseSystem NoiseParams()
Определения Noise.c:15
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor)
Определения ParticleManager.c:88
Определения DayZPlayerImplement.c:87
Wrapper class for managing sound through SEffectManager.
Определения EffectSound.c:5
Определения Camera.c:2
Определения FlareLight.c:46
void FlareSimulation_Green()
Определения FlareSimulation.c:179
int m_ParticleId
Определения FlareSimulation.c:23
m_ScriptedLight
Определения FlareSimulation.c:22
Определения FlareSimulation.c:2
TODO doc.
Определения EnScript.c:118
Определения EnMath.c:7
Legacy way of using particles in the game.
Определения Particle.c:7
static const int FLAREPROJ_ACTIVATE
Определения ParticleList.c:91
Определения ParticleList.c:12
static proto native float DistanceSq(vector v1, vector v2)
Returns the square distance between tips of two 3D vectors.
Определения EnConvert.c:119
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
static proto float Cos(float angle)
Returns cosinus of angle in radians.
static proto float Sin(float angle)
Returns sinus of angle in radians.
static const float DEG2RAD
Определения EnMath.c:17
EmitorParam
Определения EnVisual.c:114