void GenerateThread(Action <TriVer> callback) { //Debug.Log("engueueing"); TriVer triVer = GenerateMesh(points, size); triVers.Enqueue(new Q <TriVer>(callback, triVer)); }
/* * 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; }