public override Chunk GenerateChunk(int cx, int cz) { var chunk = new Chunk(cx, cz); // Build terrain map for this chunk var terrainHeightmap = new double[16, 16]; var rockHeightmap = new double[16, 16]; var bedrockHeightmap = new double[16, 16]; for (int bx = 0; bx < 16; bx++) { for (int bz = 0; bz < 16; bz++) { int worldX = bx + (cx << 4); int worldZ = bz + (cz << 4); terrainHeightmap[bx, bz] = noiseGen.Terrain(worldX, worldZ); rockHeightmap[bx, bz] = noiseGen.Underground(worldX, worldZ) + terrainHeightmap[bx, bz] - 5; bedrockHeightmap[bx, bz] = noiseGen.Bedrock(worldX, worldZ) + 1; // Determine Biome if (bx % 4 == 0 && bz % 4 == 0) // Biomes are in 4x4x4 blocks. Do a 2D array for now and just copy it vertically. { var b = ChunkBiome.GetBiome(worldX, worldZ, noiseGen); for (int y = 0; y < 256; y += 4) { chunk.BiomeContainer.SetBiome(bx, y, bz, b); } } } } ChunkBuilder.FillChunk(chunk, terrainHeightmap, rockHeightmap, bedrockHeightmap); OverworldDecorator.Decorate(chunk, terrainHeightmap, noiseGen); GenerateCoal(chunk, rockHeightmap); ChunkBuilder.CarveCaves(noiseGen, chunk, rockHeightmap, bedrockHeightmap); return(chunk); }
public override Chunk GenerateChunk(int cx, int cz) { var chunk = new Chunk(cx, cz); // Build terrain map for this chunk var terrainHeightmap = new double[16, 16]; var rockHeightmap = new double[16, 16]; var bedrockHeightmap = new double[16, 16]; for (int bx = 0; bx < 16; bx++) { for (int bz = 0; bz < 16; bz++) { int worldX = bx + (cx << 4); int worldZ = bz + (cz << 4); terrainHeightmap[bx, bz] = noiseGen.Terrain(worldX, worldZ); chunk.Heightmaps[ChunkData.HeightmapType.WorldSurface].Set(bx, bz, (int)terrainHeightmap[bx, bz]); chunk.Heightmaps[ChunkData.HeightmapType.OceanFloor].Set(bx, bz, noiseGen.OceanFloor(bx, bz)); rockHeightmap[bx, bz] = noiseGen.Underground(worldX, worldZ) + terrainHeightmap[bx, bz] - 5; bedrockHeightmap[bx, bz] = noiseGen.Bedrock(worldX, worldZ) + 1; // Determine Biome if (bx % 4 == 0 && bz % 4 == 0) // Biomes are in 4x4x4 blocks. Do a 2D array for now and just copy it vertically. { var b = ChunkBiome.GetBiome(worldX, worldZ, noiseGen); for (int y = 0; y < 256; y += 4) { chunk.BiomeContainer.SetBiome(bx, y, bz, b); } } } } ChunkBuilder.FillChunk(chunk, terrainHeightmap, rockHeightmap, bedrockHeightmap); /* for (int bx = 0; bx < 16; bx++) * { * for (int bz = 0; bz < 16; bz++) * { * if (noiseGen.isRiver(bx + (cx * 16), bz + (cz * 16))) * chunk.SetBlock(bx, 106, bz, Registry.GetBlock(Materials.LightBlueStainedGlass)); * * if (noiseGen.isMountain(bx + (cx * 16), bz + (cz * 16))) * chunk.SetBlock(bx, 105, bz, Registry.GetBlock(Materials.BlackStainedGlass)); * * if (noiseGen.isHills(bx + (cx * 16), bz + (cz * 16))) * chunk.SetBlock(bx, 103, bz, Registry.GetBlock(Materials.GreenStainedGlass)); * * if (noiseGen.isBadlands(bx + (cx * 16), bz + (cz * 16))) * chunk.SetBlock(bx, 104, bz, Registry.GetBlock(Materials.RedStainedGlass)); * * if (noiseGen.isPlains(bx + (cx * 16), bz + (cz * 16))) * chunk.SetBlock(bx, 102, bz, Registry.GetBlock(Materials.WhiteStainedGlass)); * * if (noiseGen.isOcean(bx + (cx * 16), bz + (cz * 16))) * chunk.SetBlock(bx, 101, bz, Registry.GetBlock(Materials.BlueStainedGlass)); * * if (noiseGen.isDeepOcean(bx + (cx * 16), bz + (cz * 16))) * chunk.SetBlock(bx, 101, bz, Registry.GetBlock(Materials.BlueStainedGlass)); * } * }*/ OverworldDecorator.Decorate(chunk, terrainHeightmap, noiseGen); GenerateCoal(chunk, rockHeightmap); ChunkBuilder.CarveCaves(noiseGen, chunk, rockHeightmap, bedrockHeightmap); for (int bx = 0; bx < 16; bx++) { for (int bz = 0; bz < 16; bz++) { chunk.Heightmaps[ChunkData.HeightmapType.MotionBlocking].Set(bx, bz, (int)terrainHeightmap[bx, bz]); } } return(chunk); }
public override Chunk GenerateChunk(int cx, int cz) { var chunk = new Chunk(cx, cz); // Build terrain map for this chunk var terrainHeightmap = new double[16, 16]; var rockHeightmap = new double[16, 16]; var bedrockHeightmap = new double[16, 16]; var terrainHeights = new double[256]; for (int bx = 0; bx < 16; bx++) { for (int bz = 0; bz < 16; bz++) { for (int by = 0; by < 256; by++) { chunk.SetBlock(bx, 26, bz, Registry.GetBlock(Materials.Air)); } terrainHeights[(bx * 16) + bz] = terrainHeightmap[bx, bz] = noiseGen.Terrain(bx + (cx * 16), bz + (cz * 16)); rockHeightmap[bx, bz] = noiseGen.Underground(bx + (cx * 16), bz + (cz * 16)) + terrainHeightmap[bx, bz] - 5; bedrockHeightmap[bx, bz] = noiseGen.Bedrock(bx + (cx * 16), bz + (cz * 16)) + 1; if (noiseGen.isRiver(bx + (cx * 16), bz + (cz * 16))) { chunk.SetBlock(bx, 26, bz, Registry.GetBlock(Materials.LightBlueStainedGlass)); } if (noiseGen.isMountain(bx + (cx * 16), bz + (cz * 16))) { chunk.SetBlock(bx, 25, bz, Registry.GetBlock(Materials.LightGrayStainedGlass)); } if (noiseGen.isHills(bx + (cx * 16), bz + (cz * 16))) { chunk.SetBlock(bx, 24, bz, Registry.GetBlock(Materials.RedStainedGlass)); } if (noiseGen.isBadlands(bx + (cx * 16), bz + (cz * 16))) { chunk.SetBlock(bx, 23, bz, Registry.GetBlock(Materials.BlackStainedGlass)); } if (noiseGen.isPlains(bx + (cx * 16), bz + (cz * 16))) { chunk.SetBlock(bx, 22, bz, Registry.GetBlock(Materials.WhiteStainedGlass)); } else { chunk.SetBlock(bx, 21, bz, Registry.GetBlock(Materials.BlueStainedGlass)); } var biometemp = noiseGen.GetBiomeTemp(bx + (cx * 16), 0, bz + (cz * 16)); var biomeHumidity = noiseGen.GetBiomeHumidity(bx + (cx * 16), 255, bz + (cz * 16)); if (biometemp > 0) { chunk.SetBlock(bx, 30, bz, Registry.GetBlock(Materials.RedStainedGlass)); } else { chunk.SetBlock(bx, 30, bz, Registry.GetBlock(Materials.GreenStainedGlass)); } if (biomeHumidity > 0) { chunk.SetBlock(bx, 31, bz, Registry.GetBlock(Materials.BlueStainedGlass)); } else { chunk.SetBlock(bx, 31, bz, Registry.GetBlock(Materials.YellowStainedGlass)); } } } /* for (int bx = 0; bx < 16; bx++) * { * for (int bz = 0; bz < 16; bz++) * { * chunk.SetBlock(bx, (int)terrainHeightmap[bx,bz], bz, Registry.GetBlock(Materials.GreenStainedGlass)); * chunk.SetBlock(bx, (int)rockHeightmap[bx, bz], bz, Registry.GetBlock(Materials.BrownStainedGlass)); * chunk.SetBlock(bx, (int)bedrockHeightmap[bx, bz], bz, Registry.GetBlock(Materials.Bedrock)); * } * }*/ //ChunkBuilder.FillChunk(chunk, terrainHeightmap, rockHeightmap, bedrockHeightmap, true); //GenerateCoal(chunk, rockHeightmap); //ChunkBuilder.CarveCaves(noiseGen, chunk, rockHeightmap, bedrockHeightmap, true); return(chunk); }