40 lines
1.3 KiB
C#
40 lines
1.3 KiB
C#
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<bool> OnOverride;
|
|
}
|
|
[CustomType(typeof(IEntityOverride))]
|
|
public class EntityOverride : EntityBehavior,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<bool> OnOverride;
|
|
|
|
public override void Initialize(IEntity entity)
|
|
{
|
|
base.Initialize(entity);
|
|
UnityEntity.Set<IEntityOverride>(this);
|
|
}
|
|
public override void OnAwake()
|
|
{
|
|
_allowOverrideHandle.AddListener(Override);
|
|
_allowOverrideHandle.Invoke();
|
|
}
|
|
private void Override(bool @override)
|
|
{
|
|
OnOverride?.Invoke(@override);
|
|
isOvering=@override;
|
|
}
|
|
}
|
|
} |