diff --git a/scene/3d/portal.cpp b/scene/3d/portal.cpp index 48ee07b9aff..deb6aeefa6b 100644 --- a/scene/3d/portal.cpp +++ b/scene/3d/portal.cpp @@ -167,6 +167,15 @@ void Portal::_notification(int p_what) { case NOTIFICATION_TRANSFORM_CHANGED: { // keep the world points and the visual server up to date portal_update(); + + // In theory we shouldn't need to update the gizmo when the transform + // changes .. HOWEVER, the portal margin is displayed in world space units, + // back transformed to model space. + // If the Z scale is changed by the user, the portal margin length can become incorrect + // and needs 'resyncing' to the global scale of the portal node. + // We really only need to do this when Z scale is changed, but it is easier codewise + // to always change it, unless we have evidence this is a performance problem. + update_gizmo(); } break; } }