コード例 #1
0
ファイル: AudioManager.cs プロジェクト: yongweisun/CRYENGINE
        private static void OnAudioEvent(IntPtr requestInfo)
        {
            _info = null;
            _info = new AudioRequestInfo(requestInfo, true);             // requestInfo created natively , C++ will handle destruction so only a copy is needed
            uint ctrlId        = _info.ControlId;
            var  requestResult = _info.RequestResult;
            var  enumFlagsType = _info.SystemEvents;

            AudioStateType audioState = AudioStateType.Unknown;

            switch ((ESystemEvents)enumFlagsType)
            {
            case ESystemEvents.TriggerExecuted:
            {
                audioState = AudioStateType.TriggerStarted;
                break;
            }

            case ESystemEvents.TriggerFinished:
            {
                audioState = AudioStateType.TriggerEnded;
                break;
            }
            }
            string triggerName = GetTriggerName(ctrlId);

            if (triggerName != null)
            {
                Audio.ManagedAudioStateListenerDelegate audioStateListenerDelegate = AudioManager.GetAudioStateListener(triggerName);
                audioStateListenerDelegate?.Invoke(audioState, triggerName);
            }
        }
コード例 #2
0
ファイル: AudioManager.cs プロジェクト: yongweisun/CRYENGINE
        /// <summary>
        /// Add an audio trigger state listener for the specified trigger name. Returns true if the trigger is existing and the no listener has been bound to the trigger yet.
        /// Unlike the C++ audio listener, the listener will be notified based on trigger name (instead of based on all audio triggers)
        /// </summary>
        /// <param name="triggerName"></param>
        /// <param name="requestListener"></param>
        /// <returns></returns>
        public static bool AddAudioStateListener(string triggerName, Audio.ManagedAudioStateListenerDelegate requestListener)
        {
            bool ret = false;

            if (!_requestListenersDelegates.ContainsKey(triggerName))
            {
                _requestListenersDelegates.Add(triggerName, requestListener);
                ret = true;
            }
            return(ret);
        }