Exemple #1
0
        private void MessageSound()
        {
            if (!demo.ConvertNetworkProtocol() || demo.NetworkProtocol > 43)
            {
                parser.MessageSound();
                return;
            }

            Int32 messageStartOffset = parser.BitBuffer.CurrentByte;

            // read message
            parser.BitBuffer.Endian = BitBuffer.EndianType.Big;

            BitWriter bitWriter = new BitWriter();

            UInt32 flags = parser.BitBuffer.ReadUnsignedBits(9);

            bitWriter.WriteUnsignedBits(flags, 9);

            if ((flags & (1 << 0)) != 0) // volume
            {
                bitWriter.WriteUnsignedBits(parser.BitBuffer.ReadUnsignedBits(8), 8);
            }

            if ((flags & (1 << 1)) != 0) // attenuation * 64
            {
                bitWriter.WriteUnsignedBits(parser.BitBuffer.ReadUnsignedBits(8), 8);
            }

            bitWriter.WriteUnsignedBits(parser.BitBuffer.ReadUnsignedBits(3), 3);   // channel
            bitWriter.WriteUnsignedBits(parser.BitBuffer.ReadUnsignedBits(11), 11); // edict number

            if ((flags & (1 << 2)) != 0)                                            // sound index (short)
            {
                bitWriter.WriteUnsignedBits(parser.BitBuffer.ReadUnsignedBits(16), 16);
            }
            else // sound index (byte)
            {
                bitWriter.WriteUnsignedBits(parser.BitBuffer.ReadUnsignedBits(8), 8);
            }

            bitWriter.WriteVectorCoord(true, parser.BitBuffer.ReadVectorCoord(true)); // position

            if ((flags & (1 << 3)) != 0)                                              // pitch
            {
                bitWriter.WriteUnsignedBits(parser.BitBuffer.ReadUnsignedBits(8), 8);
            }

            parser.BitBuffer.SkipRemainingBits();
            parser.BitBuffer.Endian = BitBuffer.EndianType.Little;

            // insert new message
            ReWriteMessage(messageStartOffset, bitWriter.Data);
        }
        private void MessageSound()
        {
            if (!demo.ConvertNetworkProtocol() || demo.NetworkProtocol > 43)
            {
                parser.MessageSound();
                return;
            }

            Int32 messageStartOffset = parser.BitBuffer.CurrentByte;

            // read message
            parser.BitBuffer.Endian = BitBuffer.EndianType.Big;

            BitWriter bitWriter = new BitWriter();

            UInt32 flags = parser.BitBuffer.ReadUnsignedBits(9);
            bitWriter.WriteUnsignedBits(flags, 9);

            if ((flags & (1 << 0)) != 0) // volume
            {
                bitWriter.WriteUnsignedBits(parser.BitBuffer.ReadUnsignedBits(8), 8);
            }

            if ((flags & (1 << 1)) != 0) // attenuation * 64
            {
                bitWriter.WriteUnsignedBits(parser.BitBuffer.ReadUnsignedBits(8), 8);
            }

            bitWriter.WriteUnsignedBits(parser.BitBuffer.ReadUnsignedBits(3), 3); // channel
            bitWriter.WriteUnsignedBits(parser.BitBuffer.ReadUnsignedBits(11), 11); // edict number

            if ((flags & (1 << 2)) != 0) // sound index (short)
            {
                bitWriter.WriteUnsignedBits(parser.BitBuffer.ReadUnsignedBits(16), 16);
            }
            else // sound index (byte)
            {
                bitWriter.WriteUnsignedBits(parser.BitBuffer.ReadUnsignedBits(8), 8);
            }

            bitWriter.WriteVectorCoord(true, parser.BitBuffer.ReadVectorCoord(true)); // position

            if ((flags & (1 << 3)) != 0) // pitch
            {
                bitWriter.WriteUnsignedBits(parser.BitBuffer.ReadUnsignedBits(8), 8);
            }

            parser.BitBuffer.SkipRemainingBits();
            parser.BitBuffer.Endian = BitBuffer.EndianType.Little;

            // insert new message
            ReWriteMessage(messageStartOffset, bitWriter.Data);
        }