feat: Projection Data Record
This commit is contained in:
parent
238bf2d574
commit
8ebde9dedf
|
@ -0,0 +1,30 @@
|
|||
namespace Syntriax.Engine.Physics2D.Primitives;
|
||||
|
||||
public record Projection(float Min, float Max)
|
||||
{
|
||||
public static bool Overlaps(Projection left, Projection right) => Overlaps(left, right, out var _);
|
||||
public static bool Overlaps(Projection left, Projection right, out float depth)
|
||||
{
|
||||
bool rightMinInLeft = right.Min > left.Min && right.Min < left.Max;
|
||||
if (rightMinInLeft)
|
||||
{
|
||||
depth = left.Max - right.Min;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool rightMaxInLeft = right.Max < left.Max && right.Max > left.Min;
|
||||
if (rightMaxInLeft)
|
||||
{
|
||||
depth = left.Min - right.Max;
|
||||
return true;
|
||||
}
|
||||
|
||||
depth = default;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public static class ProjectionExtensions
|
||||
{
|
||||
public static bool Overlaps(this Projection left, Projection right) => Projection.Overlaps(left, right);
|
||||
public static bool Overlaps(this Projection left, Projection right, out float depth) => Projection.Overlaps(left, right, out depth);
|
||||
}
|
Loading…
Reference in New Issue