示例#1
0
        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;
        }
示例#2
0
        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;
        }