forked from MoonsideGames/MoonTools.Bonk
retarget to .net standard 2.0
parent
c29b61992f
commit
d60a5f4311
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<Version>5.0.1</Version>
|
||||
<TargetFramework>netstandard2.1</TargetFramework>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<Description>.NET Core High Performance Collision Detection</Description>
|
||||
<PackageId>MoonTools.Core.Bonk</PackageId>
|
||||
<RootNamespace>MoonTools.Core.Bonk</RootNamespace>
|
||||
|
@ -19,8 +19,9 @@
|
|||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="MoonTools.Core.Structs" Version="2.0.0" />
|
||||
<PackageReference Include="morelinq" Version="3.2.0" />
|
||||
<PackageReference Include="System.Collections.Immutable" Version="1.6.0" />
|
||||
<PackageReference Include="MoonTools.Core.Structs" Version="2.1.0"/>
|
||||
<PackageReference Include="System.Collections.Immutable" Version="1.6.0"/>
|
||||
<PackageReference Include="System.Numerics.Vectors" Version="4.5.0"/>
|
||||
<PackageReference Include="Microsoft.Bcl.HashCode" Version="1.1.0"/>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
@ -4,7 +4,6 @@ using System.Collections.Generic;
|
|||
using System.Collections.Immutable;
|
||||
using System.Numerics;
|
||||
using MoonTools.Core.Structs;
|
||||
using MoreLinq;
|
||||
|
||||
namespace MoonTools.Core.Bonk
|
||||
{
|
||||
|
@ -18,7 +17,7 @@ namespace MoonTools.Core.Bonk
|
|||
|
||||
public IEnumerable<Position2D> Vertices { get { return vertices; } }
|
||||
|
||||
public int VertexCount { get { return vertices.Length; } }
|
||||
public int VertexCount { get { return vertices.Length; } }
|
||||
|
||||
// vertices are local to the origin
|
||||
public Polygon(IEnumerable<Position2D> vertices) // TODO: remove this, params is bad because it allocates an array
|
||||
|
@ -33,7 +32,19 @@ namespace MoonTools.Core.Bonk
|
|||
|
||||
public Vector2 Support(Vector2 direction, Transform2D transform)
|
||||
{
|
||||
return Vertices.Select(vertex => Vector2.Transform(vertex, transform.TransformMatrix)).MaxBy(transformed => Vector2.Dot(transformed, direction)).First();
|
||||
var maxDotProduct = float.NegativeInfinity;
|
||||
var maxVertex = vertices[0].ToVector2();
|
||||
foreach (var vertex in Vertices)
|
||||
{
|
||||
var transformed = Vector2.Transform(vertex, transform.TransformMatrix);
|
||||
var dot = Vector2.Dot(transformed, direction);
|
||||
if (dot > maxDotProduct)
|
||||
{
|
||||
maxVertex = transformed;
|
||||
maxDotProduct = dot;
|
||||
}
|
||||
}
|
||||
return maxVertex;
|
||||
}
|
||||
|
||||
public AABB AABB(Transform2D Transform2D)
|
||||
|
|
|
@ -3,7 +3,6 @@ using System.Collections.Generic;
|
|||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using MoonTools.Core.Structs;
|
||||
using MoreLinq;
|
||||
|
||||
namespace MoonTools.Core.Bonk
|
||||
{
|
||||
|
@ -38,7 +37,19 @@ namespace MoonTools.Core.Bonk
|
|||
|
||||
public Vector2 Support(Vector2 direction, Transform2D transform)
|
||||
{
|
||||
return Vertices.Select(vertex => Vector2.Transform(vertex, transform.TransformMatrix)).MaxBy(transformed => Vector2.Dot(transformed, direction)).First();
|
||||
var maxDotProduct = float.NegativeInfinity;
|
||||
var maxVertex = new Vector2(MinX, MinY);
|
||||
foreach (var vertex in Vertices)
|
||||
{
|
||||
var transformed = Vector2.Transform(vertex, transform.TransformMatrix);
|
||||
var dot = Vector2.Dot(transformed, direction);
|
||||
if (dot > maxDotProduct)
|
||||
{
|
||||
maxVertex = transformed;
|
||||
maxDotProduct = dot;
|
||||
}
|
||||
}
|
||||
return maxVertex;
|
||||
}
|
||||
|
||||
public AABB AABB(Transform2D Transform2D)
|
||||
|
|
|
@ -2,7 +2,6 @@ using System.Linq;
|
|||
using System.Collections.Generic;
|
||||
using System.Numerics;
|
||||
using MoonTools.Core.Structs;
|
||||
using MoreLinq;
|
||||
using System;
|
||||
|
||||
namespace MoonTools.Core.Bonk
|
||||
|
@ -62,14 +61,21 @@ namespace MoonTools.Core.Bonk
|
|||
return Bonk.AABB.FromTransformedVertices(Vertices, transform);
|
||||
}
|
||||
|
||||
public Vector2 Support(Vector2 direction)
|
||||
{
|
||||
return Vertices.MaxBy(vertex => Vector2.Dot(vertex, direction)).First();
|
||||
}
|
||||
|
||||
public Vector2 Support(Vector2 direction, Transform2D transform)
|
||||
{
|
||||
return Vector2.Transform(Support(direction), transform.TransformMatrix);
|
||||
var maxDotProduct = float.NegativeInfinity;
|
||||
var maxVertex = a;
|
||||
foreach (var vertex in Vertices)
|
||||
{
|
||||
var transformed = Vector2.Transform(vertex, transform.TransformMatrix);
|
||||
var dot = Vector2.Dot(transformed, direction);
|
||||
if (dot > maxDotProduct)
|
||||
{
|
||||
maxVertex = transformed;
|
||||
maxDotProduct = dot;
|
||||
}
|
||||
}
|
||||
return maxVertex;
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
|
|
Loading…
Reference in New Issue