﻿using ImpactCFX.EditorScripts;
using UnityEditor;
using UnityEngine;

namespace ImpactCFX.VFXBatch.EditorScripts
{
    [CustomEditor(typeof(ImpactVFXBatchEffectAuthoring))]
    public class ImpactVFXBatchEffectAuthoringEditor : ImpactEffectAuthoringBaseEditor
    {
        private SerializedProperty minimumVelocityProperty;
        private SerializedProperty collisionNormalInfluenceProperty;

        private SerializedProperty visualEffectPrefabProperty;
        private SerializedProperty visualEffectTypeProperty;

        private SerializedProperty emitOnSlideProperty;
        private SerializedProperty emitOnRollProperty;

        protected override void OnEnable()
        {
            base.OnEnable();

            minimumVelocityProperty = serializedObject.FindProperty("minimumVelocity");
            collisionNormalInfluenceProperty = serializedObject.FindProperty("collisionNormalInfluence");

            visualEffectPrefabProperty = serializedObject.FindProperty("visualEffectPrefab");
            visualEffectTypeProperty = serializedObject.FindProperty("visualEffectType");

            emitOnSlideProperty = serializedObject.FindProperty("emitOnSlide");
            emitOnRollProperty = serializedObject.FindProperty("emitOnRoll");
        }

        protected override void drawEffectProperties()
        {
            EditorGUILayout.PropertyField(visualEffectPrefabProperty);
            EditorGUILayout.PropertyField(visualEffectTypeProperty);

            ParticleEffectType particleEffectType = (ParticleEffectType)visualEffectTypeProperty.enumValueIndex;

            GUI.enabled = particleEffectType == ParticleEffectType.Looped;

            EditorGUI.indentLevel++;

            EditorGUILayout.PropertyField(emitOnSlideProperty);
            EditorGUILayout.PropertyField(emitOnRollProperty);

            EditorGUI.indentLevel--;

            GUI.enabled = true;

            ImpactEditorUtilities.Separator();

            EditorGUILayout.PropertyField(minimumVelocityProperty);
            EditorGUILayout.Slider(collisionNormalInfluenceProperty, 0, 1);
        }
    }
}