/****************************************************************************
* Copyright 2019 Nreal Techonology Limited. All rights reserved.
*                                                                                                                                                          
* This file is part of NRSDK.                                                                                                          
*                                                                                                                                                           
* https://www.nreal.ai/        
* 
*****************************************************************************/

using System.Collections.Generic;
using UnityEngine;

namespace NRKernal.NRExamples
{
    /// <summary> The points visualizer. </summary>
    public class PointsVisualizer
    {
        /// <summary> The point entity. </summary>
        public List<GameObject> pointEntity = new List<GameObject>();

        /// <summary> Shows the given points. </summary>
        /// <param name="points"> The points.</param>
        public void Show(List<Vector3> points)
        {
            int objs_len = pointEntity.Count;
            int points_len = points.Count;
            if (objs_len < points_len)
            {
                for (int i = 0; i < points_len - objs_len; i++)
                {
                    GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
                    GameObject.Destroy(go.GetComponent<BoxCollider>());
                    go.transform.localScale = Vector3.one * 0.1f;
                    pointEntity.Add(go);
                }
            }
            else
            {
                for (int i = points_len; i < objs_len; i++)
                {
                    pointEntity[i].SetActive(false);
                }
            }

            for (int i = 0; i < points.Count; i++)
            {
                pointEntity[i].transform.position = points[i];
                pointEntity[i].SetActive(true);
            }
        }
    }
}