using Syntriax.Engine.Core.Abstract; namespace Syntriax.Engine.Core; public abstract class Behaviour2D : Behaviour, IBehaviour2D { public ITransform2D Transform { get; private set; } = null!; protected sealed override void OnInitialize(IInitializable _) { Transform = BehaviourController.GetBehaviourInChildren() ?? throw new($"{HierarchyObject.Name} does not contain any {nameof(ITransform2D)}"); base.OnInitialize(_); } protected sealed override void OnFinalize(IInitializable _) { Transform = null!; base.OnFinalize(_); } protected sealed override void OnUnassign(IAssignable assignable) => base.OnUnassign(assignable); protected sealed override void PreUpdate(IBehaviourController behaviourController) => base.PreUpdate(behaviourController); protected sealed override void FirstActiveFrame() => base.FirstActiveFrame(); protected sealed override void Update(IBehaviourController behaviourController) => base.Update(behaviourController); protected sealed override void PreDraw(IBehaviourController behaviourController) => base.PreDraw(behaviourController); protected sealed override void EnteredHierarchy(IHierarchyObject sender, IGameManager gameManager) => base.EnteredHierarchy(sender, gameManager); protected sealed override void ExitedHierarchy(IHierarchyObject sender, IGameManager gameManager) => base.ExitedHierarchy(sender, gameManager); }