feat: FindBehaviour/s
This commit is contained in:
parent
514e5b5762
commit
07666359f2
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue