184{
188
192
194 {
197 }
198
200 {
205 }
206
208 {
210 if (ceilingParticleID <= 0)
211 return;
212
214
216 {
222 }
223 }
224
226 {
229
231 if (boneName == "")
232 return ownerPos;
233
234 int boneIdx = -1;
236 boneIdx = creature.GetBoneIndexByName(boneName);
238 boneIdx = player.GetBoneIndexByName(boneName);
239
240 if (boneIdx == -1)
241 return ownerPos;
242
244 bonePos[1] = ownerPos[1];
245 return bonePos;
246 }
247
249 {
251 if (thicc < 0)
253 pos[1] = pos[1] - thicc;
254 }
255
257}
258
260{
262 {
263 if (DustEffectManager.GetDustEffectManager().IsCeilingDustEffectEnabled())
264 {
266 effect.SetParticle(ceilingParticleID);
267 effect.SetAutodestroy(true);
268 SEffectManager.PlayInWorld(effect,
position);
269 }
270 }
271}
272
275{
278 {
279
280 SEffectManager.CreateParticleServer(
position,
new ParticleEffecterParameters(
"CeilingDustEffecter", 2.0, ceilingParticleID));
281 }
282}
283
285
286
288{
290 {
291 return DustEffectManager.GetCeilingEffectType(m_ParticleEffectIDSync).ToType();
292 }
293}
294
296
297
299{
301 {
303 }
304
306 {
308 }
309
311 {
313 }
314
315 override void Start()
316 {
317 if (!DustEffectManager.GetDustEffectManager().IsCeilingDustEffectEnabled())
318 return;
319
320 super.Start();
321 }
322
324 {
325 vector playerPos =
g_Game.GetPlayer().GetPosition();
326 bool upperVariant = effectPos[1] < playerPos[1];
327
328 if (upperVariant)
331 }
332
334
335
337 {
338 return "";
339 }
340
342 {
343 return "";
344 }
345}
346
348{
350 {
351 return "CeilingDustEffect_SoundSet";
352 }
353
355 {
356 return "CeilingDustEffectTop_SoundSet";
357 }
358}
class DustEffectCeilingHandlerBase CreateEffects(int ceilingParticleID, vector position)
Request from server, effecter handles the rest.
static float FLOOR_THICKNESS_DEFAULT
static int RANGE_MAX_DEFAULT
vector GetBonePosition(string boneName)
void AdjustBySurfaceThickness(inout vector pos, SurfaceInfo surfaceInfo)
static int RANGE_MIN_DEFAULT
void CalculateNextEffect(string surfaceType, int particleID)
void CeilingDustEffectBase()
void OnStepUpdate(SurfaceInfo surfaceInfo, string boneName="")
void DustEffectCeilingHandlerBase(EntityAI owner)
ref ScriptInvoker Event_OnEffectStarted
Event used when the actual effect started playing.
vector m_Position
Cached world position.
void EffectParticleGeneral()
enum ProcessDirectDamageFlags m_Owner
void ~CeilingDustEffectBase()
void CeilingDustEffectBase()
string GetAdjustedSoundSet(vector effectPos)
string GetUpperSoundsetVariant()
string GetLowerSoundsetVariant()
void PlayCeilingDustSound()
Super root of all classes in Enforce script.
void CreateEffects(int ceilingParticleID, vector position)
void CreateEffects(int ceilingParticleID, vector position)
Request from server, effecter handles the rest.
static void AdjustCeilingDustEffectFrequency(string surfaceType, int particleID, inout int min, inout int max)
optional adjustment of frequency by particleID
proto bool Remove(func fn, int flags=EScriptInvokerRemoveFlags.ALL)
remove specific call from list
proto bool Insert(func fn, int flags=EScriptInvokerInsertFlags.IMMEDIATE)
insert method to list
proto float GetThickness()
proto string GetSurfaceType()
proto int GetCeilingDustParticleId()
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
static int RandomIntInclusive(int min, int max)
Returns a random int number between and min [inclusive] and max [inclusive].