diff --git a/SHADE_Application/SHADE_Application.vcxproj b/SHADE_Application/SHADE_Application.vcxproj index 11bbb48f..ab1ac84c 100644 --- a/SHADE_Application/SHADE_Application.vcxproj +++ b/SHADE_Application/SHADE_Application.vcxproj @@ -59,8 +59,8 @@ Use SBpch.h Level4 - _DEBUG;%(PreprocessorDefinitions) - ..\Dependencies\spdlog\include;..\SHADE_Engine\src;src;%(AdditionalIncludeDirectories) + NOMINMAX;_DEBUG;%(PreprocessorDefinitions) + ..\Dependencies\spdlog\include;$(VULKAN_SDK)\include;..\Dependencies\VMA\include;$(VULKAN_SDK)\Source\SPIRV-Reflect;..\SHADE_Engine\src;src;%(AdditionalIncludeDirectories) EditAndContinue Disabled false @@ -79,8 +79,8 @@ Use SBpch.h Level4 - _RELEASE;%(PreprocessorDefinitions) - ..\Dependencies\spdlog\include;..\SHADE_Engine\src;src;%(AdditionalIncludeDirectories) + NOMINMAX;_RELEASE;%(PreprocessorDefinitions) + ..\Dependencies\spdlog\include;$(VULKAN_SDK)\include;..\Dependencies\VMA\include;$(VULKAN_SDK)\Source\SPIRV-Reflect;..\SHADE_Engine\src;src;%(AdditionalIncludeDirectories) Full true true diff --git a/SHADE_Application/premake5.lua b/SHADE_Application/premake5.lua index c10b1002..4f2711e7 100644 --- a/SHADE_Application/premake5.lua +++ b/SHADE_Application/premake5.lua @@ -22,6 +22,9 @@ project "SHADE_Application" includedirs { "%{IncludeDir.spdlog}/include", + "%{IncludeDir.VULKAN}/include", + "%{IncludeDir.VMA}/include", + "%{IncludeDir.VULKAN}/Source/SPIRV-Reflect", "../SHADE_Engine/src", "src" } @@ -39,6 +42,11 @@ project "SHADE_Application" postbuildcommands { } + + defines + { + "NOMINMAX" + } warnings 'Extra' diff --git a/SHADE_Application/src/Application/SBApplication.cpp b/SHADE_Application/src/Application/SBApplication.cpp index 184b9611..2a4a18af 100644 --- a/SHADE_Application/src/Application/SBApplication.cpp +++ b/SHADE_Application/src/Application/SBApplication.cpp @@ -1,5 +1,6 @@ #include "SBpch.h" #include "SBApplication.h" +#include "Engine/ECS_Base/System/SHSystemManager.h" #ifdef SHEDITOR #include "Editor/SHEditor.h" @@ -23,6 +24,11 @@ namespace Sandbox { window.Create(hInstance, hPrevInstance, lpCmdLine, nCmdShow); + SHADE::SHSystemManager::CreateSystem("Graphics System"); + SHADE::SHGraphicsSystem* graphicsSystem = static_cast(SHADE::SHSystemManager::GetSystem("Graphics System")); + graphicsSystem->SetWindow(&window); + + SHADE::SHSystemManager::Init(); #ifdef SHEDITOR #else @@ -44,6 +50,8 @@ namespace Sandbox void SBApplication::Exit(void) { + SHADE::SHSystemManager::Exit(); + #ifdef SHEDITOR #else #endif diff --git a/SHADE_Application/src/Application/SBApplication.h b/SHADE_Application/src/Application/SBApplication.h index a1bf11eb..94e296b1 100644 --- a/SHADE_Application/src/Application/SBApplication.h +++ b/SHADE_Application/src/Application/SBApplication.h @@ -1,6 +1,7 @@ #ifndef SB_APPLICATION_H #define SB_APPLICATION_H #include +#include "Graphics/MiddleEnd/Interface/SHGraphicsSystem.h" //using namespace SHADE; namespace Sandbox diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp index ad70a18f..7bc2f9ee 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.cpp @@ -25,11 +25,8 @@ namespace SHADE /*---------------------------------------------------------------------------------*/ /* Constructor/Destructors */ /*---------------------------------------------------------------------------------*/ - SHGraphicsSystem::SHGraphicsSystem(SHWindow& window) + void SHGraphicsSystem::Init(void) { - // Save the SHWindow - this->window = &window; - // Set Up Instance SHVkInstance::Init(true, true, true); @@ -39,10 +36,10 @@ namespace SHADE device = SHVkInstance::CreateLogicalDevice({ SHQueueParams(SH_Q_FAM::GRAPHICS, SH_QUEUE_SELECT::DEDICATED), SHQueueParams(SH_Q_FAM::TRANSFER, SH_QUEUE_SELECT::DEDICATED) }, physicalDevice); // Construct surface - surface = device->CreateSurface(window.GetHWND()); + surface = device->CreateSurface(window->GetHWND()); // Construct Swapchain - auto windowDims = window.GetWindowSize(); + auto windowDims = window->GetWindowSize(); swapchain = device->CreateSwapchain(surface, windowDims.first, windowDims.second, SHSwapchainParams { .surfaceImageFormats {vk::Format::eB8G8R8A8Unorm, vk::Format::eR8G8B8A8Unorm, vk::Format::eB8G8R8Unorm, vk::Format::eR8G8B8Unorm}, @@ -51,7 +48,7 @@ namespace SHADE .vsyncOn = false, // TODO: Set to true when shipping game }); - window.RegisterWindowSizeCallback([&]([[maybe_unused]] uint32_t width, [[maybe_unused]] uint32_t height) + window->RegisterWindowSizeCallback([&]([[maybe_unused]] uint32_t width, [[maybe_unused]] uint32_t height) { renderContext.SetIsResized(true); }); @@ -127,7 +124,13 @@ namespace SHADE /* RENDERGRAPH END TESTING */ /*-----------------------------------------------------------------------*/ } - SHGraphicsSystem::~SHGraphicsSystem() + + void SHGraphicsSystem::Run(float dt) + { + + } + + void SHGraphicsSystem::Exit(void) { //renderPass.Free(); renderContext.Destroy(); @@ -235,4 +238,10 @@ namespace SHADE void SHGraphicsSystem::RemoveSegment(Handle segment) { } + + void SHGraphicsSystem::SetWindow(SHWindow* wind) noexcept + { + window = wind; + } + } diff --git a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h index e1dff379..322ad98f 100644 --- a/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h +++ b/SHADE_Engine/src/Graphics/MiddleEnd/Interface/SHGraphicsSystem.h @@ -21,6 +21,7 @@ of DigiPen Institute of Technology is prohibited. #include "Graphics/SHVulkanIncludes.h" #include "Graphics/MiddleEnd/PerFrame/SHRenderContext.h" #include "Graphics/RenderGraph/SHRenderGraph.h" +#include "Engine/ECS_Base/System/SHSystem.h" namespace SHADE { @@ -61,7 +62,7 @@ namespace SHADE portions of the screen. */ /***********************************************************************************/ - class SHGraphicsSystem + class SHGraphicsSystem : public SHSystem { public: /*-----------------------------------------------------------------------------*/ @@ -72,8 +73,15 @@ namespace SHADE /*-----------------------------------------------------------------------------*/ /* Constructor/Destructors */ /*-----------------------------------------------------------------------------*/ - SHGraphicsSystem(SHWindow& window); - ~SHGraphicsSystem(); + SHGraphicsSystem (void) = default; + ~SHGraphicsSystem(void) noexcept = default; + + /*-----------------------------------------------------------------------------*/ + /* SHSystem overrides */ + /*-----------------------------------------------------------------------------*/ + virtual void Init(void) override; + virtual void Run (float dt) override; + virtual void Exit(void) override; /*-----------------------------------------------------------------------------*/ /* Lifecycle Functions */ @@ -93,6 +101,11 @@ namespace SHADE Handle AddSegment(const VkViewport& viewport, Handle imageToUse); void RemoveSegment(Handle segment); + /*-----------------------------------------------------------------------------*/ + /* Setters */ + /*-----------------------------------------------------------------------------*/ + void SetWindow (SHWindow* wind) noexcept; + /*-----------------------------------------------------------------------------*/ /* Getters (Temporary) */ /*-----------------------------------------------------------------------------*/