From ee83818de2213dc1ec4a2260657a059e5f65fbbb Mon Sep 17 00:00:00 2001 From: cat Date: Thu, 4 Sep 2025 23:11:31 +0300 Subject: [PATCH] Moved miniaudio to ma namespace. Added Engine destructor. Added Engine Listener Position. --- src/ChargeAudio.hpp | 10 ++++++++-- src/Engine.cpp | 14 ++++++++++++++ src/Sound.cpp | 3 +-- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/ChargeAudio.hpp b/src/ChargeAudio.hpp index 81ace3c..723d07a 100644 --- a/src/ChargeAudio.hpp +++ b/src/ChargeAudio.hpp @@ -6,16 +6,18 @@ #include namespace ChargeAudio { -using namespace Corrade; -namespace { +namespace _ma { #include "miniaudio/miniaudio.h" } +using namespace Corrade; +using namespace _ma; class Sound { public: ~Sound(); void Play(); void Pause(); void Reset(); + void SetPosition(Magnum::Vector3 position); Magnum::Vector3 GetPosition(); void SetVolume(float value); @@ -31,7 +33,11 @@ private: class Engine { public: Engine(); + ~Engine(); Containers::Pointer CreateSound(std::string filepath); + + void SetPosition(Magnum::Vector3 position); + Magnum::Vector3 GetPosition(); void SetVolume(float value); float GetVolume(); diff --git a/src/Engine.cpp b/src/Engine.cpp index 5a7f5b2..c819cb1 100644 --- a/src/Engine.cpp +++ b/src/Engine.cpp @@ -1,6 +1,7 @@ #include "ChargeAudio.hpp" #include #include +#include #include #include @@ -17,6 +18,8 @@ Engine::Engine() { } } +Engine::~Engine() { ma_engine_uninit(&maEngine); } + Containers::Pointer Engine::CreateSound(std::string filepath) { auto sound = Containers::Pointer(new Sound()); sound->baseEngine = this; @@ -34,5 +37,16 @@ Containers::Pointer Engine::CreateSound(std::string filepath) { } // Controls +void Engine::SetPosition(Magnum::Vector3 position) { + ma_engine_listener_set_position(&maEngine, 0, position.x(), position.y(), + position.z()); +} + +Magnum::Vector3 Engine::GetPosition() { + ma_vec3f pos = ma_engine_listener_get_position(&maEngine, 0); + return Magnum::Vector3(pos.x, pos.y, pos.z); + ; +} + void Engine::SetVolume(float value) { ma_engine_set_volume(&maEngine, value); } float Engine::GetVolume() { return ma_engine_get_volume(&maEngine); } diff --git a/src/Sound.cpp b/src/Sound.cpp index 2d47b5b..08b64e3 100644 --- a/src/Sound.cpp +++ b/src/Sound.cpp @@ -16,8 +16,7 @@ void Sound::SetPosition(Magnum::Vector3 position) { } Magnum::Vector3 Sound::GetPosition() { ma_vec3f pos = ma_sound_get_position(&maSound); - Magnum::Vector3 position(pos.x, pos.y, pos.z); - return position; + return Magnum::Vector3(pos.x, pos.y, pos.z); } void Sound::SetVolume(float value) { ma_sound_set_volume(&maSound, value); } float Sound::GetVolume() { return ma_sound_get_volume(&maSound); }