ludic.nav (18.1): a DetourCrowd per kind of walker
The shim builds DetourCrowd from the same pinned Recast & Detour tag. nav_crowd_start puts a crowd on a kind's mesh, with the mesh's tastes as its filters. Walkers are added (snapped to the mesh), sent and sped through verbs, stepped together, and read back into nav_agent_*. nav_crowd_us times the stepping with the OS clock. Dropping a mesh drops its crowd first. On the test meadow, twenty walkers crossing head-on never come closer than their two radii (0.7003 m), all arrive, and a step costs about 12 us. nav 15/15 on the Mac and the PC; the DLL still imports KERNEL32 alone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
c2902a2246
commit
521efe67db
12 changed files with 267 additions and 10 deletions
|
|
@ -15,4 +15,13 @@ extern function nvc_us(h: pointer) -> int = "nav_us"
|
|||
extern function nvc_raycast(h: pointer, f: int, sx: float, sy: float, sz: float, ex: float, ez: float) -> int = "nav_raycast"
|
||||
extern function nvc_random_near(h: pointer, f: int, x: float, y: float, z: float, r: float, seed: int, out: pointer) -> int = "nav_random_near"
|
||||
extern function nvc_stage(size: int) -> pointer = "nav_stage"
|
||||
extern function nvc_crowd_new(h: pointer, max: int, max_radius: float) -> pointer = "nav_crowd_new"
|
||||
extern function nvc_crowd_free(c: pointer) -> void = "nav_crowd_free"
|
||||
extern function nvc_crowd_add(c: pointer, x: float, y: float, z: float, radius: float, height: float, speed: float, filter: int) -> int = "nav_crowd_add"
|
||||
extern function nvc_crowd_remove(c: pointer, i: int) -> void = "nav_crowd_remove"
|
||||
extern function nvc_crowd_target(c: pointer, i: int, x: float, y: float, z: float) -> int = "nav_crowd_target"
|
||||
extern function nvc_crowd_speed(c: pointer, i: int, speed: float) -> void = "nav_crowd_speed"
|
||||
extern function nvc_crowd_update(c: pointer, dt: float) -> void = "nav_crowd_update"
|
||||
extern function nvc_crowd_read(c: pointer, i: int, out: pointer) -> int = "nav_crowd_read"
|
||||
extern function nvc_crowd_us(c: pointer) -> int = "nav_crowd_us"
|
||||
extern function nvc_load_staged(buf: pointer, size: int) -> pointer = "nav_load_staged"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue