1
This commit is contained in:
@@ -15,12 +15,88 @@ namespace BITKit.Mark
|
||||
Vector3 GetPostion();
|
||||
bool GetAcitve();
|
||||
}
|
||||
[SubSystemConfig(isMainThread = true)]
|
||||
public class MarkSystem : SubBITSystem
|
||||
|
||||
public interface IMarkSystem
|
||||
{
|
||||
public Action<IMarkObject> OnAdd;
|
||||
public Action<IMarkObject> Update;
|
||||
public Action<IMarkObject> OnRemove;
|
||||
event Action<IMarkObject> OnAdd;
|
||||
event Action<IMarkObject> OnUpdate;
|
||||
event Action<IMarkObject> OnRemove;
|
||||
void Add(IMarkObject markObject);
|
||||
void Remove(IMarkObject markObject);
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class MarkSystemMonoProxy:IMarkSystem
|
||||
{
|
||||
[SerializeReference] private MonoBehaviour monoBehaviour;
|
||||
private IMarkSystem _markSystemImplementation=>monoBehaviour as IMarkSystem;
|
||||
public event Action<IMarkObject> OnAdd
|
||||
{
|
||||
add => _markSystemImplementation.OnAdd += value;
|
||||
remove => _markSystemImplementation.OnAdd -= value;
|
||||
}
|
||||
|
||||
public event Action<IMarkObject> OnUpdate
|
||||
{
|
||||
add => _markSystemImplementation.OnUpdate += value;
|
||||
remove => _markSystemImplementation.OnUpdate -= value;
|
||||
}
|
||||
|
||||
public event Action<IMarkObject> OnRemove
|
||||
{
|
||||
add => _markSystemImplementation.OnRemove += value;
|
||||
remove => _markSystemImplementation.OnRemove -= value;
|
||||
}
|
||||
|
||||
public void Add(IMarkObject markObject)
|
||||
{
|
||||
_markSystemImplementation.Add(markObject);
|
||||
}
|
||||
|
||||
public void Remove(IMarkObject markObject)
|
||||
{
|
||||
_markSystemImplementation.Remove(markObject);
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class MarkSystemSingleton:IMarkSystem
|
||||
{
|
||||
private IMarkSystem _markSystemImplementation=>MarkSystem.Singleton;
|
||||
public event Action<IMarkObject> OnAdd
|
||||
{
|
||||
add => _markSystemImplementation.OnAdd += value;
|
||||
remove => _markSystemImplementation.OnAdd -= value;
|
||||
}
|
||||
|
||||
public event Action<IMarkObject> OnUpdate
|
||||
{
|
||||
add => _markSystemImplementation.OnUpdate += value;
|
||||
remove => _markSystemImplementation.OnUpdate -= value;
|
||||
}
|
||||
|
||||
public event Action<IMarkObject> OnRemove
|
||||
{
|
||||
add => _markSystemImplementation.OnRemove += value;
|
||||
remove => _markSystemImplementation.OnRemove -= value;
|
||||
}
|
||||
|
||||
public void Add(IMarkObject markObject)
|
||||
{
|
||||
_markSystemImplementation.Add(markObject);
|
||||
}
|
||||
|
||||
public void Remove(IMarkObject markObject)
|
||||
{
|
||||
_markSystemImplementation.Remove(markObject);
|
||||
}
|
||||
}
|
||||
public class MarkSystem : MonoBehaviour,IMarkSystem
|
||||
{
|
||||
internal static IMarkSystem Singleton { get; private set; }
|
||||
public event Action<IMarkObject> OnAdd;
|
||||
public event Action<IMarkObject> OnUpdate;
|
||||
public event Action<IMarkObject> OnRemove;
|
||||
List<IMarkObject> markObjects = new();
|
||||
public void Add(IMarkObject markObject)
|
||||
{
|
||||
@@ -32,11 +108,17 @@ namespace BITKit.Mark
|
||||
markObjects.TryRemove(markObject);
|
||||
OnRemove?.Invoke(markObject);
|
||||
}
|
||||
public override void OnUpdate(float deltaTime)
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Singleton = this;
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
foreach (var markObject in markObjects.ToArray())
|
||||
{
|
||||
Update?.Invoke(markObject);
|
||||
OnUpdate?.Invoke(markObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -13,9 +13,10 @@ namespace BITKit.Mark
|
||||
public class MarkSystemUIToolkit : MonoBehaviour
|
||||
{
|
||||
public UXElement element;
|
||||
[SerializeReference, SubclassSelector] public References className;
|
||||
[SerializeField,SerializeReference, SubclassSelector] private References className;
|
||||
[SerializeField, SerializeReference, SubclassSelector]
|
||||
private IMarkSystem markSystem;
|
||||
Dictionary<string, Label> dictionary = new();
|
||||
MarkSystem markSystem;
|
||||
IPanel panel;
|
||||
CancellationToken cancellationToken;
|
||||
void Awake()
|
||||
@@ -25,11 +26,10 @@ namespace BITKit.Mark
|
||||
void Start()
|
||||
{
|
||||
panel = element.GetVisualElement().panel;
|
||||
markSystem = BITSystems.GetOrCreate<MarkSystem>();
|
||||
if (markSystem is not null)
|
||||
{
|
||||
markSystem.OnAdd += OnAdd;
|
||||
markSystem.Update += OnUpdate;
|
||||
markSystem.OnUpdate += OnUpdate;
|
||||
markSystem.OnRemove += OnRemove;
|
||||
}
|
||||
}
|
||||
@@ -38,7 +38,7 @@ namespace BITKit.Mark
|
||||
if (markSystem is not null)
|
||||
{
|
||||
markSystem.OnAdd -= OnAdd;
|
||||
markSystem.Update -= OnUpdate;
|
||||
markSystem.OnUpdate -= OnUpdate;
|
||||
markSystem.OnRemove -= OnRemove;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user