using DG.Tweening;
using UnityEditor;
using UnityEngine;
namespace UGUITweener
{
[CustomEditor(typeof(TweenerSetting), true)]
public class TweenerSettingEditor : Editor
{
private SerializedProperty onCompleteEvent;
protected virtual void OnEnable()
{
onCompleteEvent = serializedObject.FindProperty("unityEvent");
}
public override void OnInspectorGUI()
{
GUILayout.Space(6f);
base.OnInspectorGUI();
DrawCommonProperties();
serializedObject.ApplyModifiedProperties();
}
protected void DrawCommonProperties()
{
TweenerSetting tw = target as TweenerSetting;
if (TweenTools.DrawHeader("Tweener"))
{
TweenTools.BeginContents();
TweenTools.SetLabelWidth(110f);
GUI.changed = false;
AnimationCurve curve = EditorGUILayout.CurveField("Animation Curve", tw.animationCurve, GUILayout.Width(170f), GUILayout.Height(62f));
GUILayout.BeginHorizontal();
float dur = EditorGUILayout.FloatField("Duration", tw.duration, GUILayout.Width(170f));
GUILayout.Label("seconds");
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
float del = EditorGUILayout.FloatField("Start Delay", tw.delay, GUILayout.Width(170f));
GUILayout.Label("seconds");
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
int loop = EditorGUILayout.IntField("Loop", tw.loop, GUILayout.Width(170f));
GUILayout.Label("int");
GUILayout.EndHorizontal();
if (loop != 0)
{
GUILayout.BeginHorizontal();
tw.loopType = (LoopType)EditorGUILayout.EnumPopup("LoopType", tw.loopType, GUILayout.Width(200f));
GUILayout.EndHorizontal();
}
GUILayout.BeginHorizontal();
int tg = EditorGUILayout.IntField("Tween Group", tw.tweenGroup, GUILayout.Width(170f));
GUILayout.Label("int");
GUILayout.EndHorizontal();
bool ts = EditorGUILayout.Toggle("Ignore TimeScale", tw.ignoreTimeScale);
GUILayout.BeginHorizontal();
bool autoPlay = EditorGUILayout.Toggle("AutoPlay", tw.autoPlay);
GUILayout.EndHorizontal();
if (GUI.changed)
{
TweenTools.RegisterUndo("Tween Change", tw);
tw.animationCurve = curve;
tw.ignoreTimeScale = ts;
tw.autoPlay = autoPlay;
tw.tweenGroup = tg;
tw.loop = loop;
tw.duration = dur;
tw.delay = del;
TweenTools.SetDirty(tw);
}
TweenTools.EndContents();
}
if (TweenTools.DrawHeader("OnComplete"))
{
TweenTools.SetLabelWidth(80f);
TweenTools.DrawEvents(onCompleteEvent, new GUIContent("OnComplete"));
}
}
}
}