Ingest N elements from flat arenas.
positions: concatenated per-element vertex coords (x,y,z,...)pos_ranges: 2 per element = [float_offset, float_len]indices: concatenated per-element LOCAL (0-based) triangle indicesidx_ranges: 2 per element = [idx_offset, idx_len]aabbs: 6 per element = [minx,miny,minz,maxx,maxy,maxz]Run one rule. group_a/group_b are GLOBAL element indices.
OMIT group_b (pass undefined/null) for a self-clash within
group_a; pass an array -- INCLUDING an empty one -- for a two-sided
rule. An empty array is a B side that matched nothing and yields no
clashes, which is why this is nullable rather than "empty means
self" (#5354). mode: 0 = hard, 1 = clearance. Records carry GLOBAL
element indices.
A clash session: ingest element geometry once, then run rules repeatedly.