﻿//----------------------------------------------------------------------------------
// 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(VRScrollBarGaze), true)]
    [CanEditMultipleObjects]
    public class VRScrollBarEditor : Editor
    {
        SerializedProperty timeToTrigger, spriteType, minPosition, maxPosition,
            imageBackground, imageForeground, spriteRendererBackground, spriteRendererForeground,
            colorNormal, colorHovered, colorActive, OnGazeEnterEvent, OnGazeExitEvent, OnGazeTriggerEvent, OnValueChanged;

        void OnEnable()
        {
            timeToTrigger = serializedObject.FindProperty("timeToTrigger");
            spriteType = serializedObject.FindProperty("_spriteType");
            imageBackground = serializedObject.FindProperty("imageBackground");
            imageForeground = serializedObject.FindProperty("imageForeground");
            spriteRendererBackground = serializedObject.FindProperty("spriteRendererBackground");
            spriteRendererForeground = serializedObject.FindProperty("spriteRendererForeground");
            minPosition = serializedObject.FindProperty("minPosition");
            maxPosition = serializedObject.FindProperty("maxPosition");
            colorNormal = serializedObject.FindProperty("colorNormal");
            colorHovered = serializedObject.FindProperty("colorHovered");
            colorActive = serializedObject.FindProperty("colorActive");
            OnGazeEnterEvent = serializedObject.FindProperty("OnGazeEnterEvent");
            OnGazeExitEvent = serializedObject.FindProperty("OnGazeExitEvent");
            OnGazeTriggerEvent = serializedObject.FindProperty("OnGazeTriggerEvent");
            OnValueChanged = serializedObject.FindProperty("OnValueChanged");
        }

        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            VRScrollBarGaze scroll = target as VRScrollBarGaze;
            EditorGUILayout.PropertyField(timeToTrigger);
            EditorGUILayout.PropertyField(spriteType);
            switch (spriteType.enumValueIndex)
            {
                case 0:
                    EditorGUILayout.PropertyField(imageBackground);
                    EditorGUILayout.PropertyField(imageForeground);
                    break;
                case 1:
                    EditorGUILayout.PropertyField(spriteRendererBackground);
                    EditorGUILayout.PropertyField(spriteRendererForeground);
                    break;
            }
            EditorGUILayout.Space();
            EditorGUILayout.PropertyField(colorNormal);
            EditorGUILayout.PropertyField(colorHovered);
            EditorGUILayout.PropertyField(colorActive);
            foreach (var v in serializedObject.targetObjects)
            {
                VRScrollBarGaze b = v as VRScrollBarGaze;
                if (b != null)
                    b.UpdateColors();
            }
            EditorGUILayout.Space();
            EditorGUILayout.PropertyField(minPosition);
            EditorGUILayout.PropertyField(maxPosition);
            scroll.value = EditorGUILayout.Slider(new GUIContent("Value"), scroll.value, 0f, 1f);
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.PropertyField(OnGazeEnterEvent);
            EditorGUILayout.PropertyField(OnGazeExitEvent);
            EditorGUILayout.PropertyField(OnGazeTriggerEvent);
            EditorGUILayout.PropertyField(OnValueChanged);
            serializedObject.ApplyModifiedProperties();
        }
    }
}