using UnityEditor;
using UnityEditor.Timeline;
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;

namespace Timeline.Samples
{
    // Editor used by the TimelineEditor to customize the view of TweenClip.
    [CustomTimelineEditor(typeof(TweenClip))]
    public class TweenClipEditor : ClipEditor
    {
        static GUIStyle s_StartTextStyle;
        static GUIStyle s_EndTextStyle;

        static TweenClipEditor()
        {
            s_StartTextStyle = GUI.skin.label;
            s_EndTextStyle = new GUIStyle(GUI.skin.label) { alignment = TextAnchor.MiddleRight };
        }

        // Called by the Timeline editor to draw the background of a TweenClip.
        public override void DrawBackground(TimelineClip clip, ClipBackgroundRegion region)
        {
            TweenClip asset = clip.asset as TweenClip;

            if (asset == null)
                return;

            PlayableDirector director = TimelineEditor.inspectedDirector;

            if (director == null)
                return;

            Transform startLocation = director.GetReferenceValue(asset.startLocation.exposedName, out bool startFound) as Transform;
            Transform endLocation = director.GetReferenceValue(asset.endLocation.exposedName, out bool endFound) as Transform;

            if (startFound && startLocation != null)
                EditorGUI.LabelField(region.position, startLocation.gameObject.name, s_StartTextStyle);

            if (endFound && endLocation != null)
                EditorGUI.LabelField(region.position, endLocation.gameObject.name, s_EndTextStyle);
        }
    }
}