7d5496e959
81 namespace declarations and 100 using directives converted via sed, plus two FQN-aliases (ChatTwoPartyFinderPayload in PayloadHandler.cs and ModifierFlag in KeybindManager.cs) updated. Critical: Language.Designer.cs and HellionStrings.Designer.cs ResourceManager string arguments updated synchronously — these are runtime reflection lookups not caught by the C# compiler. Two intentional ChatTwo references remain: the legacy migration path 'ChatTwo.json' in Plugin.cs (still points to upstream Chat 2's config file by design) and the InternalsVisibleTo declaration in AssemblyInfo.cs (handled in the upcoming repo-folder rename task). The local alias names 'ChatTwoPartyFinderPayload' and 'ChatTwoConflictDetector' are preserved as local symbols; only their target namespaces and references changed.
51 lines
1.4 KiB
C#
51 lines
1.4 KiB
C#
using System.Numerics;
|
|
|
|
namespace HellionChat.Util;
|
|
|
|
public static class MathUtil
|
|
{
|
|
public record Rectangle
|
|
{
|
|
public int X;
|
|
public int Y;
|
|
public int Width;
|
|
public int Height;
|
|
|
|
public int SizeX;
|
|
public int SizeY;
|
|
|
|
public Rectangle(int x, int y, int width, int height)
|
|
{
|
|
X = x;
|
|
Y = y;
|
|
Width = width;
|
|
Height = height;
|
|
|
|
SizeX = X + Width;
|
|
SizeY = Y + Height;
|
|
}
|
|
|
|
public Rectangle(Vector2 pos, Vector2 size) : this((int) pos.X, (int) pos.Y, (int) size.X, (int) size.Y) { }
|
|
|
|
public override string ToString()
|
|
=> $"X: {X} Y: {Y} Width: {Width} Height: {Height}";
|
|
}
|
|
|
|
// From: https://stackoverflow.com/a/306379
|
|
/// <summary>
|
|
/// Checks if two rectangles overlap at any point.
|
|
/// </summary>
|
|
/// <param name="a"></param>
|
|
/// <param name="b"></param>
|
|
/// <returns>True if overlapping</returns>
|
|
public static bool HasOverlap(this Rectangle a, Rectangle b)
|
|
{
|
|
bool ValueInRange(int value, int min, int max)
|
|
=> value > min && value < max;
|
|
|
|
var xOverlap = ValueInRange(a.X, b.X, b.X + b.Width) || ValueInRange(b.X, a.X, a.X + a.Width);
|
|
var yOverlap = ValueInRange(a.Y, b.Y, b.Y + b.Height) || ValueInRange(b.Y, a.Y, a.Y + a.Height);
|
|
|
|
return xOverlap && yOverlap;
|
|
}
|
|
} |