BITFALL/Assets/Plugins/Character Controller Pro/Demo/Scripts/Platforms/PlatformNode.cs

92 lines
2.6 KiB
C#

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
}