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

◆ Simulate()

void FlareSimulation_Red::Simulate ( Entity flare)
protected

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

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