void CreateSmoothTerrain(MyMesh TerrainMesh, MarchingCubes marchingCubes, Blocks MyBlocks) { Debug.Log ("Creating Smooth Terrain"); Vector3 BlockScale = MyBlocks.Scale; // Marching cubes is one too small! // for some reason the size has to be like this Vector3 WorldSize_ = MyBlocks.Size; int expand = 0;// WorldCore->MarchingExpand; WorldSize_.x += expand; WorldSize_.y += expand; WorldSize_.z += expand; // = 18 now out of 16 0 to 15 // I need to perform this calculation PER CUBE and not per grid // So perform calculation depending on surrounding cubes, but not whole thing //MarchingCubesData.Clear(); //for (int i = 0; i < (WorldSize_.x)*(WorldSize_.y)*(WorldSize_.z); i++) // MarchingCubesData.Add(0.0f); //marchingCubes.ClearData(MarchingCubesData); marchingCubes = new MarchingCubes(new Vector3(WorldSize_.x, WorldSize_.x, WorldSize_.x), Mathf.RoundToInt(WorldSize_.x)); marchingCubes.PolygonizeData(MyBlocks, WorldSize_); TerrainMesh.ClearMesh (); for (int i = 0; i < marchingCubes.trilist.Count; i++) { // for every triangle in list marchingCubes.trilist[i].calcnormal(true); TerrainMesh.Verticies.Add (marchingCubes.trilist[i].position[0]); TerrainMesh.Verticies.Add (marchingCubes.trilist[i].position[1]); TerrainMesh.Verticies.Add (marchingCubes.trilist[i].position[2]); TerrainMesh.Colors.Add (marchingCubes.trilist[i].colors[0]); TerrainMesh.Colors.Add (marchingCubes.trilist[i].colors[1]); TerrainMesh.Colors.Add (marchingCubes.trilist[i].colors[2]); TerrainMesh.Indicies.Add (TerrainMesh.Verticies.Count-3); TerrainMesh.Indicies.Add (TerrainMesh.Verticies.Count-2); TerrainMesh.Indicies.Add (TerrainMesh.Verticies.Count-1); } Debug.Log ("Created Smooth Terrain"); }