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

◆ Simulate()

void FlareSimulation_Red::Simulate ( Entity flare)
protected

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

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