210{
214
218
220 {
223 }
224
226 {
231 }
232
234 {
236 if (ceilingParticleID <= 0)
237 return;
238
240
242 {
248 }
249 }
250
252 {
255
257 if (boneName == "")
258 return ownerPos;
259
260 int boneIdx = -1;
262 boneIdx = creature.GetBoneIndexByName(boneName);
264 boneIdx = player.GetBoneIndexByName(boneName);
265
266 if (boneIdx == -1)
267 return ownerPos;
268
270 bonePos[1] = ownerPos[1];
271 return bonePos;
272 }
273
275 {
277 if (thicc < 0)
279 pos[1] = pos[1] - thicc;
280 }
281
283}
284
286{
288 {
289 if (DustEffectManager.GetDustEffectManager().IsCeilingDustEffectEnabled())
290 {
292 effect.SetParticle(ceilingParticleID);
293 effect.SetAutodestroy(true);
294 SEffectManager.PlayInWorld(effect,
position);
295 }
296 }
297}
298
301{
304 {
305
306 SEffectManager.CreateParticleServer(
position,
new ParticleEffecterParameters(
"CeilingDustEffecter", 2.0, ceilingParticleID));
307 }
308}
309
311
312
314{
316 {
317 return DustEffectManager.GetCeilingEffectType(m_ParticleEffectIDSync).ToType();
318 }
319}
320
322
323
325{
327 {
329 }
330
332 {
334 }
335
337 {
339 }
340
341 override void Start()
342 {
343 if (!DustEffectManager.GetDustEffectManager().IsCeilingDustEffectEnabled())
344 return;
345
346 super.Start();
347 }
348
350 {
351 vector playerPos =
g_Game.GetPlayer().GetPosition();
352 bool upperVariant = effectPos[1] < playerPos[1];
353
354 if (upperVariant)
357 }
358
360
361
363 {
364 return "";
365 }
366
368 {
369 return "";
370 }
371}
372
374{
376 {
377 return "CeilingDustEffect_SoundSet";
378 }
379
381 {
382 return "CeilingDustEffectTop_SoundSet";
383 }
384}
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].