public static void DrawSignalGizmos(ISignalListener obj) { List <SignalAuth> references = ListPool <SignalAuth> .Take(); if (obj is SignalAuth signal) { foreach (var listener in s_listeners) { if (listener is Component listenerComponent && listenerComponent != null) { references.Clear(); listener.GetSignalReferences(references); if (references.Contains(signal)) { DrawSignalGizmo(listenerComponent, signal); } } } } if (obj is Component objComponent && objComponent != null) { references.Clear(); obj.GetSignalReferences(references); foreach (var item in references) { DrawSignalGizmo(objComponent, item); } } ListPool <SignalAuth> .Release(references); }
public void NotifyGeneratorDestroyAndRemoveAllListeners() { if (m_all_type_listeners == null) { return; } var all_type_listeners = m_all_type_listeners; m_all_type_listeners = null; LogicWorld logic_world = GetLogicWorldForSignal(); var enumerator = all_type_listeners.GetEnumerator(); HashSet <int> notified = new HashSet <int>(); while (enumerator.MoveNext()) { List <SignalListenerContext> listeners = enumerator.Current.Value; for (int i = 0; i < listeners.Count; ++i) { SignalListenerContext context = listeners[i]; if (notified.Contains(context.ID)) { continue; } notified.Add(context.ID); ISignalListener listener = context.GetListener(logic_world); if (listener != null) { listener.OnGeneratorDestroyed(this); } } } }
public void SendSignal(int signal_type, System.Object signal = null) { if (m_all_type_listeners == null) { return; } List <SignalListenerContext> listeners; if (!m_all_type_listeners.TryGetValue(signal_type, out listeners)) { return; } int cur_count = listeners.Count; if (cur_count == 0) { return; } LogicWorld logic_world = GetLogicWorldForSignal(); int index = 0; while (index < cur_count) { SignalListenerContext context = listeners[index]; ISignalListener listener = context.GetListener(logic_world); if (listener == null) { listeners.RemoveAt(index); } else { listener.ReceiveSignal(this, signal_type, signal); } int new_count = listeners.Count; if (new_count < cur_count) { cur_count = new_count; } else { ++index; } } }
public void StopListening(ISignalListener <object> listener) { _event.RemoveListener(listener.OnSignal); }
public void StartListening(ISignalListener <object> listener) { _event.AddListener(listener.OnSignal); }
public void AddListener(ISignalListener iListener) { SignalListener <S> listener = (SignalListener <S>)iListener; AddListener(listener); }
public static void Register(ISignalListener listener) { s_listeners.AddUnique(listener); }
public static void Unregister(ISignalListener listener) { s_listeners.Remove(listener); }
public void StopListening(ISignalListener <T> listener) { _delegate.StopListening(listener); }
public void StopListening(ISignalListener <T> handler) { _delegate.StopListening(handler); }
public void StopListening(ISignalListener <T> listener) { _listeners.Remove(listener); }
public void StartListening(ISignalListener <T> listener) { _listeners.Add(listener); }
/// <summary> /// Removes a listener for signals. /// </summary> /// <param name="listener">The listener the listener to be removed.</param> public void RemoveSignalListener(ISignalListener listener) { _signalListeners.Remove(listener); }
/// <summary> /// Add a listener to be called when a signal is detected. /// </summary> /// <param name="listener">The listener to be added.</param> public void AddSignalListener(ISignalListener listener) { _signalListeners.Add(listener); }