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

◆ CastFlareAINoise()

void FlareSimulation_Red::CastFlareAINoise ( vector position)
protected

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

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