refactor: IGameManager.Enumerable<IHierarchyObject>

This commit is contained in:
Syntriax 2025-03-31 14:25:00 +03:00
parent 6170de4a73
commit d1a289885b
4 changed files with 10 additions and 6 deletions

View File

@ -5,7 +5,7 @@ namespace Syntriax.Engine.Core.Abstract;
/// <summary> /// <summary>
/// Represents a game world responsible for managing <see cref="IHierarchyObject"/>s. /// Represents a game world responsible for managing <see cref="IHierarchyObject"/>s.
/// </summary> /// </summary>
public interface IGameManager : IEntity public interface IGameManager : IEntity, IEnumerable<IHierarchyObject>
{ {
/// <summary> /// <summary>
/// Event triggered when <see cref="Update(double)"/> is called on the <see cref="IGameManager"/>. /// Event triggered when <see cref="Update(double)"/> is called on the <see cref="IGameManager"/>.

View File

@ -13,7 +13,7 @@ public static class HierarchyObjectExtensions
return hierarchyObject; return hierarchyObject;
} }
public static T? FindObject<T>(this IEnumerable<IHierarchyObject> hierarchyObjects) where T : class public static T? FindHierarchyObject<T>(this IEnumerable<IHierarchyObject> hierarchyObjects) where T : class
{ {
foreach (IHierarchyObject hierarchyObject in hierarchyObjects) foreach (IHierarchyObject hierarchyObject in hierarchyObjects)
if (hierarchyObject is T @object) if (hierarchyObject is T @object)
@ -22,9 +22,9 @@ public static class HierarchyObjectExtensions
return default; return default;
} }
public static bool TryFindObject<T>(this IEnumerable<IHierarchyObject> hierarchyObjects, [NotNullWhen(returnValue: true)] out T? behaviour) where T : class public static bool TryFindHierarchyObject<T>(this IEnumerable<IHierarchyObject> hierarchyObjects, [NotNullWhen(returnValue: true)] out T? behaviour) where T : class
{ {
behaviour = FindObject<T>(hierarchyObjects); behaviour = FindHierarchyObject<T>(hierarchyObjects);
return behaviour is not null; return behaviour is not null;
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using Syntriax.Engine.Core.Abstract; using Syntriax.Engine.Core.Abstract;
@ -143,4 +144,7 @@ public class GameManager : BaseEntity, IGameManager
if (sender is IHierarchyObject hierarchyObject) if (sender is IHierarchyObject hierarchyObject)
Remove(hierarchyObject); Remove(hierarchyObject);
} }
public IEnumerator<IHierarchyObject> GetEnumerator() => _hierarchyObjects.GetEnumerator();
IEnumerator IEnumerable.GetEnumerator() => _hierarchyObjects.GetEnumerator();
} }

View File

@ -25,7 +25,7 @@ public class PhysicsCoroutineManager : HierarchyObject
protected override void OnEnteringHierarchy(IGameManager gameManager) protected override void OnEnteringHierarchy(IGameManager gameManager)
{ {
physicsEngine = gameManager.HierarchyObjects.FindObject<IPhysicsEngine2D>(); physicsEngine = gameManager.FindHierarchyObject<IPhysicsEngine2D>();
if (physicsEngine is IPhysicsEngine2D foundPhysicsEngine) if (physicsEngine is IPhysicsEngine2D foundPhysicsEngine)
foundPhysicsEngine.OnPhysicsStep += OnPhysicsStep; foundPhysicsEngine.OnPhysicsStep += OnPhysicsStep;
else else
@ -56,7 +56,7 @@ public class PhysicsCoroutineManager : HierarchyObject
if (GameManager is not IGameManager gameManager) if (GameManager is not IGameManager gameManager)
return; return;
physicsEngine = gameManager.HierarchyObjects.FindObject<IPhysicsEngine2D>(); physicsEngine = gameManager.FindHierarchyObject<IPhysicsEngine2D>();
if (physicsEngine is IPhysicsEngine2D foundPhysicsEngine) if (physicsEngine is IPhysicsEngine2D foundPhysicsEngine)
{ {
foundPhysicsEngine.OnPhysicsStep += OnPhysicsStep; foundPhysicsEngine.OnPhysicsStep += OnPhysicsStep;