From 01e6b0e35584062dd0fb51bf77078aa5e2818734 Mon Sep 17 00:00:00 2001 From: Vladislav Khorev Date: Sun, 2 Mar 2025 18:11:29 +0300 Subject: [PATCH] Working with music --- AudioPlayerAsync.cpp | 12 ++++++++++++ AudioPlayerAsync.h | 2 ++ GameObjectManager.cpp | 6 ++++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/AudioPlayerAsync.cpp b/AudioPlayerAsync.cpp index f79c232..9a94a56 100644 --- a/AudioPlayerAsync.cpp +++ b/AudioPlayerAsync.cpp @@ -12,12 +12,24 @@ AudioPlayerAsync::~AudioPlayerAsync() { worker.join(); } +void AudioPlayerAsync::stopAsync() { + std::unique_lock lock(mtx); + taskQueue.push([this]() { + //audioPlayerMutex.lock(); + audioPlayer->stop(); + std::this_thread::sleep_for(std::chrono::seconds(1)); + //audioPlayerMutex.unlock(); + }); + cv.notify_one(); +} + void AudioPlayerAsync::resetAsync() { std::unique_lock lock(mtx); taskQueue.push([this]() { //audioPlayerMutex.lock(); audioPlayer.reset(); audioPlayer = std::make_unique(); + //audioPlayerMutex.unlock(); }); cv.notify_one(); diff --git a/AudioPlayerAsync.h b/AudioPlayerAsync.h index 5d88fb0..9f29cef 100644 --- a/AudioPlayerAsync.h +++ b/AudioPlayerAsync.h @@ -18,6 +18,8 @@ public: void playMusicAsync(std::string musicName); + void stopAsync(); + void exit() { stop = true; diff --git a/GameObjectManager.cpp b/GameObjectManager.cpp index 9fb6626..9a79790 100644 --- a/GameObjectManager.cpp +++ b/GameObjectManager.cpp @@ -28,7 +28,8 @@ void GameObjectManager::initialize() { testObjMeshMutable.data = testObjMesh; testObjMeshMutable.RefreshVBO(); - textMesh = ZL::LoadFromTextFile("./textures/mesh_first_room.txt"); + //textMesh = ZL::LoadFromTextFile("./textures/mesh_first_room.txt"); + textMesh = ZL::LoadFromTextFile("./oneroom001.txt"); textMesh.Scale(10); textMesh.SwapZandY(); textMesh.RotateByMatrix(QuatToMatrix(QuatFromRotateAroundX(M_PI * 0.5))); @@ -82,7 +83,7 @@ void GameObjectManager::initialize() { Room room_1; - room_1.roomTexture = std::make_shared(CreateTextureDataFromBmp24("./Kitchen_ceramics.bmp")); + room_1.roomTexture = std::make_shared(CreateTextureDataFromBmp24("./Material_Base_color_1001.bmp")); room_1.objects.push_back(ao1); room_1.sound_name = "Symphony No.6 (1st movement).ogg"; room_1.roomLogic = createRoom1Logic(); @@ -140,6 +141,7 @@ void GameObjectManager::switch_room(int index){ if (audioPlayer) { audioPlayer->playMusic(rooms[current_room_index].sound_name); }*/ + audioPlayerAsync.stopAsync(); audioPlayerAsync.resetAsync(); audioPlayerAsync.playMusicAsync(rooms[current_room_index].sound_name);