Exemplo n.º 1
0
        /// <summary>
        /// Decodes the bytes in the packet-entites message.
        /// </summary>
        /// <param name="packetEntities">Packet entities.</param>
        /// <param name="reader">Reader.</param>
        /// <param name="parser">Parser.</param>
        public static void Apply(PacketEntities packetEntities, IBitStream reader, DemoParser parser)
        {
            int currentEntity = -1;

            for (int i = 0; i < packetEntities.UpdatedEntries; i++)
            {
                //First read which entity is updated
                currentEntity += 1 + (int)reader.ReadUBitInt();

                //Find out whether we should create, destroy or update it.
                // Leave flag
                if (!reader.ReadBit())
                {
                    // enter flag
                    if (reader.ReadBit())
                    {
                        //create it
                        var e = ReadEnterPVS(reader, currentEntity, parser);

                        parser.Entities[currentEntity] = e;

                        e.ApplyUpdate(reader);
                    }
                    else
                    {
                        if (currentEntity < 0 || currentEntity >= parser.Entities.Length)
                        {
                            return;
                        }
                        // preserve / update
                        Entity e = parser.Entities[currentEntity];
                        if (e == null)
                        {
                            return;
                        }

                        e.ApplyUpdate(reader);
                    }
                }
                else
                {
                    Entity e = parser.Entities[currentEntity];
                    if (e == null)
                    {
                        return;
                    }

                    e.ServerClass.AnnounceDestroyedEntity(e);

                    // leave / destroy
                    e.Leave();
                    parser.Entities[currentEntity] = null;

                    //dunno, but you gotta read this.
                    if (reader.ReadBit())
                    {
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        ///     Decodes the bytes in the packet-entites message.
        /// </summary>
        /// <param name="packetEntities">Packet entities.</param>
        /// <param name="reader">Reader.</param>
        /// <param name="parser">Parser.</param>
        public static void Apply(PacketEntities packetEntities, IBitStream reader, DemoParser parser)
        {
            var currentEntity = -1;

            for (var i = 0; i < packetEntities.UpdatedEntries; i++)
            {
                //First read which entity is updated
                currentEntity += 1 + (int)reader.ReadUBitInt();

                //Find out whether we should create, destroy or update it.
                // Leave flag
                if (!reader.ReadBit())
                {
                    // enter flag
                    if (reader.ReadBit())
                    {
                        //create it
                        var e = ReadEnterPVS(reader, currentEntity, parser);

                        parser.Entities[currentEntity] = e;

                        e.ApplyUpdate(reader);
                    }
                    else
                    {
                        // preserve / update
                        var e = parser.Entities[currentEntity];
                        e.ApplyUpdate(reader);
                    }
                }
                else
                {
                    // leave / destroy
                    parser.Entities[currentEntity].Leave();
                    parser.Entities[currentEntity] = null;

                    //dunno, but you gotta read this.
                    if (reader.ReadBit())
                    {
                    }
                }
            }
        }
        public static void Apply(PacketEntities packetEntities, IBitStream reader, DemoParser parser)
        {
            int currentEntity = -1;

            for (int i = 0; i < packetEntities.UpdatedEntries; i++)
            {
                currentEntity += 1 + (int)reader.ReadUBitInt();

                // Leave flag
                if (!reader.ReadBit())
                {
                    // enter flag
                    if (reader.ReadBit())
                    {
                        var e = ReadEnterPVS(reader, currentEntity, parser);

                        parser.Entities[currentEntity] = e;

                        e.ApplyUpdate(reader);
                    }
                    else
                    {
                        // preserve
                        Entity e = parser.Entities[currentEntity];
                        e.ApplyUpdate(reader);
                    }
                }
                else
                {
                    // leave
                    parser.Entities [currentEntity].Leave();
                    parser.Entities[currentEntity] = null;
                    if (reader.ReadBit())
                    {
                    }
                }
            }
        }
Exemplo n.º 4
0
		/// <summary>
		/// Decodes the bytes in the packet-entites message. 
		/// </summary>
		/// <param name="packetEntities">Packet entities.</param>
		/// <param name="reader">Reader.</param>
		/// <param name="parser">Parser.</param>
		public static void Apply(PacketEntities packetEntities, IBitStream reader, DemoParser parser)
        {
			int currentEntity = -1;

			for (int i = 0; i < packetEntities.UpdatedEntries; i++) {

				//First read which entity is updated
				currentEntity += 1 + (int)reader.ReadUBitInt();

				//Find out whether we should create, destroy or update it. 
				// Leave flag
				if (!reader.ReadBit()) {
					// enter flag
					if (reader.ReadBit()) {
						//create it
						var e = ReadEnterPVS(reader, currentEntity, parser);

						parser.Entities[currentEntity] = e;

						e.ApplyUpdate(reader);
					} else {
						// preserve / update
						Entity e = parser.Entities[currentEntity];
						e.ApplyUpdate(reader);
					}
				} else {
					// leave / destroy
					parser.Entities [currentEntity].Leave ();
					parser.Entities[currentEntity] = null;

					//dunno, but you gotta read this. 
					if (reader.ReadBit()) {
					}
				}
			}
        }