/// <summary> /// Unsubscribes listener from filter events. /// </summary> /// <param name="listener">Listener.</param> public void RemoveListener(IEntityFilterListener listener) { for (int i = 0, iMax = _listenersCount; i < iMax; i++) { if (_listeners[i] == listener) { _listenersCount--; Array.Copy(_listeners, i + 1, _listeners, i, _listenersCount - i); break; } } }
public void UnregisterListener(IEntityFilterListener <FilterDataT> listener, bool triggerForCurrentEntries = true) { if (_listeners.Remove(listener)) { if (triggerForCurrentEntries) { FilterDataT[] allData = GetAllData(); for (int i = 0, c = allData.Length; i < c; i++) { listener.OnDataUnregistered(allData[i]); } } } }
public void RegisterListener(IEntityFilterListener <FilterDataT> listener, bool triggerForCurrentEntries = true) { if (!_listeners.Contains(listener)) { _listeners.Add(listener); if (triggerForCurrentEntries) { FilterDataT[] allData = GetAllData(); for (int i = 0, c = allData.Length; i < c; i++) { listener.OnDataRegistered(allData[i]); } } } }
/// <summary> /// Subscribes listener to filter events. /// </summary> /// <param name="listener">Listener.</param> public void AddListener(IEntityFilterListener listener) { #if DEBUG for (int i = 0, iMax = _listenersCount; i < iMax; i++) { if (_listeners[i] == listener) { throw new Exception("Listener already subscribed."); } } #endif if (_listeners.Length == _listenersCount) { Array.Resize(ref _listeners, _listenersCount << 1); } _listeners[_listenersCount++] = listener; }
public void UnregisterListener(IEntityFilterListener <FilterDataT, FilterRefresherT> listener, bool triggerForCurrentEntries = true) { UnregisterListener((IEntityFilterListener <FilterDataT>)listener, triggerForCurrentEntries); }