41 lines
1.3 KiB
C#
41 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);
|
|
}
|
|
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<IEntityOverride>(this);
|
|
}
|
|
public override void OnAwake()
|
|
{
|
|
_allowOverrideHandle.AddListener(Override);
|
|
_allowOverrideHandle.Invoke();
|
|
}
|
|
private void Override(bool @override)
|
|
{
|
|
foreach (var x in entity.GetCallbacks<IEntityOverrideCallback>())
|
|
{
|
|
x.OnEntryOverride(@override);
|
|
}
|
|
}
|
|
}
|
|
} |