miaoda-game-targeting2d-core
v0.2.0
Published
Engine-agnostic continuous-2D target queries and deterministic selection: circle, sector, capsule, annulus, spatial hash, nearest/farthest, and metric scoring.
Downloads
376
Maintainers
Readme
miaoda-game-targeting2d-core
Engine-neutral target filtering, continuous-2D range queries, deterministic selection, chain selection, and an optional spatial index. Use it for towers, area attacks, auto-battlers, RTS/MOBA skills, and survivors-like targeting; damage and line of sight remain external rules.
pnpm add miaoda-game-targeting2d-coreconst candidates = index.querySector(tower.pos, tower.facing, 240, 70, {
mask: ENEMY,
filter: target => !target.tags?.includes('invisible'),
});
const target = selectMax(candidates, item => item.payload.pathProgress);Queries treat targets as circles and support circle, annulus, sector, and capsule regions. Positions/radii use host-selected continuous world units; facing/sector angles follow the API's degree-based query values. payload carries game-specific data and is never interpreted.
Arrays are enough for small encounters. TargetIndex reduces repeated full scans in larger scenes. get, all, and queries return live views for allocation-free reads: treat them as read-only and call index.update(...) when position, radius, mask, or tags change. Positions/tags are copied on add, while payload stays by reference.
