code wiki / (root) / nx_craft_placement_floor_t316.nx

nx_craft_placement_floor_t316.nx source

↩ module page · 18 lines · 917 B

1// Exact extraction from canonical nx_wasm_craft.nx; callers provide the existing world/contact owners. 2const WC_BODY_CELLS: i64 = 2 // the two body cells mob_fits proves above a floor 3const WC_BLOCK_Q8: i64 = 256 // one block in Q8 world units (S_CX: 256 = one block) 4func wc_place_floor_q(base: i64, xq: i64, zq: i64) -> i64 { 5 if wsp(base)[P_SURF] != 1 { return wc_contact_floor_q(base,xq,zq,WY-1) } 6 var floor: i64 = wc_surface_source(base,xq,zq) 7 if floor < 0 { return 0 - 1 } 8 var cell: i64 = floor >> 8 9 while cell < WY && cell*WC_BLOCK_Q8 < floor+WC_BODY_CELLS*WC_BLOCK_Q8 { 10 if beach_contact_cell_solid(base,xq >> 8,cell,zq >> 8) == 1 { floor = (cell+1)*WC_BLOCK_Q8 } 11 cell = cell + 1 12 } 13 return floor 14} 15func wc_actor_seat_q(base: i64, xq: i64, zq: i64, yq: i64) -> i64 { 16 if wsp(base)[P_SURF] == 1 { return wc_place_floor_q(base,xq,zq) } 17 return wc_contact_floor_q(base,xq,zq,yq >> 8) 18}