You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.4 KiB
C#

using UnityEngine;
using UnityEditor;
namespace RootMotion.Dynamics {
[CustomPropertyDrawer (typeof (Weight))]
public class WeightDrawer : PropertyDrawer {
const int valueWidth = 30;
const int gap = 20;
const float min = 0;
const float max = 1;
public override void OnGUI (Rect pos, SerializedProperty prop, GUIContent label) {
SerializedProperty mode = prop.FindPropertyRelative("mode");
SerializedProperty floatValue = prop.FindPropertyRelative ("floatValue");
SerializedProperty curve = prop.FindPropertyRelative ("curve");
SerializedProperty tooltip = prop.FindPropertyRelative("tooltip");
label.tooltip = tooltip.stringValue;
Rect left = new Rect(pos.x, pos.y, pos.width - valueWidth - gap, pos.height);
Rect right = new Rect (pos.width - valueWidth, pos.y, valueWidth, pos.height);
Weight.Mode m = (Weight.Mode)mode.enumValueIndex;
if (m == Weight.Mode.Float) {
floatValue.floatValue = EditorGUI.FloatField(left, label, floatValue.floatValue);
} else {
// Draw curve
int indent = EditorGUI.indentLevel;
EditorGUI.PropertyField (left, curve, label);
EditorGUI.indentLevel = indent;
}
int i = EditorGUI.indentLevel;
EditorGUI.indentLevel = 0;
m = (Weight.Mode)EditorGUI.EnumPopup(right, GUIContent.none, ( Weight.Mode)mode.enumValueIndex, EditorStyles.miniBoldLabel);
mode.enumValueIndex = (int)m;
EditorGUI.indentLevel = i;
}
}
}