using UnityEngine;

namespace ABI.CCK.Components
{
    [AddComponentMenu("ChilloutVR/CVR Haptic Area Chest")]
    [HelpURL("https://developers.abinteractive.net/cck/components/haptic-chest-area/")]
    public class CVRHapticAreaChest : MonoBehaviour, ICCK_Component
    {
        public Vector3 chestAreaSize = new Vector3(0.05f, 0.05f, 0.05f);

        [HideInInspector]
        public Vector3[] HapticPoints40 = new []
        {
            new Vector3(-0.75f, 0.8f, 1f),
            new Vector3(-0.25f, 0.8f, 1f),
            new Vector3(0.25f, 0.8f, 1f),
            new Vector3(0.75f, 0.8f, 1f),
            
            new Vector3(-0.75f, 0.4f, 1f),
            new Vector3(-0.25f, 0.4f, 1f),
            new Vector3(0.25f, 0.4f, 1f),
            new Vector3(0.75f, 0.4f, 1f),
            
            new Vector3(-0.75f, 0f, 1f),
            new Vector3(-0.25f, 0f, 1f),
            new Vector3(0.25f, 0f, 1f),
            new Vector3(0.75f, 0f, 1f),
            
            new Vector3(-0.75f, -0.4f, 1f),
            new Vector3(-0.25f, -0.4f, 1f),
            new Vector3(0.25f, -0.4f, 1f),
            new Vector3(0.75f, -0.4f, 1f),
            
            new Vector3(-0.75f, -0.8f, 1f),
            new Vector3(-0.25f, -0.8f, 1f),
            new Vector3(0.25f, -0.8f, 1f),
            new Vector3(0.75f, -0.8f, 1f),
            
            new Vector3(-0.75f, 0.8f, -1f),
            new Vector3(-0.25f, 0.8f, -1f),
            new Vector3(0.25f, 0.8f, -1f),
            new Vector3(0.75f, 0.8f, -1f),
            
            new Vector3(-0.75f, 0.4f, -1f),
            new Vector3(-0.25f, 0.4f, -1f),
            new Vector3(0.25f, 0.4f, -1f),
            new Vector3(0.75f, 0.4f, -1f),
            
            new Vector3(-0.75f, 0f, -1f),
            new Vector3(-0.25f, 0f, -1f),
            new Vector3(0.25f, 0f, -1f),
            new Vector3(0.75f, 0f, -1f),
            
            new Vector3(-0.75f, -0.4f, -1f),
            new Vector3(-0.25f, -0.4f, -1f),
            new Vector3(0.25f, -0.4f, -1f),
            new Vector3(0.75f, -0.4f, -1f),
            
            new Vector3(-0.75f, -0.8f, -1f),
            new Vector3(-0.25f, -0.8f, -1f),
            new Vector3(0.25f, -0.8f, -1f),
            new Vector3(0.75f, -0.8f, -1f),
        };

        [HideInInspector]
        public int selectedPoint = -1;

        private void OnDrawGizmosSelected()
        {
            if (isActiveAndEnabled)
            {
                Gizmos.color = Color.yellow;
                Matrix4x4 rotationMatrix = Matrix4x4.TRS(transform.position, transform.rotation, transform.lossyScale);
                Gizmos.matrix = rotationMatrix;
                Gizmos.DrawWireCube(Vector3.zero, chestAreaSize);
                
                foreach (var point in HapticPoints40)
                {
                    var localPoint = point;
                    localPoint.Scale(chestAreaSize * 0.5f);
                    
                    Gizmos.DrawWireCube(localPoint, new Vector3(0.01f, 0.01f, 0.01f));
                }
            }
        }
    }
}