Exemplo n.º 1
0
        private RESULT ChannelCallback(IntPtr channelraw, CHANNEL_CALLBACKTYPE type, IntPtr commanddata1, IntPtr commanddata2)
        {
            if (type == CHANNEL_CALLBACKTYPE.END)
            {
                songEndAction();
            }

            return(RESULT.OK);
        }
Exemplo n.º 2
0
        private RESULT SyncCallback(IntPtr c, CHANNEL_CALLBACKTYPE type, IntPtr a, IntPtr b)
        {
            if (Playing && playingintro && type == CHANNEL_CALLBACKTYPE.END)
            {
                system.playSound(CHANNELINDEX.REUSE, loop, false, ref channel);
                channel.setVolume(volume);
                playingintro = false;
            }

            return(RESULT.OK);
        }
Exemplo n.º 3
0
 private RESULT SyncCallback(IntPtr c, CHANNEL_CALLBACKTYPE type, IntPtr a, IntPtr b)
 {
     if (type == CHANNEL_CALLBACKTYPE.END)
     {
         playCount--;
         if (playCount < 0)
         {
             playCount = 0;
         }
     }
     return(RESULT.OK);
 }
Exemplo n.º 4
0
 private static RESULT ChannelEndCallback(IntPtr channelraw, CHANNEL_CALLBACKTYPE type, IntPtr commanddata1, IntPtr commanddata2)
 {
     if (type == CHANNEL_CALLBACKTYPE.END)
     {
         // this must be thread safe
         var currentSynchronizationContext = TaskScheduler.FromCurrentSynchronizationContext();
         var uiTask = Task.Factory.StartNew(() => {
             var action = PlayerEngine.Instance.PlayNextFileAction;
             if (action != null)
             {
                 action();
             }
         }, CancellationToken.None, TaskCreationOptions.None, currentSynchronizationContext);
     }
     return(FMOD.RESULT.OK);
 }
Exemplo n.º 5
0
        /// <summary>
        /// Main handler for playback-end callback.
        /// </summary>
        /// <param name="channelraw"></param>
        /// <param name="type"></param>
        /// <param name="commanddata1"></param>
        /// <param name="commanddata2"></param>
        /// <returns></returns>
        protected RESULT DispatchEndCallback(
            IntPtr channelraw,
            CHANNEL_CALLBACKTYPE type,
            IntPtr commanddata1,
            IntPtr commanddata2)
        {
            // There are several callback types
            switch (type)
            {
            case CHANNEL_CALLBACKTYPE.END:
                if (allChannels.ContainsKey(channelraw))
                {
                    MediaObject sndobj = allChannels[channelraw];
                    return(sndobj.EndCallbackHandler());
                }
                break;
            }

            return(RESULT.OK);
        }
Exemplo n.º 6
0
        private RESULT OnPlaybackEnd(IntPtr channelraw, CHANNEL_CALLBACKTYPE type, int command, uint commanddata1, uint commanddata2)
        {
            _channel = null;

            try
            {
                if (_endCallback != null)
                {
                    // unlock to avoid deadlocks
                    Monitor.Exit(_engine.Lock);
                    _endCallback(this);
                    Monitor.Enter(_engine.Lock);
                }

                return(RESULT.OK);
            }
            catch (Exception e)
            {
                GameLog.Client.Audio.Error(e);
                return(RESULT.ERR_DSP_NOTFOUND);
            }
        }
Exemplo n.º 7
0
 private static extern RESULT FMOD_Channel_SetCallback(IntPtr channel, CHANNEL_CALLBACKTYPE type, CHANNEL_CALLBACK callback, int command);
Exemplo n.º 8
0
 public RESULT setCallback(CHANNEL_CALLBACKTYPE type, CHANNEL_CALLBACK callback, int command)
 {
     return FMOD_Channel_SetCallback(channelraw, type, callback, command);
 }
Exemplo n.º 9
0
        private RESULT SyncCallback(IntPtr c, CHANNEL_CALLBACKTYPE type, IntPtr a, IntPtr b)
        {
            if (Playing && playingintro && type == CHANNEL_CALLBACKTYPE.END)
            {
                system.playSound(CHANNELINDEX.REUSE, loop, false, ref channel);
                channel.setVolume(volume);
                playingintro = false;
            }

            return RESULT.OK;
        }
Exemplo n.º 10
0
 private static RESULT ChannelEndCallback(IntPtr channelraw, CHANNEL_CALLBACKTYPE type, IntPtr commanddata1, IntPtr commanddata2)
 {
     if (type == CHANNEL_CALLBACKTYPE.END) {
     // this must be thread safe
     var currentSynchronizationContext = TaskScheduler.FromCurrentSynchronizationContext();
     var uiTask = Task.Factory.StartNew(() => {
       var action = PlayerEngine.Instance.PlayNextFileAction;
       if (action != null) {
     action();
       }
     }, CancellationToken.None, TaskCreationOptions.None, currentSynchronizationContext);
       }
       return FMOD.RESULT.OK;
 }
Exemplo n.º 11
0
        /// <summary>
        /// Main handler for playback-end callback.
        /// </summary>
        /// <param name="channelraw"></param>
        /// <param name="type"></param>
        /// <param name="commanddata1"></param>
        /// <param name="commanddata2"></param>
        /// <returns></returns>
        protected RESULT DispatchEndCallback(
            IntPtr channelraw,
            CHANNEL_CALLBACKTYPE type,
            IntPtr commanddata1,
            IntPtr commanddata2)
        {
            // There are several callback types
            switch (type)
            {
                case CHANNEL_CALLBACKTYPE.END:
                    if (allChannels.ContainsKey(channelraw))
                    {
                        MediaObject sndobj = allChannels[channelraw];
                        return sndobj.EndCallbackHandler();
                    }
                    break;
            }

            return RESULT.OK;
        }
Exemplo n.º 12
0
 private RESULT SyncCallback(IntPtr c, CHANNEL_CALLBACKTYPE type, IntPtr a, IntPtr b)
 {
     if (type == CHANNEL_CALLBACKTYPE.END)
     {
         playCount--;
         if (playCount < 0) playCount = 0;
     }
     return RESULT.OK;
 }
Exemplo n.º 13
0
 private static extern RESULT FMOD_Channel_SetCallback(IntPtr channel, CHANNEL_CALLBACKTYPE type, CHANNEL_CALLBACK callback, int command);
Exemplo n.º 14
0
 public RESULT setCallback(CHANNEL_CALLBACKTYPE type, CHANNEL_CALLBACK callback, int command)
 {
     return(Channel.FMOD_Channel_SetCallback(channelraw, type, callback, command));
 }
Exemplo n.º 15
0
        private RESULT ChannelCallback(IntPtr channelraw, CHANNEL_CALLBACKTYPE type, IntPtr commanddata1, IntPtr commanddata2)
        {
            if (type == CHANNEL_CALLBACKTYPE.END)
                songEndAction();

            return RESULT.OK;
        }