public void WritePackedIntDelta(int value, int baseline, NetworkCompressionModel model) { int diff = (int)(baseline - value); WritePackedInt(diff, model); }
public uint ReadPackedUIntDelta(ref Context ctx, uint baseline, NetworkCompressionModel model) { uint delta = (uint)ReadPackedInt(ref ctx, model); return(baseline - delta); }
public void WritePackedInt(int value, NetworkCompressionModel model) { uint interleaved = (uint)((value >> 31) ^ (value << 1)); // interleave negative values between positive values: 0, -1, 1, -2, 2 WritePackedUInt(interleaved, model); }
public int ReadPackedInt(ref Context ctx, NetworkCompressionModel model) { uint folded = ReadPackedUInt(ref ctx, model); return((int)(folded >> 1) ^ -(int)(folded & 1)); // Deinterleave values from [0, -1, 1, -2, 2...] to [..., -2, -1, -0, 1, 2, ...] }