protected override int MyAITalkProcEventTTS(AITalkEventReasonCode reasonCode, int jobID, ulong tick, string name, IntPtr userData)
        {
            base.OnWriteLog(string.Concat(new object[] { "Callback [AITalkProcEventTTS] ", jobID, " : ", reasonCode.ToString(), " : ", tick, " : ", name, " : ", (int)userData }));
            TTSEventArgs e = new TTSEventArgs(tick, name);

            if (reasonCode == AITalkEventReasonCode.AITALKEVENT_BOOKMARK)
            {
                int    num;
                string text = this._jobInfo.ProgressBookMark(name, out num);
                if (text == null)
                {
                    return(0);
                }
                if ((this.SynthMode & AITalk.SynthMode.Play) == AITalk.SynthMode.Play)
                {
                    AudioEventParam item = new AudioEventParam(AudioEventCode.Bookmark, num, text, "", tick);
                    this._jobInfo.AudioEventQueue.Enqueue(item);
                }
                this.InvokeUserEventHandler <TTSEventArgs>(new EventInVoker <TTSEventArgs>(this.OnTTSBookmark), e);
            }
            else if (reasonCode == AITalkEventReasonCode.AITALKEVENT_PH_LABEL)
            {
                if ((this.SynthMode & AITalk.SynthMode.Play) == AITalk.SynthMode.Play)
                {
                    AudioEventParam param2 = new AudioEventParam(AudioEventCode.PhonemeLabel, 0, name, "", tick);
                    this._jobInfo.AudioEventQueue.Enqueue(param2);
                }
                this.InvokeUserEventHandler <TTSEventArgs>(new EventInVoker <TTSEventArgs>(this.OnTTSPhonemeLabel), e);
            }
            return(0);
        }
        protected override void MyAIAudioProcNotify(ulong tick, IntPtr userData)
        {
            AudioEventParam param = AudioEventParam.ToStruct(userData);

            AudioEventParam.Free(userData);
            base.OnWriteLog(string.Concat(new object[] { "Callback [AIAudioProcNotify] ", param.EventCode, " : ", tick, " : ", param.Pos, " : ", param.Text, " : ", param.Kana }));
            if (param.EventCode == AudioEventCode.Bookmark)
            {
                AudioEventArgs e = new AudioEventArgs(param.Pos, param.Text, param.Kana, tick);
                this.InvokeUserEventHandler <AudioEventArgs>(new EventInVoker <AudioEventArgs>(this.OnPlayBookmark), e);
            }
            else if (param.EventCode == AudioEventCode.PhonemeLabel)
            {
                PhonemeLabelEventArgs args2 = new PhonemeLabelEventArgs(param.Text, param.Tick);
                this.InvokeUserEventHandler <PhonemeLabelEventArgs>(new EventInVoker <PhonemeLabelEventArgs>(this.OnPlayPhonemeLabel), args2);
            }
            else if (param.EventCode == AudioEventCode.Sentence)
            {
                AudioEventArgs args3 = new AudioEventArgs(param.Pos, param.Text, param.Kana, tick);
                this.InvokeUserEventHandler <AudioEventArgs>(new EventInVoker <AudioEventArgs>(this.OnPlaySentence), args3);
            }
            else if (param.EventCode == AudioEventCode.Complete)
            {
                AudioEventArgs args4 = new AudioEventArgs(param.Pos, param.Text, param.Kana, tick);
                this.InvokeUserEventHandler <AudioEventArgs>(new EventInVoker <AudioEventArgs>(this.OnPlayComplete), args4);
                base._playing = false;
            }
        }
 private void PushQueuedEvents()
 {
     while (this._jobInfo.AudioEventQueue.Count > 0)
     {
         AudioEventParam   param     = this._jobInfo.AudioEventQueue.Dequeue();
         AIAudioResultCode errorCode = base.PushEvent(param.Tick, param.ToIntPtr());
         if ((errorCode != AIAudioResultCode.AIAUDIOERR_SUCCESS) && (errorCode != AIAudioResultCode.AIAUDIOERR_NO_PLAYING))
         {
             this.InvokeUserEventHandler <ErrorEventArgs>(new EventInVoker <ErrorEventArgs>(this.OnErrorOccured), new ErrorEventArgs("PushEvent_PushQueuedEvents", errorCode, ""));
         }
     }
 }