using System;
using TinaX.Tween.Components;
using TinaXEditor.Utils;
using UnityEditor;
using UnityEngine;
namespace TinaXEditor.Tween.CustomEditors
{
///
/// Tween组件基类
///
[CustomEditor(typeof(TweenComponentBase), true)]
public class TweenComponentBaseCustomEditor : Editor
{
public string Title { get; protected set; } = "Tween";
protected Action SetOriginValueOnClicked;
protected Action SetTargetValueOnClicked;
protected virtual TweenComponentBase m_TweenComponentBase { get; set; }
protected TweenEditorUIDraw UIDraw = new TweenEditorUIDraw();
protected virtual void OnEnable()
{
m_TweenComponentBase = (TweenComponentBase)target;
}
public override void OnInspectorGUI()
{
//base.OnInspectorGUI();
var _serializedObject = this.serializedObject;
UIDraw.DrawTitle(this.Title);
EditorGUIUtil.HorizontalLine(1, Color.gray);
EditorGUILayout.Space();
UIDraw.DrawDuration(ref _serializedObject);
UIDraw.DrawPlayOnAwake(ref _serializedObject);
UIDraw.DrawDelayBefore(ref _serializedObject);
UIDraw.DrawDescription(ref _serializedObject);
EditorGUILayout.Space();
UIDraw.DrawEvents_FinishAndStop(ref _serializedObject);
_serializedObject.ApplyModifiedProperties();
}
///
/// 使用Unity自己的方式绘制InspectorGUI
///
protected void DrawNativeInspectorGUI()
{
base.OnInspectorGUI();
}
}
///
/// 泛型Tween基类
///
[CustomEditor(typeof(TweenComponentBase<,>), true)]
public class TweenComponentBaseCustomEditorGeneric : TweenComponentBaseCustomEditor
{
public override void OnInspectorGUI()
{
//base.OnInspectorGUI();
var _serializedObject = this.serializedObject;
UIDraw.DrawTitle(this.Title);
EditorGUIUtil.HorizontalLine(1, Color.gray);
EditorGUILayout.Space();
UIDraw.DrawTarget(ref _serializedObject);
UIDraw.DrawFromValue(ref _serializedObject);
UIDraw.DrawToValue(ref _serializedObject);
UIDraw.DrawAutoOriginValue(ref _serializedObject);
UIDraw.DrawAutoTargetValue(ref _serializedObject);
UIDraw.DrawSetAsOriginValueOrTargetValue(ref SetOriginValueOnClicked, ref SetTargetValueOnClicked);
EditorGUILayout.Space();
EditorGUIUtil.HorizontalLine(1, Color.gray);
EditorGUILayout.Space();
UIDraw.DrawDuration(ref _serializedObject);
UIDraw.DrawPlayOnAwake(ref _serializedObject);
UIDraw.DrawDelayBefore(ref _serializedObject);
UIDraw.DrawDescription(ref _serializedObject);
EditorGUILayout.Space();
UIDraw.DrawEvents_FinishAndStop(ref _serializedObject);
_serializedObject.ApplyModifiedProperties();
}
}
}