code wiki / (root) / nx_beach_contact_sweep_gate.nx

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}