예제 #1
0
        internal override void SetStratum(CoordinateInfo coordinateInfo)
        {
            float noiseValue2D = PerlinNoise.PerlinNoise2D(Map.Seed - 1, coordinateInfo.position.x * 0.03f, coordinateInfo.position.y * 0.03f);

            noiseValue2D = (noiseValue2D + 0.8f) * 0.5f;
            int coverCount = (int)(noiseValue2D * Chunk.HalfHeight * 0.5f);

            for (int y = 2 * Chunk.HalfHeight - 1; y > -1; y--)
            {
                float density = GetDensity(coordinateInfo, y);

                if (density > 0)
                {
                    if (coverCount > 0)
                    {
                        coordinateInfo.SetBlock(y, Snow.blockName);
                        coverCount--;
                    }
                    else
                    {
                        coordinateInfo.SetBlock(y, Stone.blockName);
                    }
                }
                else
                {
                    SetWater(coordinateInfo, y);
                }
            }
        }
예제 #2
0
 protected void SetWater(CoordinateInfo coordinateInfo, int y)
 {
     if (y < Map.SeaLevel)
     {
         if (coordinateInfo.GetTemperature(y) < 0)
         {
             coordinateInfo.SetBlock(y, Ice.blockName);
         }
         else
         {
             coordinateInfo.SetBlock(y, Water.blockName);
         }
     }
 }