void CreateHeightmap(ref Chunk chunk, int chunkX, int chunkZ, CombinedNoise n1, CombinedNoise n2, OctaveNoise n3) { int index = 0; int offsetX = (chunkX * 16); int offsetZ = (chunkZ * 16); for (int z = 0; z < 16; z++) { int zCur = z + offsetZ; for (int x = 0; x < 16; x++) { int xCur = x + offsetX; double hLow = n1.Compute(xCur * 1.3f, zCur * 1.3f) / 6 - 4, height = hLow; if (n3.Compute(xCur, zCur) <= 0) { double hHigh = n2.Compute(xCur * 1.3f, zCur * 1.3f) / 5 + 6; height = Math.Max(hLow, hHigh); } height *= 0.5; if (height < 0) { height *= 0.8f; } short adjHeight = (short)(height + waterLevel); minHeight = adjHeight < minHeight ? adjHeight : minHeight; index = z * 16 + x; heightmap[index] = adjHeight; } } //heightmap = hMap; }
public ChunkGenerator(ChunkHandler ChunkHandler) { rnd = new JavaRandom(); rnd2 = new JavaRandom(); this.Seed = rnd.GetSeed(); //chunkXMul = rnd.nextLong(); //chunkZMul = rnd.nextLong(); n1 = new CombinedNoise( new OctaveNoise(8, rnd), new OctaveNoise(8, rnd)); n2 = new CombinedNoise( new OctaveNoise(8, rnd), new OctaveNoise(8, rnd)); n3 = new OctaveNoise(6, rnd); n4 = new OctaveNoise(8, rnd); n5 = new OctaveNoise(8, rnd); n6 = new OctaveNoise(8, rnd); n7 = new OctaveNoise(8, rnd); this.ChunkHandler = ChunkHandler; }