diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..103f20d --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "Dependencies/spdlog"] + path = Dependencies/spdlog + url = https://github.com/gabime/spdlog diff --git a/BuildScripts/premake5.lua b/BuildScripts/premake5.lua index 82c6f9f..ed70be2 100644 --- a/BuildScripts/premake5.lua +++ b/BuildScripts/premake5.lua @@ -12,6 +12,7 @@ workspace "Light" } -- Directories -- +dependenciesdir = "%{wks.location}/Dependencies/" outputdir = "%{cfg.buildcfg}/%{cfg.system}/%{cfg.architecture}/%{prj.name}" -- Projects -- diff --git a/BuildScripts/vs2019.bat b/BuildScripts/vs2019.bat new file mode 100644 index 0000000..f9bca7a --- /dev/null +++ b/BuildScripts/vs2019.bat @@ -0,0 +1,2 @@ +premake5.exe vs2019 +PAUSE \ No newline at end of file diff --git a/Dependencies/spdlog b/Dependencies/spdlog new file mode 160000 index 0000000..6ba5ab6 --- /dev/null +++ b/Dependencies/spdlog @@ -0,0 +1 @@ +Subproject commit 6ba5ab6d6709cc277a9486b08203cb4c4f876aca diff --git a/Engine/premake5.lua b/Engine/premake5.lua index 004b6e4..ec925d7 100644 --- a/Engine/premake5.lua +++ b/Engine/premake5.lua @@ -15,13 +15,18 @@ project "Engine" -- Project Files --- files { - "%{prj.location}/**.h", - "%{prj.location}/**.cpp", + "%{prj.location}/src/**.h", + "%{prj.location}/src/**.cpp", "%{prj.location}/**.lua", } -- Dependencies -- - -- NILL -- + includedirs + { + "%{prj.location}/src/Engine/", + + (dependenciesdir .. "spdlog/include/"), + } --- Filters --- -- windows diff --git a/Engine/src/Engine/Application.cpp b/Engine/src/Engine/Core/Application.cpp similarity index 66% rename from Engine/src/Engine/Application.cpp rename to Engine/src/Engine/Core/Application.cpp index 28ead81..7e29721 100644 --- a/Engine/src/Engine/Application.cpp +++ b/Engine/src/Engine/Core/Application.cpp @@ -1,9 +1,14 @@ #include "Application.h" +#include "Logger.h" + namespace Light { Application::Application() { + Logger::Initialize(); + + LT_ENGINE_INFO("Initialized Logger"); } Application::~Application() diff --git a/Engine/src/Engine/Application.h b/Engine/src/Engine/Core/Application.h similarity index 100% rename from Engine/src/Engine/Application.h rename to Engine/src/Engine/Core/Application.h diff --git a/Engine/src/Engine/Core/Logger.cpp b/Engine/src/Engine/Core/Logger.cpp new file mode 100644 index 0000000..24f8d03 --- /dev/null +++ b/Engine/src/Engine/Core/Logger.cpp @@ -0,0 +1,23 @@ +#include "Logger.h" + +#include + +namespace Light { + + std::shared_ptr Logger::s_EngineLogger; + std::shared_ptr Logger::s_ClientLogger; + + void Light::Logger::Initialize() + { + // Set spdlog pattern + spdlog::set_pattern("%^[%M:%S:%e] <%n>: %v%$"); + + // Create loggers and set levels to minimum + s_EngineLogger = spdlog::stdout_color_mt("Engine"); + s_EngineLogger->set_level(spdlog::level::trace); + + s_ClientLogger = spdlog::stdout_color_mt("Client"); + s_ClientLogger->set_level(spdlog::level::trace); + } + +} \ No newline at end of file diff --git a/Engine/src/Engine/Core/Logger.h b/Engine/src/Engine/Core/Logger.h new file mode 100644 index 0000000..2fdf97d --- /dev/null +++ b/Engine/src/Engine/Core/Logger.h @@ -0,0 +1,50 @@ +#pragma once +// TODO: File logger +// + +#include "Base.h" + +#include + +// LOGGER MACROS // +#ifndef LT_DIST + // Engine + #define LT_ENGINE_TRACE(...) ::Light::Logger::GetEngineLogger()->log(spdlog::level::trace , __VA_ARGS__) + #define LT_ENGINE_INFO(...) ::Light::Logger::GetEngineLogger()->log(spdlog::level::info , __VA_ARGS__) + #define LT_ENGINE_WARN(...) ::Light::Logger::GetEngineLogger()->log(spdlog::level::warn , __VA_ARGS__) + #define LT_ENGINE_ERROR(...) ::Light::Logger::GetEngineLogger()->log(spdlog::level::err , __VA_ARGS__) + #define LT_ENGINE_CRITICAL(...) ::Light::Logger::GetEngineLogger()->log(spdlog::level::critical, __VA_ARGS__) + + // Client + #define LT_CLIENT_TRACE(...) ::Light::Logger::GetClientLogger()->log(spdlog::level::trace , __VA_ARGS__) + #define LT_CLIENT_INFO(...) ::Light::Logger::GetClientLogger()->log(spdlog::level::info , __VA_ARGS__) + #define LT_CLIENT_WARN(...) ::Light::Logger::GetClientLogger()->log(spdlog::level::warn , __VA_ARGS__) + #define LT_CLIENT_ERROR(...) ::Light::Logger::GetClientLogger()->log(spdlog::level::err , __VA_ARGS__) + #define LT_CLIENT_CRITICAL(...) ::Light::Logger::GetClientLogger()->log(spdlog::level::critical, __VA_ARGS__) +#else + #define LT_ENGINE_TRACE(...) + #define LT_ENGINE_INFO(...) + #define LT_ENGINE_WARN(...) + #define LT_ENGINE_ERROR(...) + #define LT_ENGINE_CRITICAL(...) + #define LT_CLIENT_TRACE(...) + #define LT_CLIENT_INFO(...) + #define LT_CLIENT_WARN(...) + #define LT_CLIENT_ERROR(...) + #define LT_CLIENT_CRITICAL(...) +#endif + +namespace Light { + + class Logger + { + private: + static std::shared_ptr s_EngineLogger, s_ClientLogger; + public: + static void Initialize(); + + static inline std::shared_ptr GetEngineLogger() { return s_EngineLogger; } + static inline std::shared_ptr GetClientLogger() { return s_ClientLogger; } + }; + +} \ No newline at end of file diff --git a/Engine/src/LightEngine.h b/Engine/src/LightEngine.h index 4b843b8..4bcbdd7 100644 --- a/Engine/src/LightEngine.h +++ b/Engine/src/LightEngine.h @@ -1,7 +1,7 @@ #pragma once +#include "Engine/Core/Application.h" +#include "Engine/Core/Logger.h" + #include "Engine/Base.h" - -#include "Engine/Application.h" - #include "Engine/EntryPoint.h" \ No newline at end of file diff --git a/Sandbox/premake5.lua b/Sandbox/premake5.lua index 6cf2c04..f45bd53 100644 --- a/Sandbox/premake5.lua +++ b/Sandbox/premake5.lua @@ -3,7 +3,7 @@ project "Sandbox" -- Output Directories -- location "../Sandbox/" - targetdir ("../bin/" .. outputdir) + targetdir ("../bin/" .. outputdir) objdir ("../bin-int/" .. outputdir) -- Compiler -- @@ -23,7 +23,12 @@ project "Sandbox" -- Dependencies -- includedirs { + -- Engine "%{wks.location}/Engine/src", + "%{wks.location}/Engine/src/Engine", + + -- 3rd party + (dependenciesdir .. "spdlog/include/"), } links diff --git a/Sandbox/src/SandboxApp.cpp b/Sandbox/src/SandboxApp.cpp index 981bff9..c364c0c 100644 --- a/Sandbox/src/SandboxApp.cpp +++ b/Sandbox/src/SandboxApp.cpp @@ -2,6 +2,16 @@ class Sandbox : public Light::Application { +public: + Sandbox() + { + LT_CLIENT_TRACE("Sandbox::Sandbox"); + } + + ~Sandbox() + { + LT_CLIENT_TRACE("Sandbox::~Sandbox"); + } }; Light::Application* Light::CreateApplication()