SetSurfaceLevel() public method

public SetSurfaceLevel ( int x, int y, int level ) : void
x int
y int
level int
return void
Example #1
0
        void GenerateHeightMap(DiamondSquare.CornerData corners, double range, double h, double amplify)
        {
            // +1 for diamond square
            var heightMap = new ArrayGrid2D <double>(m_size.Width + 1, m_size.Height + 1);

            double min, max;

            DiamondSquare.Render(heightMap, corners, range, h, m_random, out min, out max);

            Parallel.For(0, m_size.Height, y =>
            {
                double d = max - min;

                for (int x = 0; x < m_size.Width; ++x)
                {
                    var v = heightMap[x, y];

                    // normalize to 0.0 - 1.0
                    v = (v - min) / d;

                    // amplify
                    v = Math.Pow(v, amplify);

                    // adjust
                    v *= m_size.Depth / 2;
                    v += m_size.Depth / 2 - 1;

                    m_data.SetSurfaceLevel(x, y, MyMath.Round(v));
                }
            });
        }
 void GenerateTerrain(int seed)
 {
     Parallel.For(0, m_size.Height, y =>
     {
         for (int x = 0; x < m_size.Width; ++x)
         {
             m_data.SetSurfaceLevel(x, y, m_size.Depth - 1);
         }
     });
 }