Files

62 lines
3.0 KiB
C#

using UnityEngine;
using UnityEditor;
namespace Unity.Cinemachine.Editor
{
[InitializeOnLoad]
static class CinemachineSplineDollyPrefs
{
static CinemachineSettings.BoolItem s_SettingsFoldedOut = new("CNMCN_Spline_Foldout", false);
public static CinemachineSettings.ColorItem SplineRollColor = new ("CNMCN_Spline_Roll_Colour", Color.green);
public static CinemachineSettings.FloatItem SplineWidth = new("CNMCN_Spline_width", 0.5f);
public static CinemachineSettings.IntItem SplineResolution = new("CNMCN_Spline_resolution", 10);
public static CinemachineSettings.BoolItem ShowSplineNormals = new("CNMCN_ShowSplineNormals", false);
static readonly GUIContent k_SplineRollColorGUIContent = new("Gizmo Color",
"The color with which the spline is drawn, when a " + nameof(CinemachineSplineRoll) + " is attached.");
static readonly GUIContent k_SplineWidthGUIContent = new("Width",
"The width of the spline");
static readonly GUIContent k_SplineResolutionGUIContent = new("Resolution",
"The resolution with which the spline is drawn.");
static readonly GUIContent k_ShowSplineNormalsGUIContent = new("Show Up Vectors",
"Display the up vectors along the spline instead of the railroad track gizmo.");
static CinemachineSplineDollyPrefs() => CinemachineSettings.AdditionalCategories += DrawSplineSettings;
static void DrawSplineSettings()
{
s_SettingsFoldedOut.Value = EditorGUILayout.Foldout(s_SettingsFoldedOut.Value, "Spline Roll Gizmo Settings", true);
if (s_SettingsFoldedOut.Value)
{
EditorGUI.indentLevel++;
EditorGUI.BeginChangeCheck();
EditorGUILayout.BeginHorizontal();
SplineRollColor.Value = EditorGUILayout.ColorField(k_SplineRollColorGUIContent, SplineRollColor.Value);
if (GUILayout.Button("Reset"))
SplineRollColor.Reset();
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
SplineWidth.Value = Mathf.Max(0.01f, EditorGUILayout.FloatField(k_SplineWidthGUIContent, SplineWidth.Value));
if (GUILayout.Button("Reset"))
SplineWidth.Reset();
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
SplineResolution.Value = Mathf.Clamp(EditorGUILayout.IntField(k_SplineResolutionGUIContent, SplineResolution.Value), 3, 100);
if (GUILayout.Button("Reset"))
SplineResolution.Reset();
EditorGUILayout.EndHorizontal();
ShowSplineNormals.Value = EditorGUILayout.Toggle(k_ShowSplineNormalsGUIContent, ShowSplineNormals.Value);
if (EditorGUI.EndChangeCheck())
UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
EditorGUI.indentLevel--;
}
}
}
}