DayZ 1.29
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
GeyserTrigger.c
См. документацию.
2{
3 const float MOUTH_ADJUST_RADIUS = 0.2; // maxium radius geyser effect can move when using randomized position adjustment
4 const string SOUND_BUBBLING = "Geyser_bubbling_loop_SoundSet";
5 const string SOUND_ERUPTION = "Geyser_eruption_loop_SoundSet";
6 const string SOUND_ERUPTION_START = "Geyser_eruption_start_SoundSet";
7 const string SOUND_ERUPTION_TALL = "Geyser_eruption_tall_loop_SoundSet";
8 const string SOUND_ERUPTION_TALL_START = "Geyser_eruption_tall_start_SoundSet";
9 const string SOUND_ERUPTION_TALL_END = "Geyser_eruption_tall_splash_SoundSet";
10
11 protected bool m_bIsDormant;
12 protected bool m_bIsEruptingSoon;
13 protected bool m_bIsErupting;
14 protected bool m_bIsEruptingTall;
15 protected float m_AdjustedX; //deprecated
16 protected float m_AdjustedY; //deprecated
18 protected EGeyserState m_GeyserState = EGeyserState.DORMANT; // synchronized state
19
30
32 {
33 RegisterNetSyncVariableInt("m_GeyserState", 0, 32);
34 }
35
36 override void DeferredInit()
37 {
38 super.DeferredInit();
39
41
42 if (IsSubmerged())
44
45 if (!g_Game.IsDedicatedServer())
47 }
48
49 override string GetDisplayName()
50 {
51 return "#STR_geyser";
52 }
53
54 override void EEDelete( EntityAI parent )
55 {
57
58 super.EEDelete(parent);
59 }
60
61 override void OnEnterServerEvent( TriggerInsider insider )
62 {
63 super.OnEnterServerEvent(insider);
64
65 if (insider && (m_GeyserState & EGeyserState.ERUPTING_PRIMARY))
66 {
67 EntityAI entity = EntityAI.Cast(insider.GetObject());
68 if (entity)
69 entity.ProcessDirectDamage(DamageType.CUSTOM, this, "", "HeatDamage", "0 0 0", 1000);
70 }
71 }
72
73 override void OnLeaveServerEvent( TriggerInsider insider )
74 {
75 super.OnLeaveServerEvent(insider);
76 }
77
78 override void OnEnterClientEvent( TriggerInsider insider )
79 {
80 super.OnEnterClientEvent(insider);
81 }
82
83 override void OnLeaveClientEvent( TriggerInsider insider )
84 {
85 super.OnLeaveClientEvent(insider);
86 }
87
89 {
90 super.OnVariablesSynchronized();
91
92 if (IsInitialized())
94 }
95
96 // Updated from OnVariablesSynchronized
97 protected void UpdateGeyserState()
98 {
99 // Debug.Log("UpdateGeyserState, state: " + m_GeyserState);
100
102 {
103 m_bIsDormant = true;
104 }
105 else if (!CheckGeyserState(EGeyserState.DORMANT) && m_bIsDormant)
106 {
107 m_bIsDormant = false;
108 }
109
110 if (CheckGeyserState(EGeyserState.ERUPTION_SOON) && !m_bIsEruptingSoon)
111 {
114
115 m_bIsEruptingSoon = true;
116 }
117 else if (!CheckGeyserState(EGeyserState.ERUPTION_SOON) && m_bIsEruptingSoon)
118 {
120 m_GeyserBubblesParticle.StopParticle();
121 if (m_SoundBubbling)
123
124 m_bIsEruptingSoon = false;
125 }
126
127 if (CheckGeyserState(EGeyserState.ERUPTING_PRIMARY) && !m_bIsErupting)
128 {
130
133
134 m_bIsErupting = true;
135 }
136 else if (!CheckGeyserState(EGeyserState.ERUPTING_PRIMARY) && m_bIsErupting)
137 {
139 m_GeyserParticle.StopParticle();
140
143 if (m_SoundEruption)
145
146 m_bIsErupting = false;
147 }
148
149 if (CheckGeyserState(EGeyserState.ERUPTING_SECONDARY) && !m_bIsEruptingTall)
150 {
152
155
156 m_bIsEruptingTall = true;
157 }
158 else if (!CheckGeyserState(EGeyserState.ERUPTING_SECONDARY) && m_bIsEruptingTall)
159 {
162
164 m_GeyserTallParticle.StopParticle();
169
170 m_bIsEruptingTall = false;
171 }
172 }
173
174 // Slightly adjust position of geyser particles
184
185 // Get position on surface of water volume or terrain, add height offset
186 protected vector GetAdjustedPosition(float height = 0)
187 {
188 vector pos = GetPosition();
189 pos[1] = g_Game.SurfaceRoadY(pos[0], pos[2], RoadSurfaceDetection.UNDER) + height;
190
191 return pos;
192 }
193
195 {
197 {
199 m_GeyserBubblesParticle.StopParticle();
200 if (m_SoundBubbling)
202 m_bIsEruptingSoon = false;
203 }
204
205 if (m_bIsErupting)
206 {
208 m_GeyserParticle.StopParticle();
209 if (m_SoundEruption)
211 m_bIsErupting = false;
212 }
213
215 {
217 m_GeyserTallParticle.StopParticle();
220 m_bIsEruptingTall = false;
221 }
222 }
223
225 {
226 m_GeyserState |= state;
227 SetSynchDirty();
228 }
229
231 {
232 m_GeyserState &= ~state;
233 SetSynchDirty();
234 }
235
237 {
238 if (state == EGeyserState.DORMANT)
239 return (m_GeyserState == state);
240 else
241 return (m_GeyserState & state);
242 }
243
245 {
246 return m_GeyserState;
247 }
248
249 // override for differences in logic between land & submerged geysers
251 {
252 return true;
253 }
254
255
256}
override bool IsInitialized()
Определения CombinationLock.c:70
DamageType
exposed from C++ (do not change)
Определения DamageSystem.c:11
DayZGame g_Game
Определения DayZGame.c:3942
EGeyserState
Определения GeyserArea.c:2
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor)
Определения ParticleManager.c:88
Wrapper class for managing sound through SEffectManager.
Определения EffectSound.c:5
void EffectTrigger()
Определения EffectTrigger.c:20
override void OnVariablesSynchronized()
Определения GeyserTrigger.c:88
const string SOUND_ERUPTION_TALL
Определения GeyserTrigger.c:7
EffectSound m_SoundEruptionSecondary
Определения GeyserTrigger.c:27
ParticleSource m_GeyserParticle
Определения GeyserTrigger.c:21
ParticleSource m_GeyserTallParticle
Определения GeyserTrigger.c:22
const string SOUND_ERUPTION_START
Определения GeyserTrigger.c:6
override void OnLeaveServerEvent(TriggerInsider insider)
Определения GeyserTrigger.c:73
void RemoveGeyserState(EGeyserState state)
Определения GeyserTrigger.c:230
EffectSound m_SoundBubbling
Определения GeyserTrigger.c:24
override void OnLeaveClientEvent(TriggerInsider insider)
Определения GeyserTrigger.c:83
EGeyserState GetGeyserState()
Определения GeyserTrigger.c:244
vector GetAdjustedPosition(float height=0)
Определения GeyserTrigger.c:186
bool CheckGeyserState(EGeyserState state)
Определения GeyserTrigger.c:236
EffectSound m_SoundEruptionSecondaryStart
Определения GeyserTrigger.c:28
const string SOUND_ERUPTION_TALL_START
Определения GeyserTrigger.c:8
override void OnEnterClientEvent(TriggerInsider insider)
Определения GeyserTrigger.c:78
override void EEDelete(EntityAI parent)
Определения GeyserTrigger.c:54
bool m_bIsEruptingSoon
Определения GeyserTrigger.c:12
bool IsSubmerged()
Определения GeyserTrigger.c:250
void StopEffects()
Определения GeyserTrigger.c:194
const float MOUTH_ADJUST_RADIUS
Определения GeyserTrigger.c:3
void UpdateGeyserState()
Определения GeyserTrigger.c:97
const string SOUND_ERUPTION
Определения GeyserTrigger.c:5
float m_AdjustedY
Определения GeyserTrigger.c:16
ParticleSource m_GeyserSplashParticle
Определения GeyserTrigger.c:23
bool m_bIsDormant
Определения GeyserTrigger.c:11
bool m_bIsErupting
Определения GeyserTrigger.c:13
vector m_DefaultPosition
Определения GeyserTrigger.c:17
EffectSound m_SoundEruption
Определения GeyserTrigger.c:25
bool m_bIsEruptingTall
Определения GeyserTrigger.c:14
const string SOUND_BUBBLING
Определения GeyserTrigger.c:4
const string SOUND_ERUPTION_TALL_END
Определения GeyserTrigger.c:9
void AddGeyserState(EGeyserState state)
Определения GeyserTrigger.c:224
override void DeferredInit()
Определения GeyserTrigger.c:36
override void OnEnterServerEvent(TriggerInsider insider)
Определения GeyserTrigger.c:61
void RandomizeMouthPos()
Определения GeyserTrigger.c:175
EffectSound m_SoundEruptionStart
Определения GeyserTrigger.c:26
ParticleSource m_GeyserBubblesParticle
Определения GeyserTrigger.c:20
EffectSound m_SoundEruptionSecondaryEnd
Определения GeyserTrigger.c:29
void GeyserTrigger()
Определения GeyserTrigger.c:31
float m_AdjustedX
Определения GeyserTrigger.c:15
EGeyserState m_GeyserState
Определения GeyserTrigger.c:18
override string GetDisplayName()
Определения GeyserTrigger.c:49
Определения EnMath.c:7
static const int GEYSER_STRONG
Определения ParticleList.c:349
static const int GEYSER_SPLASH
Определения ParticleList.c:350
static const int GEYSER_BUBBLES
Определения ParticleList.c:351
static const int GEYSER_NORMAL
Определения ParticleList.c:348
Определения ParticleList.c:12
Entity which has the particle instance as an ObjectComponent.
Определения ParticleSource.c:124
static EffectSound PlaySound(string sound_set, vector position, float play_fade_in=0, float stop_fade_out=0, bool loop=false)
Create and play an EffectSound.
Определения EffectManager.c:169
static void DestroyEffect(Effect effect)
Unregisters, stops and frees the Effect.
Определения EffectManager.c:271
Manager class for managing Effect (EffectParticle, EffectSound)
Определения EffectManager.c:6
Object GetObject()
Определения Trigger.c:28
The object which is in a trigger and its metadata.
Определения Trigger.c:3
Определения EnConvert.c:119
static proto float RandomFloat(float min, float max)
Returns a random float number between and min[inclusive] and max[exclusive].
vector GetPosition()
Get the world position of the Effect.
Определения Effect.c:473