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>
/// Represents a game world responsible for managing <see cref="IHierarchyObject"/>s.
/// </summary>
public interface IGameManager : IEntity
public interface IGameManager : IEntity, IEnumerable<IHierarchyObject>
{
/// <summary>
/// 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;
}
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)
if (hierarchyObject is T @object)
@ -22,9 +22,9 @@ public static class HierarchyObjectExtensions
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;
}

View File

@ -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<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)
{
physicsEngine = gameManager.HierarchyObjects.FindObject<IPhysicsEngine2D>();
physicsEngine = gameManager.FindHierarchyObject<IPhysicsEngine2D>();
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<IPhysicsEngine2D>();
physicsEngine = gameManager.FindHierarchyObject<IPhysicsEngine2D>();
if (physicsEngine is IPhysicsEngine2D foundPhysicsEngine)
{
foundPhysicsEngine.OnPhysicsStep += OnPhysicsStep;