code wiki / (root) / nx_wasm_craft_morf_gate.nx

nx_wasm_craft_morf_gate.nx source

↩ module page · 99 lines · 7012 B

1// ORIGINAL. Internal engine ownership gate, not browser/public-loader acceptance. 2import "nx_syscalls.nx" 3import "nx_gate_verdict.nx" 4import "nx_nxa.nx" 5import "nx_wasm_craft.nx" 6import "nx_morf_draw_core.nx" 7 8func main() -> i64 { 9 let ctr: *i64 = gv_ctr() 10 gv_head("engine-owned MORF storage and actual entity identity" as *u8) 11 let v: *MvcView = sys_mmap(__size_of(MvcView)) as *MvcView 12 let a: *MrdAsset = sys_mmap(__size_of(MrdAsset)) as *MrdAsset 13 let bind: *i64 = sys_mmap(9*MVC_WORD) as *i64 14 let bn: *i64 = sys_mmap(9*MVC_WORD) as *i64 15 let tri: *i64 = sys_mmap(3*MVC_WORD) as *i64 16 let face: *i64 = sys_mmap(MVC_WORD) as *i64 17 let delta: *i64 = sys_mmap(3*MVC_WORD) as *i64 18 let tags: *i64 = sys_mmap(2*MVC_WORD) as *i64 19 if (v as i64) <= 0 { return 1 }; if (a as i64) <= 0 { return 1 } 20 if (bind as i64) <= 0 { return 1 }; if (bn as i64) <= 0 { return 1 } 21 if (tri as i64) <= 0 { return 1 }; if (face as i64) <= 0 { return 1 } 22 if (delta as i64) <= 0 { return 1 }; if (tags as i64) <= 0 { return 1 } 23 var i: i64 = 0 24 while i < 9 { bind[i] = 0; bn[i] = 0; i = i+1 } 25 bind[3] = 100; bind[7] = 100 26 bn[2] = VN_SCALE; bn[5] = VN_SCALE; bn[8] = VN_SCALE 27 tri[0] = 0; tri[1] = 1; tri[2] = 2 28 face[0] = 2; delta[0] = 0; delta[1] = 0; delta[2] = 100 29 tags[0] = nxa_tag4("TEST" as *u8); tags[1] = 1 30 v.bind = bind; v.bind_words = 9; v.face = face; v.face_words = 1 31 v.delta = delta; v.delta_words = 3; v.vertices = 3; v.faces = 1; v.channels = 1; v.unit = 1000 32 a.morph = v; a.triangles = tri; a.triangle_words = 3; a.bind_normals = bn; a.normal_words = 9 33 let bytes: i64 = wc_morf_storage_bytes(a,2) 34 let independently_counted: i64 = __size_of(WcmBank)+__size_of(WcmDraw)+__size_of(MrdAsset)+__size_of(MvcView)+(9+3+1+2+3+9+WC_CAST_N+9+9)*MVC_WORD 35 gv_check_eq("derived storage equals independently enumerated layout" as *u8,bytes,independently_counted,ctr) 36 if bytes < 0 { return 1 } 37 gv_check_eq("append starts exactly at old extension tail" as *u8,O_WCM,CRAFT_EXT_TOTAL,ctr) 38 let base: i64 = sys_mmap(CRAFT_EXT_TOTAL+bytes+MVC_WORD) as i64 39 if base <= 0 { return 1 } 40 // Exercise the actual entity store, without unrelated terrain generation. 41 let mobs: *i64 = mobp(base) 42 en_init(mobs,MOB_CAP,MOB_NCOMP) 43 let first: i64 = en_spawn(mobs) 44 let second: i64 = en_spawn(mobs) 45 gv_check("actual first entity spawned" as *u8,first > 0,ctr) 46 gv_check("actual second entity spawned" as *u8,second > 0,ctr) 47 gv_check_eq("two actual mobs available" as *u8,en_count(mobs),2,ctr) 48 let guard: *i64 = (base+CRAFT_EXT_TOTAL+bytes) as *i64 49 guard[0] = 739 50 let bank: *WcmBank = wc_morf_bank(base) 51 let before: i64 = nxa_check2(1,base as *i64,CRAFT_EXT_TOTAL/MVC_WORD) 52 gv_check_eq("one byte undersized refuses" as *u8,wc_morf_bind(base,bytes-1,a,tags,2),WCM_RC_CAPACITY,ctr) 53 gv_check_eq("undersized bind has not loaded" as *u8,bank.loaded,0,ctr) 54 gv_check_eq("exact capacity admits" as *u8,wc_morf_bind(base,bytes,a,tags,2),0,ctr) 55 gv_check_eq("bank loaded after complete admission" as *u8,bank.loaded,1,ctr) 56 gv_check_eq("old arena full-range checksum preserved" as *u8,nxa_check2(1,base as *i64,CRAFT_EXT_TOTAL/MVC_WORD),before,ctr) 57 gv_check_eq("one-past-footprint guard preserved" as *u8,guard[0],739,ctr) 58 let d: *WcmDraw = wc_morf_descriptor(base) 59 let owned: *MrdAsset = d.asset 60 let ownv: *MvcView = owned.morph 61 gv_check("bind input copied into separate owned storage" as *u8,(ownv.bind as i64) != (bind as i64),ctr) 62 gv_check_eq("tag copied exactly" as *u8,wc_morf_channel_tag(base,0),tags[0],ctr) 63 gv_check_eq("self-source reload refuses alias" as *u8,wc_morf_bind(base,bytes,owned,bank.tags,2),WCM_RC_SOURCE,ctr) 64 gv_check_eq("alias preflight retains previous admitted bank" as *u8,bank.loaded,1,ctr) 65 // Destroy source values after bind: engine must evaluate its immutable copy. 66 bind[7] = 900; delta[2] = 900; face[0] = 0; tri[2] = 0; tags[0] = 0; bn[2] = 777 67 gv_check_eq("entity zero sets full asset-unit weight" as *u8,wc_cast_morf_weight(base,0,0,1000),0,ctr) 68 gv_check_eq("owned geometry moves one vertex despite source edits" as *u8,wc_cast_morf(base,0),1,ctr) 69 gv_check_eq("owned delta stays original" as *u8,d.positions[8],100,ctr) 70 gv_check_eq("owned bind stays original" as *u8,d.positions[7],100,ctr) 71 gv_check_eq("owned topology gives analytical normal" as *u8,d.normals[1],0-707,ctr) 72 gv_check_eq("owner can read active output" as *u8,wc_morf_positions_for(base,0),d.positions as i64,ctr) 73 gv_check_eq("different owner cannot read active output" as *u8,wc_morf_positions_for(base,1),WCM_RC_NOT_LOADED,ctr) 74 gv_check_eq("idempotent same weight" as *u8,wc_cast_morf_weight(base,0,0,1000),0,ctr) 75 gv_check_eq("same weight keeps active result valid" as *u8,d.ready,1,ctr) 76 gv_check_eq("other entity has zero independent weights" as *u8,wc_cast_morf(base,1),0,ctr) 77 gv_check_eq("inactive entity exposes no integer float replacement" as *u8,d.ready,0,ctr) 78 gv_check_eq("previous owner cannot read stale output" as *u8,wc_morf_normals_for(base,0),WCM_RC_NOT_LOADED,ctr) 79 gv_check_eq("actual missing mob refused despite spare weight capacity" as *u8,wc_cast_morf(base,2),NXA_RC_NO_MOB,ctr) 80 gv_check_eq("negative entity refused" as *u8,wc_cast_morf_weight(base,0-1,0,1000),NXA_RC_NO_MOB,ctr) 81 gv_check_eq("out-of-range channel refused" as *u8,wc_cast_morf_weight(base,0,1,1000),WCM_RC_WEIGHT_SHAPE,ctr) 82 gv_check_eq("active owner can prepare again" as *u8,wc_cast_morf(base,0),1,ctr) 83 gv_check_eq("changed weight accepted" as *u8,wc_cast_morf_weight(base,0,0,500),0,ctr) 84 gv_check_eq("changed weight invalidates active output" as *u8,d.ready,0,ctr) 85 // Reload the original fixture and prove all entity weights are reset. 86 bind[7] = 100; delta[2] = 100; face[0] = 2; tri[2] = 2 87 tags[0] = nxa_tag4("TEST" as *u8); bn[2] = VN_SCALE 88 gv_check_eq("second entity receives independent active weight" as *u8,wc_cast_morf_weight(base,1,0,1000),0,ctr) 89 gv_check_eq("asset reload succeeds" as *u8,wc_morf_bind(base,bytes,a,tags,2),0,ctr) 90 var all_zero: i64 = 1; i = 0 91 while i < d.weight_words { if d.weights[i] != 0 { all_zero = 0 }; i = i+1 } 92 gv_check("reload clears every entity weight row" as *u8,all_zero,ctr) 93 gv_check_eq("reload clears prepared output" as *u8,d.ready,0,ctr) 94 gv_check_eq("reloaded inactive first entity preserves float path" as *u8,wc_cast_morf(base,0),0,ctr) 95 gv_check_eq("reloaded inactive second entity preserves float path" as *u8,wc_cast_morf(base,1),0,ctr) 96 gv_check_eq("old arena full-range checksum preserved after lifecycle" as *u8,nxa_check2(1,base as *i64,CRAFT_EXT_TOTAL/MVC_WORD),before,ctr) 97 gv_check_eq("tail guard survives reload" as *u8,guard[0],739,ctr) 98 return gv_verdict("NX-WASM-CRAFT-MORF" as *u8,ctr,"internal owned storage lifecycle; public loader and renderer delivery remain open" as *u8) 99}