/// <summary> /// Removes listener from events procesing. /// </summary> /// <param name="listener">External listener.</param> public void RemoveListener(IEcsFilterListener listener) { if (listener != null) { for (var i = _listenersCount - 1; i >= 0; i--) { if (_listeners[i] == listener) { _listenersCount--; Array.Copy(_listeners, i + 1, _listeners, i, _listenersCount - i); break; } } } }
/// <summary> /// Adds listener to events procesing. /// </summary> /// <param name="listener">External listener.</param> public void AddListener(IEcsFilterListener listener) { #if DEBUG if (listener == null) { throw new System.ArgumentNullException(); } for (var i = 0; i < _listenersCount; i++) { if (_listeners[i] == listener) { throw new System.Exception("Listener already added"); } } #endif if (_listenersCount == _listeners.Length) { Array.Resize(ref _listeners, _listenersCount << 1); } _listeners[_listenersCount++] = listener; }
/// <summary> /// Adds listener to events procesing. /// </summary> /// <param name="listener">External listener.</param> public void AddListener(IEcsFilterListener listener) { #if DEBUG if (listener == null) { throw new System.ArgumentNullException(); } for (var i = 0; i < _listenersCount; i++) { if (_listeners[i] == listener) { throw new System.Exception("Listener already added"); } } #endif if (_listenersCount == _listeners.Length) { var newListeners = new IEcsFilterListener[_listenersCount << 1]; Array.Copy(_listeners, 0, newListeners, 0, _listenersCount); _listeners = newListeners; } _listeners[_listenersCount++] = listener; }