diff --git a/src/ChargeAudio.hpp b/src/ChargeAudio.hpp index a846305..d5a0140 100644 --- a/src/ChargeAudio.hpp +++ b/src/ChargeAudio.hpp @@ -13,11 +13,14 @@ using namespace Corrade; using namespace _ma; class Sound { public: + enum SoundState { Idle, Playing, Paused, Finished }; + ~Sound(); void Play(); void Pause(); void Reset(); + SoundState GetState(); void SetPosition(Magnum::Vector3 position); Magnum::Vector3 GetPosition(); void SetVolume(float value); @@ -27,6 +30,7 @@ private: Sound(); class Engine *baseEngine; ma_sound maSound; + SoundState state = SoundState::Idle; friend class Engine; }; diff --git a/src/Sound.cpp b/src/Sound.cpp index 08b64e3..9daf8e2 100644 --- a/src/Sound.cpp +++ b/src/Sound.cpp @@ -6,9 +6,19 @@ using namespace ChargeAudio; Sound::Sound() {} Sound::~Sound() { ma_sound_uninit(&maSound); } +Sound::SoundState Sound::GetState() { return state; } + // Controls -void Sound::Play() { ma_sound_start(&maSound); } -void Sound::Pause() { ma_sound_stop(&maSound); } +void Sound::Play() { + ma_sound_start(&maSound); + state = Sound::SoundState::Playing; +} + +void Sound::Pause() { + ma_sound_stop(&maSound); + state = Sound::SoundState::Paused; +} + void Sound::Reset() { ma_sound_seek_to_pcm_frame(&maSound, 0); } void Sound::SetPosition(Magnum::Vector3 position) {