From e7ca96e2e2a3cd2c0673efdf6357c2eba5b18a53 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Thu, 25 Jan 2024 21:52:56 +0300 Subject: [PATCH] fix: Collider2D Not Registering Rigidbody2D Attached --- Engine.Physics2D/Collider2DBehaviourBase.cs | 26 ++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/Engine.Physics2D/Collider2DBehaviourBase.cs b/Engine.Physics2D/Collider2DBehaviourBase.cs index c796770..4dea627 100644 --- a/Engine.Physics2D/Collider2DBehaviourBase.cs +++ b/Engine.Physics2D/Collider2DBehaviourBase.cs @@ -23,5 +23,29 @@ public abstract class Collider2DBehaviourBase : BehaviourOverride, ICollider2D public abstract void Recalculate(); - protected override void OnInitialize() => BehaviourController.TryGetBehaviour(out _rigidBody2D); + protected override void OnInitialize() + { + BehaviourController.TryGetBehaviour(out _rigidBody2D); + + BehaviourController.OnBehaviourAdded += OnBehaviourAddedToController; + BehaviourController.OnBehaviourRemoved += OnBehaviourRemovedFromController; + } + + private void OnBehaviourAddedToController(IBehaviourController _, IBehaviour behaviour) + { + if (behaviour is IRigidBody2D rigidbody) + _rigidBody2D = rigidbody; + } + + private void OnBehaviourRemovedFromController(IBehaviourController _, IBehaviour behaviour) + { + if (behaviour is IRigidBody2D _) + _rigidBody2D = null; + } + + protected override void OnFinalize() + { + BehaviourController.OnBehaviourAdded -= OnBehaviourAddedToController; + BehaviourController.OnBehaviourRemoved -= OnBehaviourRemovedFromController; ; + } }