using System; using System.Collections; using System.Collections.Generic; using UnityEngine; namespace BITKit.Entities { public interface IEntityOverride { bool IsOvering { get; } void AddOverride(object key); void RemoveOverride(object key); event Action OnOverride; } public interface IEntityOverrideCallback { void OnEntryOverride(bool @override); } [CustomType(typeof(IEntityOverride))] public class EntityOverride : EntityComponent,IEntityOverride { [SerializeField,ReadOnly] private bool isOvering; public bool IsOvering => _allowOverrideHandle; private readonly ValidHandle _allowOverrideHandle = new(); public void AddOverride(object key) => _allowOverrideHandle.AddElement(key); public void RemoveOverride(object key)=>_allowOverrideHandle.RemoveElement(key); public event Action OnOverride; public override void Initialize(IEntity _entity) { base.Initialize(_entity); _entity.Set(this); } public override void OnAwake() { _allowOverrideHandle.AddListener(Override); _allowOverrideHandle.Invoke(); } private void Override(bool @override) { OnOverride?.Invoke(@override); isOvering=@override; } } }