diff --git a/bin/Data/Scripts/Editor/EditorUI.as b/bin/Data/Scripts/Editor/EditorUI.as index 04f12269b..26569beaa 100644 --- a/bin/Data/Scripts/Editor/EditorUI.as +++ b/bin/Data/Scripts/Editor/EditorUI.as @@ -1139,33 +1139,36 @@ void HandleKeyDown(StringHash eventType, VariantMap& eventData) } else if (key == KEY_KP_1 && ui.focusElement is null) // Front view { - Vector3 pos = cameraNode.position; - pos.z = -pos.length * viewDirection; - pos.x = 0; - pos.y = 0; - cameraNode.position = pos; + Vector3 center = Vector3(0,0,0); + if (selectedNodes.length > 0 || selectedComponents.length > 0) + center = SelectedNodesCenterPoint(); + + Vector3 pos = cameraNode.worldPosition - center; + cameraNode.worldPosition = center - Vector3(0.0, 0.0, pos.length * viewDirection); cameraNode.direction = Vector3(0, 0, viewDirection); ReacquireCameraYawPitch(); } else if (key == KEY_KP_3 && ui.focusElement is null) // Side view { - Vector3 pos = cameraNode.position; - pos.x = pos.length * viewDirection; - pos.y = 0; - pos.z = 0; - cameraNode.position = pos; + Vector3 center = Vector3(0,0,0); + if (selectedNodes.length > 0 || selectedComponents.length > 0) + center = SelectedNodesCenterPoint(); + + Vector3 pos = cameraNode.worldPosition - center; + cameraNode.worldPosition = center - Vector3(pos.length * -viewDirection, 0.0, 0.0); cameraNode.direction = Vector3(-viewDirection, 0, 0); ReacquireCameraYawPitch(); } else if (key == KEY_KP_7 && ui.focusElement is null) // Top view { - Vector3 pos = cameraNode.position; - pos.y = pos.length * viewDirection; - pos.x = 0; - pos.z = 0; - cameraNode.position = pos; + Vector3 center = Vector3(0,0,0); + if (selectedNodes.length > 0 || selectedComponents.length > 0) + center = SelectedNodesCenterPoint(); + + Vector3 pos = cameraNode.worldPosition - center; + cameraNode.worldPosition = center - Vector3(0.0, pos.length * -viewDirection, 0.0); cameraNode.direction = Vector3(0, -viewDirection, 0); ReacquireCameraYawPitch(); }