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

◆ OnFire()

void FlareSimulation_Red::OnFire ( Entity flare)
protected

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

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