|
|
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEditor;
- using UnityEngine.UI;
-
- public class TimeScaleWindow : EditorWindow
- {
-
- // Add menu named "My Window" to the Window menu
-
- private float weightedTimeScale = 0;
-
- [MenuItem("AddOn/TimeScale")]
- static void Init()
- {
- // Get existing open window or if none, make a new one:
- TimeScaleWindow window = (TimeScaleWindow)EditorWindow.GetWindow(typeof(TimeScaleWindow));
- window.Show();
- }
-
- void OnGUI()
- {
- GUILayout.Label("Base Settings", EditorStyles.boldLabel);
-
- GUILayout.BeginHorizontal();
-
- if (GUILayout.Button("<<")) NextPower(-1);
- if (GUILayout.Button("<")) weightedTimeScale--;
-
- if (GUILayout.Button(">")) weightedTimeScale++;
- if (GUILayout.Button(">>")) NextPower(1);
-
- GUILayout.EndHorizontal();
-
- weightedTimeScale = GUILayout.HorizontalSlider(weightedTimeScale, -100f, 100f);
-
- Time.timeScale = ConvertWeightedToRaw(weightedTimeScale);
-
- GUILayout.BeginHorizontal();
-
- if (GUILayout.Button("Pause")) weightedTimeScale = -100;
- var centeredStyle = GUI.skin.GetStyle("Label");
- centeredStyle.alignment = TextAnchor.UpperCenter;
-
- GUILayout.Label(DisplayString(Time.timeScale), centeredStyle);
- if (GUILayout.Button("Play")) Time.timeScale = 0;
- GUILayout.EndHorizontal();
-
- }
-
- private float ConvertWeightedToRaw(float input)
- {
- if (input > 0)
- return Mathf.Lerp(1, 100, input / 100);
- else
- return Mathf.Lerp(1, 0, -input / 100);
- }
-
-
-
- private void NextPower(int dir)
- {
- float sign = Mathf.Sign(weightedTimeScale);
- Debug.Log("Sign: " + sign);
- float value = Mathf.Abs(weightedTimeScale + dir);
- Debug.Log("Value: " + value);
-
- value = Mathf.NextPowerOfTwo((int)(value));
-
- if (Mathf.Sign(dir) != Mathf.Sign(weightedTimeScale))
- value /= 2;
-
- Debug.Log("retVal: " + value + " * " + sign);
- weightedTimeScale = value * sign;
- }
-
-
- private void SetSpeed(float newSpeed)
- {
- Time.timeScale = newSpeed;
- }
-
- private string DisplayString(float input)
- {
- return input.ToString() + " (" + weightedTimeScale + ")";
-
- if (input > 1)
- return Mathf.Floor(input).ToString();
- else
- return ("1/" + Mathf.Floor(-weightedTimeScale));
- }
-
- }
|