namespace Syntriax.Engine.Core.Abstract; /// <summary> /// Indicates the object is an <see cref="IAssignable"/> with an assignable <see cref="IBehaviourController"/> field. /// </summary> public interface IHasBehaviourController : IAssignable { /// <summary> /// Event triggered when the <see cref="IBehaviourController"/> value has has been assigned a new value. /// </summary> event BehaviourControllerAssignedEventHandler? OnBehaviourControllerAssigned; /// <inheritdoc cref="IBehaviourController" /> IBehaviourController BehaviourController { get; } /// <summary> /// Assign a value to the <see cref="IBehaviourController"/> field of this object. /// </summary> /// <param name="behaviourController">New <see cref="IBehaviourController"/> to assign.</param> /// <returns> /// <see cref="true"/>, if the value given assigned successfully assigned, <see cref="false"/> if not. /// </returns> bool Assign(IBehaviourController behaviourController); delegate void BehaviourControllerAssignedEventHandler(IHasBehaviourController sender); }