DayZ 1.28
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 (!GetGame().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 {
119 m_GeyserBubblesParticle.StopParticle();
120 m_SoundBubbling.Stop();
121
122 m_bIsEruptingSoon = false;
123 }
124
125 if (CheckGeyserState(EGeyserState.ERUPTING_PRIMARY) && !m_bIsErupting)
126 {
128
131
132 m_bIsErupting = true;
133 }
134 else if (!CheckGeyserState(EGeyserState.ERUPTING_PRIMARY) && m_bIsErupting)
135 {
136 m_GeyserParticle.StopParticle();
137
139 m_SoundEruption.Stop();
140
141 m_bIsErupting = false;
142 }
143
144 if (CheckGeyserState(EGeyserState.ERUPTING_SECONDARY) && !m_bIsEruptingTall)
145 {
147
150
151 m_bIsEruptingTall = true;
152 }
153 else if (!CheckGeyserState(EGeyserState.ERUPTING_SECONDARY) && m_bIsEruptingTall)
154 {
157
158 m_GeyserTallParticle.StopParticle();
161
162 m_bIsEruptingTall = false;
163 }
164 }
165
166 // Slightly adjust position of geyser particles
176
177 // Get position on surface of water volume or terrain, add height offset
178 protected vector GetAdjustedPosition(float height = 0)
179 {
180 vector pos = GetPosition();
181 pos[1] = GetGame().SurfaceRoadY(pos[0], pos[2], RoadSurfaceDetection.UNDER) + height;
182
183 return pos;
184 }
185
187 {
189 {
190 m_GeyserBubblesParticle.StopParticle();
191 m_SoundBubbling.Stop();
192 m_bIsEruptingSoon = false;
193 }
194
195 if (m_bIsErupting)
196 {
197 m_GeyserParticle.StopParticle();
198 m_SoundEruption.Stop();
199 m_bIsErupting = false;
200 }
201
203 {
204 m_GeyserTallParticle.StopParticle();
206 m_bIsEruptingTall = false;
207 }
208 }
209
211 {
212 m_GeyserState |= state;
213 SetSynchDirty();
214 }
215
217 {
218 m_GeyserState &= ~state;
219 SetSynchDirty();
220 }
221
223 {
224 if (state == EGeyserState.DORMANT)
225 return (m_GeyserState == state);
226 else
227 return (m_GeyserState & state);
228 }
229
231 {
232 return m_GeyserState;
233 }
234
235 // override for differences in logic between land & submerged geysers
237 {
238 return true;
239 }
240
241
242}
override bool IsInitialized()
Определения CombinationLock.c:70
DamageType
exposed from C++ (do not change)
Определения DamageSystem.c:11
EGeyserState
Определения GeyserArea.c:2
void ParticleManager(ParticleManagerSettings settings)
Constructor (ctor)
Определения ParticleManager.c:88
proto native float SurfaceRoadY(float x, float z, RoadSurfaceDetection rsd=RoadSurfaceDetection.LEGACY)
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:216
EffectSound m_SoundBubbling
Определения GeyserTrigger.c:24
override void OnLeaveClientEvent(TriggerInsider insider)
Определения GeyserTrigger.c:83
EGeyserState GetGeyserState()
Определения GeyserTrigger.c:230
vector GetAdjustedPosition(float height=0)
Определения GeyserTrigger.c:178
bool CheckGeyserState(EGeyserState state)
Определения GeyserTrigger.c:222
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:236
void StopEffects()
Определения GeyserTrigger.c:186
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:210
override void DeferredInit()
Определения GeyserTrigger.c:36
override void OnEnterServerEvent(TriggerInsider insider)
Определения GeyserTrigger.c:61
void RandomizeMouthPos()
Определения GeyserTrigger.c:167
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
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:106
proto native CGame GetGame()
static proto float RandomFloat(float min, float max)
Returns a random float number between and min[inclusive] and max[exclusive].
class JsonUndergroundAreaTriggerData GetPosition
Определения UndergroundAreaLoader.c:9