This commit is contained in:
CortexCore
2023-08-11 23:57:37 +08:00
parent 936a94c84b
commit 75889ec34f
149 changed files with 6524 additions and 1043 deletions

View File

@@ -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);
}
}
}

View File

@@ -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;
}
}