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

◆ OnTermination()

void FlareSimulation_Red::OnTermination ( Entity flare)
protected

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

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