// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik // using System.Runtime.CompilerServices; using UnityEngine; namespace Animancer { /// https://kybernetik.com.au/animancer/api/Animancer/AnimancerEvent partial struct AnimancerEvent { /// Executes after animations in the Dynamic Update cycle. /// https://kybernetik.com.au/animancer/api/Animancer/InvokerDynamic [AnimancerHelpUrl(typeof(InvokerDynamic))] [AddComponentMenu("")]// Singleton creates itself. public class InvokerDynamic : Invoker { /************************************************************************************************************************/ private static InvokerDynamic _Instance; /// Creates the singleton instance. [MethodImpl(MethodImplOptions.AggressiveInlining)] public static InvokerDynamic Initialize() => AnimancerUtilities.InitializeSingleton(ref _Instance); /************************************************************************************************************************/ /// Should this system execute events? /// If disabled, this system will not be re-enabled automatically. public static bool Enabled { get => _Instance != null && _Instance.enabled; set { if (value) { Initialize(); _Instance.enabled = true; } else if (_Instance != null) { _Instance.enabled = false; } } } /************************************************************************************************************************/ /// After animation update with dynamic timestep. protected virtual void LateUpdate() { InvokeAllAndClear(); } /************************************************************************************************************************/ } } }