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

◆ OnActivation()

void FlareSimulation_Red::OnActivation ( Entity flare)
protected

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

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