nx_beach_contact_sweep_gate.nx source
↩ module page · 68 lines · 4459 B
1import "nx_beach_contact_candidate.nx"
2import "nx_gate_verdict.nx"
3// Geometry below is explicit regression-fixture data, not runtime body policy.
4func bcg_pose(b: *BeachContactBox, x: i64, eye: i64, z: i64, radius: i64) -> i64 {
5 b.min_x=x-radius; b.max_x=x+radius
6 b.min_y=eye-EYE; b.max_y=eye+128
7 b.min_z=z-radius; b.max_z=z+radius
8 return 0
9}
10func main() -> i64 {
11 let c: *i64=gv_ctr()
12 let base: i64=sys_mmap(CRAFT_TOTAL) as i64
13 let body: *BeachContactBox=sys_mmap(__size_of(BeachContactBox)) as *BeachContactBox
14 let obstacle: *BeachContactBox=sys_mmap(__size_of(BeachContactBox)) as *BeachContactBox
15 let result: *BeachContactResult=sys_mmap(__size_of(BeachContactResult)) as *BeachContactResult
16 let sp: *i64=wsp(base)
17 let state: *i64=wst(base)
18 sp[P_SURF]=1; sp[P_WATER]=0
19 hq_set(base,10,10,1024); hq_set(base,11,10,1024)
20 hq_set(base,10,11,1024); hq_set(base,11,11,1024)
21 vset(base,10,4,10,5)
22 vset(base,10,12,10,6)
23 state[S_CY]=3251
24 gv_check_eq("incumbent negative control admits airborne body through wood",wstand(base,2688,2688,3251),1715,c)
25 bcg_pose(body,2432,3251,2688,64)
26 gv_check_eq("swept whole body blocks mid-body wood despite clear head",beach_contact_world_sweep(base,body,obstacle,result,0,256),64,c)
27 gv_check_eq("clear start is not reported as initial overlap",result.initial_overlap,0,c)
28 beach_contact_translate(body,0,result.delta_q8)
29 gv_check_eq("clipped destination touches without penetration",beach_contact_overlap(body,obstacle),0,c)
30 bcg_pose(body,2944,3251,2688,64)
31 gv_check_eq("reverse approach clips against opposite wood face",beach_contact_world_sweep(base,body,obstacle,result,0,-256),-64,c)
32 bcg_pose(body,2432,3251,2688,0)
33 gv_check_eq("legacy point footprint uses actual airborne body height",beach_contact_world_sweep(base,body,obstacle,result,0,256),128,c)
34 bcg_pose(body,2688,3251,2688,64)
35 beach_contact_world_sweep(base,body,obstacle,result,0,40)
36 gv_check_eq("initial penetration is explicit",result.initial_overlap,1,c)
37 gv_check_eq("initial penetration is not silently repaired",result.delta_q8,0,c)
38 bcg_pose(body,2432,1715,2688,64)
39 gv_check_eq("legal walk below high overhang remains free",beach_contact_world_sweep(base,body,obstacle,result,0,256),256,c)
40 bcg_pose(body,2688,2500,2688,64)
41 gv_check_eq("upward sweep cannot tunnel through one-cell ceiling",beach_contact_world_sweep(base,body,obstacle,result,1,1000),444,c)
42 bcg_pose(body,2688,4000,2688,64)
43 gv_check_eq("downward sweep lands at first crossed platform",beach_contact_world_sweep(base,body,obstacle,result,1,-1000),-237,c)
44 bcg_pose(body,2688,3763,2688,64)
45 gv_check_eq("resting top contact prevents penetration",beach_contact_world_sweep(base,body,obstacle,result,1,-9),0,c)
46 bcg_pose(body,2560,2500,2688,0)
47 gv_check_eq("point footprint tangent to side face can move vertically",beach_contact_world_sweep(base,body,obstacle,result,1,1000),1000,c)
48 bcg_pose(body,2560,3251,2688,0)
49 gv_check_eq("point contact can move away from wall",beach_contact_world_sweep(base,body,obstacle,result,0,-40),-40,c)
50 vset(base,10,12,10,7)
51 bcg_pose(body,2432,3251,2688,64)
52 gv_check_eq("leaf collision is retained",beach_contact_world_sweep(base,body,obstacle,result,0,256),64,c)
53 gv_check_eq("leaf material remains observable",result.hit_material,7,c)
54 vset(base,10,12,10,5)
55 gv_check_eq("continuous mode excludes obsolete terrain cells",beach_contact_world_sweep(base,body,obstacle,result,0,256),256,c)
56 sp[P_SURF]=0
57 gv_check_eq("voxel mode retains terrain cell collision",beach_contact_world_sweep(base,body,obstacle,result,0,256),64,c)
58 sp[P_SURF]=1
59 vset(base,10,12,10,0); vset(base,10,5,10,6)
60 bcg_pose(body,2432,1715,2688,64)
61 gv_check_eq("step first blocks flat translation",beach_contact_world_sweep(base,body,obstacle,result,0,256),64,c)
62 gv_check_eq("step upward leg has clearance",beach_contact_world_sweep(base,body,obstacle,result,1,256),256,c)
63 beach_contact_translate(body,1,result.delta_q8)
64 gv_check_eq("raised step horizontal leg clears obstacle",beach_contact_world_sweep(base,body,obstacle,result,0,256),256,c)
65 beach_contact_translate(body,0,result.delta_q8)
66 gv_check_eq("step downward leg stops at platform contact",beach_contact_world_sweep(base,body,obstacle,result,1,-256),0,c)
67 return gv_verdict("BEACH-CONTACT-SWEEP",c,"Full-height swept box candidate with caller-supplied width; legacy point footprint explicit. Structural obstacles only: terrain controller integration and browser movement remain unverified.")
68}