Exemple #1
0
        public static void ParseStartSoundPacket( )
        {
            var    flags     = MSG.ReadByte(Globals.net_message);
            var    sound_num = MSG.ReadByte(Globals.net_message);
            Single volume;

            if ((flags & Defines.SND_VOLUME) != 0)
            {
                volume = MSG.ReadByte(Globals.net_message) / 255F;
            }
            else
            {
                volume = Defines.DEFAULT_SOUND_PACKET_VOLUME;
            }
            Single attenuation;

            if ((flags & Defines.SND_ATTENUATION) != 0)
            {
                attenuation = MSG.ReadByte(Globals.net_message) / 64F;
            }
            else
            {
                attenuation = Defines.DEFAULT_SOUND_PACKET_ATTENUATION;
            }
            Single ofs;

            if ((flags & Defines.SND_OFFSET) != 0)
            {
                ofs = MSG.ReadByte(Globals.net_message) / 1000F;
            }
            else
            {
                ofs = 0;
            }
            Int32 channel;
            Int32 ent;

            if ((flags & Defines.SND_ENT) != 0)
            {
                channel = MSG.ReadShort(Globals.net_message);
                ent     = channel >> 3;
                if (ent > Defines.MAX_EDICTS)
                {
                    Com.Error(Defines.ERR_DROP, "CL_ParseStartSoundPacket: ent = " + ent);
                }
                channel &= 7;
            }
            else
            {
                ent     = 0;
                channel = 0;
            }

            Single[] pos;
            if ((flags & Defines.SND_POS) != 0)
            {
                MSG.ReadPos(Globals.net_message, pos_v);
                pos = pos_v;
            }
            else
            {
                pos = null;
            }
            if (null == Globals.cl.sound_precache[sound_num])
            {
                return;
            }
            S.StartSound(pos, ent, channel, Globals.cl.sound_precache[sound_num], volume, attenuation, ofs);
        }
Exemple #2
0
 public static void ParseDelta(entity_state_t from, entity_state_t to, Int32 number, Int32 bits)
 {
     to.Set(from);
     Math3D.VectorCopy(from.origin, to.old_origin);
     to.number = number;
     if ((bits & Defines.U_MODEL) != 0)
     {
         to.modelindex = MSG.ReadByte(Globals.net_message);
     }
     if ((bits & Defines.U_MODEL2) != 0)
     {
         to.modelindex2 = MSG.ReadByte(Globals.net_message);
     }
     if ((bits & Defines.U_MODEL3) != 0)
     {
         to.modelindex3 = MSG.ReadByte(Globals.net_message);
     }
     if ((bits & Defines.U_MODEL4) != 0)
     {
         to.modelindex4 = MSG.ReadByte(Globals.net_message);
     }
     if ((bits & Defines.U_FRAME8) != 0)
     {
         to.frame = MSG.ReadByte(Globals.net_message);
     }
     if ((bits & Defines.U_FRAME16) != 0)
     {
         to.frame = MSG.ReadShort(Globals.net_message);
     }
     if ((bits & Defines.U_SKIN8) != 0 && (bits & Defines.U_SKIN16) != 0)
     {
         to.skinnum = MSG.ReadLong(Globals.net_message);
     }
     else if ((bits & Defines.U_SKIN8) != 0)
     {
         to.skinnum = MSG.ReadByte(Globals.net_message);
     }
     else if ((bits & Defines.U_SKIN16) != 0)
     {
         to.skinnum = MSG.ReadShort(Globals.net_message);
     }
     if ((bits & (Defines.U_EFFECTS8 | Defines.U_EFFECTS16)) == (Defines.U_EFFECTS8 | Defines.U_EFFECTS16))
     {
         to.effects = MSG.ReadLong(Globals.net_message);
     }
     else if ((bits & Defines.U_EFFECTS8) != 0)
     {
         to.effects = MSG.ReadByte(Globals.net_message);
     }
     else if ((bits & Defines.U_EFFECTS16) != 0)
     {
         to.effects = MSG.ReadShort(Globals.net_message);
     }
     if ((bits & (Defines.U_RENDERFX8 | Defines.U_RENDERFX16)) == (Defines.U_RENDERFX8 | Defines.U_RENDERFX16))
     {
         to.renderfx = MSG.ReadLong(Globals.net_message);
     }
     else if ((bits & Defines.U_RENDERFX8) != 0)
     {
         to.renderfx = MSG.ReadByte(Globals.net_message);
     }
     else if ((bits & Defines.U_RENDERFX16) != 0)
     {
         to.renderfx = MSG.ReadShort(Globals.net_message);
     }
     if ((bits & Defines.U_ORIGIN1) != 0)
     {
         to.origin[0] = MSG.ReadCoord(Globals.net_message);
     }
     if ((bits & Defines.U_ORIGIN2) != 0)
     {
         to.origin[1] = MSG.ReadCoord(Globals.net_message);
     }
     if ((bits & Defines.U_ORIGIN3) != 0)
     {
         to.origin[2] = MSG.ReadCoord(Globals.net_message);
     }
     if ((bits & Defines.U_ANGLE1) != 0)
     {
         to.angles[0] = MSG.ReadAngle(Globals.net_message);
     }
     if ((bits & Defines.U_ANGLE2) != 0)
     {
         to.angles[1] = MSG.ReadAngle(Globals.net_message);
     }
     if ((bits & Defines.U_ANGLE3) != 0)
     {
         to.angles[2] = MSG.ReadAngle(Globals.net_message);
     }
     if ((bits & Defines.U_OLDORIGIN) != 0)
     {
         MSG.ReadPos(Globals.net_message, to.old_origin);
     }
     if ((bits & Defines.U_SOUND) != 0)
     {
         to.sound = MSG.ReadByte(Globals.net_message);
     }
     if ((bits & Defines.U_EVENT) != 0)
     {
         to.event_renamed = MSG.ReadByte(Globals.net_message);
     }
     else
     {
         to.event_renamed = 0;
     }
     if ((bits & Defines.U_SOLID) != 0)
     {
         to.solid = MSG.ReadShort(Globals.net_message);
     }
 }