Files
ihob/Assets/ProCamera2D/Editor/Core/ProCamera2DPrefs.cs

157 lines
4.9 KiB
C#
Raw Permalink Normal View History

2026-02-21 17:04:05 -08:00
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEngine;
#if !UNITY_2018_3_OR_NEWER
namespace Com.LuisPedroFonseca.ProCamera2D
{
public static class ProCamera2DPrefs
{
static bool _prefsLoaded;
static Color[] _procamera2DGizmosColors;
readonly static string[] _procamera2DGizmosKeys = new string[]
{
PrefsData.RoomsColorKey,
PrefsData.NumericBoundariesColorKey,
PrefsData.TargetsMidPointColorKey,
PrefsData.InfluencesColorKey,
PrefsData.ShakeInfluenceColorKey,
PrefsData.OverallOffsetColorKey,
PrefsData.CamDistanceColorKey,
PrefsData.CamTargetPositionColorKey,
PrefsData.CamTargetPositionSmoothedColorKey,
PrefsData.CurrentCameraPositionColorKey,
PrefsData.CameraWindowColorKey,
PrefsData.ForwardFocusColorKey,
PrefsData.ZoomToFitColorKey,
PrefsData.RailsColorKey,
PrefsData.PanEdgesColorKey,
PrefsData.FitterFillColorKey,
PrefsData.FitterLineColorKey,
PrefsData.BoundariesTriggerColorKey,
PrefsData.InfluenceTriggerColorKey,
PrefsData.ZoomTriggerColorKey,
PrefsData.TriggerShapeColorKey
};
readonly static Color[] _procamera2DGizmosValues = new Color[]
{
PrefsData.RoomsColorValue,
PrefsData.NumericBoundariesColorValue,
PrefsData.TargetsMidPointColorValue,
PrefsData.InfluencesColorValue,
PrefsData.ShakeInfluenceColorValue,
PrefsData.OverallOffsetColorValue,
PrefsData.CamDistanceColorValue,
PrefsData.CamTargetPositionColorValue,
PrefsData.CamTargetPositionSmoothedColorValue,
PrefsData.CurrentCameraPositionColorValue,
PrefsData.CameraWindowColorValue,
PrefsData.ForwardFocusColorValue,
PrefsData.ZoomToFitColorValue,
PrefsData.RailsColorValue,
PrefsData.PanEdgesColorValue,
PrefsData.FitterFillColorValue,
PrefsData.FitterLineColorValue,
PrefsData.BoundariesTriggerColorValue,
PrefsData.InfluenceTriggerColorValue,
PrefsData.ZoomTriggerColorValue,
PrefsData.TriggerShapeColorValue
};
static Vector2 _scrollPos;
[PreferenceItem("ProCamera2D")]
static void PreferencesGUI()
{
// Load the preferences
if (!_prefsLoaded)
{
_procamera2DGizmosColors = new Color[_procamera2DGizmosKeys.Length];
for (int i = 0; i < _procamera2DGizmosColors.Length; i++)
{
_procamera2DGizmosColors[i] = EditorPrefsX.GetColor(_procamera2DGizmosKeys[i], _procamera2DGizmosValues[i]);
}
_prefsLoaded = true;
}
// Preferences GUI
_scrollPos = EditorGUILayout.BeginScrollView(_scrollPos);
GUILayout.Label("ProCamera2D", EditorStyles.boldLabel);
for (int i = 0; i < _procamera2DGizmosColors.Length; i++)
{
_procamera2DGizmosColors[i] = EditorGUILayout.ColorField(_procamera2DGizmosKeys[i], _procamera2DGizmosColors[i]);
if(i == 9)
{
EditorGUILayout.Space();
GUILayout.Label("Extensions", EditorStyles.boldLabel);
}
if(i == 16)
{
EditorGUILayout.Space();
GUILayout.Label("Triggers", EditorStyles.boldLabel);
}
}
// Rails snapping
EditorGUILayout.Space();
EditorGUILayout.Space();
GUILayout.Label("Rails Snapping", EditorStyles.boldLabel);
EditorPrefs.SetFloat("RailsSnapping", EditorGUILayout.Slider(EditorPrefs.GetFloat("RailsSnapping"), .1f, 10f));
// Rooms snapping
EditorGUILayout.Space();
EditorGUILayout.Space();
GUILayout.Label("Rooms Snapping", EditorStyles.boldLabel);
EditorPrefs.SetFloat("RoomsSnapping", EditorGUILayout.Slider(EditorPrefs.GetFloat("RoomsSnapping"), .01f, 10f));
// Reset defaults
EditorGUILayout.Space();
EditorGUILayout.Space();
if (GUILayout.Button("Use defaults", GUILayout.Width(120)))
{
for (int i = 0; i < _procamera2DGizmosColors.Length; i++)
{
EditorPrefsX.SetColor(_procamera2DGizmosKeys[i], _procamera2DGizmosValues[i]);
}
}
EditorGUILayout.EndScrollView();
// Save the preferences
if (GUI.changed)
{
for (int i = 0; i < _procamera2DGizmosColors.Length; i++)
{
EditorPrefsX.SetColor(_procamera2DGizmosKeys[i], _procamera2DGizmosColors[i]);
}
}
}
}
}
#endif