using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using Syntriax.Engine.Core.Abstract; namespace Syntriax.Engine.Core; public static class BehaviourExtensions { public static bool TryFindBehaviour(this IEnumerable gameObjects, [NotNullWhen(returnValue: true)] out T? behaviour) { behaviour = default; foreach (IGameObject gameObject in gameObjects) if (gameObject.BehaviourController.TryGetBehaviour(out behaviour)) return true; return false; } public static void FindBehaviours(this IEnumerable gameObjects, List behaviours) { behaviours.Clear(); List cache = []; foreach (IGameObject gameObject in gameObjects) { gameObject.BehaviourController.GetBehaviours(cache); behaviours.AddRange(cache); } } }