예제 #1
0
        /// <summary>
        /// This method is used by MasterAudio to keep track of enabled CustomEventReceivers automatically. This is called when then CustomEventReceiver prefab is enabled.
        /// </summary>
        /// <param name="receiver">The receiver object interface.</param>
        /// <param name="receiverTrans">The receiver object Transform.</param>
        public static void AddCustomEventReceiver(ICustomEventReceiver receiver, Transform receiverTrans) {
            if (AppIsShuttingDown) {
                return;
            }

            // ReSharper disable once ForCanBeConvertedToForeach
            var events = receiver.GetAllEvents();
            // ReSharper disable once ForCanBeConvertedToForeach
            for (var i = 0; i < events.Count; i++) {
                var anEvent = events[i];
                if (!receiver.SubscribesToEvent(anEvent.customEventName)) {
                    continue;
                }

                if (!ReceiversByEventName.ContainsKey(anEvent.customEventName)) {
                    ReceiversByEventName.Add(anEvent.customEventName, new Dictionary<ICustomEventReceiver, Transform>
                    {
                        {receiver, receiverTrans}
                    });
                } else {
                    var dict = ReceiversByEventName[anEvent.customEventName];
                    if (dict.ContainsKey(receiver)) {
                        continue;
                    }

                    dict.Add(receiver, receiverTrans);
                }
            }
        }