DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
FlareSimulation.c
См. документацию.
2{
6 const static float MAX_FARLIGHT_DIST = 40;
7 const static float MIN_FARLIGHT_DIST = 5;
8
9 static ref NoiseParams m_NoisePar; // Contains the noise data ( template and strength )
10 float m_LastNoiseTime = -1;
11 float m_NoiseTimer = 0;
12 const float NOISE_DELAY = 5; // How much time between two consecutive noise pings
13
14 // flare effect rotation
15 protected const float FLARE_SPIN_RATE = 1.15; // in degrees per simul tick
16 protected const float FLARE_SPIN_RADIUS = 0.18; // radius of circling motion
17 protected Entity m_Flare;
20 protected float m_RotationDegrees;
21
22 static protected typename m_ScriptedLight;
23 static protected int m_ParticleId;
24
30
31 void OnActivation(Entity flare)
32 {
33 if ( !GetGame().IsServer() || !GetGame().IsMultiplayer() )
34 {
35 m_FlareLight = FlareLight.Cast( ScriptedLightBase.CreateLight( m_ScriptedLight, Vector(0,0,0) ) );
36 if ( m_FlareLight )
37 m_FlareLight.AttachOnObject( flare );
38
39 if (m_ParMainFire)
40 m_ParMainFire.Stop();
41
42 m_Flare = flare;
43 m_RotationPoint = m_Flare.GetOrigin();
45
46 m_ParMainFire = ParticleManager.GetInstance().PlayInWorld( m_ParticleId, m_FlarePosition );
47
48 flare.PlaySoundSetLoop( m_BurningSound, "roadflareLoop_SoundSet", 0, 0 );
49 }
50
51 if ( GetGame().IsServer() )
52 {
53 // Create and load noise parameters
54 m_NoisePar = new NoiseParams();
55 m_NoisePar.LoadFromPath("cfgWeapons Flaregun_Base NoiseFlare");
56 }
57 }
58
60 {
61 //MiscGameplayFunctions.GenerateAINoiseAtPosition(flare.GetPosition(), NOISE_DELAY, m_NoisePar);
62 }
63
64 void OnFire( Entity flare)
65 {
66 //m_ParMainFire = ParticleManager.GetInstance().PlayOnObject( ParticleList.FLAREPROJ_FIRE, flare);
67 //m_ParMainFire.SetWiggle( 7, 0.3);
68 }
69
70 void Simulate( Entity flare )
71 {
72 DayZPlayer player = GetGame().GetPlayer();
73 if ( player )
74 vector playerPos = player.GetPosition();
75
76 float dist = vector.DistanceSq(flare.GetPosition(), playerPos);
77
79 m_ParMainFire.SetParameter( 0, EmitorParam.SIZE, MiscGameplayFunctions.Normalize(dist, MAX_FARLIGHT_DIST * MAX_FARLIGHT_DIST) );
80
83
84 //CastFlareAINoise( flare.GetPosition() );
86 }
87
88 // Rotate flare particle and set its new position
89 protected void FlareParticleUpdate()
90 {
92 if (m_RotationDegrees > 360)
94
95 float angleRad = m_RotationDegrees * Math.DEG2RAD;
96 float sin = Math.Sin(angleRad);
97 float cos = Math.Cos(angleRad);
98
99 vector newFlarePos = m_ParMainFire.GetOrigin();
100 float surfacePos = GetGame().SurfaceY(newFlarePos[0], newFlarePos[2]);
101
102 if (newFlarePos[1] - surfacePos < 1) // reached ground
103 {
104 if (m_Flare.GetOrigin()[1] <= surfacePos) // actual flare pos might not match and height could be underground
105 m_ParMainFire.SetPosition(Vector(newFlarePos[0], surfacePos, newFlarePos[2]));
106 else
107 m_ParMainFire.SetPosition(Vector(newFlarePos[0], m_Flare.GetOrigin()[1] ,newFlarePos[2]));
108
109 return;
110 }
111
112 // rotate vector around point
113 float xRotated = ((m_FlarePosition[0] - m_RotationPoint[0]) * cos) - ((m_FlarePosition[2] - m_RotationPoint[2]) * sin) + m_RotationPoint[0];
114 float yRotated = ((m_FlarePosition[0] - m_RotationPoint[0]) * sin) + ((m_FlarePosition[2] - m_RotationPoint[2]) * cos) + m_RotationPoint[2];
115
116 newFlarePos[0] = xRotated;
117 newFlarePos[1] = m_Flare.GetOrigin()[1];
118 newFlarePos[2] = yRotated;
119
120 m_ParMainFire.SetPosition(newFlarePos);
121
122 }
123
124 void CastFlareAINoise( vector position )
125 {
126 if ( m_LastNoiseTime < 0 )
127 m_LastNoiseTime = GetGame().GetTime() * 0.0033;
128
129 float delta_time = GetGame().GetTime() * 0.0033 - m_LastNoiseTime;
130 m_LastNoiseTime = GetGame().GetTime() * 0.0033;
131
132 m_NoiseTimer += delta_time;
133
134 if ( m_NoiseTimer >= NOISE_DELAY )
135 {
136 MiscGameplayFunctions.GenerateAINoiseAtPosition(position, NOISE_DELAY, m_NoisePar);
137
138 m_NoiseTimer = 0;
139 }
140 }
141
143 {
144 if (m_ParMainFire)
145 {
146 m_ParMainFire.SetParameter(0, EmitorParam.LIFETIME, 0);
147 m_ParMainFire.SetParameter(0, EmitorParam.LIFETIME_RND, 0);
148 m_ParMainFire.SetParameter(0, EmitorParam.REPEAT, 0);
149 m_ParMainFire.SetParameter(0, EmitorParam.SIZE, 0);
150 }
151 }
152
154 {
155 if (m_ParMainFire)
156 m_ParMainFire.Stop();
157
158 if (m_BurningSound)
159 m_BurningSound.SoundStop();
160
161 if (m_FlareLight)
162 m_FlareLight.FadeOut();
163 }
164}
165
167{
174
void FlareLightGreen()
Определения FlareLight.c:57
class FlareLightGreen extends FlareLight FlareLightBlue()
Определения FlareLight.c:56
FlareSimulation_Green FlareSimulation FlareSimulation_Blue()
Определения FlareSimulation.c:186
FlareSimulation Managed FlareSimulation_Red()
Определения FlareSimulation.c:168
m_ScriptedLight
Определения FlareSimulation.c:188
int m_ParticleId
Определения FlareSimulation.c:189
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
Определения FlareLight.c:64
void FlareSimulation_Green()
Определения FlareSimulation.c:177
float m_NoiseTimer
Определения FlareSimulation.c:11
Entity m_Flare
Определения FlareSimulation.c:17
EffectSound m_BurningSound
Определения FlareSimulation.c:4
void ~FlareSimulation()
Определения FlareSimulation.c:153
Particle m_ParMainFire
Определения FlareSimulation.c:3
FlareLight m_FlareLight
Определения FlareSimulation.c:5
static const float MAX_FARLIGHT_DIST
Определения FlareSimulation.c:6
void CastFlareAINoise(vector position)
Определения FlareSimulation.c:124
const float FLARE_SPIN_RATE
Определения FlareSimulation.c:15
void TurnOffDistantLight()
Определения FlareSimulation.c:142
const float FLARE_SPIN_RADIUS
Определения FlareSimulation.c:16
static ref NoiseParams m_NoisePar
Определения FlareSimulation.c:9
vector m_FlarePosition
Определения FlareSimulation.c:19
float m_LastNoiseTime
Определения FlareSimulation.c:10
int m_ParticleId
Определения FlareSimulation.c:23
void OnTermination(Entity flare)
Определения FlareSimulation.c:59
void FlareSimulation()
Определения FlareSimulation.c:25
void OnActivation(Entity flare)
Определения FlareSimulation.c:31
void FlareParticleUpdate()
Определения FlareSimulation.c:89
m_ScriptedLight
Определения FlareSimulation.c:22
static const float MIN_FARLIGHT_DIST
Определения FlareSimulation.c:7
void OnFire(Entity flare)
Определения FlareSimulation.c:64
vector m_RotationPoint
Определения FlareSimulation.c:18
float m_RotationDegrees
Определения FlareSimulation.c:20
const float NOISE_DELAY
Определения FlareSimulation.c:12
void Simulate(Entity flare)
Определения FlareSimulation.c:70
Определения 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_GREEN
Определения ParticleList.c:92
static const int FLAREPROJ_ACTIVATE
Определения ParticleList.c:90
static const int FLAREPROJ_ACTIVATE_BLUE
Определения ParticleList.c:93
static const int FLAREPROJ_ACTIVATE_RED
Определения 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: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