aboutsummaryrefslogtreecommitdiff
path: root/src/Core
diff options
context:
space:
mode:
Diffstat (limited to 'src/Core')
-rw-r--r--src/Core/Application.cpp8
-rw-r--r--src/Core/Application.h10
-rw-r--r--src/Core/Camera.cpp1
-rw-r--r--src/Core/Log.cpp7
-rw-r--r--src/Core/Log.h7
-rw-r--r--src/Core/Memory.h24
-rw-r--r--src/Core/StateManager.cpp2
-rw-r--r--src/Core/StateManager.h10
-rw-r--r--src/Core/Window.cpp2
-rw-r--r--src/Core/Window.h5
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