feat: FindBehaviour/s

This commit is contained in:
Syntriax 2024-01-30 12:36:02 +03:00
parent 514e5b5762
commit 07666359f2
1 changed files with 32 additions and 0 deletions

View File

@ -0,0 +1,32 @@
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<T>(this IEnumerable<IGameObject> 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<T>(this IEnumerable<IGameObject> gameObjects, List<T> behaviours)
{
behaviours.Clear();
List<T> cache = [];
foreach (IGameObject gameObject in gameObjects)
{
gameObject.BehaviourController.GetBehaviours(cache);
behaviours.AddRange(cache);
}
}
}