private void Init()
        {
            origin = Vector3.zero;

            if (mesh == null)
            {
                mesh = GetComponent <MeshFilter>().mesh;
                mesh.MarkDynamic();
            }


            allocatedNbQuad       = advancedParameters.baseNbQuad;
            maxInstanciedTriCount = 0;
            lastStartingQuad      = 0;
            quadOffset            = 0;

            vertices  = new Vector3[advancedParameters.baseNbQuad * NbVertexPerQuad];
            triangles = new int[advancedParameters.baseNbQuad * NbTriIndexPerQuad];
            uv        = new Vector2[advancedParameters.baseNbQuad * NbVertexPerQuad];
            normals   = new Vector3[advancedParameters.baseNbQuad * NbVertexPerQuad];

            if (normal == Vector3.zero)
            {
                normal = (transform.position - Camera.main.transform.position).normalized;
            }

            for (int i = 0; i < normals.Length; i++)
            {
                normals[i] = normal;
            }

            spline.Clear();

            Vector3     point = transform.position;
            List <Node> nodes = spline.nodes;

            for (int i = 0; i < 5; i++)
            {
                nodes.Add(new Node(point));
            }
        }