private void DoTestyThings() { for (int i = 0; i < 6; i++) { for (int k = 0; k < 4; k++) { var voxW = new ComplexVoxel(VoxelDataManager.RotatoVoxelData, VoxelStyle.Wedge); var voxB = new ComplexVoxel(VoxelDataManager.RotatoVoxelData, VoxelStyle.Block); voxW.OrientRotateVoxel((OrdinalDirections)i, 90 * k); voxB.OrientRotateVoxel((OrdinalDirections)i, 90 * k); Voxels[i * 2, 15, k * 2] = voxW; Voxels[i * 2, 13, k * 2] = voxB; } } }
private void DoChunkyThings(int chunkSize) { int[,] hMap = new int[chunkSize, chunkSize]; int[,] dMap = new int[chunkSize, chunkSize]; for (int i = 0; i < chunkSize; i++) { for (int k = 0; k < chunkSize; k++) { int h = UnityEngine.Random.Range(chunkSize / 2, chunkSize); int a = Mathf.RoundToInt(Mathf.Sqrt((i - chunkSize / 2f) * (i - chunkSize / 2f))); int b = Mathf.RoundToInt(Mathf.Sqrt((k - chunkSize / 2f) * (k - chunkSize / 2f))); int d = UnityEngine.Random.Range((a + b) / 2 - 1, chunkSize / 2 + 5); hMap[i, k] = h; dMap[i, k] = d; } } for (int passes = 0; passes < 3; passes++) { int[,] smoothHMap = new int[chunkSize, chunkSize]; int[,] smoothDMap = new int[chunkSize, chunkSize]; for (int i = 0; i < chunkSize; i++) { for (int k = 0; k < chunkSize; k++) { float smoothH = 0; float smoothD = 0; int c = 0; for (int x = -1; x <= 1; x++) { for (int y = -1; y <= 1; y++) { if (IsInChunk(i + x, 0, k + y)) { smoothH += hMap[i + x, k + y]; smoothD += dMap[i + x, k + y]; c++; } } } smoothH /= c; smoothHMap[i, k] = Mathf.RoundToInt(smoothH); smoothD /= c; smoothDMap[i, k] = Mathf.RoundToInt(smoothD); } } hMap = smoothHMap; if (passes < 1) { dMap = smoothDMap; } } for (int i = 0; i < chunkSize; i++) { for (int k = 0; k < chunkSize; k++) { for (int j = 0; j < chunkSize; j++) { ComplexVoxel vox = null; int h = hMap[i, k]; int d = dMap[i, k]; if (j == h && j >= d) { vox = new ComplexVoxel(VoxelDataManager.GrassVoxelData); } else if (j < h && j >= h - 2 && j >= d) { vox = new ComplexVoxel(VoxelDataManager.DirtVoxelData); } else if (j < h - 2 && j >= d) { vox = new ComplexVoxel(VoxelDataManager.StoneVoxelData); } else { vox = new ComplexVoxel(VoxelDataManager.NULL_VOXEL_DATA); } vox.OrientRotateVoxel((OrdinalDirections)(Random.Range(0, 6)), 90 * Random.Range(0, 4)); if (Random.Range(0, 3) == 0) { vox.SetStyle(VoxelStyle.Wedge); } Voxels[i, j, k] = vox; } } } }