using UnityEngine; using Lightbug.Utilities; namespace Lightbug.CharacterControllerPro.Demo { #if UNITY_EDITOR using UnityEditor; #endif [System.Serializable] public class PlatformNode { public Vector3 position = Vector3.zero; public Vector3 eulerAngles = Vector3.zero; public AnimationCurve movementCurve = AnimationCurve.Linear(0, 0, 1, 1); public AnimationCurve rotationCurve = AnimationCurve.Linear(0, 0, 1, 1); [Min(0f)] public float targetTime = 1; public void Initialize() { position = Vector3.zero; eulerAngles = Vector3.zero; movementCurve = AnimationCurve.Linear(0, 0, 1, 1); rotationCurve = AnimationCurve.Linear(0, 0, 1, 1); targetTime = 1; } } #if UNITY_EDITOR [CustomPropertyDrawer(typeof(PlatformNode))] public class PlatformNodeDrawer : PropertyDrawer { SerializedProperty position = null; SerializedProperty eulerAngles = null; SerializedProperty movementCurve = null; SerializedProperty rotationCurve = null; SerializedProperty targetTime = null; public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { EditorGUI.BeginProperty(position, label, property); this.position = property.FindPropertyRelative("position"); this.eulerAngles = property.FindPropertyRelative("eulerAngles"); this.movementCurve = property.FindPropertyRelative("movementCurve"); this.rotationCurve = property.FindPropertyRelative("rotationCurve"); this.targetTime = property.FindPropertyRelative("targetTime"); Rect fieldRect = position; fieldRect.height = EditorGUIUtility.singleLineHeight; EditorGUI.PropertyField(fieldRect, this.position); fieldRect.y += fieldRect.height; EditorGUI.PropertyField(fieldRect, this.eulerAngles); fieldRect.y += fieldRect.height; EditorGUI.PropertyField(fieldRect, this.movementCurve); fieldRect.y += fieldRect.height; EditorGUI.PropertyField(fieldRect, this.rotationCurve); fieldRect.y += fieldRect.height; EditorGUI.PropertyField(fieldRect, this.targetTime); fieldRect.y += fieldRect.height; EditorGUI.EndProperty(); } public override float GetPropertyHeight(SerializedProperty property, GUIContent label) { return 5 * EditorGUIUtility.singleLineHeight; } } #endif }