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

◆ OnActivation()

void FlareSimulation_Red::OnActivation ( Entity flare)
protected

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

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