using CoreGame; namespace GAS.Runtime { public class CameraShakeCue : GameplayCueInstant { public float duration = 0.3f; public string path = "Assets/GAS_Setting/Cam/CritShake.asset"; public override GameplayCueInstantSpec CreateSpec(in GameplayCueParameters param) { var spec = SptPool.Malloc(); spec.Awake(param); return spec; } public override void FreeSpec(ref GameplayCueInstantSpec spec) { var cameraShakeCueSpec = spec as CameraShakeCueSpec; SptPool.Free(ref cameraShakeCueSpec); spec = null; } } public class CameraShakeCueSpec : GameplayCueInstantSpec { public override void Trigger() { Contexts.Combat.ReplaceCameraShake(cue.duration, cue.path); } } }