public void RemoveEventListener(IEcsFilterEventListener eventListener) { for (var i = 0; i < _eventListenersCount; i++) { if (_eventListeners[i] == eventListener) { _eventListenersCount--; // cant fill gap with last element due listeners order is important. Array.Copy(_eventListeners, i + 1, _eventListeners, i, _eventListenersCount - i); break; } } }
public void AddEventListener(IEcsFilterEventListener eventListener) { #if DEBUG for (var i = 0; i < _eventListenersCount; i++) { if (_eventListeners[i] == eventListener) { throw new Exception("Listener already subscribed."); } } #endif if (_eventListeners.Length == _eventListenersCount) { Array.Resize(ref _eventListeners, _eventListenersCount << 1); } _eventListeners[_eventListenersCount++] = eventListener; }