﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif

namespace Arugula.Prototypical
{
    public class TrajectoryGizmo : MonoBehaviour
    {
        [HideInInspector]
        [SerializeField]
        Vector3[] savedTrajectory = new Vector3[0];

        public Color color = Color.white;
#if UNITY_EDITOR
        private void OnDrawGizmos()
        {

            if (this.enabled == false)
                return;

            if (!Application.isPlaying)
                savedTrajectory = CalcTrajectory();

            Handles.color = color;
            Handles.DrawPolyLine(savedTrajectory);
        }
#endif

        Vector3[] CalcTrajectory()
        {
            Vector3 pos = transform.position;
            Vector3 velocity = Vector3.zero;
            if (GetComponent<InitialVelocity>() != null)
                velocity += GetComponent<InitialVelocity>().Velocity3D;


            float step = 0.01f;
            Vector3[] points = new Vector3[1500];
            for (int i = 0; i < points.Length; i++)
            {
                points[i] = pos;

                pos += velocity * step;
                foreach (var g in GravityWell.Instances)
                {
                    velocity += g.GetForce(pos) * step;
                }
            }

            return points;
        }
    }
}
