protected override void Parse(ref BitStreamReader bsr) { Cmd = bsr.ReadUInt(); uint byteSize = bsr.ReadUInt(); int indexBeforeData = bsr.CurrentBitIndex; CommandNumber = bsr.ReadUIntIfExists(); TickCount = bsr.ReadUIntIfExists(); ViewAngleX = bsr.ReadFloatIfExists(); ViewAngleY = bsr.ReadFloatIfExists(); ViewAngleZ = bsr.ReadFloatIfExists(); SidewaysMovement = bsr.ReadFloatIfExists(); ForwardMovement = bsr.ReadFloatIfExists(); VerticalMovement = bsr.ReadFloatIfExists(); Buttons = (Buttons?)bsr.ReadUIntIfExists(); Impulse = bsr.ReadByteIfExists(); if (bsr.ReadBool()) { WeaponSelect = bsr.ReadUInt(11); WeaponSubtype = bsr.ReadUIntIfExists(6); } MouseDx = (short?)bsr.ReadUShortIfExists(); MouseDy = (short?)bsr.ReadUShortIfExists(); bsr.CurrentBitIndex = indexBeforeData + (int)(byteSize << 3); }
protected override void Parse(ref BitStreamReader bsr) { TableId = (byte)bsr.ReadUInt(5); TableName = DemoRef.StringTablesManager.TableById(TableId).Name; ChangedEntriesCount = bsr.ReadUShortIfExists() ?? 1; uint dataLen = bsr.ReadUInt(20); TableUpdates = new StringTableUpdates(DemoRef, TableName, ChangedEntriesCount, false); TableUpdates.ParseStream(bsr.SplitAndSkip(dataLen)); }