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

◆ ~FlareSimulation()

void FlareSimulation_Red::~FlareSimulation ( )
protected

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

319 : Managed
320{
321 protected Particle m_ParMainFire;
322 protected EffectSound m_BurningSound;
323 protected FlareLight m_FlareLight;
324 const static float MAX_FARLIGHT_DIST = 40;
325 const static float MIN_FARLIGHT_DIST = 5;
326
327 static ref NoiseParams m_NoisePar; // Contains the noise data ( template and strength )
328 float m_LastNoiseTime = -1;
329 float m_NoiseTimer = 0;
330 const float NOISE_DELAY = 5; // How much time between two consecutive noise pings
331
332 // flare effect rotation
333 protected const float FLARE_SPIN_RATE = 1.15; // in degrees per simul tick
334 protected const float FLARE_SPIN_RADIUS = 0.18; // radius of circling motion
335 protected Entity m_Flare;
336 protected vector m_RotationPoint;
337 protected vector m_FlarePosition;
338 protected float m_RotationDegrees;
339
340 static protected typename m_ScriptedLight;
341 static protected int m_ParticleId;
342
343 void FlareSimulation()
344 {
347 }
348
349 void OnActivation(Entity flare)
350 {
351 if ( !GetGame().IsServer() || !GetGame().IsMultiplayer() )
352 {
353 m_FlareLight = FlareLight.Cast( ScriptedLightBase.CreateLight( m_ScriptedLight, Vector(0,0,0) ) );
354 if ( m_FlareLight )
355 m_FlareLight.AttachOnObject( flare );
356
357 if (m_ParMainFire)
358 m_ParMainFire.Stop();
359
360 m_Flare = flare;
361 m_RotationPoint = m_Flare.GetOrigin();
363
364 m_ParMainFire = ParticleManager.GetInstance().PlayInWorld( m_ParticleId, m_FlarePosition );
365
366 flare.PlaySoundSetLoop( m_BurningSound, "roadflareLoop_SoundSet", 0, 0 );
367 }
368
369 if ( GetGame().IsServer() )
370 {
371 // Create and load noise parameters
372 m_NoisePar = new NoiseParams();
373 m_NoisePar.LoadFromPath("cfgWeapons Flaregun_Base NoiseFlare");
374 }
375 }
376
377 void OnTermination(Entity flare)
378 {
379 //MiscGameplayFunctions.GenerateAINoiseAtPosition(flare.GetPosition(), NOISE_DELAY, m_NoisePar);
380 }
381
382 void OnFire( Entity flare)
383 {
384 //m_ParMainFire = ParticleManager.GetInstance().PlayOnObject( ParticleList.FLAREPROJ_FIRE, flare);
385 //m_ParMainFire.SetWiggle( 7, 0.3);
386 }
387
388 void Simulate( Entity flare )
389 {
390 DayZPlayer player = GetGame().GetPlayer();
391 if ( player )
392 vector playerPos = player.GetPosition();
393
394 float dist = vector.DistanceSq(flare.GetPosition(), playerPos);
395
397 m_ParMainFire.SetParameter( 0, EmitorParam.SIZE, MiscGameplayFunctions.Normalize(dist, MAX_FARLIGHT_DIST * MAX_FARLIGHT_DIST) );
398
399 if ( dist <= MIN_FARLIGHT_DIST * MIN_FARLIGHT_DIST )
401
402 //CastFlareAINoise( flare.GetPosition() );
404 }
405
406 // Rotate flare particle and set its new position
407 protected void FlareParticleUpdate()
408 {
410 if (m_RotationDegrees > 360)
412
413 float angleRad = m_RotationDegrees * Math.DEG2RAD;
414 float sin = Math.Sin(angleRad);
415 float cos = Math.Cos(angleRad);
416
417 vector newFlarePos = m_ParMainFire.GetOrigin();
418 float surfacePos = GetGame().SurfaceY(newFlarePos[0], newFlarePos[2]);
419
420 if (newFlarePos[1] - surfacePos < 1) // reached ground
421 {
422 if (m_Flare.GetOrigin()[1] <= surfacePos) // actual flare pos might not match and height could be underground
423 m_ParMainFire.SetPosition(Vector(newFlarePos[0], surfacePos, newFlarePos[2]));
424 else
425 m_ParMainFire.SetPosition(Vector(newFlarePos[0], m_Flare.GetOrigin()[1] ,newFlarePos[2]));
426
427 return;
428 }
429
430 // rotate vector around point
431 float xRotated = ((m_FlarePosition[0] - m_RotationPoint[0]) * cos) - ((m_FlarePosition[2] - m_RotationPoint[2]) * sin) + m_RotationPoint[0];
432 float yRotated = ((m_FlarePosition[0] - m_RotationPoint[0]) * sin) + ((m_FlarePosition[2] - m_RotationPoint[2]) * cos) + m_RotationPoint[2];
433
434 newFlarePos[0] = xRotated;
435 newFlarePos[1] = m_Flare.GetOrigin()[1];
436 newFlarePos[2] = yRotated;
437
438 m_ParMainFire.SetPosition(newFlarePos);
439
440 }
441
442 void CastFlareAINoise( vector position )
443 {
444 if ( m_LastNoiseTime < 0 )
445 m_LastNoiseTime = GetGame().GetTime() * 0.0033;
446
447 float delta_time = GetGame().GetTime() * 0.0033 - m_LastNoiseTime;
448 m_LastNoiseTime = GetGame().GetTime() * 0.0033;
449
450 m_NoiseTimer += delta_time;
451
452 if ( m_NoiseTimer >= NOISE_DELAY )
453 {
454 MiscGameplayFunctions.GenerateAINoiseAtPosition(position, NOISE_DELAY, m_NoisePar);
455
456 m_NoiseTimer = 0;
457 }
458 }
459
461 {
462 if (m_ParMainFire)
463 {
464 m_ParMainFire.SetParameter(0, EmitorParam.LIFETIME, 0);
465 m_ParMainFire.SetParameter(0, EmitorParam.LIFETIME_RND, 0);
466 m_ParMainFire.SetParameter(0, EmitorParam.REPEAT, 0);
467 m_ParMainFire.SetParameter(0, EmitorParam.SIZE, 0);
468 }
469 }
470
471 void ~FlareSimulation()
472 {
473 if (m_ParMainFire)
474 m_ParMainFire.Stop();
475
476 if (m_BurningSound)
477 m_BurningSound.SoundStop();
478
479 if (m_FlareLight)
480 m_FlareLight.FadeOut();
481 }
482}
483
485{
487 {
489 m_ParticleId = ParticleList.FLAREPROJ_ACTIVATE_RED;
490 }
491}
492
494{
496 {
498 m_ParticleId = ParticleList.FLAREPROJ_ACTIVATE_GREEN;
499 }
500}
501
503{
505 {
507 m_ParticleId = ParticleList.FLAREPROJ_ACTIVATE_BLUE;
508 }
509}
ref NoiseParams m_NoisePar
Определения ActionOpenDoors.c:94
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:173
void TurnOffDistantLight()
Определения FlareSimulation.c:308
vector m_RotationPoint
Определения FlareSimulation.c:184
void OnActivation(Entity flare)
Определения FlareSimulation.c:197
EffectSound m_BurningSound
Определения FlareSimulation.c:170
void FlareSimulation()
Определения FlareSimulation.c:191
const float NOISE_DELAY
Определения FlareSimulation.c:178
const float FLARE_SPIN_RADIUS
Определения FlareSimulation.c:182
void OnTermination(Entity flare)
Определения FlareSimulation.c:225
vector m_FlarePosition
Определения FlareSimulation.c:185
float m_LastNoiseTime
Определения FlareSimulation.c:176
void ~FlareSimulation()
Определения FlareSimulation.c:319
void OnFire(Entity flare)
Определения FlareSimulation.c:230
FlareSimulation_Green FlareSimulation FlareSimulation_Blue()
Определения FlareSimulation.c:186
float m_NoiseTimer
Определения FlareSimulation.c:177
FlareSimulation Managed FlareSimulation_Red()
Определения FlareSimulation.c:168
void FlareParticleUpdate()
Определения FlareSimulation.c:255
FlareLight m_FlareLight
Определения FlareSimulation.c:171
void CastFlareAINoise(vector position)
Определения FlareSimulation.c:290
m_ScriptedLight
Определения FlareSimulation.c:188
const float FLARE_SPIN_RATE
Определения FlareSimulation.c:181
void Simulate(Entity flare)
Определения FlareSimulation.c:236
static const float MAX_FARLIGHT_DIST
Определения FlareSimulation.c:172
int m_ParticleId
Определения FlareSimulation.c:189
float m_RotationDegrees
Определения FlareSimulation.c:186
Entity m_Flare
Определения FlareSimulation.c:183
Particle m_ParMainFire
Определения FlareSimulation.c:169
class NoiseSystem NoiseParams()
Определения Noise.c:15
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor)
Определения ParticleManager.c:88
proto native float SurfaceY(float x, float z)
proto native DayZPlayer GetPlayer()
proto int GetTime()
returns mission time in milliseconds
Wrapper class for managing sound through SEffectManager.
Определения EffectSound.c:5
Определения Camera.c:2
Определения FlareLight.c:46
void FlareSimulation_Green()
Определения FlareSimulation.c:177
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:90
Определения ParticleList.c:12
static proto native float DistanceSq(vector v1, vector v2)
Returns the square distance between tips of two 3D vectors.
Определения EnConvert.c:106
proto native CGame GetGame()
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