feat(npc, nav): 17.5 - a person walks by the world's way where it has one (NpcWorld.way: the next corner toward the target, asked every half second, on reaching it or for a new target; the errand begins only at the target itself; the step round and the give-up stay the fallback), way_test round a wall; and ludic.nav reads a mesh file into the shim's own memory and frees it once parsed, so loading a map leaves nothing in Ludic's never-freed heap
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
4add35b4ca
commit
ee0768bf3e
12 changed files with 184 additions and 39 deletions
|
|
@ -87,10 +87,18 @@ export port NpcWorld { # every member has a default: a flat dry field at n
|
|||
next_id: fn() -> int, body_of: fn(int) -> int # an id across machines; a look seed's body
|
||||
taken: fn(string) -> bool # a name the place keeps
|
||||
born / gone: fn(NpcPerson) -> void # draw it, stop drawing it
|
||||
way: fn(NpcPerson, x, z) -> bool, way_x, way_z # the next corner of its way toward (x, z)
|
||||
}
|
||||
export port NpcTalk { say: fn(NpcPerson, int) -> string, greeting: fn(NpcPerson) -> string }
|
||||
```
|
||||
|
||||
**A person walks by the world's way where the world has one.** `way` is asked for the next corner
|
||||
toward where it is going - every half second, on reaching the corner, and at once for a new target -
|
||||
and the person walks corner to corner, but begins its errand only at the target itself. With no
|
||||
answer (the default) it walks straight and steps round what is in the way, as before; the step
|
||||
round and the twenty seconds' give-up stay as the fallback. Maroon Lake binds `way` to its navmesh
|
||||
by a person's taste.
|
||||
|
||||
## API
|
||||
|
||||
| | |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue