package game Vec2i :: struct { x: int, y: int, } vec2i_to_vec2 :: proc(v2i:Vec2i) -> [2]f32 { return {f32(v2i.x), f32(v2i.y)} } vec2_to_vec2i :: proc(v2:[2]f32) -> Vec2i { return {int(v2.x), int(v2.y)} } serialize_vec2i :: proc(v:Vec2i) -> [8]byte { data: [8]byte x := serialize_int(v.x) y := serialize_int(v.y) for i in 0..<4 { data[i] = x[i] } for i in 0..<4 { data[4 + i] = y[i] } return data } deserialize_vec2i :: proc(data:[]byte) -> Vec2i { x := deserialize_int(data[0:4]) y := deserialize_int(data[4:8]) return Vec2i{x,y} } serialize_int :: proc(v:int) -> [4]byte { data : [4]byte data[0] = byte(v) data[1] = byte(v >> 8) data[2] = byte(v >> 16) data[3] = byte(v >> 24) return data } deserialize_int :: proc(data:[]byte) -> int { return int(data[0]) | int(data[1]) << 8 | int(data[2]) << 16 | int(data[3]) << 24 }