forked from MoonsideGames/MoonTools.Bonk
				
			retarget to .net standard 2.0
							parent
							
								
									c29b61992f
								
							
						
					
					
						commit
						d60a5f4311
					
				| 
						 | 
				
			
			@ -68,4 +68,4 @@ namespace MoonTools.Core.Bonk
 | 
			
		|||
            return !(left == right);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			@ -106,4 +112,4 @@ namespace MoonTools.Core.Bonk
 | 
			
		|||
            return !(a == b);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue