public void Play() { if (State == SoundState.Playing) { return; } #if DIRECTX if (_voice != null) { // Choose the correct buffer depending on if we are looped. var buffer = _loop ? _effect._loopedBuffer : _effect._buffer; if (_voice.State.BuffersQueued > 0) { _voice.Stop(); _voice.FlushSourceBuffers(); } _voice.SubmitSourceBuffer(buffer, null); _voice.Start(); } _paused = false; #else if (_sound != null) { #if ANDROID if (soundState == SoundState.Paused) { _sound.Resume(_streamId); } else { _streamId = _sound.Play(); } #else if (soundState == SoundState.Paused) { _sound.Resume(); } else { _sound.Play(); } #endif soundState = SoundState.Playing; } #endif }