From d1a289885b17a635ca22a093625dbd2540f144f2 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Mon, 31 Mar 2025 14:25:00 +0300 Subject: [PATCH] refactor: IGameManager.Enumerable --- Engine.Core/Abstract/IGameManager.cs | 2 +- Engine.Core/Extensions/HierarchyObjectExtensions.cs | 6 +++--- Engine.Core/GameManager.cs | 4 ++++ Engine.Physics2D/PhysicsCoroutineManager.cs | 4 ++-- 4 files changed, 10 insertions(+), 6 deletions(-) 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;