Unity-DebugX/Runtime/DebugX.globals.cs

80 lines
2.5 KiB
C#
Raw Normal View History

2025-02-24 13:20:06 +08:00
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
2025-02-24 11:06:15 +08:00
namespace DCFApixels
{
public static unsafe partial class DebugX
{
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
2025-02-24 17:59:44 +08:00
EditorPrefs.SetFloat(GLOBAL_TIME_SCALE_PREF_NAME, value);
2025-02-24 11:06:15 +08:00
#endif
}
}
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
2025-02-24 17:59:44 +08:00
EditorPrefs.SetFloat(GLOBAL_DOT_SIZE_PREF_NAME, _dotSizeCache);
2025-02-24 11:06:15 +08:00
#endif
}
}
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
2025-02-24 17:59:44 +08:00
EditorPrefs.SetInt(GLOBAL_COLOR_PREF_NAME, record);
2025-02-24 11:06:15 +08:00
#endif
}
}
public static void ResetGlobals()
{
#if UNITY_EDITOR
2025-02-24 17:59:44 +08:00
EditorPrefs.DeleteKey(GLOBAL_TIME_SCALE_PREF_NAME);
EditorPrefs.DeleteKey(GLOBAL_DOT_SIZE_PREF_NAME);
EditorPrefs.DeleteKey(GLOBAL_COLOR_PREF_NAME);
2025-02-24 13:20:06 +08:00
#endif
2025-02-24 11:06:15 +08:00
_dotSizeCache = default;
_timeScaleCache = default;
_globalColorCache = default;
InitGlobals();
}
2025-02-24 13:20:06 +08:00
private static void InitGlobals()
2025-02-24 11:06:15 +08:00
{
GlobalTimeScale = 1;
GlobalDotSize = 1;
GlobalColor = Color.white;
#if UNITY_EDITOR
2025-02-24 17:59:44 +08:00
GlobalTimeScale = EditorPrefs.GetFloat(GLOBAL_TIME_SCALE_PREF_NAME, 1f);
GlobalDotSize = EditorPrefs.GetFloat(GLOBAL_DOT_SIZE_PREF_NAME, 1f);
var colorCode = EditorPrefs.GetInt(GLOBAL_COLOR_PREF_NAME, -1);
2025-02-24 11:06:15 +08:00
GlobalColor = (Color)(*(Color32*)&colorCode);
#endif
}
}
}