192{
196
200
202 {
205 }
206
208 {
213 }
214
216 {
218 if (ceilingParticleID <= 0)
219 return;
220
222
224 {
230 }
231 }
232
234 {
237
239 if (boneName == "")
240 return ownerPos;
241
242 int boneIdx = -1;
244 boneIdx = creature.GetBoneIndexByName(boneName);
246 boneIdx = player.GetBoneIndexByName(boneName);
247
248 if (boneIdx == -1)
249 return ownerPos;
250
252 bonePos[1] = ownerPos[1];
253 return bonePos;
254 }
255
257 {
259 if (thicc < 0)
261 pos[1] = pos[1] - thicc;
262 }
263
265}
266
268{
270 {
271 if (DustEffectManager.GetDustEffectManager().IsCeilingDustEffectEnabled())
272 {
274 effect.SetParticle(ceilingParticleID);
275 effect.SetAutodestroy(true);
276 SEffectManager.PlayInWorld(effect,
position);
277 }
278 }
279}
280
283{
286 {
287
288 SEffectManager.CreateParticleServer(
position,
new ParticleEffecterParameters(
"CeilingDustEffecter", 2.0, ceilingParticleID));
289 }
290}
291
293
294
296{
298 {
299 return DustEffectManager.GetCeilingEffectType(m_ParticleEffectIDSync).ToType();
300 }
301}
302
304
305
307{
309 {
311 }
312
314 {
316 }
317
319 {
321 }
322
323 override void Start()
324 {
325 if (!DustEffectManager.GetDustEffectManager().IsCeilingDustEffectEnabled())
326 return;
327
328 super.Start();
329 }
330
332 {
333 vector playerPos =
g_Game.GetPlayer().GetPosition();
334 bool upperVariant = effectPos[1] < playerPos[1];
335
336 if (upperVariant)
339 }
340
342
343
345 {
346 return "";
347 }
348
350 {
351 return "";
352 }
353}
354
356{
358 {
359 return "CeilingDustEffect_SoundSet";
360 }
361
363 {
364 return "CeilingDustEffectTop_SoundSet";
365 }
366}
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].