using System; using System.Collections.Generic; using Unity.BossRoom.Gameplay.GameplayObjects.Character; using Unity.BossRoom.VisualEffects; using UnityEngine; namespace Unity.BossRoom.Gameplay.Actions { public partial class TrampleAction { /// /// We spawn the "visual cue" graphics a moment after we begin our action. /// (A little extra delay helps ensure we have the correct orientation for the /// character, so the graphics are oriented in the right direction!) /// private const float k_GraphicsSpawnDelay = 0.3f; /// /// Prior to spawning graphics, this is null. Once we spawn the graphics, this is a list of everything we spawned. /// /// /// Mobile performance note: constantly creating new GameObjects like this has bad performance on mobile and should /// be replaced with object-pooling (i.e. reusing the same art GameObjects repeatedly). But that's outside the scope of this demo. /// private List m_SpawnedGraphics = null; public override bool OnUpdateClient(ClientCharacter clientCharacter) { float age = Time.time - TimeStarted; if (age > k_GraphicsSpawnDelay && m_SpawnedGraphics == null) { m_SpawnedGraphics = InstantiateSpecialFXGraphics(clientCharacter.transform, false); } return true; } public override void CancelClient(ClientCharacter clientCharacter) { // we've been aborted -- destroy the "cue graphics" if (m_SpawnedGraphics != null) { foreach (var fx in m_SpawnedGraphics) { if (fx) { fx.Shutdown(); } } } m_SpawnedGraphics = null; } } }