public class CollisionUtils extends Object
Modifier and Type | Method and Description |
---|---|
static boolean |
getCollides(Vector2f lineStart,
Vector2f lineEnd,
Vector2f circleCenter,
float circleRadius)
Checks if a line connects with a circle.
|
static @Nullable Vector2f |
getCollisionPoint(Vector2f lineStart,
Vector2f lineEnd,
CombatEntityAPI target)
Finds the part of the ship that would be intersected by a given path.
|
static @Nullable Vector2f |
getCollisionPoint(Vector2f start1,
Vector2f end1,
Vector2f start2,
Vector2f end2)
Finds the point of intersection between two lines.
|
static @NotNull Vector2f |
getNearestPointOnBounds(Vector2f source,
CombatEntityAPI entity)
Returns the closest point on a
CombatEntityAPI 's collision bounds to a point. |
static boolean |
isPointOnSegment(Vector2f point,
BoundsAPI.SegmentAPI segment)
Check if a point is along a
BoundsAPI.SegmentAPI . |
static boolean |
isPointWithinBounds(Vector2f point,
CombatEntityAPI entity)
Checks if a point is inside or on the bounds of a
CombatEntityAPI . |
static boolean |
isPointWithinCollisionCircle(Vector2f point,
CombatEntityAPI entity)
Checks if a point is inside the collision circle of a
CombatEntityAPI . |
@Nullable public static @Nullable Vector2f getCollisionPoint(Vector2f lineStart, Vector2f lineEnd, CombatEntityAPI target)
target
's bounds,
no collision will be detected!target
- The CombatEntityAPI to check collision with.lineStart
- The start of the line to test collision with.lineEnd
- The end of the line to test collision with.Vector2f
of the point the line would hit at,
or null
if it doesn't hit.@Nullable public static @Nullable Vector2f getCollisionPoint(Vector2f start1, Vector2f end1, Vector2f start2, Vector2f end2)
start1
- The start of the first line to test collision with.end1
- The end of the first line to test collision with.start2
- The start of the second line to test collision with.end2
- The end of the second line to test collision with.Vector2f
that the two lines intersect at,
null
if they don't collide.public static boolean getCollides(Vector2f lineStart, Vector2f lineEnd, Vector2f circleCenter, float circleRadius)
lineStart
- The start point of the line to test.lineEnd
- The end point of the line to test.circleCenter
- The center point of the circle.circleRadius
- The radius of the circle.true
if the line collides with the circle,
false
otherwise.@NotNull public static @NotNull Vector2f getNearestPointOnBounds(Vector2f source, CombatEntityAPI entity)
CombatEntityAPI
's collision bounds to a point. If the entity
lacks collision bounds, the closest point on its collision radius will be returned instead.source
- The point to check distance from.entity
- The entity whose bounds will be checked.source
on entity
's BoundsAPI
, or
the closest point on its collision radius if it lacks collision bounds.public static boolean isPointWithinCollisionCircle(Vector2f point, CombatEntityAPI entity)
CombatEntityAPI
.point
- The Vector2f
to check.entity
- The CombatEntityAPI
whose BoundsAPI
we
are checking against.true
if point
is within the collision circle
of entity
, false
otherwise.public static boolean isPointOnSegment(Vector2f point, BoundsAPI.SegmentAPI segment)
BoundsAPI.SegmentAPI
. Accurate to within 1/3
su, use MathUtils.isPointOnLine(Vector2f, Vector2f, Vector2f)
if you need higher precision.point
- The point to check.segment
- The BoundsAPI.SegmentAPI
to check for collision with.true
if the point is along the line, false
otherwise.public static boolean isPointWithinBounds(Vector2f point, CombatEntityAPI entity)
CombatEntityAPI
.point
- The Vector2f
to check.entity
- The CombatEntityAPI
whose BoundsAPI
we
are checking against.true
if point
is within or on the bounds of
entity
, false
otherwise.