use bounding boxes to optimize collision detection
This commit is contained in:
+5
-4
@@ -84,7 +84,7 @@ export default class Pathfind {
|
||||
if (radius > 0) {
|
||||
for (const waypoint of waypoints) {
|
||||
const collider = Entity.collider(waypoint[0], waypoint[1], radius)
|
||||
const waypointAvailable = !SATX.collideObjects(collider, colliders)
|
||||
const waypointAvailable = !colliders.some((it) => SATX.collideObject(collider, it))
|
||||
if (waypointAvailable) {
|
||||
filteredWaypoints.push(waypoint)
|
||||
}
|
||||
@@ -115,9 +115,10 @@ export default class Pathfind {
|
||||
checked.add(key)
|
||||
checked.add(Pathfind.floatKey4(mergedWaypoints[j], mergedWaypoints[j + 1], mergedWaypoints[i], mergedWaypoints[i + 1]))
|
||||
|
||||
const tunnel = SATX.entityTunnel(mergedWaypoints[i], mergedWaypoints[i + 1], mergedWaypoints[j], mergedWaypoints[j + 1], radius)
|
||||
|
||||
if (!SATX.collideObjects(tunnel, colliders)) {
|
||||
// TODO: optimize tunnelCollider using bounding boxes
|
||||
const tunnel = Entity.tunnelCollider(mergedWaypoints[i], mergedWaypoints[i + 1], mergedWaypoints[j], mergedWaypoints[j + 1], radius)
|
||||
|
||||
if (!colliders.some((it) => SATX.collideObject(tunnel, it))) {
|
||||
const node = new Float32Array(5)
|
||||
node[0] = mergedWaypoints[i]
|
||||
node[1] = mergedWaypoints[i + 1]
|
||||
|
||||
Reference in New Issue
Block a user