using System; using Syntriax.Modules.ToggleState; using UnityEngine; namespace Syntriax.Modules.Action { public abstract class ActionBase : MonoBehaviour, IAction { public IToggleState ToggleState { get; protected set; } = null; public Action OnActivated { get; set; } = null; protected virtual void Awake() { ToggleState = new ToggleStateMember(true); OnActivated += (_) => OnActionActivated(); } /// /// Called when the current gets activated /// protected abstract void OnActionActivated(); public virtual void Activate() { if (!ToggleState.IsToggledNullChecked()) return; OnActivated?.Invoke(this); } } }