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

◆ FlareParticleUpdate()

void FlareSimulation_Red::FlareParticleUpdate ( )
protected

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

257 : Managed
258{
259 protected Particle m_ParMainFire;
260 protected EffectSound m_BurningSound;
261 protected FlareLight m_FlareLight;
262 const static float MAX_FARLIGHT_DIST = 40;
263 const static float MIN_FARLIGHT_DIST = 5;
264
265 static ref NoiseParams m_NoisePar; // Contains the noise data ( template and strength )
266 float m_LastNoiseTime = -1;
267 float m_NoiseTimer = 0;
268 const float NOISE_DELAY = 5; // How much time between two consecutive noise pings
269
270 // flare effect rotation
271 protected const float FLARE_SPIN_RATE = 1.15; // in degrees per simul tick
272 protected const float FLARE_SPIN_RADIUS = 0.18; // radius of circling motion
273 protected Entity m_Flare;
274 protected vector m_RotationPoint;
275 protected vector m_FlarePosition;
276 protected float m_RotationDegrees;
277
278 static protected typename m_ScriptedLight;
279 static protected int m_ParticleId;
280
281 void FlareSimulation()
282 {
285 }
286
287 void OnActivation(Entity flare)
288 {
289 if ( !g_Game.IsServer() || !g_Game.IsMultiplayer() )
290 {
291 m_FlareLight = FlareLight.Cast( ScriptedLightBase.CreateLight( m_ScriptedLight, Vector(0,0,0) ) );
292 if ( m_FlareLight )
293 m_FlareLight.AttachOnObject( flare );
294
295 if (m_ParMainFire)
296 m_ParMainFire.Stop();
297
298 m_Flare = flare;
299 m_RotationPoint = m_Flare.GetOrigin();
301
302 m_ParMainFire = ParticleManager.GetInstance().PlayInWorld( m_ParticleId, m_FlarePosition );
303
304 flare.PlaySoundSetLoop( m_BurningSound, "roadflareLoop_SoundSet", 0, 0 );
305 }
306
307 if ( g_Game.IsServer() )
308 {
309 // Create and load noise parameters
310 m_NoisePar = new NoiseParams();
311 m_NoisePar.LoadFromPath("cfgWeapons Flaregun_Base NoiseFlare");
312 }
313 }
314
315 void OnTermination(Entity flare)
316 {
317 //MiscGameplayFunctions.GenerateAINoiseAtPosition(flare.GetPosition(), NOISE_DELAY, m_NoisePar);
318 }
319
320 void OnFire( Entity flare)
321 {
322 //m_ParMainFire = ParticleManager.GetInstance().PlayOnObject( ParticleList.FLAREPROJ_FIRE, flare);
323 //m_ParMainFire.SetWiggle( 7, 0.3);
324 }
325
326 void Simulate( Entity flare )
327 {
328 DayZPlayer player = g_Game.GetPlayer();
329 if ( player )
330 vector playerPos = player.GetPosition();
331
332 float dist = vector.DistanceSq(flare.GetPosition(), playerPos);
333
335 m_ParMainFire.SetParameter( 0, EmitorParam.SIZE, MiscGameplayFunctions.Normalize(dist, MAX_FARLIGHT_DIST * MAX_FARLIGHT_DIST) );
336
337 if ( dist <= MIN_FARLIGHT_DIST * MIN_FARLIGHT_DIST )
339
340 //CastFlareAINoise( flare.GetPosition() );
342 }
343
344 // Rotate flare particle and set its new position
345 protected void FlareParticleUpdate()
346 {
348 if (m_RotationDegrees > 360)
350
351 float angleRad = m_RotationDegrees * Math.DEG2RAD;
352 float sin = Math.Sin(angleRad);
353 float cos = Math.Cos(angleRad);
354
355 vector newFlarePos = m_ParMainFire.GetOrigin();
356 float surfacePos = g_Game.SurfaceY(newFlarePos[0], newFlarePos[2]);
357
358 if (newFlarePos[1] - surfacePos < 1) // reached ground
359 {
360 if (m_Flare.GetOrigin()[1] <= surfacePos) // actual flare pos might not match and height could be underground
361 m_ParMainFire.SetPosition(Vector(newFlarePos[0], surfacePos, newFlarePos[2]));
362 else
363 m_ParMainFire.SetPosition(Vector(newFlarePos[0], m_Flare.GetOrigin()[1] ,newFlarePos[2]));
364
365 return;
366 }
367
368 // rotate vector around point
369 float xRotated = ((m_FlarePosition[0] - m_RotationPoint[0]) * cos) - ((m_FlarePosition[2] - m_RotationPoint[2]) * sin) + m_RotationPoint[0];
370 float yRotated = ((m_FlarePosition[0] - m_RotationPoint[0]) * sin) + ((m_FlarePosition[2] - m_RotationPoint[2]) * cos) + m_RotationPoint[2];
371
372 newFlarePos[0] = xRotated;
373 newFlarePos[1] = m_Flare.GetOrigin()[1];
374 newFlarePos[2] = yRotated;
375
376 m_ParMainFire.SetPosition(newFlarePos);
377
378 }
379
380 void CastFlareAINoise( vector position )
381 {
382 int currentTime = g_Game.GetTime();
383 float timeAdjusted = currentTime * 0.0033;
384 if ( m_LastNoiseTime < 0 )
385 m_LastNoiseTime = timeAdjusted;
386
387 float delta_time = timeAdjusted - m_LastNoiseTime;
388 m_LastNoiseTime = timeAdjusted;
389
390 m_NoiseTimer += delta_time;
391
392 if ( m_NoiseTimer >= NOISE_DELAY )
393 {
394 MiscGameplayFunctions.GenerateAINoiseAtPosition(position, NOISE_DELAY, m_NoisePar);
395
396 m_NoiseTimer = 0;
397 }
398 }
399
401 {
402 if (m_ParMainFire)
403 {
404 m_ParMainFire.SetParameter(0, EmitorParam.LIFETIME, 0);
405 m_ParMainFire.SetParameter(0, EmitorParam.LIFETIME_RND, 0);
406 m_ParMainFire.SetParameter(0, EmitorParam.REPEAT, 0);
407 m_ParMainFire.SetParameter(0, EmitorParam.SIZE, 0);
408 }
409 }
410
411 void ~FlareSimulation()
412 {
413 if (m_ParMainFire)
414 m_ParMainFire.Stop();
415
416 if (m_BurningSound)
417 m_BurningSound.SoundStop();
418
419 if (m_FlareLight)
420 m_FlareLight.FadeOut();
421 }
422}
423
425{
427 {
429 m_ParticleId = ParticleList.FLAREPROJ_ACTIVATE_RED;
430 }
431}
432
434{
436 {
438 m_ParticleId = ParticleList.FLAREPROJ_ACTIVATE_GREEN;
439 }
440}
441
443{
445 {
447 m_ParticleId = ParticleList.FLAREPROJ_ACTIVATE_BLUE;
448 }
449}
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