/// <summary> /// Instead of immediately triggering the event, queues it for next frame. /// </summary> /// <param name="source">The controller triggering the event.</param> /// <param name="hash">The event hash to trigger.</param> /// <param name="data">The event parameter (if available).</param> internal static void TriggerAndQueue(KAnimControllerBase source, int hash, object data) { var inst = Instance; if (inst == null || source.overrideAnimFiles.Count > 0) { source.gameObject.Trigger(hash, data); if (source.destroyOnAnimComplete) { source.DestroySelf(); } } else { inst.Queue(source, hash, data); } }