1
0
Fork 0
mirror of https://github.com/Ellpeck/MLEM.git synced 2024-05-29 11:33:37 +02:00

added a utility method for getting the points contained in a rectangle

This commit is contained in:
Ell 2021-02-04 12:24:23 +01:00
parent f3cf8dcc70
commit a75d04cffc

View file

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using MLEM.Misc;
@ -158,6 +159,33 @@ namespace MLEM.Extensions {
return rect;
}
/// <summary>
/// Returns a set of <see cref="Point"/> values that are contained in the given <see cref="Rectangle"/>.
/// Note that <see cref="Rectangle.Left"/> and <see cref="Rectangle.Top"/> are inclusive, but <see cref="Rectangle.Right"/> and <see cref="Rectangle.Bottom"/> are not.
/// </summary>
/// <param name="area">The area whose points to get</param>
/// <returns>The points contained in the area</returns>
public static IEnumerable<Point> GetPoints(this Rectangle area) {
for (var x = area.Left; x < area.Right; x++) {
for (var y = area.Top; y < area.Bottom; y++)
yield return new Point(x, y);
}
}
/// <summary>
/// Returns a set of <see cref="Vector2"/> values that are contained in the given <see cref="RectangleF"/>.
/// Note that <see cref="RectangleF.Left"/> and <see cref="RectangleF.Top"/> are inclusive, but <see cref="RectangleF.Right"/> and <see cref="RectangleF.Bottom"/> are not.
/// </summary>
/// <param name="area">The area whose points to get</param>
/// <param name="interval">The distance that should be traveled between each point that is to be returned</param>
/// <returns>The points contained in the area</returns>
public static IEnumerable<Vector2> GetPoints(this RectangleF area, float interval = 1) {
for (var x = area.Left; x < area.Right; x += interval) {
for (var y = area.Top; y < area.Bottom; y += interval)
yield return new Vector2(x, y);
}
}
/// <summary>
/// Turns the given 3-dimensional vector into a 2-dimensional vector by chopping off the z coordinate.
/// </summary>