mirror of
https://github.com/DCFApixels/Unity-DebugX.git
synced 2025-09-18 01:54:37 +08:00
83 lines
2.7 KiB
C#
83 lines
2.7 KiB
C#
![]() |
using UnityEditor;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace DCFApixels
|
|||
|
{
|
|||
|
public static unsafe partial class DebugX
|
|||
|
{
|
|||
|
#region Globals
|
|||
|
private const string GlobalTimeScalePrefName = "DCFApixels.DebugX.TimeScale";
|
|||
|
private static float _timeScaleCache;
|
|||
|
public static float GlobalTimeScale
|
|||
|
{
|
|||
|
get { return _timeScaleCache; }
|
|||
|
set
|
|||
|
{
|
|||
|
value = Mathf.Max(0f, value);
|
|||
|
if (_timeScaleCache == value) { return; }
|
|||
|
_timeScaleCache = value;
|
|||
|
#if UNITY_EDITOR
|
|||
|
EditorPrefs.SetFloat(GlobalTimeScalePrefName, value);
|
|||
|
#endif
|
|||
|
}
|
|||
|
}
|
|||
|
private const string GlobalDotSizePrefName = "DCFApixels.DebugX.DotSize";
|
|||
|
private static float _dotSizeCache;
|
|||
|
public static float GlobalDotSize
|
|||
|
{
|
|||
|
get { return _dotSizeCache; }
|
|||
|
set
|
|||
|
{
|
|||
|
if (_dotSizeCache == value) { return; }
|
|||
|
_dotSizeCache = value;
|
|||
|
Shader.SetGlobalFloat(GlobalDotSizePropertyID, _dotSizeCache);
|
|||
|
#if UNITY_EDITOR
|
|||
|
EditorPrefs.SetFloat(GlobalDotSizePrefName, _dotSizeCache);
|
|||
|
#endif
|
|||
|
}
|
|||
|
}
|
|||
|
private const string GlobalColorPrefName = "DCFApixels.DebugX.Color";
|
|||
|
private static Color _globalColorCache;
|
|||
|
public static Color GlobalColor
|
|||
|
{
|
|||
|
get { return _globalColorCache; }
|
|||
|
set
|
|||
|
{
|
|||
|
if (_globalColorCache == value) { return; }
|
|||
|
_globalColorCache = value;
|
|||
|
Shader.SetGlobalVector(nameID: GlobalColorPropertyID, _globalColorCache);
|
|||
|
|
|||
|
Color32 c32 = (Color32)value;
|
|||
|
var record = *(int*)&c32;
|
|||
|
#if UNITY_EDITOR
|
|||
|
EditorPrefs.SetInt(GlobalColorPrefName, record);
|
|||
|
#endif
|
|||
|
}
|
|||
|
}
|
|||
|
public static void ResetGlobals()
|
|||
|
{
|
|||
|
#if UNITY_EDITOR
|
|||
|
EditorPrefs.DeleteKey(GlobalTimeScalePrefName);
|
|||
|
EditorPrefs.DeleteKey(GlobalDotSizePrefName);
|
|||
|
EditorPrefs.DeleteKey(GlobalColorPrefName);
|
|||
|
_dotSizeCache = default;
|
|||
|
_timeScaleCache = default;
|
|||
|
_globalColorCache = default;
|
|||
|
InitGlobals();
|
|||
|
#endif
|
|||
|
}
|
|||
|
public static void InitGlobals()
|
|||
|
{
|
|||
|
GlobalTimeScale = 1;
|
|||
|
GlobalDotSize = 1;
|
|||
|
GlobalColor = Color.white;
|
|||
|
#if UNITY_EDITOR
|
|||
|
GlobalTimeScale = EditorPrefs.GetFloat(GlobalTimeScalePrefName, 1f);
|
|||
|
GlobalDotSize = EditorPrefs.GetFloat(GlobalDotSizePrefName, 1f);
|
|||
|
var colorCode = EditorPrefs.GetInt(GlobalColorPrefName, -1);
|
|||
|
GlobalColor = (Color)(*(Color32*)&colorCode);
|
|||
|
#endif
|
|||
|
}
|
|||
|
#endregion
|
|||
|
}
|
|||
|
}
|