using System; using System.Collections.Generic; namespace Syntriax.Engine.Core.Abstract; public interface IGameManager : IEntity, IEnumerable { Action? OnGameObjectRegistered { get; set; } Action? OnGameObjectUnRegistered { get; set; } IReadOnlyList GameObjects { get; } void RegisterGameObject(IGameObject gameObject); T InstantiateGameObject(params object?[]? args) where T : class, IGameObject; IGameObject RemoveGameObject(IGameObject gameObject); void Update(EngineTime time); void PreDraw(); }