rj-action-library/Runtime/Math/Geometry/Capsule2.cs

45 lines
826 B
C#

using Godot;
using System.Collections;
using System.Collections.Generic;
namespace Rokojori
{
public class Capsule2
{
public Vector2 start = Vector2.Zero;
public Vector2 end = Vector2.Zero;
public float radius = 1;
public Capsule2( Vector2 start, Vector2 end, float radius )
{
this.start = start;
this.end = end;
this.radius = radius;
}
public Capsule2 Copy()
{
return new Capsule2( start, end, radius );
}
public Vector2 center
{
get { return start.Lerp( end, 0.5f ); }
}
public Line2 centerLine
{
get { return new Line2( start, end ); }
}
public float DistanceToPoint( Vector2 p )
{
var lineDistance = centerLine.DistanceToPoint( p );
return Mathf.Max( 0, lineDistance - radius );
}
}
}