private void HandleGameObjects(HPacket packet, bool isOutgoing) { packet.Position = 0; if (!isOutgoing) { if (packet.Id == In.Users) { HEntity[] entities = HEntity.Parse(packet); foreach (HEntity entity in entities) { _entities[entity.Index] = entity; } _container.OnEntitiesLoaded(entities.Length); } else if (packet.Id == In.Items) { HWallItem[] wallItems = HWallItem.Parse(packet); foreach (HWallItem wallItem in wallItems) { _wallItems[wallItem.Id] = wallItem; } _container.OnWallItemsLoaded(wallItems.Length); } else if (packet.Id == In.Objects) { HFloorItem[] floorItems = HFloorItem.Parse(packet); foreach (HFloorItem floorItem in floorItems) { _floorItems[floorItem.Id] = floorItem; } _container.OnFloorItemsLoaded(floorItems.Length); } else if (packet.Id == In.FloorHeightMap) { _entities.Clear(); _wallItems.Clear(); _floorItems.Clear(); } } packet.Position = 0; }