diff --git a/Engine.Core/Abstract/IGameManager.cs b/Engine.Core/Abstract/IGameManager.cs
index 8805249..f573639 100644
--- a/Engine.Core/Abstract/IGameManager.cs
+++ b/Engine.Core/Abstract/IGameManager.cs
@@ -5,7 +5,7 @@ namespace Syntriax.Engine.Core.Abstract;
///
/// Represents a game world responsible for managing s.
///
-public interface IGameManager : IEntity
+public interface IGameManager : IEntity, IEnumerable
{
///
/// Event triggered when is called on the .
diff --git a/Engine.Core/Extensions/HierarchyObjectExtensions.cs b/Engine.Core/Extensions/HierarchyObjectExtensions.cs
index ae4de7e..d99823d 100644
--- a/Engine.Core/Extensions/HierarchyObjectExtensions.cs
+++ b/Engine.Core/Extensions/HierarchyObjectExtensions.cs
@@ -13,7 +13,7 @@ public static class HierarchyObjectExtensions
return hierarchyObject;
}
- public static T? FindObject(this IEnumerable hierarchyObjects) where T : class
+ public static T? FindHierarchyObject(this IEnumerable hierarchyObjects) where T : class
{
foreach (IHierarchyObject hierarchyObject in hierarchyObjects)
if (hierarchyObject is T @object)
@@ -22,9 +22,9 @@ public static class HierarchyObjectExtensions
return default;
}
- public static bool TryFindObject(this IEnumerable hierarchyObjects, [NotNullWhen(returnValue: true)] out T? behaviour) where T : class
+ public static bool TryFindHierarchyObject(this IEnumerable hierarchyObjects, [NotNullWhen(returnValue: true)] out T? behaviour) where T : class
{
- behaviour = FindObject(hierarchyObjects);
+ behaviour = FindHierarchyObject(hierarchyObjects);
return behaviour is not null;
}
diff --git a/Engine.Core/GameManager.cs b/Engine.Core/GameManager.cs
index 8d1b597..74e89db 100644
--- a/Engine.Core/GameManager.cs
+++ b/Engine.Core/GameManager.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections;
using System.Collections.Generic;
using Syntriax.Engine.Core.Abstract;
@@ -143,4 +144,7 @@ public class GameManager : BaseEntity, IGameManager
if (sender is IHierarchyObject hierarchyObject)
Remove(hierarchyObject);
}
+
+ public IEnumerator GetEnumerator() => _hierarchyObjects.GetEnumerator();
+ IEnumerator IEnumerable.GetEnumerator() => _hierarchyObjects.GetEnumerator();
}
diff --git a/Engine.Physics2D/PhysicsCoroutineManager.cs b/Engine.Physics2D/PhysicsCoroutineManager.cs
index 8daadd0..81173c3 100644
--- a/Engine.Physics2D/PhysicsCoroutineManager.cs
+++ b/Engine.Physics2D/PhysicsCoroutineManager.cs
@@ -25,7 +25,7 @@ public class PhysicsCoroutineManager : HierarchyObject
protected override void OnEnteringHierarchy(IGameManager gameManager)
{
- physicsEngine = gameManager.HierarchyObjects.FindObject();
+ physicsEngine = gameManager.FindHierarchyObject();
if (physicsEngine is IPhysicsEngine2D foundPhysicsEngine)
foundPhysicsEngine.OnPhysicsStep += OnPhysicsStep;
else
@@ -56,7 +56,7 @@ public class PhysicsCoroutineManager : HierarchyObject
if (GameManager is not IGameManager gameManager)
return;
- physicsEngine = gameManager.HierarchyObjects.FindObject();
+ physicsEngine = gameManager.FindHierarchyObject();
if (physicsEngine is IPhysicsEngine2D foundPhysicsEngine)
{
foundPhysicsEngine.OnPhysicsStep += OnPhysicsStep;