45 lines
2.7 KiB
C#
45 lines
2.7 KiB
C#
using UnityEngine;
|
|
using UnityEditor;
|
|
|
|
[CustomPropertyDrawer(typeof(TransformTweenBehaviour))]
|
|
public class TransformTweenDrawer : PropertyDrawer
|
|
{
|
|
GUIContent m_TweenPositionContent = new GUIContent("Tween Position", "This should be true if the transformToMove to change position. This causes recalulations each frame which are more CPU intensive.");
|
|
GUIContent m_TweenRotationContent = new GUIContent("Tween Rotation", "This should be true if the transformToMove to change rotation.");
|
|
GUIContent m_TweenTypeContent = new GUIContent("Tween Type", "Linear - the transform moves the same amount each frame (assuming static start and end locations).\n"
|
|
+ "Deceleration - the transform moves slower the closer to the end location it is.\n"
|
|
+ "Harmonic - the transform moves faster in the middle of its tween.\n"
|
|
+ "Custom - uses the customStartingSpeed and customEndingSpeed to create a curve for the desired tween.");
|
|
GUIContent m_CustomCurveContent = new GUIContent("Custom Curve", "This should be a normalised curve (between 0,0 and 1,1) that represents how the tweening object accelerates at different points along the clip.");
|
|
|
|
public override float GetPropertyHeight (SerializedProperty property, GUIContent label)
|
|
{
|
|
int fieldCount = property.FindPropertyRelative ("tweenType").enumValueIndex == (int)TransformTweenBehaviour.TweenType.Custom ? 5 : 3;
|
|
return fieldCount * (EditorGUIUtility.singleLineHeight);
|
|
}
|
|
|
|
public override void OnGUI (Rect position, SerializedProperty property, GUIContent label)
|
|
{
|
|
SerializedProperty tweenPositionProp = property.FindPropertyRelative ("tweenPosition");
|
|
SerializedProperty tweenRotationProp = property.FindPropertyRelative("tweenRotation");
|
|
SerializedProperty tweenTypeProp = property.FindPropertyRelative ("tweenType");
|
|
|
|
Rect singleFieldRect = new Rect(position.x, position.y, position.width, EditorGUIUtility.singleLineHeight);
|
|
EditorGUI.PropertyField (singleFieldRect, tweenPositionProp, m_TweenPositionContent);
|
|
|
|
singleFieldRect.y += EditorGUIUtility.singleLineHeight;
|
|
EditorGUI.PropertyField (singleFieldRect, tweenRotationProp, m_TweenRotationContent);
|
|
|
|
singleFieldRect.y += EditorGUIUtility.singleLineHeight;
|
|
EditorGUI.PropertyField(singleFieldRect, tweenTypeProp, m_TweenTypeContent);
|
|
|
|
if (tweenTypeProp.enumValueIndex == (int)TransformTweenBehaviour.TweenType.Custom)
|
|
{
|
|
SerializedProperty customCurveProp = property.FindPropertyRelative ("customCurve");
|
|
|
|
singleFieldRect.y += EditorGUIUtility.singleLineHeight;
|
|
EditorGUI.PropertyField (singleFieldRect, customCurveProp, m_CustomCurveContent);
|
|
}
|
|
}
|
|
}
|