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

◆ FlareParticleUpdate()

void FlareSimulation_Red::FlareParticleUpdate ( )
protected

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

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