Files
ichni_Official/Assets/Feel/MMFeedbacks/Editor/Springs/MMSpringFloatPropertyDrawer.cs
SoulliesOfficial d4e860fa16 initial
2025-06-03 02:42:28 -04:00

68 lines
2.3 KiB
C#

using MoreMountains.Tools;
using UnityEngine;
using UnityEditor;
using UnityEditor.UIElements;
using UnityEngine.UIElements;
namespace MoreMountains.Feedbacks
{
[CustomPropertyDrawer(typeof(MMSpringFloat))]
class MMSpringFloatPropertyDrawer : PropertyDrawer
{
protected float _lastTarget;
protected float _max;
public override VisualElement CreatePropertyGUI(SerializedProperty property)
{
var root = new VisualElement();
root.style.backgroundColor = new StyleColor(new Color(255,255,255,0.03f));
root.style.marginTop = 5;
root.style.paddingRight = 5;
SerializedProperty _damping = property.FindPropertyRelative("Damping");
SerializedProperty _frequency = property.FindPropertyRelative("Frequency");
SerializedProperty _unifiedSpring = property.FindPropertyRelative("UnifiedSpring");
SerializedProperty _springDebug = property.FindPropertyRelative("SpringDebug");
root.Add(new PropertyField(_damping));
root.Add(new PropertyField(_frequency));
if (!_unifiedSpring.boolValue)
{
SerializedProperty _clampSettings = property.FindPropertyRelative("ClampSettings");
root.Add(new PropertyField(_clampSettings));
}
if (Application.isPlaying && !_unifiedSpring.boolValue)
{
VisualElement horizontalLayout = new VisualElement();
horizontalLayout.style.flexDirection = FlexDirection.Row;
root.Add(horizontalLayout);
FloatField currentValue = new FloatField("CurrentValue") { bindingPath = "CurrentValueDisplay", isReadOnly = true, style = { flexGrow = 1, paddingRight = 10 } };
currentValue.SetEnabled(false);
currentValue.AddToClassList("mm-fixed-width-floatfield");
horizontalLayout.Add(currentValue);
FloatField targetValue = new FloatField("TargetValue") { bindingPath = "TargetValueDisplay", isReadOnly = true, style = { flexGrow = 1} };
targetValue.SetEnabled(false);
targetValue.AddToClassList("mm-fixed-width-floatfield");
horizontalLayout.Add(targetValue);
FloatField velocity = new FloatField("Velocity") { bindingPath = "VelocityDisplay", isReadOnly = true, style = { flexGrow = 1, paddingLeft = 10} };
velocity.SetEnabled(false);
velocity.AddToClassList("mm-fixed-width-floatfield");
horizontalLayout.Add(velocity);
root.Add(new PropertyField(_springDebug));
}
return root;
}
}
}