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

◆ OnFire()

void FlareSimulation_Red::OnFire ( Entity flare)
protected

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

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