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; }