public MapData GenerateMap() { if (GenerateFlatMap) { return(new MapData(MapWidthX + MapData.NonPlayableBufferSize, MapLengthZ + MapData.NonPlayableBufferSize)); } else { if (RandomSeed) { Seed = new System.Random(DateTime.UtcNow.Millisecond).Next(); } // Generate Simplex Settings based on parameters set in inspector. CurrentSimplexSettings2D = new MapGenerator.SimplexSettings2D(Seed, new System.Numerics.Vector2(Offset.x, Offset.y), Scale, Octaves, Persistence, Lacunarity); // Generate HeighMap2D from Simplex Settings. CurrentHeightMap2D = MapGenerator.GenerateSimplexHeightMap2D(((MapWidthX + (MapData.NonPlayableBufferSize)) * VerticeResolution) + 1, ((MapLengthZ + (MapData.NonPlayableBufferSize)) * VerticeResolution) + 1, CurrentSimplexSettings2D); var normalisedNoise = GetNormalisedHeightData(CurrentHeightMap2D); return(new MapData(MapWidthX + MapData.NonPlayableBufferSize, MapLengthZ + MapData.NonPlayableBufferSize, normalisedNoise)); } // TileMapManager.Instance.ActiveMapData.SetTileTerrainType(TileMapManager.Instance.ActiveMapData.TileMap[26, 27], 5); }
void TestFunction() { var settings2D = new MapGenerator.SimplexSettings2D(528491, Vector2.Zero); settings2D.offset = new Vector2(5, 5); Debug.Log("Generated 2D Settings."); //settings2D.seed = new Random(DateTime.UtcNow.Millisecond).Next(); var heightmap2D = MapGenerator.GenerateSimplexHeightMap2D(50, 50, settings2D); Debug.Log("Generated 2D Height Map."); var voxelmap3D = MapGenerator.GenerateVoxelMap3D(heightmap2D, 15); Debug.Log("Generated 3D Voxel Map."); Debug.Log($"VoxelMap Height = {voxelmap3D.Height}"); int numRendered = 0; for (var z = 0; z < voxelmap3D.Height; z++) { for (var x = 0; x < voxelmap3D.Width; x++) { for (var y = 0; y < voxelmap3D.Length; y++) { if (z == 0) { Debug.Log($"{x},{y}: {heightmap2D.HeightData[x, y]}"); } //Debug.Log($"Height Info at ({x},{y},{z}): {voxelmap3D.VoxelData[x,y,z]}"); if (voxelmap3D.VoxelData[x, y, z] == 1) { // Check if voxel is exposed if (!CheckIfExposedVoxel(ref voxelmap3D, new Vector3(x, y, z))) { // And skip if it isn't. continue; } var debugVoxel = Instantiate(VoxelGameObject); numRendered++; debugVoxel.transform.position = new Vector3(x / 2f, z / 2f, y / 2f); // Snow if (z > 24) { debugVoxel.GetComponent <MeshRenderer>().sharedMaterial = terrainTypes[2]; } // Rock else if (z > 19) { debugVoxel.GetComponent <MeshRenderer>().sharedMaterial = terrainTypes[0]; } // Grass else if (z > 12) { debugVoxel.GetComponent <MeshRenderer>().sharedMaterial = terrainTypes[1]; } // Dirt else if (z > 8) { debugVoxel.GetComponent <MeshRenderer>().sharedMaterial = terrainTypes[3]; } // Rock else if (z > 4) { debugVoxel.GetComponent <MeshRenderer>().sharedMaterial = terrainTypes[0]; } // Bedrock else { debugVoxel.GetComponent <MeshRenderer>().sharedMaterial = terrainTypes[4]; } } } } } Debug.Log($"Voxel rendering completed. {numRendered} cubes rendered."); }