diff --git a/CHANGELOG.md b/CHANGELOG.md
index eb13ca4..79bcc0c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,6 +19,9 @@ Jump to version:
Additions
- **Added the ability for formatted (tokenized) strings to be drawn with custom rotation, origin and flipping**
+Improvements
+- Allow NumberExtensions.GetPoints to include bottom and right coordinates
+
### MLEM.Ui
Additions
- Added the ability to set the anchor that should be used when a tooltip attaches to an element or the mouse
diff --git a/MLEM/Extensions/NumberExtensions.cs b/MLEM/Extensions/NumberExtensions.cs
index 381f1dd..f12bfdc 100644
--- a/MLEM/Extensions/NumberExtensions.cs
+++ b/MLEM/Extensions/NumberExtensions.cs
@@ -166,28 +166,44 @@ namespace MLEM.Extensions {
///
/// Returns a set of values that are contained in the given .
- /// Note that and are inclusive, but and are not.
+ /// Note that, by default, and are inclusive, but and are not.
///
/// The area whose points to get
+ /// Whether and should be inclusive, rather than exclusive.
/// The points contained in the area
- public static IEnumerable 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);
+ public static IEnumerable GetPoints(this Rectangle area, bool bottomRightInclusive = false) {
+ if (bottomRightInclusive) {
+ for (var x = area.Left; x <= area.Right; x++) {
+ for (var y = area.Top; y <= area.Bottom; y++)
+ yield return new Point(x, y);
+ }
+ } else {
+ for (var x = area.Left; x < area.Right; x++) {
+ for (var y = area.Top; y < area.Bottom; y++)
+ yield return new Point(x, y);
+ }
}
}
///
/// Returns a set of values that are contained in the given .
- /// Note that and are inclusive, but and are not.
+ /// Note that, by default, and are inclusive, but and are not.
///
/// The area whose points to get
/// The distance that should be traveled between each point that is to be returned
+ /// Whether and should be inclusive, rather than exclusive.
/// The points contained in the area
- public static IEnumerable 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);
+ public static IEnumerable GetPoints(this RectangleF area, float interval = 1, bool bottomRightInclusive = false) {
+ if (bottomRightInclusive) {
+ 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);
+ }
+ } else {
+ 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);
+ }
}
}