/// <summary> /// Removes the first occurrence of a SignalAsset. /// </summary> /// <param name="asset">The SignalAsset to be removed.</param> public void Remove(SignalAsset asset) { if (!m_Events.signals.Contains(asset)) { throw new ArgumentException("The SignalAsset is not registered with this receiver."); } m_Events.Remove(asset); }
public void Remove(SignalAsset key) { var idx = m_Signals.IndexOf(key); if (idx != -1) { m_Signals.RemoveAt(idx); m_Events.RemoveAt(idx); } }
/// <summary> /// Gets the first UnityEvent associated with a SignalAsset. /// </summary> /// <param name="key">A SignalAsset defining the signal.</param> /// <returns>Returns the reaction associated with a SignalAsset. Returns null if the signal asset does not exist.</returns> public UnityEvent GetReaction(SignalAsset key) { UnityEvent ret; if (m_Events.TryGetValue(key, out ret)) { return(ret); } return(null); }
/// <summary> /// Defines a new reaction for a SignalAsset. /// </summary> /// <param name="asset">The SignalAsset for which the reaction is being defined.</param> /// <param name="reaction">The UnityEvent that describes the reaction.</param> /// <exception cref="ArgumentNullException">Thrown when the asset is null.</exception> /// <exception cref="ArgumentException">Thrown when the SignalAsset is already registered with this receiver.</exception> public void AddReaction(SignalAsset asset, UnityEvent reaction) { if (asset == null) { throw new ArgumentNullException("asset"); } if (m_Events.signals.Contains(asset)) { throw new ArgumentException("SignalAsset already used."); } m_Events.Append(asset, reaction); }
public bool TryGetValue(SignalAsset key, out UnityEvent value) { var index = m_Signals.IndexOf(key); if (index != -1) { value = m_Events[index]; return(true); } value = null; return(false); }
/// <summary> /// Replaces the SignalAsset associated with a reaction at a specific index. /// </summary> /// <param name="idx">The index of the reaction.</param> /// <param name="newKey">The replacement SignalAsset.</param> /// <exception cref="ArgumentException">Thrown when the replacement SignalAsset is already registered to this SignalReceiver.</exception> /// <remarks>The new SignalAsset can be null.</remarks> public void ChangeSignalAtIndex(int idx, SignalAsset newKey) { if (idx < 0 || idx > m_Events.signals.Count - 1) { throw new IndexOutOfRangeException(); } if (m_Events.signals[idx] == newKey) { return; } var alreadyUsed = m_Events.signals.Contains(newKey); if (newKey == null || m_Events.signals[idx] == null || !alreadyUsed) { m_Events.signals[idx] = newKey; } if (alreadyUsed) { throw new ArgumentException("SignalAsset already used."); } }
public void Append(SignalAsset key, UnityEvent value) { m_Signals.Add(key); m_Events.Add(value); }