diff --git a/.gitmodules b/.gitmodules index f669594c..e41ef8f1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -20,3 +20,6 @@ [submodule "StarEngine/vendor/Box2D"] path = StarEngine/vendor/Box2D url = https://github.com/sheazywi/box2d +[submodule "StarEngine/vendor/FMOD-Audio"] + path = StarEngine/vendor/FMOD-Audio + url = https://github.com/sheazywi/FMOD-Audio-Engine diff --git a/Dependencies.lua b/Dependencies.lua index 96e80511..d8029eb6 100644 --- a/Dependencies.lua +++ b/Dependencies.lua @@ -12,6 +12,8 @@ IncludeDir["ImGui"] = "%{wks.location}/StarEngine/vendor/imgui" IncludeDir["ImGuizmo"] = "%{wks.location}/StarEngine/vendor/imguizmo" IncludeDir["glm"] = "%{wks.location}/StarEngine/vendor/glm" IncludeDir["entt"] = "%{wks.location}/StarEngine/vendor/entt/include" +IncludeDir["FMODCore"] = "%{wks.location}/StarEngine/vendor/FMOD-Audio/AudioEngine/Include" +IncludeDir["FMODEngine"] = "%{wks.location}/StarEngine/vendor/FMOD-Audio/AudioEngine" IncludeDir["shaderc"] = "%{wks.location}/StarEngine/vendor/shaderc/include" IncludeDir["SPIRV_Cross"] = "%{wks.location}/StarEngine/vendor/SPIRV-Cross" IncludeDir["VulkanSDK"] = "%{VULKAN_SDK}/Include" diff --git a/StarEngine/premake5.lua b/StarEngine/premake5.lua index 227d5bff..9869dfdb 100644 --- a/StarEngine/premake5.lua +++ b/StarEngine/premake5.lua @@ -42,6 +42,8 @@ project "StarEngine" "%{IncludeDir.entt}", "%{IncludeDir.yaml_cpp}", "%{IncludeDir.ImGuizmo}", + "%{IncludeDir.FMODCore}", + "%{IncludeDir.FMODEngine}", "%{IncludeDir.VulkanSDK}" } @@ -64,6 +66,7 @@ project "StarEngine" defines { + } filter "configurations:Debug" @@ -103,4 +106,4 @@ project "StarEngine" } filter "action:vs2022" - buildoptions { "/utf-8" } \ No newline at end of file + buildoptions { "/utf-8" } diff --git a/StarEngine/src/StarEngine/Core/Application.cpp b/StarEngine/src/StarEngine/Core/Application.cpp index 0ab99fd5..7aa92ac0 100644 --- a/StarEngine/src/StarEngine/Core/Application.cpp +++ b/StarEngine/src/StarEngine/Core/Application.cpp @@ -26,6 +26,10 @@ namespace StarEngine m_Window = Window::Create(WindowProps(m_Specification.Name)); m_Window->SetEventCallback(SE_BIND_EVENT_FN(Application::OnEvent)); + m_AudioEngine = new AudioEngine(); + + m_AudioEngine->Init(); + Renderer::Init(); m_ImGuiLayer = new ImGuiLayer(); @@ -36,6 +40,10 @@ namespace StarEngine { SE_PROFILE_FUNCTION(); + m_AudioEngine->Terminate(); + m_AudioEngine = nullptr; + delete m_AudioEngine; + Renderer::Shutdown(); } @@ -107,6 +115,8 @@ namespace StarEngine m_ImGuiLayer->End(); } + m_AudioEngine->Update(); + m_Window->OnUpdate(); } } diff --git a/StarEngine/src/StarEngine/Core/Application.h b/StarEngine/src/StarEngine/Core/Application.h index d29800dc..321a0c78 100644 --- a/StarEngine/src/StarEngine/Core/Application.h +++ b/StarEngine/src/StarEngine/Core/Application.h @@ -11,6 +11,8 @@ #include "StarEngine/ImGui/ImGuiLayer.h" +#include "AudioEngine.h" + int main(int argc, char** argv); namespace StarEngine @@ -68,8 +70,10 @@ namespace StarEngine LayerStack m_LayerStack; float m_LastFrameTime = 0.0f; private: + AudioEngine* m_AudioEngine; + static Application* s_Instance; - friend int ::main(int argc, char** argv); + friend int::main(int argc, char** argv); }; // To be defined in CLIENT diff --git a/StarEngine/vendor/FMOD-Audio b/StarEngine/vendor/FMOD-Audio new file mode 160000 index 00000000..df8f015f --- /dev/null +++ b/StarEngine/vendor/FMOD-Audio @@ -0,0 +1 @@ +Subproject commit df8f015f6a0ffdb242f4e2f9076e816e703560ca diff --git a/premake5.lua b/premake5.lua index 410f1d89..817bce68 100644 --- a/premake5.lua +++ b/premake5.lua @@ -31,6 +31,7 @@ group "Dependencies" include "StarEngine/vendor/GLAD" include "StarEngine/vendor/imgui" include "StarEngine/vendor/yaml-cpp" + include "StarEngine/vendor/FMOD-Audio" group "" include "StarEngine"