コード例 #1
0
ファイル: SignalReceiver.cs プロジェクト: 334499p/Portfolio
        /// <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);
        }
コード例 #2
0
ファイル: SignalReceiver.cs プロジェクト: 334499p/Portfolio
            public void Remove(SignalAsset key)
            {
                var idx = m_Signals.IndexOf(key);

                if (idx != -1)
                {
                    m_Signals.RemoveAt(idx);
                    m_Events.RemoveAt(idx);
                }
            }
コード例 #3
0
ファイル: SignalReceiver.cs プロジェクト: 334499p/Portfolio
        /// <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);
        }
コード例 #4
0
ファイル: SignalReceiver.cs プロジェクト: 334499p/Portfolio
        /// <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);
        }
コード例 #5
0
ファイル: SignalReceiver.cs プロジェクト: 334499p/Portfolio
            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);
            }
コード例 #6
0
ファイル: SignalReceiver.cs プロジェクト: 334499p/Portfolio
        /// <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.");
            }
        }
コード例 #7
0
ファイル: SignalReceiver.cs プロジェクト: 334499p/Portfolio
 public void Append(SignalAsset key, UnityEvent value)
 {
     m_Signals.Add(key);
     m_Events.Add(value);
 }