/* Construction Helpers */

        private void CopyVertices(ManagedSpline managedSpline)
        {
            var memory   = Memory.Instance;
            var vertices = managedSpline.Vertices;

            int structSize = StructArray.GetSize <SplineVertex>(vertices.Length);

            VertexList = (SplineVertex *)memory.Allocate(structSize);
            StructArray.ToPtr((IntPtr)VertexList, vertices);
        }
        /// <summary>
        /// Creates a <see cref="Spline"/> given a deserialized spline file.
        /// </summary>
        public Spline(ManagedSpline managedSpline)
        {
            Enabler           = 1;
            TotalSplineLength = 0;
            NumberOfVertices  = 0;
            VertexList        = (SplineVertex *)0;
            SplineType        = SplineType.Loop;

            FromSplineJson(managedSpline);
        }
        private void FromSplineJson(ManagedSpline managedSpline)
        {
            SplineType       = managedSpline.SplineType;
            NumberOfVertices = (ushort)managedSpline.Vertices.Length;

            foreach (var vertex in managedSpline.Vertices)
            {
                TotalSplineLength += vertex.DistanceToNextVertex;
            }

            CopyVertices(managedSpline);
        }