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

◆ ~FlareSimulation()

void FlareSimulation_Red::~FlareSimulation ( )
protected

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

323 : Managed
324{
325 protected Particle m_ParMainFire;
326 protected EffectSound m_BurningSound;
327 protected FlareLight m_FlareLight;
328 const static float MAX_FARLIGHT_DIST = 40;
329 const static float MIN_FARLIGHT_DIST = 5;
330
331 static ref NoiseParams m_NoisePar; // Contains the noise data ( template and strength )
332 float m_LastNoiseTime = -1;
333 float m_NoiseTimer = 0;
334 const float NOISE_DELAY = 5; // How much time between two consecutive noise pings
335
336 // flare effect rotation
337 protected const float FLARE_SPIN_RATE = 1.15; // in degrees per simul tick
338 protected const float FLARE_SPIN_RADIUS = 0.18; // radius of circling motion
339 protected Entity m_Flare;
340 protected vector m_RotationPoint;
341 protected vector m_FlarePosition;
342 protected float m_RotationDegrees;
343
344 static protected typename m_ScriptedLight;
345 static protected int m_ParticleId;
346
347 void FlareSimulation()
348 {
351 }
352
353 void OnActivation(Entity flare)
354 {
355 if ( !g_Game.IsServer() || !g_Game.IsMultiplayer() )
356 {
357 m_FlareLight = FlareLight.Cast( ScriptedLightBase.CreateLight( m_ScriptedLight, Vector(0,0,0) ) );
358 if ( m_FlareLight )
359 m_FlareLight.AttachOnObject( flare );
360
361 if (m_ParMainFire)
362 m_ParMainFire.Stop();
363
364 m_Flare = flare;
365 m_RotationPoint = m_Flare.GetOrigin();
367
368 m_ParMainFire = ParticleManager.GetInstance().PlayInWorld( m_ParticleId, m_FlarePosition );
369
370 flare.PlaySoundSetLoop( m_BurningSound, "roadflareLoop_SoundSet", 0, 0 );
371 }
372
373 if ( g_Game.IsServer() )
374 {
375 // Create and load noise parameters
376 m_NoisePar = new NoiseParams();
377 m_NoisePar.LoadFromPath("cfgWeapons Flaregun_Base NoiseFlare");
378 }
379 }
380
381 void OnTermination(Entity flare)
382 {
383 //MiscGameplayFunctions.GenerateAINoiseAtPosition(flare.GetPosition(), NOISE_DELAY, m_NoisePar);
384 }
385
386 void OnFire( Entity flare)
387 {
388 //m_ParMainFire = ParticleManager.GetInstance().PlayOnObject( ParticleList.FLAREPROJ_FIRE, flare);
389 //m_ParMainFire.SetWiggle( 7, 0.3);
390 }
391
392 void Simulate( Entity flare )
393 {
394 DayZPlayer player = g_Game.GetPlayer();
395 if ( player )
396 vector playerPos = player.GetPosition();
397
398 float dist = vector.DistanceSq(flare.GetPosition(), playerPos);
399
401 m_ParMainFire.SetParameter( 0, EmitorParam.SIZE, MiscGameplayFunctions.Normalize(dist, MAX_FARLIGHT_DIST * MAX_FARLIGHT_DIST) );
402
403 if ( dist <= MIN_FARLIGHT_DIST * MIN_FARLIGHT_DIST )
405
406 //CastFlareAINoise( flare.GetPosition() );
408 }
409
410 // Rotate flare particle and set its new position
411 protected void FlareParticleUpdate()
412 {
414 if (m_RotationDegrees > 360)
416
417 float angleRad = m_RotationDegrees * Math.DEG2RAD;
418 float sin = Math.Sin(angleRad);
419 float cos = Math.Cos(angleRad);
420
421 vector newFlarePos = m_ParMainFire.GetOrigin();
422 float surfacePos = g_Game.SurfaceY(newFlarePos[0], newFlarePos[2]);
423
424 if (newFlarePos[1] - surfacePos < 1) // reached ground
425 {
426 if (m_Flare.GetOrigin()[1] <= surfacePos) // actual flare pos might not match and height could be underground
427 m_ParMainFire.SetPosition(Vector(newFlarePos[0], surfacePos, newFlarePos[2]));
428 else
429 m_ParMainFire.SetPosition(Vector(newFlarePos[0], m_Flare.GetOrigin()[1] ,newFlarePos[2]));
430
431 return;
432 }
433
434 // rotate vector around point
435 float xRotated = ((m_FlarePosition[0] - m_RotationPoint[0]) * cos) - ((m_FlarePosition[2] - m_RotationPoint[2]) * sin) + m_RotationPoint[0];
436 float yRotated = ((m_FlarePosition[0] - m_RotationPoint[0]) * sin) + ((m_FlarePosition[2] - m_RotationPoint[2]) * cos) + m_RotationPoint[2];
437
438 newFlarePos[0] = xRotated;
439 newFlarePos[1] = m_Flare.GetOrigin()[1];
440 newFlarePos[2] = yRotated;
441
442 m_ParMainFire.SetPosition(newFlarePos);
443
444 }
445
446 void CastFlareAINoise( vector position )
447 {
448 int currentTime = g_Game.GetTime();
449 float timeAdjusted = currentTime * 0.0033;
450 if ( m_LastNoiseTime < 0 )
451 m_LastNoiseTime = timeAdjusted;
452
453 float delta_time = timeAdjusted - m_LastNoiseTime;
454 m_LastNoiseTime = timeAdjusted;
455
456 m_NoiseTimer += delta_time;
457
458 if ( m_NoiseTimer >= NOISE_DELAY )
459 {
460 MiscGameplayFunctions.GenerateAINoiseAtPosition(position, NOISE_DELAY, m_NoisePar);
461
462 m_NoiseTimer = 0;
463 }
464 }
465
467 {
468 if (m_ParMainFire)
469 {
470 m_ParMainFire.SetParameter(0, EmitorParam.LIFETIME, 0);
471 m_ParMainFire.SetParameter(0, EmitorParam.LIFETIME_RND, 0);
472 m_ParMainFire.SetParameter(0, EmitorParam.REPEAT, 0);
473 m_ParMainFire.SetParameter(0, EmitorParam.SIZE, 0);
474 }
475 }
476
477 void ~FlareSimulation()
478 {
479 if (m_ParMainFire)
480 m_ParMainFire.Stop();
481
482 if (m_BurningSound)
483 m_BurningSound.SoundStop();
484
485 if (m_FlareLight)
486 m_FlareLight.FadeOut();
487 }
488}
489
491{
493 {
495 m_ParticleId = ParticleList.FLAREPROJ_ACTIVATE_RED;
496 }
497}
498
500{
502 {
504 m_ParticleId = ParticleList.FLAREPROJ_ACTIVATE_GREEN;
505 }
506}
507
509{
511 {
513 m_ParticleId = ParticleList.FLAREPROJ_ACTIVATE_BLUE;
514 }
515}
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