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

◆ CastFlareAINoise()

void FlareSimulation_Red::CastFlareAINoise ( vector position)
protected

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

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