using System; using Syntriax.Modules.State; using UnityEngine; namespace Syntriax.Modules.Trigger { public class TriggerBase : MonoBehaviour, ITrigger { public Action OnTriggerStateChanged { get; set; } = null; private IStateEnable _stateEnable = null; public IStateEnable StateEnable { get { if (_stateEnable == null) { _stateEnable = GetComponent() ?? gameObject.AddComponent(); _stateEnable.OnEnabledChanged += OnEnabledChanged; } return _stateEnable; } } private void OnEnabledChanged(bool enabled) { if (enabled) return; _isTrigerred = false; OnTriggerStateChanged?.Invoke(false); } private bool _isTrigerred = false; public bool IsTrigerred { get => _isTrigerred; protected set { if (value == _isTrigerred || !StateEnable.IsEnabledNullChecked()) return; _isTrigerred = value; OnTriggerStateChanged?.Invoke(value); } } } }