diff options
Diffstat (limited to 'src/Core')
| -rw-r--r-- | src/Core/Application.cpp | 8 | ||||
| -rw-r--r-- | src/Core/Application.h | 10 | ||||
| -rw-r--r-- | src/Core/Camera.cpp | 1 | ||||
| -rw-r--r-- | src/Core/Log.cpp | 7 | ||||
| -rw-r--r-- | src/Core/Log.h | 7 | ||||
| -rw-r--r-- | src/Core/Memory.h | 24 | ||||
| -rw-r--r-- | src/Core/StateManager.cpp | 2 | ||||
| -rw-r--r-- | src/Core/StateManager.h | 10 | ||||
| -rw-r--r-- | src/Core/Window.cpp | 2 | ||||
| -rw-r--r-- | src/Core/Window.h | 5 |
10 files changed, 51 insertions, 25 deletions
diff --git a/src/Core/Application.cpp b/src/Core/Application.cpp index 4a0726d..a886327 100644 --- a/src/Core/Application.cpp +++ b/src/Core/Application.cpp @@ -16,7 +16,7 @@ namespace Donut { s_Instance = this; - m_Window = std::make_unique<Window>(name, width, height); + m_Window = CreateScope<Window>(name, width, height); m_Window->SetEventCallback([this](Event& event) { OnEvent(event); @@ -109,9 +109,9 @@ namespace Donut Renderer::OnWindowResize(1280, 720); RenderCommand::SetFaceCulling(false); - m_StateManager = std::make_unique<StateManager>(); - m_StateManager->RegisterState("Config", std::make_unique<ConfigState>()); - m_StateManager->RegisterState("Simulation", std::make_unique<SimulationState>()); + m_StateManager = CreateScope<StateManager>(); + m_StateManager->RegisterState("Config", CreateScope<ConfigState>()); + m_StateManager->RegisterState("Simulation", CreateScope<SimulationState>()); m_StateManager->SwitchToState("Config"); } diff --git a/src/Core/Application.h b/src/Core/Application.h index 92ab781..3d0ba25 100644 --- a/src/Core/Application.h +++ b/src/Core/Application.h @@ -1,12 +1,10 @@ #pragma once -#include <memory> -#include <functional> - +#include "Memory.h" #include "Window.h" #include "Event.h" -#include "StateManager.h" #include "Log.h" +#include "StateManager.h" namespace Donut { @@ -29,8 +27,8 @@ namespace Donut void OnRender(); void OnEvent(Event& event); private: - std::unique_ptr<StateManager> m_StateManager; - std::unique_ptr<Window> m_Window; + Scope<StateManager> m_StateManager; + Scope<Window> m_Window; bool m_Running; bool m_Minimized; diff --git a/src/Core/Camera.cpp b/src/Core/Camera.cpp index ecfb6df..4dff2d7 100644 --- a/src/Core/Camera.cpp +++ b/src/Core/Camera.cpp @@ -1,4 +1,5 @@ #include "Camera.h" + #include <glm/gtc/quaternion.hpp> namespace Donut diff --git a/src/Core/Log.cpp b/src/Core/Log.cpp index 90c7094..f2f3e44 100644 --- a/src/Core/Log.cpp +++ b/src/Core/Log.cpp @@ -1,4 +1,5 @@ #include "Log.h" + #include <filesystem> #if defined(DONUT_WINDOWS) @@ -7,11 +8,11 @@ namespace Donut { - std::shared_ptr<Logger> Logger::s_Logger; + Ref<Logger> Logger::s_Logger; void Logger::Init() { - s_Logger = std::make_shared<Logger>(); + s_Logger = CreateRef<Logger>(); s_Logger->SetLogLevel(LogLevel::INFO); s_Logger->EnableConsoleOutput(true); s_Logger->EnableFileOutput(true); @@ -27,7 +28,7 @@ namespace Donut s_Logger.reset(); } - std::shared_ptr<Logger> Logger::GetLogger() + Ref<Logger> Logger::GetLogger() { return s_Logger; } diff --git a/src/Core/Log.h b/src/Core/Log.h index ad1b959..c7b2e47 100644 --- a/src/Core/Log.h +++ b/src/Core/Log.h @@ -1,7 +1,8 @@ #pragma once +#include "Core/Memory.h" + #include <string> -#include <memory> #include <vector> #include <sstream> #include <iostream> @@ -28,7 +29,7 @@ namespace Donut static void Init(); static void Shutdown(); - static std::shared_ptr<Logger> GetLogger(); + static Ref<Logger> GetLogger(); template<typename... Args> static void Trace(const std::string_view& format, const Args&... args) @@ -135,7 +136,7 @@ namespace Donut std::ofstream m_LogFile; std::mutex m_Mutex; - static std::shared_ptr<Logger> s_Logger; + static Ref<Logger> s_Logger; }; } diff --git a/src/Core/Memory.h b/src/Core/Memory.h new file mode 100644 index 0000000..0abc6b1 --- /dev/null +++ b/src/Core/Memory.h @@ -0,0 +1,24 @@ +#pragma once + +#include <memory> + +namespace Donut +{ + template<typename T> + using Ref = std::shared_ptr<T>; + + template<typename T> + using Scope = std::unique_ptr<T>; + + template<typename T, typename ... Args> + constexpr Scope<T> CreateScope(Args&& ... args) + { + return std::make_unique<T>(std::forward<Args>(args)...); + } + + template<typename T, typename ... Args> + constexpr Ref<T> CreateRef(Args&& ... args) + { + return std::make_shared<T>(std::forward<Args>(args)...); + } +};
\ No newline at end of file diff --git a/src/Core/StateManager.cpp b/src/Core/StateManager.cpp index 30d6b1d..266bafa 100644 --- a/src/Core/StateManager.cpp +++ b/src/Core/StateManager.cpp @@ -19,7 +19,7 @@ namespace Donut m_CurrentStateName = ""; } - void StateManager::RegisterState(const std::string& stateName, std::unique_ptr<State> state) + void StateManager::RegisterState(const std::string& stateName, Scope<State> state) { if (m_States.find(stateName) != m_States.end()) DONUT_WARN("State '{}' already exists, overwriting", stateName); diff --git a/src/Core/StateManager.h b/src/Core/StateManager.h index 06370f3..c0b2b13 100644 --- a/src/Core/StateManager.h +++ b/src/Core/StateManager.h @@ -1,11 +1,11 @@ #pragma once -#include <memory> +#include "Memory.h" +#include "State.h" + #include <string> #include <unordered_map> -#include "State.h" - namespace Donut { class StateManager @@ -18,7 +18,7 @@ namespace Donut void Render(); void OnEvent(Event& event); - void RegisterState(const std::string& stateName, std::unique_ptr<State> state); + void RegisterState(const std::string& stateName, Scope<State> state); void SwitchToState(const std::string& stateName); std::string GetCurrentStateName() const { return m_CurrentStateName; } @@ -34,6 +34,6 @@ namespace Donut State* m_CurrentState = nullptr; std::string m_CurrentStateName = ""; - std::unordered_map<std::string, std::unique_ptr<State>> m_States; + std::unordered_map<std::string, Scope<State>> m_States; }; } diff --git a/src/Core/Window.cpp b/src/Core/Window.cpp index 832235a..73bd8db 100644 --- a/src/Core/Window.cpp +++ b/src/Core/Window.cpp @@ -1,6 +1,6 @@ #include "Window.h" + #include <cstdint> -#include <iostream> namespace Donut { diff --git a/src/Core/Window.h b/src/Core/Window.h index 97bbbe2..c598bf2 100644 --- a/src/Core/Window.h +++ b/src/Core/Window.h @@ -1,10 +1,11 @@ #pragma once -#include <GLFW/glfw3.h> -#include <string> #include "Event.h" #include "Log.h" +#include <GLFW/glfw3.h> +#include <string> + namespace Donut { class Window |
