LADXHD/Base/RectangleF.cs
2023-12-14 17:21:22 -05:00

70 lines
1.9 KiB
C#

using System;
using Microsoft.Xna.Framework;
namespace ProjectZ.Base
{
public struct RectangleF
{
public static readonly RectangleF Empty = new RectangleF();
public float X;
public float Y;
public float Width;
public float Height;
public float Left => X;
public float Right => X + Width;
public float Top => Y;
public float Bottom => Y + Height;
public Vector2 Center => new Vector2(X + Width / 2, Y + Height / 2);
public RectangleF(float x, float y, float width, float height)
{
X = x;
Y = y;
Width = width;
Height = height;
}
public bool Intersects(RectangleF second)
{
return second.Left < Right && Left < second.Right &&
second.Top < Bottom && Top < second.Bottom;
}
public bool Contains(RectangleF second)
{
return Left <= second.Left && second.Right <= Right &&
Top <= second.Top && second.Bottom <= Bottom;
}
public bool Contains(Vector2 position)
{
return Left <= position.X && position.X <= Right &&
Top <= position.Y && position.Y <= Bottom;
}
public RectangleF GetIntersection(RectangleF second)
{
var left = Math.Max(Left, second.Left);
var right = Math.Min(Right, second.Right);
var top = Math.Max(Top, second.Top);
var down = Math.Min(Bottom, second.Bottom);
return new RectangleF(left, top, right - left, down - top);
}
public static implicit operator RectangleF(Rectangle rectangle)
{
return new RectangleF(rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height);
}
}
}