﻿//----------------------------------------------------------------------------------
// GVRNavi | Garpix Virtual Reality Navigation
// Copyright (c) 2017 Garpix Ltd.
//
// Plugin Homepage: https://gvrnavi.garpix.com
// Author Homepage: https://garpix.com
// Support: support@garpix.com
// License: Asset Store Terms of Service and EULA
// License URI: See LICENSE file in the project root for full license information.
//----------------------------------------------------------------------------------

using UnityEditor;

namespace GVRNavi
{
    [CustomEditor(typeof(VRButtonGaze), true)]
    [CanEditMultipleObjects]
    public class VRButtonGazeEditor : Editor
    {
        SerializedProperty timeToTrigger, spriteType, imageRendererBackground, spriteRendererBackground, spriteNormal,
            spriteHovered, colorNormal, colorHovered, OnGazeEnterEvent, OnGazeExitEvent, OnGazeTriggerEvent;

        void OnEnable()
        {
            timeToTrigger = serializedObject.FindProperty("timeToTrigger");
            spriteType = serializedObject.FindProperty("_spriteType");
            imageRendererBackground = serializedObject.FindProperty("imageRendererBackground");
            spriteRendererBackground = serializedObject.FindProperty("spriteRendererBackground");
            spriteNormal = serializedObject.FindProperty("spriteNormal");
            spriteHovered = serializedObject.FindProperty("spriteHovered");
            colorNormal = serializedObject.FindProperty("colorNormal");
            colorHovered = serializedObject.FindProperty("colorHovered");
            OnGazeEnterEvent = serializedObject.FindProperty("OnGazeEnterEvent");
            OnGazeExitEvent = serializedObject.FindProperty("OnGazeExitEvent");
            OnGazeTriggerEvent = serializedObject.FindProperty("OnGazeTriggerEvent");
        }

        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            EditorGUILayout.PropertyField(timeToTrigger);
            EditorGUILayout.PropertyField(spriteType);
            switch (spriteType.enumValueIndex)
            {
                case 0: EditorGUILayout.PropertyField(imageRendererBackground); break;
                case 1: EditorGUILayout.PropertyField(spriteRendererBackground); break;
            }
            EditorGUILayout.PropertyField(spriteNormal);
            EditorGUILayout.PropertyField(spriteHovered);
            EditorGUILayout.Space();
            EditorGUILayout.PropertyField(colorNormal);
            foreach (var v in serializedObject.targetObjects)
            {
                VRButtonGaze b = v as VRButtonGaze;
                if (b != null)
                    b.UpdateColor();
            }
            EditorGUILayout.PropertyField(colorHovered);
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.PropertyField(OnGazeEnterEvent);
            EditorGUILayout.PropertyField(OnGazeExitEvent);
            EditorGUILayout.PropertyField(OnGazeTriggerEvent);
            serializedObject.ApplyModifiedProperties();
        }
    }
}