|
|
@ -1,9 +1,21 @@ |
|
|
|
using Microsoft.Xna.Framework; |
|
|
|
using Microsoft.Xna.Framework.Graphics; |
|
|
|
|
|
|
|
// All extension methods on built-in types (of C# or MonoGame) go in this file.
|
|
|
|
// Methods are ordered alphabetically by type name.
|
|
|
|
|
|
|
|
namespace SemiColinGames { |
|
|
|
static class ExtensionMethods { |
|
|
|
// Point
|
|
|
|
public static void Deconstruct(this Point point, out int x, out int y) => |
|
|
|
(x, y) = (point.X, point.Y); |
|
|
|
|
|
|
|
// SpriteFont
|
|
|
|
public static Vector2 CenteredOn(this SpriteFont font, string text, Point position) { |
|
|
|
Vector2 size = font.MeasureString(text); |
|
|
|
return new Vector2(position.X - (int) size.X / 2, position.Y - (int) size.Y / 2); |
|
|
|
} |
|
|
|
|
|
|
|
// Vector2
|
|
|
|
public static Vector2 Rotate(this Vector2 point, float angle) { |
|
|
|
float cos = FMath.Cos(angle); |
|
|
@ -12,9 +24,5 @@ namespace SemiColinGames { |
|
|
|
point.X * cos - point.Y * sin, |
|
|
|
point.Y * cos + point.X * sin); |
|
|
|
} |
|
|
|
|
|
|
|
// Point
|
|
|
|
public static void Deconstruct(this Point point, out int x, out int y) => |
|
|
|
(x, y) = (point.X, point.Y); |
|
|
|
} |
|
|
|
} |