diff --git a/Source/Editor/Options/ViewportOptions.cs b/Source/Editor/Options/ViewportOptions.cs
index c780ac06a..94e3ee1fc 100644
--- a/Source/Editor/Options/ViewportOptions.cs
+++ b/Source/Editor/Options/ViewportOptions.cs
@@ -24,83 +24,83 @@ namespace FlaxEditor.Options
[DefaultValue(1.0f), Limit(0.01f, 100.0f)]
[EditorDisplay("General"), EditorOrder(101), Tooltip("The mouse wheel sensitivity applied to zoom in orthographic mode.")]
public float MouseWheelSensitivity { get; set; } = 1.0f;
-
+
///
/// Gets or sets the default movement speed for the viewport camera (must be in range between minimum and maximum movement speed values).
///
[DefaultValue(1.0f), Limit(0.05f, 64.0f)]
[EditorDisplay("Defaults"), EditorOrder(110), Tooltip("The default movement speed for the viewport camera (must be in range between minimum and maximum movement speed values).")]
- public float DefaultMovementSpeed { get; set; } = 1.0f;
+ public float MovementSpeed { get; set; } = 1.0f;
///
/// Gets or sets the default minimum camera movement speed.
///
[DefaultValue(0.05f), Limit(0.05f, 64.0f)]
[EditorDisplay("Defaults"), EditorOrder(111), Tooltip("The default minimum movement speed for the viewport camera.")]
- public float DefaultMinMovementSpeed { get; set; } = 0.05f;
+ public float MinMovementSpeed { get; set; } = 0.05f;
///
/// Gets or sets the default maximum camera movement speed.
///
[DefaultValue(64.0f), Limit(32.0f, 1000.0f)]
[EditorDisplay("Defaults"), EditorOrder(112), Tooltip("The default maximum movement speed for the viewport camera.")]
- public float DefaultMaxMovementSpeed { get; set; } = 64f;
-
+ public float MaxMovementSpeed { get; set; } = 64f;
+
///
/// Gets or sets the default near clipping plane distance for the viewport camera.
///
[DefaultValue(10.0f), Limit(0.001f, 1000.0f)]
[EditorDisplay("Defaults"), EditorOrder(130), Tooltip("The default near clipping plane distance for the viewport camera.")]
- public float DefaultNearPlane { get; set; } = 10.0f;
+ public float NearPlane { get; set; } = 10.0f;
///
/// Gets or sets the default far clipping plane distance for the viewport camera.
///
[DefaultValue(40000.0f), Limit(10.0f)]
[EditorDisplay("Defaults"), EditorOrder(140), Tooltip("The default far clipping plane distance for the viewport camera.")]
- public float DefaultFarPlane { get; set; } = 40000.0f;
+ public float FarPlane { get; set; } = 40000.0f;
///
/// Gets or sets the default field of view angle (in degrees) for the viewport camera.
///
[DefaultValue(60.0f), Limit(35.0f, 160.0f, 0.1f)]
[EditorDisplay("Defaults"), EditorOrder(150), Tooltip("The default field of view angle (in degrees) for the viewport camera.")]
- public float DefaultFieldOfView { get; set; } = 60.0f;
+ public float FieldOfView { get; set; } = 60.0f;
///
/// Gets or sets the default camera orthographic mode.
///
[DefaultValue(false)]
[EditorDisplay("Defaults"), EditorOrder(160), Tooltip("The default camera orthographic mode.")]
- public bool DefaultOrthographicProjection { get; set; } = false;
+ public bool OrthographicProjection { get; set; } = false;
///
/// Gets or sets the default camera orthographic scale (if camera uses orthographic mode).
///
[DefaultValue(5.0f), Limit(0.001f, 100000.0f, 0.1f)]
[EditorDisplay("Defaults"), EditorOrder(170), Tooltip("The default camera orthographic scale (if camera uses orthographic mode).")]
- public float DefaultOrthographicScale { get; set; } = 5.0f;
+ public float OrthographicScale { get; set; } = 5.0f;
///
/// Gets or sets the default panning direction for the viewport camera.
///
[DefaultValue(false)]
[EditorDisplay("Defaults"), EditorOrder(180), Tooltip("The default panning direction for the viewport camera.")]
- public bool DefaultInvertPanning { get; set; } = false;
+ public bool InvertPanning { get; set; } = false;
///
/// Gets or sets the default relative panning mode.
///
[DefaultValue(true)]
[EditorDisplay("Defaults"), EditorOrder(190), Tooltip("The default relative panning mode. Uses distance between camera and target to determine panning speed.")]
- public bool DefaultRelativePanning { get; set; } = true;
+ public bool RelativePanning { get; set; } = true;
///
/// Gets or sets the default panning speed (ignored if relative panning is speed enabled).
///
[DefaultValue(0.8f), Limit(0.01f, 128.0f, 0.1f)]
[EditorDisplay("Defaults"), EditorOrder(200), Tooltip("The default camera panning speed (ignored if relative panning is enabled).")]
- public float DefaultPanningSpeed { get; set; } = 0.8f;
+ public float PanningSpeed { get; set; } = 0.8f;
///
/// Gets or sets the default editor viewport grid scale.
diff --git a/Source/Editor/Viewport/EditorViewport.cs b/Source/Editor/Viewport/EditorViewport.cs
index da327a665..a5abfd2b7 100644
--- a/Source/Editor/Viewport/EditorViewport.cs
+++ b/Source/Editor/Viewport/EditorViewport.cs
@@ -134,6 +134,8 @@ namespace FlaxEditor.Viewport
///
protected ViewportWidgetButton _cameraButton;
+ private readonly Editor _editor;
+
private float _mouseSensitivity;
private float _movementSpeed;
private float _minMovementSpeed;
@@ -455,6 +457,8 @@ namespace FlaxEditor.Viewport
public EditorViewport(SceneRenderTask task, ViewportCamera camera, bool useWidgets)
: base(task)
{
+ _editor = Editor.Instance;
+
_mouseAccelerationScale = 0.1f;
_useMouseFiltering = false;
_useMouseAcceleration = false;
@@ -471,6 +475,30 @@ namespace FlaxEditor.Viewport
SetupViewportOptions();
}
+ // Initialize camera values from cache
+ if (_editor.ProjectCache.TryGetCustomData("CameraMovementSpeedValue", out var cachedState))
+ _movementSpeed = float.Parse(cachedState);
+ if (_editor.ProjectCache.TryGetCustomData("CameraMinMovementSpeedValue", out cachedState))
+ _minMovementSpeed = float.Parse(cachedState);
+ if (_editor.ProjectCache.TryGetCustomData("CameraMaxMovementSpeedValue", out cachedState))
+ _maxMovementSpeed = float.Parse(cachedState);
+ if (_editor.ProjectCache.TryGetCustomData("CameraPanningSpeedValue", out cachedState))
+ _panningSpeed = float.Parse(cachedState);
+ if (_editor.ProjectCache.TryGetCustomData("CameraInvertPanningState", out cachedState))
+ _invertPanning = bool.Parse(cachedState);
+ if (_editor.ProjectCache.TryGetCustomData("CameraRelativePanningState", out cachedState))
+ _relativePanning = bool.Parse(cachedState);
+ if (_editor.ProjectCache.TryGetCustomData("CameraOrthographicState", out cachedState))
+ _isOrtho = bool.Parse(cachedState);
+ if (_editor.ProjectCache.TryGetCustomData("CameraOrthographicSizeValue", out cachedState))
+ _orthoSize = float.Parse(cachedState);
+ if (_editor.ProjectCache.TryGetCustomData("CameraFieldOfViewValue", out cachedState))
+ _fieldOfView = float.Parse(cachedState);
+ if (_editor.ProjectCache.TryGetCustomData("CameraNearPlaneValue", out cachedState))
+ _nearPlane = float.Parse(cachedState);
+ if (_editor.ProjectCache.TryGetCustomData("CameraFarPlaneValue", out cachedState))
+ _farPlane = float.Parse(cachedState);
+
if (useWidgets)
{
#region Camera settings widget
@@ -510,7 +538,7 @@ namespace FlaxEditor.Viewport
};
var maxCamSpeedButton = cameraCM.AddButton("Max Cam Speed");
maxCamSpeedButton.CloseMenuOnClick = false;
- var maxCamSpeedValue = new FloatValueBox(_maxMovementSpeed, xLocationForExtras, 2, 70.0f, _minMovementSpeed, 64.0f, 0.5f)
+ var maxCamSpeedValue = new FloatValueBox(_maxMovementSpeed, xLocationForExtras, 2, 70.0f, _minMovementSpeed, 1000.0f, 0.5f)
{
Parent = maxCamSpeedButton,
};
@@ -824,26 +852,28 @@ namespace FlaxEditor.Viewport
private void SetupViewportOptions()
{
var options = Editor.Instance.Options.Options;
- _minMovementSpeed = options.Viewport.DefaultMinMovementSpeed;
- _movementSpeed = options.Viewport.DefaultMovementSpeed;
- _maxMovementSpeed = options.Viewport.DefaultMaxMovementSpeed;
- _panningSpeed = options.Viewport.DefaultPanningSpeed;
- _invertPanning = options.Viewport.DefaultInvertPanning;
- _relativePanning = options.Viewport.DefaultRelativePanning;
+ _minMovementSpeed = options.Viewport.MinMovementSpeed;
+ _movementSpeed = options.Viewport.MovementSpeed;
+ _maxMovementSpeed = options.Viewport.MaxMovementSpeed;
+ _panningSpeed = options.Viewport.PanningSpeed;
+ _invertPanning = options.Viewport.InvertPanning;
+ _relativePanning = options.Viewport.RelativePanning;
- _isOrtho = options.Viewport.DefaultOrthographicProjection;
- _orthoSize = options.Viewport.DefaultOrthographicScale;
- _fieldOfView = options.Viewport.DefaultFieldOfView;
- _nearPlane = options.Viewport.DefaultNearPlane;
- _farPlane = options.Viewport.DefaultFarPlane;
+ _isOrtho = options.Viewport.OrthographicProjection;
+ _orthoSize = options.Viewport.OrthographicScale;
+ _fieldOfView = options.Viewport.FieldOfView;
+ _nearPlane = options.Viewport.NearPlane;
+ _farPlane = options.Viewport.FarPlane;
OnEditorOptionsChanged(options);
}
-
+
private void OnMovementSpeedChanged(FloatValueBox control)
{
var value = Mathf.Clamp(control.Value, _minMovementSpeed, _maxMovementSpeed);
MovementSpeed = value;
+
+ _editor.ProjectCache.SetCustomData("CameraMovementSpeedValue", _movementSpeed.ToString());
}
private void OnMinMovementSpeedChanged(FloatValueBox control)
@@ -853,6 +883,8 @@ namespace FlaxEditor.Viewport
if (_movementSpeed < value)
_movementSpeed = value;
+
+ _editor.ProjectCache.SetCustomData("CameraMinMovementSpeedValue", _minMovementSpeed.ToString());
}
private void OnMaxMovementSpeedChanged(FloatValueBox control)
@@ -862,21 +894,26 @@ namespace FlaxEditor.Viewport
if (_movementSpeed > value)
_movementSpeed = value;
+
+ _editor.ProjectCache.SetCustomData("CameraMaxMovementSpeedValue", _maxMovementSpeed.ToString());
}
private void OnPanningSpeedChanged(FloatValueBox control)
{
_panningSpeed = control.Value;
+ _editor.ProjectCache.SetCustomData("CameraPanningSpeedValue", _panningSpeed.ToString());
}
private void OnRelativePanningToggled(Control control)
{
_relativePanning = !_relativePanning;
+ _editor.ProjectCache.SetCustomData("CameraRelativePanningState", _relativePanning.ToString());
}
private void OnInvertPanningToggled(Control control)
{
_invertPanning = !_invertPanning;
+ _editor.ProjectCache.SetCustomData("CameraInvertPanningState", _invertPanning.ToString());
}
@@ -889,6 +926,7 @@ namespace FlaxEditor.Viewport
private void OnFieldOfViewChanged(FloatValueBox control)
{
_fieldOfView = control.Value;
+ _editor.ProjectCache.SetCustomData("CameraFieldOfViewValue", _fieldOfView.ToString());
}
private void OnOrthographicModeToggled(Control control)
@@ -900,21 +938,26 @@ namespace FlaxEditor.Viewport
var orient = ViewOrientation;
OrientViewport(ref orient);
}
+
+ _editor.ProjectCache.SetCustomData("CameraOrthographicState", _isOrtho.ToString());
}
private void OnOrthographicSizeChanged(FloatValueBox control)
{
_orthoSize = control.Value;
+ _editor.ProjectCache.SetCustomData("CameraOrthographicSizeValue", _orthoSize.ToString());
}
private void OnNearPlaneChanged(FloatValueBox control)
{
_nearPlane = control.Value;
+ _editor.ProjectCache.SetCustomData("CameraNearPlaneValue", _nearPlane.ToString());
}
private void OnFarPlaneChanged(FloatValueBox control)
{
_farPlane = control.Value;
+ _editor.ProjectCache.SetCustomData("CameraNearPlaneValue", _farPlane.ToString());
}
///