179{
183
187
189 {
192 }
193
195 {
200 }
201
203 {
205 if (ceilingParticleID <= 0)
206 return;
207
209
211 {
217 }
218 }
219
221 {
224
226 if (boneName == "")
227 return ownerPos;
228
229 int boneIdx = -1;
231 boneIdx = creature.GetBoneIndexByName(boneName);
233 boneIdx = player.GetBoneIndexByName(boneName);
234
235 if (boneIdx == -1)
236 return ownerPos;
237
239 bonePos[1] = ownerPos[1];
240 return bonePos;
241 }
242
244 {
246 if (thicc < 0)
248 pos[1] = pos[1] - thicc;
249 }
250
252}
253
255{
257 {
258 if (DustEffectManager.GetDustEffectManager().IsCeilingDustEffectEnabled())
259 {
261 effect.SetParticle(ceilingParticleID);
262 effect.SetAutodestroy(true);
263 SEffectManager.PlayInWorld(effect,
position);
264 }
265 }
266}
267
270{
273 {
274
275 SEffectManager.CreateParticleServer(
position,
new ParticleEffecterParameters(
"CeilingDustEffecter", 2.0, ceilingParticleID));
276 }
277}
278
280
281
283{
285 {
286 return DustEffectManager.GetCeilingEffectType(m_ParticleEffectIDSync).ToType();
287 }
288}
289
291
292
294{
296 {
298 }
299
301 {
303 }
304
306 {
308 }
309
310 override void Start()
311 {
312 if (!DustEffectManager.GetDustEffectManager().IsCeilingDustEffectEnabled())
313 return;
314
315 super.Start();
316 }
317
319 {
320 vector playerPos =
g_Game.GetPlayer().GetPosition();
321 bool upperVariant = effectPos[1] < playerPos[1];
322
323 if (upperVariant)
326 }
327
329
330
332 {
333 return "";
334 }
335
337 {
338 return "";
339 }
340}
341
343{
345 {
346 return "CeilingDustEffect_SoundSet";
347 }
348
350 {
351 return "CeilingDustEffectTop_SoundSet";
352 }
353}
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].