feat: IBehaviourController.GetBehaviour
This commit is contained in:
parent
de336d0ee5
commit
6c36d4d21d
|
@ -51,6 +51,15 @@ public interface IBehaviourController : IAssignableGameObject, IEnumerable<IBeha
|
|||
/// <returns>The instantiated <see cref="IBehaviour"/> class after initialization.</returns>
|
||||
T AddBehaviour<T>(params object?[]? args) where T : class, IBehaviour;
|
||||
|
||||
/// <summary>
|
||||
/// Looks up and returns the <see cref="IBehaviour"/> that is controlled by the <see cref="IBehaviourController"/>.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">An implemented class or <see cref="interface"/></typeparam>
|
||||
/// <returns>
|
||||
/// <see cref="T"/>, if the type of <see cref="IBehaviour"/> is present in the <see cref="IBehaviourController"/>, <see cref="null"/> if not.
|
||||
/// </returns>
|
||||
T? GetBehaviour<T>();
|
||||
|
||||
/// <summary>
|
||||
/// Looks up and tries to get the <see cref="IBehaviour"/> that is controlled by the <see cref="IBehaviourController"/>.
|
||||
/// </summary>
|
||||
|
|
|
@ -41,19 +41,19 @@ public class BehaviourController : IBehaviourController
|
|||
public T AddBehaviour<T>(params object?[]? args) where T : class, IBehaviour
|
||||
=> AddBehaviour(new Factory.BehaviourFactory().Instantiate<T>(_gameObject, args));
|
||||
|
||||
public bool TryGetBehaviour<T>([NotNullWhen(returnValue: true)] out T? behaviour)
|
||||
public T? GetBehaviour<T>()
|
||||
{
|
||||
foreach (var behaviourItem in behaviours)
|
||||
{
|
||||
if (behaviourItem is not T result)
|
||||
continue;
|
||||
if (behaviourItem is T result)
|
||||
return result;
|
||||
|
||||
behaviour = result;
|
||||
return true;
|
||||
}
|
||||
return default;
|
||||
}
|
||||
|
||||
behaviour = default;
|
||||
return false;
|
||||
public bool TryGetBehaviour<T>([NotNullWhen(returnValue: true)] out T? behaviour)
|
||||
{
|
||||
behaviour = GetBehaviour<T>();
|
||||
return behaviour is not null;
|
||||
}
|
||||
|
||||
public IList<T> GetBehaviours<T>()
|
||||
|
|
Loading…
Reference in New Issue