예제 #1
0
 /// <summary>
 /// Apply a height function over a given rectangle.
 /// </summary>
 /// <param name="heightFunc">The height function.</param>
 /// <param name="rect">The rectangle.</param>
 public void apply_height_func_over_rect(ITerrainFunc heightFunc, Rectangle rect)
 {
     heightFunc.init();
     for (int z = rect.Y; z < rect.Height; z++)
     {
         for (int x = rect.X; x < rect.Width; x++)
         {
             vertices[x + z * Width].Position.Y += heightFunc.get(x, z);
         }
     }
 }
예제 #2
0
        /// <summary>
        /// Apply a height function over a given rectangle.
        /// </summary>
        /// <param name="heightFunc">The height function.</param>
        /// <param name="rect">The rectangle.</param>
        public void apply_height_func_over_delta(ITerrainFunc heightFunc, Rectangle rect, float multiply)
        {
            heightFunc.init();

            for (int z = rect.Y; z < rect.Height; z++)
            {
                for (int x = rect.X; x < rect.Width; x++)
                {
                    deltaHeight[x, z] += heightFunc.get(x, z) * multiply;
                }
            }
        }
예제 #3
0
 /// <summary>
 /// Apply a height function over a given rectangle.
 /// </summary>
 /// <param name="heightFunc">The height function.</param>
 /// <param name="rect">The rectangle.</param>
 public void apply_height_func_over_delta(ITerrainFunc heightFunc, float multiply)
 {
     apply_height_func_over_delta(heightFunc,
                                  new Rectangle(0, 0, Width, Height), multiply);
 }