﻿//----------------------------------------------------------------------------------
// 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 UnityEngine;
using UnityEditor;

namespace GVRNavi
{
    [CustomEditor(typeof(VRToggleGaze), true)]
    [CanEditMultipleObjects]
    public class VRToggleGazeEditor : Editor
    {
        SerializedProperty timeToTrigger, spriteType, imageRendererBackground, imageRendererForeground,
            spriteRendererBackground, spriteRendererForeground,
            colorUnchecked, colorHoveredUnchecked, colorHoveredChecked, colorChecked, colorForeground,
            OnGazeEnterEvent, OnGazeExitEvent, OnGazeTriggerEvent, OnValueChanged;

        void OnEnable()
        {
            timeToTrigger = serializedObject.FindProperty("timeToTrigger");
            spriteType = serializedObject.FindProperty("_spriteType");
            imageRendererBackground = serializedObject.FindProperty("imageRendererBackground");
            imageRendererForeground = serializedObject.FindProperty("imageRendererForeground");
            spriteRendererBackground = serializedObject.FindProperty("spriteRendererBackground");
            spriteRendererForeground = serializedObject.FindProperty("spriteRendererForeground");
            colorUnchecked = serializedObject.FindProperty("colorUnchecked");
            colorHoveredUnchecked = serializedObject.FindProperty("colorHoveredUnchecked");
            colorHoveredChecked = serializedObject.FindProperty("colorHoveredChecked");
            colorChecked = serializedObject.FindProperty("colorChecked");
            colorForeground = serializedObject.FindProperty("colorForeground");
            OnGazeEnterEvent = serializedObject.FindProperty("OnGazeEnterEvent");
            OnGazeExitEvent = serializedObject.FindProperty("OnGazeExitEvent");
            OnGazeTriggerEvent = serializedObject.FindProperty("OnGazeTriggerEvent");
            OnValueChanged = serializedObject.FindProperty("OnValueChanged");
        }

        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            VRToggleGaze toggle = target as VRToggleGaze;
            EditorGUILayout.PropertyField(timeToTrigger);
            EditorGUILayout.PropertyField(spriteType);
            switch (spriteType.enumValueIndex)
            {
                case 0:
                    EditorGUILayout.PropertyField(imageRendererBackground);
                    EditorGUILayout.PropertyField(imageRendererForeground);
                    break;
                case 1:
                    EditorGUILayout.PropertyField(spriteRendererBackground);
                    EditorGUILayout.PropertyField(spriteRendererForeground);
                    break;
            }
            EditorGUILayout.Space();
            EditorGUILayout.PropertyField(colorUnchecked);
            EditorGUILayout.PropertyField(colorHoveredUnchecked);
            EditorGUILayout.PropertyField(colorHoveredChecked);
            EditorGUILayout.PropertyField(colorChecked);
            EditorGUILayout.PropertyField(colorForeground);
            EditorGUILayout.Space();
            toggle.Checked = EditorGUILayout.Toggle(new GUIContent("Checked"), toggle.Checked);
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.PropertyField(OnGazeEnterEvent);
            EditorGUILayout.PropertyField(OnGazeExitEvent);
            EditorGUILayout.PropertyField(OnGazeTriggerEvent);
            EditorGUILayout.PropertyField(OnValueChanged);
            serializedObject.ApplyModifiedProperties();
        }
    }
}