/// <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); } } }
/// <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; } } }
/// <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); }