using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using Syntriax.Engine.Core.Abstract; namespace Syntriax.Engine.Core; public static class HierarchyObjectExtensions { public static IHierarchyObject SetHierarchyObject(this IHierarchyObject hierarchyObject, string name) { hierarchyObject.Name = name; return hierarchyObject; } public static T? FindHierarchyObject(this IEnumerable hierarchyObjects) where T : class { foreach (IHierarchyObject hierarchyObject in hierarchyObjects) if (hierarchyObject is T @object) return @object; return default; } public static bool TryFindHierarchyObject(this IEnumerable hierarchyObjects, [NotNullWhen(returnValue: true)] out T? behaviour) where T : class { behaviour = FindHierarchyObject(hierarchyObjects); return behaviour is not null; } public static void FindHierarchyObjects(this IEnumerable hierarchyObjects, List behaviours) where T : class { behaviours.Clear(); foreach (IHierarchyObject hierarchyObject in hierarchyObjects) if (hierarchyObject is T @object) behaviours.Add(@object); } }