forked from MoonsideGames/MoonTools.Bonk
remove linq methods from AABB calculation
parent
0952b77761
commit
d9bc05ee32
36
Bonk/AABB.cs
36
Bonk/AABB.cs
|
@ -1,6 +1,5 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using MoonTools.Core.Structs;
|
||||
|
||||
|
@ -21,14 +20,39 @@ namespace MoonTools.Core.Bonk
|
|||
|
||||
public static AABB FromTransformedVertices(IEnumerable<Position2D> vertices, Transform2D transform)
|
||||
{
|
||||
var TransformedVertices = vertices.Select(vertex => Vector2.Transform(vertex, transform.TransformMatrix));
|
||||
float minX = float.MaxValue;
|
||||
float minY = float.MaxValue;
|
||||
float maxX = float.MinValue;
|
||||
float maxY = float.MinValue;
|
||||
|
||||
foreach (var vertex in vertices)
|
||||
{
|
||||
var transformedVertex = Vector2.Transform(vertex, transform.TransformMatrix);
|
||||
|
||||
if (transformedVertex.X < minX)
|
||||
{
|
||||
minX = transformedVertex.X;
|
||||
}
|
||||
if (transformedVertex.Y < minY)
|
||||
{
|
||||
minY = transformedVertex.Y;
|
||||
}
|
||||
if (transformedVertex.X > maxX)
|
||||
{
|
||||
maxX = transformedVertex.X;
|
||||
}
|
||||
if (transformedVertex.Y > maxY)
|
||||
{
|
||||
maxY = transformedVertex.Y;
|
||||
}
|
||||
}
|
||||
|
||||
return new AABB
|
||||
{
|
||||
MinX = TransformedVertices.Min(vertex => vertex.X),
|
||||
MinY = TransformedVertices.Min(vertex => vertex.Y),
|
||||
MaxX = TransformedVertices.Max(vertex => vertex.X),
|
||||
MaxY = TransformedVertices.Max(vertex => vertex.Y)
|
||||
MinX = minX,
|
||||
MinY = minY,
|
||||
MaxX = maxX,
|
||||
MaxY = maxY
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -33,8 +33,6 @@ namespace MoonTools.Core.Bonk
|
|||
/// <param name="transform2D"></param>
|
||||
public void Insert(T id, IShape2D shape, Transform2D transform2D)
|
||||
{
|
||||
if (shape == null) { throw new ArgumentNullException(nameof(shape)); }
|
||||
|
||||
var box = shape.AABB(transform2D);
|
||||
var minHash = Hash(box.MinX, box.MinY);
|
||||
var maxHash = Hash(box.MaxX, box.MaxY);
|
||||
|
@ -64,8 +62,6 @@ namespace MoonTools.Core.Bonk
|
|||
/// </summary>
|
||||
public IEnumerable<(T, IShape2D, Transform2D)> Retrieve(T id, IShape2D shape, Transform2D transform2D)
|
||||
{
|
||||
if (shape == null) { throw new ArgumentNullException(paramName: nameof(shape)); }
|
||||
|
||||
AABB box = shape.AABB(transform2D);
|
||||
var minHash = Hash(box.MinX, box.MinY);
|
||||
var maxHash = Hash(box.MaxX, box.MaxY);
|
||||
|
|
Loading…
Reference in New Issue