public static bool TryReadCompressedUInt32(this IBinaryStreamReader reader, out uint value)
{
value = 0;
if (!reader.CanRead(sizeof(byte)))
return false;
var firstByte = reader.ReadByte();
reader.Position--;
if (((firstByte & 0x80) == 0 && reader.CanRead(sizeof(byte))) ||
((firstByte & 0x40) == 0 && reader.CanRead(sizeof(ushort))) ||
(reader.CanRead(sizeof(uint))))
{
value = ReadCompressedUInt32(reader);
return true;
}
return false;
}