Update movement speed formatting
* add property for movement speed text format * add additional checks to camera speed progress calculation * round movement speed to make it visually more appealing in the context menu
This commit is contained in:
@@ -178,6 +178,7 @@ namespace FlaxEditor.Viewport
|
|||||||
protected Float2 _mouseDelta;
|
protected Float2 _mouseDelta;
|
||||||
|
|
||||||
// Camera
|
// Camera
|
||||||
|
|
||||||
private ViewportCamera _camera;
|
private ViewportCamera _camera;
|
||||||
private float _yaw;
|
private float _yaw;
|
||||||
private float _pitch;
|
private float _pitch;
|
||||||
@@ -205,6 +206,23 @@ namespace FlaxEditor.Viewport
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public float MouseWheelZoomSpeedFactor = 1;
|
public float MouseWheelZoomSpeedFactor = 1;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Format of the text for the camera move speed.
|
||||||
|
/// </summary>
|
||||||
|
private string MovementSpeedTextFormat {
|
||||||
|
get {
|
||||||
|
if (Mathf.Abs(_movementSpeed - _maxMovementSpeed) < Mathf.Epsilon || Mathf.Abs(_movementSpeed - _minMovementSpeed) < Mathf.Epsilon)
|
||||||
|
return "{0:0.##}";
|
||||||
|
|
||||||
|
if (_movementSpeed < 10.0f)
|
||||||
|
return "{0:0.00}";
|
||||||
|
else if (_movementSpeed < 100.0f)
|
||||||
|
return "{0:0.0}";
|
||||||
|
else
|
||||||
|
return "{0:#}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the camera movement speed.
|
/// Gets or sets the camera movement speed.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -215,9 +233,8 @@ namespace FlaxEditor.Viewport
|
|||||||
{
|
{
|
||||||
_movementSpeed = value;
|
_movementSpeed = value;
|
||||||
|
|
||||||
var format = (_movementSpeed < 1.0f) ? "{0:0.##}" : "{0:#}";
|
|
||||||
if (_cameraButton != null)
|
if (_cameraButton != null)
|
||||||
_cameraButton.Text = string.Format(format, _movementSpeed);
|
_cameraButton.Text = string.Format(MovementSpeedTextFormat, _movementSpeed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -527,14 +544,14 @@ namespace FlaxEditor.Viewport
|
|||||||
var largestText = "Relative Panning";
|
var largestText = "Relative Panning";
|
||||||
var textSize = Style.Current.FontMedium.MeasureText(largestText);
|
var textSize = Style.Current.FontMedium.MeasureText(largestText);
|
||||||
var xLocationForExtras = textSize.X + 5;
|
var xLocationForExtras = textSize.X + 5;
|
||||||
var format = (_movementSpeed < 1.0f) ? "{0:0.##}" : "{0:#}";
|
var cameraSpeedTextWidth = Style.Current.FontMedium.MeasureText("0.00").X;
|
||||||
|
|
||||||
// Camera settings widget
|
// Camera settings widget
|
||||||
_cameraWidget = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight);
|
_cameraWidget = new ViewportWidgetsContainer(ViewportWidgetLocation.UpperRight);
|
||||||
|
|
||||||
// Camera settings menu
|
// Camera settings menu
|
||||||
var cameraCM = new ContextMenu();
|
var cameraCM = new ContextMenu();
|
||||||
_cameraButton = new ViewportWidgetButton(string.Format(format, _movementSpeed), Editor.Instance.Icons.Camera64, cameraCM, false, Style.Current.FontMedium.MeasureText("0.00").X)
|
_cameraButton = new ViewportWidgetButton(string.Format(MovementSpeedTextFormat, _movementSpeed), Editor.Instance.Icons.Camera64, cameraCM, false, cameraSpeedTextWidth)
|
||||||
{
|
{
|
||||||
Tag = this,
|
Tag = this,
|
||||||
TooltipText = "Camera Settings",
|
TooltipText = "Camera Settings",
|
||||||
@@ -1060,9 +1077,21 @@ namespace FlaxEditor.Viewport
|
|||||||
_speedStep = 0;
|
_speedStep = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Math.Abs(_movementSpeed - _maxMovementSpeed) < Mathf.Epsilon)
|
||||||
|
{
|
||||||
|
_speedStep = _maxSpeedSteps;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (Math.Abs(_movementSpeed - _minMovementSpeed) < Mathf.Epsilon)
|
||||||
|
{
|
||||||
|
_speedStep = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// calculate current linear/eased progress
|
// calculate current linear/eased progress
|
||||||
float progress = Mathf.Remap(_movementSpeed, _minMovementSpeed, _maxMovementSpeed, 0.0f, 1.0f);
|
var progress = Mathf.Remap(_movementSpeed, _minMovementSpeed, _maxMovementSpeed, 0.0f, 1.0f);
|
||||||
|
|
||||||
if (_useCameraEasing)
|
if (_useCameraEasing)
|
||||||
progress = Mathf.Pow(progress, 1.0f / _cameraEasingDegree);
|
progress = Mathf.Pow(progress, 1.0f / _cameraEasingDegree);
|
||||||
|
|
||||||
@@ -1081,8 +1110,10 @@ namespace FlaxEditor.Viewport
|
|||||||
var progress = _useCameraEasing
|
var progress = _useCameraEasing
|
||||||
? Mathf.Pow((float)_speedStep / _maxSpeedSteps, _cameraEasingDegree)
|
? Mathf.Pow((float)_speedStep / _maxSpeedSteps, _cameraEasingDegree)
|
||||||
: (float)_speedStep / _maxSpeedSteps;
|
: (float)_speedStep / _maxSpeedSteps;
|
||||||
|
|
||||||
MovementSpeed = Mathf.Lerp(_minMovementSpeed, _maxMovementSpeed, progress);
|
var speed = Mathf.Lerp(_minMovementSpeed, _maxMovementSpeed, progress);
|
||||||
|
MovementSpeed = (float)Math.Round(speed, 3);
|
||||||
|
_editor.ProjectCache.SetCustomData("CameraMovementSpeedValue", _movementSpeed.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnEditorOptionsChanged(EditorOptions options)
|
private void OnEditorOptionsChanged(EditorOptions options)
|
||||||
|
|||||||
Reference in New Issue
Block a user