62 lines
3.0 KiB
C#
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--;
|
|
}
|
|
}
|
|
}
|
|
}
|