Sound has states on it now

This commit is contained in:
2025-09-05 12:21:40 +03:00
parent 67e423a77d
commit 76b53b5f71
2 changed files with 16 additions and 2 deletions

View File

@@ -13,11 +13,14 @@ using namespace Corrade;
using namespace _ma; using namespace _ma;
class Sound { class Sound {
public: public:
enum SoundState { Idle, Playing, Paused, Finished };
~Sound(); ~Sound();
void Play(); void Play();
void Pause(); void Pause();
void Reset(); void Reset();
SoundState GetState();
void SetPosition(Magnum::Vector3 position); void SetPosition(Magnum::Vector3 position);
Magnum::Vector3 GetPosition(); Magnum::Vector3 GetPosition();
void SetVolume(float value); void SetVolume(float value);
@@ -27,6 +30,7 @@ private:
Sound(); Sound();
class Engine *baseEngine; class Engine *baseEngine;
ma_sound maSound; ma_sound maSound;
SoundState state = SoundState::Idle;
friend class Engine; friend class Engine;
}; };

View File

@@ -6,9 +6,19 @@ using namespace ChargeAudio;
Sound::Sound() {} Sound::Sound() {}
Sound::~Sound() { ma_sound_uninit(&maSound); } Sound::~Sound() { ma_sound_uninit(&maSound); }
Sound::SoundState Sound::GetState() { return state; }
// Controls // Controls
void Sound::Play() { ma_sound_start(&maSound); } void Sound::Play() {
void Sound::Pause() { ma_sound_stop(&maSound); } 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::Reset() { ma_sound_seek_to_pcm_frame(&maSound, 0); }
void Sound::SetPosition(Magnum::Vector3 position) { void Sound::SetPosition(Magnum::Vector3 position) {