protected override void ProcessPacket(Event netEvent) { byte channel = netEvent.ChannelID; m_buffer = netEvent.Packet.GetBufferFromPacket(m_buffer); var buffer = m_buffer; var header = m_buffer.GetEntityHeader(); var op = header.OpCode; var id = header.ID; NetworkedObject nobj = null; switch (op) { case OpCodes.Spawn: nobj = SpawnNetworkedObject(id, buffer); break; case OpCodes.BulkSpawn: var cnt = m_buffer.ReadInt(); for (int i = 0; i < cnt; i++) { header = m_buffer.GetEntityHeader(); SpawnNetworkedObject(header.ID, buffer); } break; case OpCodes.Destroy: if (m_peers.TryGetValue(id, out nobj) && nobj.ID == id) { m_peers.Remove(id); Destroy(nobj.gameObject); } break; case OpCodes.PositionUpdate: case OpCodes.SyncUpdate: if (m_peers.TryGetValue(id, out nobj)) { nobj.ProcessPacket(op, buffer); } else { Debug.LogWarning($"Unable to locate entity ID: {id}"); } break; } }