RoboticArms/Library/PackageCache/com.unity.splines@d3e1e500c9a0/Editor/GUI/ToolbarsOverlays/SplineHandleSettingsWindow.cs
2025-11-17 15:16:36 +07:00

88 lines
3.3 KiB
C#

using UnityEngine;
using UnityEngine.UIElements;
namespace UnityEditor.Splines
{
sealed class SplineHandleSettingsWindow : EditorWindow
{
const float k_BorderWidth = 1;
Toggle m_FlowDirection;
Toggle m_AllTangents;
Toggle m_KnotIndices;
Toggle m_SplineMesh;
public static void Show(Rect buttonRect)
{
var window = CreateInstance<SplineHandleSettingsWindow>();
window.hideFlags = HideFlags.DontSave;
#if UNITY_2022_1_OR_NEWER
var popupWidth = 150;
#else
var popupWidth = 180;
#endif
window.ShowAsDropDown(GUIUtility.GUIToScreenRect(buttonRect), new Vector2(popupWidth, 80));
}
void OnEnable()
{
Color borderColor = EditorGUIUtility.isProSkin ? new Color(0.44f, 0.44f, 0.44f, 1f) : new Color(0.51f, 0.51f, 0.51f);
rootVisualElement.style.borderLeftWidth = k_BorderWidth;
rootVisualElement.style.borderTopWidth = k_BorderWidth;
rootVisualElement.style.borderRightWidth = k_BorderWidth;
rootVisualElement.style.borderBottomWidth = k_BorderWidth;
rootVisualElement.style.borderLeftColor = borderColor;
rootVisualElement.style.borderTopColor = borderColor;
rootVisualElement.style.borderRightColor = borderColor;
rootVisualElement.style.borderBottomColor = borderColor;
rootVisualElement.Add(m_FlowDirection = new Toggle(L10n.Tr("Flow Direction")));
m_FlowDirection.style.flexDirection = FlexDirection.RowReverse;
rootVisualElement.Add(m_AllTangents = new Toggle(L10n.Tr("All Tangents")));
m_AllTangents.style.flexDirection = FlexDirection.RowReverse;
rootVisualElement.Add(m_KnotIndices = new Toggle(L10n.Tr("Knot Indices")));
m_KnotIndices.style.flexDirection = FlexDirection.RowReverse;
rootVisualElement.Add(m_SplineMesh = new Toggle(L10n.Tr("Show Mesh")));
m_SplineMesh.style.flexDirection = FlexDirection.RowReverse;
m_FlowDirection.RegisterValueChangedCallback((evt) =>
{
SplineHandleSettings.FlowDirectionEnabled = evt.newValue;
SceneView.RepaintAll();
});
m_AllTangents.RegisterValueChangedCallback((evt) =>
{
SplineHandleSettings.ShowAllTangents = evt.newValue;
SceneView.RepaintAll();
});
m_KnotIndices.RegisterValueChangedCallback((evt) =>
{
SplineHandleSettings.ShowKnotIndices = evt.newValue;
SceneView.RepaintAll();
});
m_SplineMesh.RegisterValueChangedCallback((evt) =>
{
SplineHandleSettings.ShowMesh = evt.newValue;
SceneView.RepaintAll();
});
UpdateValues();
}
void UpdateValues()
{
m_FlowDirection.SetValueWithoutNotify(SplineHandleSettings.FlowDirectionEnabled);
m_AllTangents.SetValueWithoutNotify(SplineHandleSettings.ShowAllTangents);
m_KnotIndices.SetValueWithoutNotify(SplineHandleSettings.ShowKnotIndices);
m_SplineMesh.SetValueWithoutNotify(SplineHandleSettings.ShowMesh);
SceneView.RepaintAll();
}
}
}