Browse Source

Make separate ExtensionMethods file.

Add Point-deconstruction as an extension method.

GitOrigin-RevId: a804ba797a
master
Colin McMillen 4 years ago
parent
commit
6802b3f162
  1. 20
      Shared/ExtensionMethods.cs
  2. 10
      Shared/Geometry.cs
  3. 1
      Shared/Shared.projitems

20
Shared/ExtensionMethods.cs

@ -0,0 +1,20 @@
using Microsoft.Xna.Framework;
// All extension methods on built-in types (of C# or MonoGame) go in this file.
namespace SemiColinGames {
static class ExtensionMethods {
// Vector2
public static Vector2 Rotate(this Vector2 point, float angle) {
float cos = FMath.Cos(angle);
float sin = FMath.Sin(angle);
return new Vector2(
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);
}
}

10
Shared/Geometry.cs

@ -5,16 +5,6 @@ using System;
namespace SemiColinGames {
public static class Geometry {
public static Vector2 Rotate(this Vector2 point, float angle) {
float cos = FMath.Cos(angle);
float sin = FMath.Sin(angle);
return new Vector2(
point.X * cos - point.Y * sin,
point.Y * cos + point.X * sin);
}
}
// Math functions that return floats rather than doubles, for convenience.
public static class FMath {
public const float PI = (float) Math.PI;

1
Shared/Shared.projitems

@ -10,6 +10,7 @@
</PropertyGroup>
<ItemGroup>
<Compile Include="$(MSBuildThisFileDirectory)Camera.cs" />
<Compile Include="$(MSBuildThisFileDirectory)ExtensionMethods.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Textures.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Clock.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Geometry.cs" />

Loading…
Cancel
Save