class CompressedInt32Serializer (Niantic.ARDK.Utilities.BinarySerialization.ItemSerializers.CompressedInt32Serializer)
Overview
class CompressedInt32Serializer: Niantic.ARDK.Utilities.BinarySerialization.ItemSerializers.BaseItemSerializer {
public:
// fields
static readonly CompressedInt32Serializer Instance = new CompressedInt32Serializer();
// methods
static Int32 ReadCompressedInt32(Stream stream);
static void WriteCompressedInt32(Stream stream, Int32 value);
};
Inherited Members
public:
// properties
Type DataType;
// methods
object Deserialize(BinaryDeserializer deserializer);
T Deserialize(BinaryDeserializer deserializer);
void Serialize(BinarySerializer serializer, object item);
void Serialize(BinarySerializer serializer, T item);
T Deserialize(BinaryDeserializer deserializer);
void Serialize(BinarySerializer serializer, T item);
Detailed Documentation
Methods
static void WriteCompressedInt32(Stream stream, Int32 value)
Writes an Int32 value in “compressed” format. This uses the UInt32 compression logic, with an extra twist. -1 has all bytes set, meaning that if we just want to use the “compression” on it, it will occupy 5 bytes. So, instead, we shift the sign bit to the right and invert all the bits when a value is negative. In this way, the values 0, -1, 1, -2, 2, -3, 3 etc are actually written as 0, 1, 2, 3, 4, 5, 6, keeping just one byte instead of 4 (no compression) or 5 (bad compression for negatives).