diff --git a/Source/Editor/Viewport/EditorViewport.cs b/Source/Editor/Viewport/EditorViewport.cs index de4311452..399a71418 100644 --- a/Source/Editor/Viewport/EditorViewport.cs +++ b/Source/Editor/Viewport/EditorViewport.cs @@ -217,7 +217,7 @@ namespace FlaxEditor.Viewport _movementSpeed = value; if (_cameraButton != null) - _cameraButton.Text = _movementSpeed.ToString(); + _cameraButton.Text = string.Format("{0:0.##}", _movementSpeed); } } @@ -495,7 +495,7 @@ namespace FlaxEditor.Viewport // Initialize camera values from cache if (_editor.ProjectCache.TryGetCustomData("CameraMovementSpeedValue", out var cachedState)) - _movementSpeed = float.Parse(cachedState); + MovementSpeed = float.Parse(cachedState); if (_editor.ProjectCache.TryGetCustomData("CameraMinMovementSpeedValue", out cachedState)) _minMovementSpeed = float.Parse(cachedState); if (_editor.ProjectCache.TryGetCustomData("CameraMaxMovementSpeedValue", out cachedState)) @@ -533,7 +533,7 @@ namespace FlaxEditor.Viewport // Camera settings menu var cameraCM = new ContextMenu(); - _cameraButton = new ViewportWidgetButton(_movementSpeed.ToString(), Editor.Instance.Icons.Camera64, cameraCM) + _cameraButton = new ViewportWidgetButton(string.Format("{0:0.##}", _movementSpeed), Editor.Instance.Icons.Camera64, cameraCM, false, Style.Current.FontMedium.MeasureText("000.00").X) { Tag = this, TooltipText = "Camera Settings", @@ -546,7 +546,7 @@ namespace FlaxEditor.Viewport { Checked = !_isOrtho, TooltipText = "Toggle Orthographic/Perspective Mode", - Parent = _cameraWidget, + Parent = _cameraWidget }; _orthographicModeButton.Toggled += OnOrthographicModeToggled; @@ -555,7 +555,7 @@ namespace FlaxEditor.Viewport camSpeedButton.CloseMenuOnClick = false; var camSpeedValue = new FloatValueBox(_movementSpeed, xLocationForExtras, 2, 70.0f, _minMovementSpeed, _maxMovementSpeed, 0.5f) { - Parent = camSpeedButton, + Parent = camSpeedButton }; camSpeedValue.ValueChanged += () => OnMovementSpeedChanged(camSpeedValue); @@ -566,13 +566,13 @@ namespace FlaxEditor.Viewport minCamSpeedButton.CloseMenuOnClick = false; var minCamSpeedValue = new FloatValueBox(_minMovementSpeed, xLocationForExtras, 2, 70.0f, 0.05f, _maxMovementSpeed, 0.5f) { - Parent = minCamSpeedButton, + Parent = minCamSpeedButton }; var maxCamSpeedButton = cameraCM.AddButton("Max Cam Speed"); maxCamSpeedButton.CloseMenuOnClick = false; var maxCamSpeedValue = new FloatValueBox(_maxMovementSpeed, xLocationForExtras, 2, 70.0f, _minMovementSpeed, 1000.0f, 0.5f) { - Parent = maxCamSpeedButton, + Parent = maxCamSpeedButton }; minCamSpeedValue.ValueChanged += () => @@ -898,7 +898,7 @@ namespace FlaxEditor.Viewport { var options = Editor.Instance.Options.Options; _minMovementSpeed = options.Viewport.MinMovementSpeed; - _movementSpeed = options.Viewport.MovementSpeed; + MovementSpeed = options.Viewport.MovementSpeed; _maxMovementSpeed = options.Viewport.MaxMovementSpeed; _useCameraEasing = options.Viewport.UseCameraEasing; _panningSpeed = options.Viewport.PanningSpeed; @@ -929,7 +929,7 @@ namespace FlaxEditor.Viewport _minMovementSpeed = value; if (_movementSpeed < value) - _movementSpeed = value; + MovementSpeed = value; OnCameraMovementProgressChanged(); _editor.ProjectCache.SetCustomData("CameraMinMovementSpeedValue", _minMovementSpeed.ToString()); @@ -941,7 +941,7 @@ namespace FlaxEditor.Viewport _maxMovementSpeed = value; if (_movementSpeed > value) - _movementSpeed = value; + MovementSpeed = value; OnCameraMovementProgressChanged(); _editor.ProjectCache.SetCustomData("CameraMaxMovementSpeedValue", _maxMovementSpeed.ToString()); @@ -1105,16 +1105,16 @@ namespace FlaxEditor.Viewport if (_useCameraEasing) { - _easedMovementProgress = Mathf.Clamp(_easedMovementProgress + speedDelta, 0.0f, 1.0f); + _easedMovementProgress = Mathf.Saturate(_easedMovementProgress + speedDelta); speed = Mathf.InterpEaseInOut(_minMovementSpeed, _maxMovementSpeed, _easedMovementProgress, _cameraEasingDegree); } else { - _linearMovementProgress = Mathf.Clamp(_linearMovementProgress + speedDelta, 0.0f, 1.0f); + _linearMovementProgress = Mathf.Saturate(_linearMovementProgress + speedDelta); speed = Mathf.Lerp(_minMovementSpeed, _maxMovementSpeed, _linearMovementProgress); } - MovementSpeed = Mathf.Round(speed * 100) / 100; + MovementSpeed = speed; } private void OnEditorOptionsChanged(EditorOptions options) diff --git a/Source/Editor/Viewport/Widgets/ViewportWidgetButton.cs b/Source/Editor/Viewport/Widgets/ViewportWidgetButton.cs index 481bc3f1b..5ff5cdb6d 100644 --- a/Source/Editor/Viewport/Widgets/ViewportWidgetButton.cs +++ b/Source/Editor/Viewport/Widgets/ViewportWidgetButton.cs @@ -19,6 +19,7 @@ namespace FlaxEditor.Viewport.Widgets private bool _checked; private bool _autoCheck; private bool _isMosueDown; + private float _forcedTextWidth; /// /// Event fired when user toggles checked state. @@ -63,14 +64,16 @@ namespace FlaxEditor.Viewport.Widgets /// The text. /// The icon. /// The context menu. - /// if set to true will be automatic checked on mouse click. - public ViewportWidgetButton(string text, SpriteHandle icon, ContextMenu contextMenu = null, bool autoCheck = false) - : base(0, 0, CalculateButtonWidth(0, icon.IsValid), ViewportWidgetsContainer.WidgetsHeight) + /// If set to true will be automatic checked on mouse click. + /// Forces the text to be drawn with the specified width. + public ViewportWidgetButton(string text, SpriteHandle icon, ContextMenu contextMenu = null, bool autoCheck = false, float textWidth = 0.0f) + : base(0, 0, CalculateButtonWidth(textWidth, icon.IsValid), ViewportWidgetsContainer.WidgetsHeight) { _text = text; Icon = icon; _cm = contextMenu; _autoCheck = autoCheck; + _forcedTextWidth = textWidth; if (_cm != null) _cm.VisibleChanged += CmOnVisibleChanged; @@ -160,7 +163,7 @@ namespace FlaxEditor.Viewport.Widgets var style = Style.Current; if (style != null && style.FontMedium) - Width = CalculateButtonWidth(style.FontMedium.MeasureText(_text).X, Icon.IsValid); + Width = CalculateButtonWidth(_forcedTextWidth > 0.0f ? _forcedTextWidth : style.FontMedium.MeasureText(_text).X, Icon.IsValid); } } }