internal void UnregisterPacketListener(IPhotonPacketCallback listener) { for (var i = _packetListeners.Count - 1; i >= 0; i--) { if (ReferenceEquals(_packetListeners[i].Value, listener)) { _packetListeners.RemoveAt(i); } } }
internal void RegisterPacketListener(byte eventCode, IPhotonPacketCallback listener) { //Add this event code to the filter _eventCodes.Add(eventCode); //Try to find this listener to ensure we don't add it twice with the same event code for (var i = 0; i < _packetListeners.Count; i++) { if (ReferenceEquals(_packetListeners[i].Value, listener) && _packetListeners[i].Key == eventCode) { return; } } //Since we're here we didn't find this listener _packetListeners.Add(new KeyValuePair <byte, IPhotonPacketCallback>(eventCode, listener)); }