583 lines
29 KiB
C#
583 lines
29 KiB
C#
using System;
|
|
using UI_Spline_Renderer;
|
|
using UnityEditor;
|
|
using UnityEditor.UIElements;
|
|
using UnityEngine;
|
|
using UnityEngine.Splines;
|
|
using UnityEngine.UIElements;
|
|
|
|
namespace UISplineRendererEditor
|
|
{
|
|
[CustomEditor(typeof(UISplineRenderer))]
|
|
[CanEditMultipleObjects]
|
|
public class UISplineRendererEditor : UnityEditor.Editor
|
|
{
|
|
|
|
UISplineRenderer _target;
|
|
|
|
ObjectField _splineContainerField;
|
|
ObjectField _materialField;
|
|
ObjectField _textureField;
|
|
Button _defaultLineTextureButton;
|
|
Button _uvTestLineTextureButton;
|
|
Button _customLineTextureButton;
|
|
|
|
Toggle _keepZeroZField;
|
|
Toggle _keepBillboardField;
|
|
|
|
EnumField _uvModeField;
|
|
SliderInt _resolutionSlider;
|
|
Label _vertexCountField;
|
|
|
|
ObjectField _startImageSpriteField;
|
|
FloatField _startImageSizeField;
|
|
FloatField _startImageOffsetField;
|
|
Button _noneStartImageButton;
|
|
Button _triangleStartImageButton;
|
|
Button _arrowStartImageButton;
|
|
Button _emptyCircleStartImageButton;
|
|
Button _filledCircleStartImageButton;
|
|
Button _customStartImageButton;
|
|
|
|
ObjectField _endImageSpriteField;
|
|
FloatField _endImageSizeField;
|
|
FloatField _endImageOffsetField;
|
|
Button _noneEndImageButton;
|
|
Button _triangleEndImageButton;
|
|
Button _arrowEndImageButton;
|
|
Button _emptyCircleEndImageButton;
|
|
Button _filledCircleEndImageButton;
|
|
Button _customEndImageButton;
|
|
|
|
bool _shouldUpdateStartEndImages;
|
|
|
|
UISplineRendererSettings settings => UISplineRendererSettings.Instance;
|
|
void OnEnable()
|
|
{
|
|
if (_target == null) _target = target as UISplineRenderer;
|
|
Spline.Changed += SplineChangeCallback;
|
|
SplineContainer.SplineAdded += SplineContainerChangeCallback;
|
|
SplineContainer.SplineRemoved += SplineContainerChangeCallback;
|
|
EditorApplication.update += _delayed_update_vertex_count;
|
|
|
|
void _delayed_update_vertex_count()
|
|
{
|
|
UpdateVertexCount();
|
|
EditorApplication.update -= UpdateVertexCount;
|
|
}
|
|
}
|
|
void OnDisable()
|
|
{
|
|
Spline.Changed -= SplineChangeCallback;
|
|
SplineContainer.SplineAdded -= SplineContainerChangeCallback;
|
|
SplineContainer.SplineRemoved -= SplineContainerChangeCallback;
|
|
}
|
|
|
|
public override void OnInspectorGUI()
|
|
{
|
|
serializedObject.Update();
|
|
EditorGUI.BeginChangeCheck();
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_splineContainer"));
|
|
|
|
EditorGUI.indentLevel++;
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_fitPosition"));
|
|
EditorGUI.indentLevel--;
|
|
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Material"));
|
|
EditorGUI.indentLevel++;
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_recursiveMaterial"));
|
|
EditorGUI.indentLevel--;
|
|
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Color"));
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_colorGradient"));
|
|
EditorGUI.indentLevel++;
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_recursiveColor"));
|
|
EditorGUI.indentLevel--;
|
|
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("m_RaycastTarget"));
|
|
EditorGUI.indentLevel++;
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("m_RaycastPadding"));
|
|
EditorGUI.indentLevel--;
|
|
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Maskable"));
|
|
|
|
EditorGUILayout.Space();
|
|
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_width"));
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_widthCurve"));
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_keepZeroZ"));
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_keepBillboard"));
|
|
|
|
EditorGUILayout.Space();
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
var lineTexturePreset = EnumButtonField("Line Texture Preset", Enum.GetNames(typeof(LineTexturePreset)),
|
|
(int)_target.lineTexturePreset);
|
|
if(EditorGUI.EndChangeCheck())
|
|
{
|
|
_target.lineTexturePreset = (LineTexturePreset)lineTexturePreset;
|
|
}
|
|
|
|
EditorGUI.indentLevel++;
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Texture"));
|
|
EditorGUI.indentLevel--;
|
|
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_smooth"));
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_roundEnds"));
|
|
|
|
EditorGUI.BeginChangeCheck();
|
|
var resolution = serializedObject.FindProperty("_resolution");
|
|
EditorGUILayout.IntSlider(resolution, 1, 20);
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
_target.resolution = resolution.intValue;
|
|
}
|
|
EditorGUI.indentLevel++;
|
|
EditorGUILayout.LabelField("Vertex Count", _target.vertexCount.ToString());
|
|
EditorGUI.indentLevel--;
|
|
|
|
var clipRangeSP = serializedObject.FindProperty("_clipRange");
|
|
var clipRange = clipRangeSP.vector2Value;
|
|
EditorGUILayout.MinMaxSlider("Clip Range", ref clipRange.x, ref clipRange.y, 0, 1);
|
|
clipRangeSP.vector2Value = clipRange;
|
|
|
|
EditorGUILayout.LabelField($"min: {clipRange.x} | max: {clipRange.y}");
|
|
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_uvMode"));
|
|
|
|
EditorGUILayout.Space();
|
|
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_uvMultiplier"));
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_uvOffset"));
|
|
|
|
EditorGUILayout.Space();
|
|
EditorGUI.BeginChangeCheck();
|
|
var startImagePreset = EnumButtonField("Start Image Preset", Enum.GetNames(typeof(StartEndImagePreset)),
|
|
(int)_target.startImagePreset, 3);
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
_target.startImagePreset = (StartEndImagePreset)startImagePreset;
|
|
}
|
|
|
|
EditorGUI.indentLevel++;
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_startImageSprite"));
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_startImageSize"));
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_startImageOffsetMode"));
|
|
if(_target.startImageOffsetMode == OffsetMode.Distance)
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_startImageOffset"));
|
|
else if(_target.startImageOffsetMode == OffsetMode.Normalized)
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_normalizedStartImageOffset"));
|
|
EditorGUI.indentLevel--;
|
|
|
|
EditorGUILayout.Space();
|
|
EditorGUI.BeginChangeCheck();
|
|
var endImagePreset = EnumButtonField("End Image Preset", Enum.GetNames(typeof(StartEndImagePreset)),
|
|
(int)_target.endImagePreset, 3);
|
|
if(EditorGUI.EndChangeCheck())
|
|
{
|
|
_target.endImagePreset = (StartEndImagePreset)endImagePreset;
|
|
}
|
|
|
|
EditorGUI.indentLevel++;
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_endImageSprite"));
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_endImageSize"));
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_endImageOffsetMode"));
|
|
if(_target.endImageOffsetMode == OffsetMode.Distance)
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_endImageOffset"));
|
|
else if(_target.endImageOffsetMode == OffsetMode.Normalized)
|
|
EditorGUILayout.PropertyField(serializedObject.FindProperty("_normalizedEndImageOffset"));
|
|
EditorGUI.indentLevel--;
|
|
|
|
|
|
|
|
if (EditorGUI.EndChangeCheck())
|
|
{
|
|
EditorUtility.SetDirty(target);
|
|
serializedObject.ApplyModifiedProperties();
|
|
_target.UpdateRaycastTargetRect();
|
|
foreach (var o in targets)
|
|
{
|
|
var renderer = o as UISplineRenderer;
|
|
renderer.UpdateStartEndImages(true);
|
|
renderer.UpdateStartEndImages(false);
|
|
}
|
|
}
|
|
}
|
|
|
|
int EnumButtonField(string label, string[] names, int selected, int lineChange = 0)
|
|
{
|
|
EditorGUILayout.BeginHorizontal();
|
|
GUILayout.Label(label);
|
|
EditorGUILayout.BeginVertical();
|
|
EditorGUILayout.BeginHorizontal();
|
|
for(var i = 0; i < names.Length; i ++)
|
|
{
|
|
if (i > 0 && lineChange > 0 && i % lineChange == 0)
|
|
{
|
|
EditorGUILayout.EndHorizontal();
|
|
EditorGUILayout.BeginHorizontal();
|
|
}
|
|
if (i == selected) GUI.color = new Color(2,2,2);
|
|
if (GUILayout.Button(names[i], GUILayout.Height(30)))
|
|
{
|
|
selected = i;
|
|
}
|
|
GUI.color = Color.white;
|
|
}
|
|
EditorGUILayout.EndHorizontal();
|
|
EditorGUILayout.EndVertical();
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
return selected;
|
|
}
|
|
|
|
// public override VisualElement CreateInspectorGUI()
|
|
// {
|
|
// var asset = Resources.Load<VisualTreeAsset>("UISplineRenderer Inspector");
|
|
// var tree = asset.CloneTree();
|
|
//
|
|
// _splineContainerField = tree.Q<ObjectField>("splineContainer");
|
|
// _splineContainerField.SetEnabled(false);
|
|
//
|
|
// _materialField = tree.Q<ObjectField>("material");
|
|
// _materialField.RegisterValueChangedCallback(e =>
|
|
// {
|
|
// _target.material = e.newValue as Material;
|
|
// });
|
|
//
|
|
// _keepZeroZField = tree.Q<Toggle>("keepZeroZ");
|
|
// _keepZeroZField.RegisterValueChangedCallback(e =>
|
|
// {
|
|
// _target.UpdateStartEndImages(true);
|
|
// _target.UpdateStartEndImages(false);
|
|
// });
|
|
// _keepBillboardField = tree.Q<Toggle>("keepBillboard");
|
|
// _keepBillboardField.RegisterValueChangedCallback(e =>
|
|
// {
|
|
// _target.UpdateStartEndImages(true);
|
|
// _target.UpdateStartEndImages(false);
|
|
// });
|
|
//
|
|
// var lineTextureArea = tree.Q<VisualElement>("lineTextureArea");
|
|
// _textureField = lineTextureArea.Q<ObjectField>("texture");
|
|
//
|
|
// var textureButtons = tree.Q<VisualElement>("presetButtons");
|
|
// _defaultLineTextureButton = textureButtons.Q<Button>("default");
|
|
// _uvTestLineTextureButton = textureButtons.Q<Button>("uvTest");
|
|
// _customLineTextureButton = textureButtons.Q<Button>("custom");
|
|
//
|
|
// _defaultLineTextureButton.clicked += () => OnLineTexturePresetChanged(LineTexturePreset.Default);
|
|
// _uvTestLineTextureButton.clicked += () => OnLineTexturePresetChanged(LineTexturePreset.UVTest);
|
|
// _customLineTextureButton.clicked += () => OnLineTexturePresetChanged(LineTexturePreset.Custom);
|
|
//
|
|
// OnLineTexturePresetChanged(_target.lineTexturePreset);
|
|
//
|
|
// _uvModeField = lineTextureArea.Q<EnumField>("uvMode");
|
|
// _uvModeField.tooltip = "Tile - Texture is tiled along spline length. The wrap mode of the texture should be Repeat\n\n" +
|
|
// "Repeat per Segment - Texture is placed per segment(based on spline knots). The wrap mode of the texture should be Repeat\n\n" +
|
|
// "Stretch - Texture is stretched along spline.";
|
|
//
|
|
//
|
|
// _vertexCountField = lineTextureArea.Q<Label>("vertexCount");
|
|
// _resolutionSlider = lineTextureArea.Q<SliderInt>("resolution");
|
|
// _resolutionSlider.RegisterValueChangedCallback(e =>
|
|
// {
|
|
// _target.resolution = e.newValue;
|
|
// UpdateVertexCount();
|
|
// });
|
|
// UpdateVertexCount();
|
|
//
|
|
// var clipRangeSlider = lineTextureArea.Q<MinMaxSlider>("clipRange");
|
|
// clipRangeSlider.RegisterValueChangedCallback(e =>
|
|
// {
|
|
// UpdateVertexCount();
|
|
// });
|
|
//
|
|
// // init start images
|
|
// var startImageArea = tree.Q<VisualElement>("startImageArea");
|
|
// _startImageSpriteField = startImageArea.Q<ObjectField>("sprite");
|
|
// _startImageSpriteField.RegisterValueChangedCallback(e =>
|
|
// {
|
|
// _target.UpdateStartEndImages(true);
|
|
// });
|
|
//
|
|
// _noneStartImageButton = startImageArea.Q<Button>("none");
|
|
// _triangleStartImageButton = startImageArea.Q<Button>("triangle");
|
|
// _arrowStartImageButton = startImageArea.Q<Button>("arrow");
|
|
// _emptyCircleStartImageButton = startImageArea.Q<Button>("emptyCircle");
|
|
// _filledCircleStartImageButton = startImageArea.Q<Button>("filledCircle");
|
|
// _customStartImageButton = startImageArea.Q<Button>("custom");
|
|
//
|
|
// _noneStartImageButton.clicked += () => OnStartImagePresetChanged(StartEndImagePreset.None);
|
|
// _triangleStartImageButton.clicked += () => OnStartImagePresetChanged(StartEndImagePreset.Triangle);
|
|
// _arrowStartImageButton.clicked += () => OnStartImagePresetChanged(StartEndImagePreset.Arrow);
|
|
// _emptyCircleStartImageButton.clicked += () => OnStartImagePresetChanged(StartEndImagePreset.EmptyCircle);
|
|
// _filledCircleStartImageButton.clicked += () => OnStartImagePresetChanged(StartEndImagePreset.FilledCircle);
|
|
// _customStartImageButton.clicked += () => OnStartImagePresetChanged(StartEndImagePreset.Custom);
|
|
//
|
|
// _startImageSizeField = startImageArea.Q<FloatField>("size");
|
|
// _startImageSizeField.RegisterValueChangedCallback(e =>
|
|
// {
|
|
// _target.UpdateStartEndImages(true);
|
|
// });
|
|
//
|
|
// _startImageOffsetField = startImageArea.Q<FloatField>("offset");
|
|
// _startImageOffsetField.RegisterValueChangedCallback(e =>
|
|
// {
|
|
// _target.UpdateStartEndImages(true);
|
|
// });
|
|
//
|
|
// OnStartImagePresetChanged(_target.startImagePreset);
|
|
//
|
|
//
|
|
// // init end images
|
|
// var endImageArea = tree.Q<VisualElement>("endImageArea");
|
|
// _endImageSpriteField = endImageArea.Q<ObjectField>("sprite");
|
|
// _endImageSpriteField.RegisterValueChangedCallback(e =>
|
|
// {
|
|
// _target.UpdateStartEndImages(false);
|
|
// });
|
|
//
|
|
// _noneEndImageButton = endImageArea.Q<Button>("none");
|
|
// _triangleEndImageButton = endImageArea.Q<Button>("triangle");
|
|
// _arrowEndImageButton = endImageArea.Q<Button>("arrow");
|
|
// _emptyCircleEndImageButton = endImageArea.Q<Button>("emptyCircle");
|
|
// _filledCircleEndImageButton = endImageArea.Q<Button>("filledCircle");
|
|
// _customEndImageButton = endImageArea.Q<Button>("custom");
|
|
//
|
|
// _noneEndImageButton.clicked += () => OnEndImagePresetChanged(StartEndImagePreset.None);
|
|
// _triangleEndImageButton.clicked += () => OnEndImagePresetChanged(StartEndImagePreset.Triangle);
|
|
// _arrowEndImageButton.clicked += () => OnEndImagePresetChanged(StartEndImagePreset.Arrow);
|
|
// _emptyCircleEndImageButton.clicked += () => OnEndImagePresetChanged(StartEndImagePreset.EmptyCircle);
|
|
// _filledCircleEndImageButton.clicked += () => OnEndImagePresetChanged(StartEndImagePreset.FilledCircle);
|
|
// _customEndImageButton.clicked += () => OnEndImagePresetChanged(StartEndImagePreset.Custom);
|
|
//
|
|
//
|
|
// OnEndImagePresetChanged(_target.endImagePreset);
|
|
// _endImageSizeField = endImageArea.Q<FloatField>("size");
|
|
// _endImageSizeField.RegisterValueChangedCallback(e =>
|
|
// {
|
|
// _target.UpdateStartEndImages(false);
|
|
// });
|
|
//
|
|
// _endImageOffsetField = endImageArea.Q<FloatField>("offset");
|
|
// _endImageOffsetField.RegisterValueChangedCallback(e =>
|
|
// {
|
|
// _target.UpdateStartEndImages(false);
|
|
// });
|
|
//
|
|
//
|
|
// return tree;
|
|
// }
|
|
|
|
|
|
void OnLineTexturePresetChanged(LineTexturePreset preset)
|
|
{
|
|
switch (preset)
|
|
{
|
|
case LineTexturePreset.Default:
|
|
_defaultLineTextureButton.style.backgroundColor = Color.gray;
|
|
_uvTestLineTextureButton.style.backgroundColor = StyleKeyword.Null;
|
|
_customLineTextureButton.style.backgroundColor = StyleKeyword.Null;
|
|
_textureField.value = settings.defaultLineTexture;
|
|
// _textureField.SetEnabled(false);
|
|
|
|
// if not initialized yet
|
|
if (_target.texture == null)
|
|
{
|
|
_target.texture = settings.defaultLineTexture;
|
|
}
|
|
break;
|
|
case LineTexturePreset.UVTest:
|
|
_defaultLineTextureButton.style.backgroundColor = StyleKeyword.Null;
|
|
_uvTestLineTextureButton.style.backgroundColor = Color.gray;
|
|
_customLineTextureButton.style.backgroundColor = StyleKeyword.Null;
|
|
_textureField.value = settings.uvTestLineTexture;
|
|
// _textureField.SetEnabled(false);
|
|
break;
|
|
case LineTexturePreset.Custom:
|
|
_defaultLineTextureButton.style.backgroundColor = StyleKeyword.Null;
|
|
_uvTestLineTextureButton.style.backgroundColor = StyleKeyword.Null;
|
|
_customLineTextureButton.style.backgroundColor = Color.gray;
|
|
_textureField.SetEnabled(true);
|
|
break;
|
|
default:
|
|
throw new ArgumentOutOfRangeException(nameof(preset), preset, null);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void OnStartImagePresetChanged(StartEndImagePreset preset)
|
|
{
|
|
switch (preset)
|
|
{
|
|
case StartEndImagePreset.None:
|
|
_noneStartImageButton.style.backgroundColor = Color.gray;
|
|
_triangleStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_arrowStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_emptyCircleStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_filledCircleStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_customStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
|
|
_startImageSpriteField.value = null;
|
|
// _startImageSpriteField.SetEnabled(false);
|
|
break;
|
|
case StartEndImagePreset.Triangle:
|
|
_noneStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_triangleStartImageButton.style.backgroundColor = Color.gray;
|
|
_arrowStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_emptyCircleStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_filledCircleStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_customStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
|
|
_startImageSpriteField.value = settings.triangleHead;
|
|
// _startImageSpriteField.SetEnabled(false);
|
|
break;
|
|
case StartEndImagePreset.Arrow:
|
|
_noneStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_triangleStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_arrowStartImageButton.style.backgroundColor = Color.gray;
|
|
_emptyCircleStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_filledCircleStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_customStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
|
|
_startImageSpriteField.value = settings.arrowHead;
|
|
// _startImageSpriteField.SetEnabled(false);
|
|
break;
|
|
case StartEndImagePreset.EmptyCircle:
|
|
_noneStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_triangleStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_arrowStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_emptyCircleStartImageButton.style.backgroundColor = Color.gray;
|
|
_filledCircleStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_customStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
|
|
_startImageSpriteField.value = settings.emptyCircleHead;
|
|
// _startImageSpriteField.SetEnabled(false);
|
|
break;
|
|
case StartEndImagePreset.FilledCircle:
|
|
_noneStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_triangleStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_arrowStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_emptyCircleStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_filledCircleStartImageButton.style.backgroundColor = Color.gray;
|
|
_customStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
|
|
_startImageSpriteField.value = settings.filledCircleHead;
|
|
// _startImageSpriteField.SetEnabled(false);
|
|
break;
|
|
case StartEndImagePreset.Custom:
|
|
_noneStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_triangleStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_arrowStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_emptyCircleStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_filledCircleStartImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_customStartImageButton.style.backgroundColor = Color.gray;
|
|
|
|
_startImageSpriteField.SetEnabled(true);
|
|
break;
|
|
default:
|
|
throw new ArgumentOutOfRangeException(nameof(preset), preset, null);
|
|
}
|
|
}
|
|
|
|
void OnEndImagePresetChanged(StartEndImagePreset preset)
|
|
{
|
|
switch (preset)
|
|
{
|
|
case StartEndImagePreset.None:
|
|
_noneEndImageButton.style.backgroundColor = Color.gray;
|
|
_triangleEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_arrowEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_emptyCircleEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_filledCircleEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_customEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
|
|
_endImageSpriteField.value = null;
|
|
// _endImageSpriteField.SetEnabled(false);
|
|
break;
|
|
case StartEndImagePreset.Triangle:
|
|
_noneEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_triangleEndImageButton.style.backgroundColor = Color.gray;
|
|
_arrowEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_emptyCircleEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_filledCircleEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_customEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
|
|
_endImageSpriteField.value = settings.triangleHead;
|
|
// _endImageSpriteField.SetEnabled(false);
|
|
break;
|
|
case StartEndImagePreset.Arrow:
|
|
_noneEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_triangleEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_arrowEndImageButton.style.backgroundColor = Color.gray;
|
|
_emptyCircleEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_filledCircleEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_customEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
|
|
_endImageSpriteField.value = settings.arrowHead;
|
|
// _endImageSpriteField.SetEnabled(false);
|
|
break;
|
|
case StartEndImagePreset.EmptyCircle:
|
|
_noneEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_triangleEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_arrowEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_emptyCircleEndImageButton.style.backgroundColor = Color.gray;
|
|
_filledCircleEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_customEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
|
|
_endImageSpriteField.value = settings.emptyCircleHead;
|
|
// _endImageSpriteField.SetEnabled(false);
|
|
break;
|
|
case StartEndImagePreset.FilledCircle:
|
|
_noneEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_triangleEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_arrowEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_emptyCircleEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_filledCircleEndImageButton.style.backgroundColor = Color.gray;
|
|
_customEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
|
|
_endImageSpriteField.value = settings.filledCircleHead;
|
|
// _endImageSpriteField.SetEnabled(false);
|
|
break;
|
|
case StartEndImagePreset.Custom:
|
|
_noneEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_triangleEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_arrowEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_emptyCircleEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_filledCircleEndImageButton.style.backgroundColor = StyleKeyword.Null;
|
|
_customEndImageButton.style.backgroundColor = Color.gray;
|
|
|
|
_endImageSpriteField.SetEnabled(true);
|
|
break;
|
|
default:
|
|
throw new ArgumentOutOfRangeException(nameof(preset), preset, null);
|
|
}
|
|
}
|
|
|
|
void UpdateVertexCount()
|
|
{
|
|
if(_vertexCountField == null) return;
|
|
#if UNITY_2022_3_OR_NEWER
|
|
_vertexCountField.text = $"Vertex Count : {_target.vertexCount}";
|
|
#endif
|
|
}
|
|
|
|
void SplineChangeCallback(Spline spline, int idx, SplineModification modification)
|
|
{
|
|
for (int i = 0; i < _target.splineContainer.Splines.Count; i++)
|
|
{
|
|
if (_target.splineContainer.Splines[i] == spline)
|
|
{
|
|
UpdateVertexCount();
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
void SplineContainerChangeCallback(SplineContainer container, int i)
|
|
{
|
|
if(container == _target.splineContainer) UpdateVertexCount();
|
|
}
|
|
}
|
|
} |