Development Merge 2025.04.01 #1
@ -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"/>.
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user