SplineNode AddClonedNode(SplineNode node)
        {
            int        index = spline.nodes.IndexOf(node);
            SplineNode res   = new SplineNode(node.Position, node.Direction);

            if (index == spline.nodes.Count - 1)
            {
                spline.AddNode(res);
            }
            else
            {
                spline.InsertNode(index + 1, res);
            }
            return(res);
        }
        // Update is called once per frame
        void Update()
        {
            if (Input.GetKeyDown(KeyCode.F))
            {
                CurveSample sample = spline.GetSample(0.5f);
                spline.InsertNode(1, (new SplineNode(sample.location + Vector3.left * 3, (spline.nodes[0].Direction + spline.nodes[1].Direction) / 2)));

                GetComponent <SplineMeshTiling>().CreateMeshes();

                Debug.Log(sample.distanceInCurve + "|" + sample.timeInCurve);
            }

            if (Input.GetKeyDown(KeyCode.X))
            {
                spline.RemoveNode(spline.nodes[spline.nodes.Count - 1]);
                GetComponent <SplineMeshTiling>().CreateMeshes();
            }

            if (Input.GetKeyDown(KeyCode.Q))
            {
                CurveSample sample = spline.GetSample(spline.nodes.Count - 2 + 0.5f);
                spline.nodes[spline.nodes.Count - 1].Position = sample.location;
                GetComponent <SplineMeshTiling>().CreateMeshes();
            }
        }