diff --git a/Assets/Audio/Master.bank b/Assets/Audio/Master.bank index 16c0fa31..4ea1e4f2 100644 Binary files a/Assets/Audio/Master.bank and b/Assets/Audio/Master.bank differ diff --git a/Assets/Audio/Master.strings.bank b/Assets/Audio/Master.strings.bank index ae9c71de..38298882 100644 Binary files a/Assets/Audio/Master.strings.bank and b/Assets/Audio/Master.strings.bank differ diff --git a/Assets/Audio/Music.bank b/Assets/Audio/Music.bank new file mode 100644 index 00000000..25461a50 Binary files /dev/null and b/Assets/Audio/Music.bank differ diff --git a/Assets/Audio/SFX.bank b/Assets/Audio/SFX.bank new file mode 100644 index 00000000..1a2c58ac Binary files /dev/null and b/Assets/Audio/SFX.bank differ diff --git a/Assets/Audio/testogg.ogg b/Assets/Audio/testogg.ogg new file mode 100644 index 00000000..65687ef6 Binary files /dev/null and b/Assets/Audio/testogg.ogg differ diff --git a/Assets/Audio/testwave.wav b/Assets/Audio/testwave.wav new file mode 100644 index 00000000..2a45456d Binary files /dev/null and b/Assets/Audio/testwave.wav differ diff --git a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp index 6c5e1120..e1fae750 100644 --- a/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp +++ b/SHADE_Engine/src/AudioSystem/SHAudioSystem.cpp @@ -79,12 +79,13 @@ namespace SHADE LoadBank("../../Assets/Audio/Master.bank"); LoadBank("../../Assets/Audio/Master.strings.bank"); - //LoadBank("resources/audio/banks/Music.bank"); - //LoadBank("resources/audio/banks/SFX.bank"); + LoadBank("../../Assets/Audio/Music.bank"); + LoadBank("../../Assets/Audio/SFX.bank"); - //auto clip = CreateAudioClip("event:/SFX/Dawn/Dawn_Attack"); + //auto clip = CreateAudioClip("event:/Characters/sfx_footsteps_human"); //clip->Play(); - //PlayEventOnce("event:/SFX/Dawn/Dawn_Attack"); + //PlayEventOnce("event:/Characters/sfx_footsteps_human"); + PlayEventOnce("event:/SFX/Dawn/Dawn_Attack"); } void SHADE::SHAudioSystem::Run(float dt) @@ -147,7 +148,7 @@ namespace SHADE ErrorCheck(); } - if (system) + if (fmodStudioSystem) { result = fmodStudioSystem->release(); ErrorCheck(); @@ -160,41 +161,41 @@ namespace SHADE std::cerr << "Audio system error: " << FMOD_ErrorString(result) << std::endl; } - void SHAudioSystem::PlayEventOnce(const char* path, bool isSFX, EntityID eid, bool spatial) + void SHAudioSystem::PlayEventOnce(const char* path, bool isSFX, EntityID eid, bool spatial) { - if (paused) - return; - auto it = eventMap.find(path); - if (it != eventMap.end()) - { - FMOD::Studio::EventInstance* event = nullptr; - it->second->createInstance(&event); - if (event) + if (paused) + return; + auto it = eventMap.find(path); + if (it != eventMap.end()) { - - event->setVolume(masterVolume * (isSFX ? sfxVolume : bgmVolume)); - if (spatial) - { - if (SHTransformComponent* audioTransform = SHComponentManager::GetComponent_s(eid)) + FMOD::Studio::EventInstance* event = nullptr; + it->second->createInstance(&event); + if (event) { - FMOD_3D_ATTRIBUTES attributes{ {} }; - attributes.forward.z = 1.0f; - attributes.up.y = 1.0f; - SHAudioListenerComponent& listener = denseListener->at(0); - SHTransformComponent* listenerTransform = SHComponentManager::GetComponent_s(listener.GetEID()); - if (listenerTransform) - { - attributes.position.z = listenerTransform->GetLocalPosition()[2]; - } - attributes.position.x = audioTransform->GetLocalPosition()[0]; - attributes.position.y = audioTransform->GetLocalPosition()[1]; - event->set3DAttributes(&attributes); + + event->setVolume(masterVolume * (isSFX ? sfxVolume : bgmVolume)); + if (spatial) + { + if (SHTransformComponent* audioTransform = SHComponentManager::GetComponent_s(eid)) + { + FMOD_3D_ATTRIBUTES attributes{ {} }; + attributes.forward.z = 1.0f; + attributes.up.y = 1.0f; + SHAudioListenerComponent& listener = denseListener->at(0); + SHTransformComponent* listenerTransform = SHComponentManager::GetComponent_s(listener.GetEID()); + if (listenerTransform) + { + attributes.position.z = listenerTransform->GetLocalPosition()[2]; + } + attributes.position.x = audioTransform->GetLocalPosition()[0]; + attributes.position.y = audioTransform->GetLocalPosition()[1]; + event->set3DAttributes(&attributes); + } + } + event->start(); + event->release(); } - } - event->start(); - event->release(); } - } } void SHAudioSystem::PlaySFX(EntityID id, EntityID eid, const bool& loop, const bool& spatial, float min, float max) @@ -437,27 +438,27 @@ namespace SHADE void SHAudioSystem::LoadBank(const char* path) { - FMOD::Studio::Bank* bank = nullptr; - result = fmodStudioSystem->loadBankFile(path, FMOD_STUDIO_LOAD_BANK_NORMAL, &bank); - ErrorCheck(); - if (result != FMOD_OK) - return; - bankMap.emplace(path, bank); - bank->loadSampleData(); - int numOfEvents; - bank->getEventCount(&numOfEvents); - if (numOfEvents > 0) - { - std::vector events(numOfEvents); - bank->getEventList(events.data(), numOfEvents, &numOfEvents); - char eventName[512]; - for (int i{}; i < numOfEvents; ++i) + FMOD::Studio::Bank* bank = nullptr; + result = fmodStudioSystem->loadBankFile(path, FMOD_STUDIO_LOAD_BANK_NORMAL, &bank); + ErrorCheck(); + if (result != FMOD_OK) + return; + bankMap.emplace(path, bank); + bank->loadSampleData(); + int numOfEvents; + bank->getEventCount(&numOfEvents); + if (numOfEvents > 0) { - FMOD::Studio::EventDescription* event = events[i]; - event->getPath(eventName, 512, nullptr); - eventMap.emplace(eventName, event); + std::vector events(numOfEvents); + bank->getEventList(events.data(), numOfEvents, &numOfEvents); + char eventName[512]; + for (int i{}; i < numOfEvents; ++i) + { + FMOD::Studio::EventDescription* event = events[i]; + event->getPath(eventName, 512, nullptr); + eventMap.emplace(eventName, event); + } } - } } AudioClip::AudioClip(AudioClipID clipID, FMOD::Studio::EventInstance* inst) diff --git a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp index fba9512e..44780784 100644 --- a/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp +++ b/SHADE_Engine/src/Editor/EditorWindow/Inspector/SHEditorInspector.cpp @@ -13,6 +13,9 @@ #include "SHEditorComponentView.hpp" #include "Graphics/MiddleEnd/Interface/SHRenderable.h" +#include "ECS_Base/Managers/SHSystemManager.h" +#include "AudioSystem/SHAudioSystem.h" + namespace SHADE { template, bool> = true> @@ -50,6 +53,14 @@ namespace SHADE ImGui::InputText("##EntityName", &entity->name); + if (ImGui::Button("AUDIO")) + { + if (auto audioSystem = SHSystemManager::GetSystem()) + { + audioSystem->PlayEventOnce("event:/SFX/Dawn/Dawn_Attack"); + } + } + if (auto transformComponent = SHComponentManager::GetComponent_s(eid)) { DrawComponent(transformComponent);