/// <summary>
 /// Create the mesh
 /// </summary>
 void CreateMesh()
 {
     for (int i = 0; i < curveDatas.Count; i++)
     {
         if (curveMeshes.Count > i)
         {
             curveMeshes[i].CreateMesh();
         }
         else
         {
             var curveMesh = BezierCurveMesh.Instantiate(i, this);
             curveMeshes.Insert(i, curveMesh);
             curveMesh.CreateMesh();
         }
     }
 }
    /// <summary>
    /// Create a instance of itself with all required components
    /// </summary>
    /// <param name="type"></param>
    /// <param name="curveMesh"></param>
    /// <returns></returns>
    public static BezierCurveMeshPlane Instantiate(types type, BezierCurveMesh curveMesh)
    {
        var planeObject = new GameObject();

        planeObject.name = "Plane" + type;
        planeObject.transform.SetParent(curveMesh.transform);

        planeObject.AddComponent <MeshFilter>();
        planeObject.AddComponent <MeshRenderer>();
        //  planeObject.AddComponent<MeshCollider>();
//        planeObject.AddComponent<Rigidbody>().isKinematic = true;

        var planeMesh = planeObject.AddComponent <BezierCurveMeshPlane>();

        planeMesh.type      = type;
        planeMesh.curveMesh = curveMesh;

        return(planeMesh);
    }