diff --git a/Engine.Core/Extensions/BehaviourExtensions.cs b/Engine.Core/Extensions/BehaviourExtensions.cs deleted file mode 100644 index f1734e7..0000000 --- a/Engine.Core/Extensions/BehaviourExtensions.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; - -namespace Syntriax.Engine.Core; - -public static class BehaviourExtensions -{ - public static T? FindBehaviour(this IEnumerable universeObjects) where T : class - { - foreach (IUniverseObject universeObject in universeObjects) - if (universeObject.BehaviourController.GetBehaviour() is T behaviour) - return behaviour; - - return default; - } - - public static bool TryFindBehaviour(this IEnumerable universeObjects, [NotNullWhen(returnValue: true)] out T? behaviour) where T : class - { - behaviour = FindBehaviour(universeObjects); - return behaviour is not null; - } - - public static void FindBehaviours(this IEnumerable universeObjects, IList behaviours) where T : class - { - behaviours.Clear(); - List cache = []; - - foreach (IUniverseObject universeObject in universeObjects) - { - universeObject.BehaviourController.GetBehaviours(cache); - behaviours.AddRange(cache); - } - } -} diff --git a/Engine.Core/Extensions/UniverseObjectExtensions.cs b/Engine.Core/Extensions/UniverseObjectExtensions.cs index 437a72c..f2603b3 100644 --- a/Engine.Core/Extensions/UniverseObjectExtensions.cs +++ b/Engine.Core/Extensions/UniverseObjectExtensions.cs @@ -14,6 +14,7 @@ public static class UniverseObjectExtensions return universeObject; } + #region Universe Object Search public static T? GetUniverseObject(this IEnumerable universeObjects) where T : class { foreach (IUniverseObject universeObject in universeObjects) @@ -23,17 +24,49 @@ public static class UniverseObjectExtensions return default; } - public static bool TryGetUniverseObject(this IEnumerable universeObjects, [NotNullWhen(returnValue: true)] out T? behaviour) where T : class + public static bool TryGetUniverseObject(this IEnumerable universeObjects, [NotNullWhen(returnValue: true)] out T? universeObject) where T : class { - behaviour = GetUniverseObject(universeObjects); + universeObject = GetUniverseObject(universeObjects); + return universeObject is not null; + } + + public static void GetUniverseObjects(this IEnumerable universeObjects, IList foundUniverseObjects) where T : class + { + foundUniverseObjects.Clear(); + + foreach (IUniverseObject universeObject in universeObjects) + if (universeObject is T @object) + foundUniverseObjects.Add(@object); + } + #endregion + + #region Behaviour Search + public static T? FindBehaviour(this IEnumerable universeObjects) where T : class + { + foreach (IUniverseObject universeObject in universeObjects) + if (universeObject.BehaviourController.GetBehaviour() is T behaviour) + return behaviour; + + return default; + } + + public static bool TryFindBehaviour(this IEnumerable universeObjects, [NotNullWhen(returnValue: true)] out T? behaviour) where T : class + { + behaviour = FindBehaviour(universeObjects); return behaviour is not null; } - public static void GetUniverseObjects(this IEnumerable universeObjects, IList behaviours) where T : class + public static void FindBehaviours(this IEnumerable universeObjects, IList behaviours) where T : class { behaviours.Clear(); + List cache = []; + foreach (IUniverseObject universeObject in universeObjects) - if (universeObject is T @object) - behaviours.Add(@object); + { + universeObject.BehaviourController.GetBehaviours(cache); + foreach (T behaviour in cache) + behaviours.Add(behaviour); + } } + #endregion }