public BlockDBEntry Unpack(BlockDBCacheEntry cEntry) { BlockDBEntry entry; entry.PlayerID = (int)((uint)cEntry.Packed >> 8); entry.Index = cEntry.Index; entry.TimeDelta = BaseTimeDelta + cEntry.TimeDelta; entry.OldRaw = cEntry.OldRaw; entry.NewRaw = cEntry.NewRaw; entry.Flags = (ushort)(1 << (cEntry.Packed & 0x0F)); entry.Flags |= (ushort)((cEntry.Packed & 0xF0) << 8); return(entry); }
public BlockDBEntry Unpack(BlockDBCacheEntry cEntry) { BlockDBEntry entry; entry.PlayerID = (int)(cEntry.Packed1 & idMask); entry.Index = cEntry.Index; entry.NewRaw = cEntry.NewRaw; entry.OldRaw = cEntry.OldRaw; const int hiTimeBits = 7 << 11; entry.Flags = (ushort)(cEntry.Flags & ~hiTimeBits); // hi 3 bits for time entry.TimeDelta = BaseTimeDelta; // offset from base delta entry.TimeDelta += (int)(cEntry.Packed1 >> idShift); // lo 8 bits for time entry.TimeDelta += (cEntry.Flags & hiTimeBits) >> 3; // hi 3 bits for time return(entry); }