1use core::slice;
2
3use crate::{bindings::*, std_types::c_int, World};
4
5pub fn World_Pack(x: c_int, y: c_int, z: c_int) -> c_int {
6 (y * unsafe { World.Length } + z) * unsafe { World.Width } + x
7}
8
9pub fn World_GetBlock(x: c_int, y: c_int, z: c_int) -> BlockID {
10 let i = World_Pack(x, y, z) as usize;
11
12 (((World_Blocks()[i] as c_int) | ((World_Blocks2()[i] as c_int) << 8))
13 & unsafe { World.IDMask }) as BlockID
14}
15
16pub fn World_Blocks() -> &'static mut [BlockRaw] {
17 unsafe { slice::from_raw_parts_mut(World.Blocks, World.Volume as _) }
18}
19
20pub fn World_Blocks2() -> &'static mut [BlockRaw] {
21 unsafe { slice::from_raw_parts_mut(World.Blocks2, World.Volume as _) }
22}