From b4b94ac8a099e0d16b150cd928a6e88e923b9cfd Mon Sep 17 00:00:00 2001 From: PouleyKetchoupp Date: Wed, 20 Oct 2021 09:01:26 -0700 Subject: [PATCH] Fix errors in mouse detection when removing collision object from tree Now behaves the same way as ui elements, mouse exit is skipped when the object is removed from the tree. --- scene/main/viewport.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 943a25d1efe..78d6b8d5a5a 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -2687,6 +2687,10 @@ void Viewport::_drop_physics_mouseover(bool p_paused_only) { if (o) { CollisionObject2D *co = Object::cast_to(o); if (co) { + if (!co->is_inside_tree()) { + to_erase.push_back(E); + continue; + } if (p_paused_only && co->can_process()) { continue; } @@ -2705,7 +2709,9 @@ void Viewport::_drop_physics_mouseover(bool p_paused_only) { if (physics_object_over) { CollisionObject *co = Object::cast_to(ObjectDB::get_instance(physics_object_over)); if (co) { - if (!(p_paused_only && co->can_process())) { + if (!co->is_inside_tree()) { + physics_object_over = physics_object_capture = 0; + } else if (!(p_paused_only && co->can_process())) { co->_mouse_exit(); physics_object_over = physics_object_capture = 0; }