示例#1
0
    void GenerateThread(Action <TriVer> callback)
    {
        //Debug.Log("engueueing");
        TriVer triVer = GenerateMesh(points, size);

        triVers.Enqueue(new Q <TriVer>(callback, triVer));
    }
示例#2
0
    /*
     * public void Generate(bool[,,] points, Vector3 size)
     * {
     *  mesh = obj.GetComponent<MeshFilter>().mesh;
     *  verticies = mesh.vertices;
     *  triangles = mesh.triangles;
     *  meshCollider = obj.GetComponent<MeshCollider>();
     *
     *  mesh.MarkDynamic();
     *
     *  Vector3 pos = new Vector3();
     *  List<Vector3> vertexes = new List<Vector3>();
     *
     *  //Debug.Log(points[0, 10, 14]);
     *
     *  int triangleCount = 0;
     *
     *  for (int x = 0; x < size.x; x++)
     *  {
     *      for (int z = 0; z < size.z; z++)
     *      {
     *          for (int y = 0; y < size.y - 1; y++)
     *          {
     *              pos = new Vector3(x + .5f, y + .5f, z + .5f);
     *
     *              int comb = CubeValue(points, pos);
     *
     *              for (int i = 0; i < 16; i += 1)
     *              {
     *                  if (triangulation[comb, i] == -1)
     *                  {
     *                      break;
     *                  }
     *                  else
     *                  {
     *
     *                      //Debug.Log(triangulation[comb, i]);
     *                      vertexes.Add(new Vector3(pos.x + translator[triangulation[comb, i]].x, pos.y + translator[triangulation[comb, i]].y, pos.z + translator[triangulation[comb, i]].z));
     *                      triangleCount++;
     *                  }
     *              }
     *          }
     *      }
     *  }
     *
     *  int[] tri = new int[triangleCount];
     *
     *  for (int i = 0; i < triangleCount; i++)
     *  {
     *      tri[i] = i;
     *  }
     *
     *  //Debug.Log(tri.Length);
     *
     *  verticies = vertexes.ToArray();
     *
     *  triangles = tri;
     *
     *  mesh.Clear();
     *
     *  mesh.vertices = verticies;
     *  mesh.triangles = tri;
     *
     *  mesh.RecalculateBounds();
     *  mesh.RecalculateNormals();
     *
     *  meshCollider.sharedMesh = mesh;
     * }
     */

    public void OnMeshRecieved(TriVer triVer)
    {
        //Debug.Log(triVer);
        mesh         = obj.GetComponent <MeshFilter>().mesh;
        meshCollider = obj.GetComponent <MeshCollider>();

        mesh.MarkDynamic();


        mesh.Clear();



        mesh.vertices  = triVer.verticies;
        mesh.triangles = triVer.triangles;

        mesh.RecalculateBounds();
        mesh.RecalculateNormals();

        meshCollider.sharedMesh = mesh;
    }