41 lines
1.6 KiB
C#
41 lines
1.6 KiB
C#
using JetBrains.Annotations;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
using UTools = UnityEditor.Tools;
|
|
|
|
namespace Module.NavigationTool.Editor.Toolbar
|
|
{
|
|
[UsedImplicitly]
|
|
internal sealed class ToolTimeScale : AbstractToolbarDrawer
|
|
{
|
|
public override bool Visible => ToolbarTimeSettings.IsTimeScaleEnabled;
|
|
public override bool Enabled => true;
|
|
public override EToolbarPlacement Placement => EToolbarPlacement.Left;
|
|
public override int Priority => (int)EToolbarPriority.Low;
|
|
|
|
protected override void Draw(Rect rect)
|
|
{
|
|
float value = Time.timeScale;
|
|
|
|
var r0 = new Rect(rect.x, rect.y - 2.0f, rect.width, rect.height * 0.5f);
|
|
var r1 = new Rect(rect.x + 4.0f, rect.y + 2.0f, rect.width - 8.0f, rect.height * 0.5f);
|
|
var r2 = new Rect(rect.x, r1.yMax, rect.width, rect.height * 0.5f);
|
|
|
|
EditorGUI.LabelField(r0, "Time scale", EditorStyles.centeredGreyMiniLabel);
|
|
EditorGUI.LabelField(r2, value.ToString("0.00"), EditorStyles.centeredGreyMiniLabel);
|
|
float temp = GUI.HorizontalSlider(r1, value, ToolbarTimeSettings.TimeScaleMinValue, ToolbarTimeSettings.TimeScaleMaxValue);
|
|
temp = Mathf.Clamp(temp, ToolbarTimeSettings.TimeScaleMinValue, ToolbarTimeSettings.TimeScaleMaxValue);
|
|
|
|
if (Mathf.Abs(temp - 1.0f) < 0.02f)
|
|
temp = 1.0f;
|
|
|
|
if (!Mathf.Approximately(value, temp))
|
|
Time.timeScale = temp;
|
|
}
|
|
|
|
public override float CalculateWidth()
|
|
{
|
|
return 100.0f;
|
|
}
|
|
}
|
|
} |