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); } public interface IEntityOverrideCallback { void OnEntryOverride(bool @override); } public class EntityOverride : EntityComponent,IEntityOverride { 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 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) { foreach (var x in entity.GetCallbacks()) { x.OnEntryOverride(@override); } } } }