using System; using Syntriax.Modules.ToggleState; namespace Syntriax.Modules.Action { public abstract class ActionBaseWithDeactivation : ActionBase, IActionWithDeactivation { public Action OnDeactivated { get; set; } = null; protected override void Awake() { base.Awake(); OnDeactivated += (_) => OnActionDeactivated(); } /// /// Called when the current gets deactivated /// protected abstract void OnActionDeactivated(); public virtual void Deactivate() { if (!ToggleState.IsToggledNullChecked()) return; OnDeactivated?.Invoke(this); } } }