コード例 #1
0
ファイル: AudioClip.cs プロジェクト: killowatt/Dunamis
 internal void Process()
 {
     if (State == AudioClipState.Playing)
     {
         if (Source.State == AudioSourceState.Ended && AL.GetSourceState(DeviceSource) == ALSourceState.Stopped)
         {
             AL.SourceStop(DeviceSource);
             State = AudioClipState.Ended;
             if (Looping)
             {
                 State = AudioClipState.Playing;
                 int bufferCount = 0;
                 AL.GetSource(DeviceSource, ALGetSourcei.BuffersQueued, out bufferCount);
                 AL.SourceUnqueueBuffers((int)DeviceSource, bufferCount);
                 Source.Reset();
                 RequeueBuffers();
                 AL.SourcePlay(DeviceSource);
             }
         }
         int buffersProcessed = 0;
         AL.GetSource(DeviceSource, ALGetSourcei.BuffersProcessed, out buffersProcessed);
         while (buffersProcessed > 0)
         {
             uint buffer = 0;
             AL.SourceUnqueueBuffers(DeviceSource, 1, ref buffer);
             if (Source.State == AudioSourceState.Ended) break;
             Source.FillBuffer(buffer);
             AL.SourceQueueBuffer((int)DeviceSource, (int)buffer);
             buffersProcessed--;
         }
     }
 }
コード例 #2
0
ファイル: AudioClip.cs プロジェクト: killowatt/Dunamis
 public void Play()
 {
     AL.SourcePlay(DeviceSource);
     State = AudioClipState.Playing;
 }
コード例 #3
0
ファイル: AudioClip.cs プロジェクト: killowatt/Dunamis
 public void Pause()
 {
     AL.SourcePause(DeviceSource);
     State = AudioClipState.Paused;
 }