diff --git a/Source/Editor/Viewport/Cameras/FPSCamera.cs b/Source/Editor/Viewport/Cameras/FPSCamera.cs
index 95ae37ffb..5058bbc19 100644
--- a/Source/Editor/Viewport/Cameras/FPSCamera.cs
+++ b/Source/Editor/Viewport/Cameras/FPSCamera.cs
@@ -160,8 +160,8 @@ namespace FlaxEditor.Viewport.Cameras
if (IsAnimatingMove)
return;
- EditorViewport.Input input;
- Viewport.GetInput(out input);
+ Viewport.GetInput(out var input);
+ Viewport.GetPrevInput(out var prevInput);
var mainViewport = Viewport as MainEditorGizmoViewport;
bool isUsingGizmo = mainViewport != null && mainViewport.TransformGizmo.ActiveAxis != TransformGizmo.Axis.None;
@@ -202,7 +202,7 @@ namespace FlaxEditor.Viewport.Cameras
}
// Rotate or orbit
- if (input.IsRotating || (input.IsOrbiting && !isUsingGizmo))
+ if (input.IsRotating || (input.IsOrbiting && !isUsingGizmo && prevInput.IsOrbiting))
{
yaw += mouseDelta.X;
pitch += mouseDelta.Y;
diff --git a/Source/Editor/Viewport/EditorViewport.cs b/Source/Editor/Viewport/EditorViewport.cs
index 5b120f33f..42385fd5e 100644
--- a/Source/Editor/Viewport/EditorViewport.cs
+++ b/Source/Editor/Viewport/EditorViewport.cs
@@ -699,6 +699,15 @@ namespace FlaxEditor.Viewport
input = _input;
}
+ ///
+ /// Gets the input state data (from the previous update).
+ ///
+ /// The input.
+ public void GetPrevInput(out Input input)
+ {
+ input = _prevInput;
+ }
+
///
/// Creates the projection matrix.
///