Looks up what occupies a cell
The cell X
The cell Y
The cell Z
The cell's contents, or null if the cell is air
Runs a callback over every box that could touch an axis-aligned region
The region's minimum X
The region's minimum Y
The region's minimum Z
The region's maximum X
The region's maximum Y
The region's maximum Z
Called once per candidate box
Checks whether a sphere fits somewhere without touching the map.
This deliberately does not go through ColliderSet.sweep: a sweep reports the box it should push you out of, and a sphere buried deep enough inside a box has nowhere to be pushed, so the sweep comes up empty. That is faithful to the game - it is why you can end up inside scenery - but it would have the graph cheerfully route straight through solid walls.
The sphere's centre X
The sphere's centre Y
The sphere's centre Z
The sphere's radius
Whether the sphere is clear
Finds the deepest overlap between a sphere and the map, and how to push the sphere back out. This is the one query the movement code runs, eight times per tick.
The box that produced the deepest overlap, or null if the sphere is clear
Every collider on a map, plus the queries the physics and the PathGraph run against them.
This is a port of the collision world the game server builds, right down to the quirks: props are decomposed into boxes rather than collided as meshes, and a box is only ever considered for a query that reaches the cell it was placed in, even when the box itself sticks out further.
Broad-phase is a flat cell hash rather than the server's BVH. Since every collider is registered under exactly one cell, and the server's BVH leaves are filtered by that same cell box, the two return identical candidate sets - this one just gets there without walking a tree.