class_name ByteStream var bytes: PackedByteArray var position: int = 0 @warning_ignore("shadowed_variable") static func from_bytes(bytes: PackedByteArray): var byte_stream = ByteStream.new() byte_stream.bytes = bytes return byte_stream @warning_ignore("shadowed_variable") func seek(position: int): if position > 0: assert(position < bytes.size()) self.position = position func decode_u8(): var result = bytes.decode_u8(position) seek(position + 1) return result func decode_u16(): var result = bytes.decode_u16(position) seek(position + 2) return result func decode_u32(): var result = bytes.decode_u32(position) seek(position + 4) return result func decode_u64(): var result = bytes.decode_u64(position) seek(position + 8) return result func decode_s8(): var result = bytes.decode_s8(position) seek(position + 1) return result func decode_s16(): var result = bytes.decode_s16(position) seek(position + 2) return result func decode_s32(): var result = bytes.decode_s32(position) seek(position + 4) return result func decode_s64(): var result = bytes.decode_s64(position) seek(position + 8) return result