feat: GameObjects are now Connected to a Single IGameManager

This commit is contained in:
2024-01-30 12:26:17 +03:00
parent 4000e761a7
commit 1438b19e35
4 changed files with 44 additions and 1 deletions

View File

@@ -0,0 +1,26 @@
using System;
namespace Syntriax.Engine.Core.Abstract;
/// <summary>
/// Indicates the object is an <see cref="IAssignable"/> with an assignable <see cref="ITransform"/> field.
/// </summary>
public interface IAssignableGameManager : IAssignable
{
/// <summary>
/// Callback triggered when the <see cref="IGameManager"/> value has has been assigned a new value.
/// </summary>
Action<IAssignableGameManager>? OnGameManagerAssigned { get; set; }
/// <inheritdoc cref="IGameManager" />
IGameManager GameManager { get; }
/// <summary>
/// Assign a value to the <see cref="IGameManager"/> field of this object
/// </summary>
/// <param name="gameManager">New <see cref="IGameManager"/> to assign.</param>
/// <returns>
/// <see cref="true"/>, if the value given assigned successfully assigned, <see cref="false"/> if not.
/// </returns>
bool Assign(IGameManager gameManager);
}

View File

@@ -2,7 +2,7 @@ using System;
namespace Syntriax.Engine.Core.Abstract;
public interface IGameObject : IEntity, IAssignableTransform, IAssignableBehaviourController, INameable, IInitialize
public interface IGameObject : IEntity, IAssignableGameManager, IAssignableTransform, IAssignableBehaviourController, INameable, IInitialize
{
Action<IGameObject>? OnUpdated { get; set; }