diff --git a/Engine/Src/Imp/CPP/Engine.cpp b/Engine/Src/Imp/CPP/Engine.cpp index 9d7be5a..bc1af91 100644 --- a/Engine/Src/Imp/CPP/Engine.cpp +++ b/Engine/Src/Imp/CPP/Engine.cpp @@ -25,6 +25,8 @@ EXTERN GameFunctionTable g_gameFunctions; namespace ia::iae { + EXTERN SDL_Window *g_windowHandle; + BOOL Engine::IsDebugMode() { #if defined(__DEBUG_MODE__) @@ -36,25 +38,28 @@ namespace ia::iae VOID Engine::ResizeDisplay(IN INT32 newWidth, IN INT32 newHeight) { + SDL_SetWindowSize(g_windowHandle, newWidth, newHeight); Renderer::OnScreenResize(newWidth, newHeight); g_gameFunctions.OnResize(newWidth, newHeight); } - Handle Engine::CreateImageFromFile(IN CONST String &path) + Handle Engine::CreateImageFromFile(IN CONST String &name, IN CONST String &path, IN INT32 resizeToWidth, + IN INT32 resizeToHeight) { const auto data = File::ReadToVector(path.c_str()); - return CreateImage(data.data(), data.size()); + const auto handle = CreateImage(name, data.data(), data.size()); + return (resizeToWidth && resizeToHeight) ? ResizeImage(handle, resizeToWidth, resizeToHeight) : handle; } - Handle Engine::CreateSoundFromFile(IN CONST String &path) + Handle Engine::CreateSoundFromFile(IN CONST String &name, IN CONST String &path) { const auto data = File::ReadToVector(path.c_str()); - return CreateSound(data.data(), data.size()); + return CreateSound(name, data.data(), data.size()); } - Handle Engine::CreateSceneFromFile(IN CONST String &path) + RefPtr Engine::CreateSceneFromFile(IN CONST String &path) { const auto data = File::ReadToString(path.c_str()); - return CreateScene(data); + return Scene::Create(data); } } // namespace ia::iae diff --git a/Engine/Src/Imp/CPP/Renderer/Renderer.cpp b/Engine/Src/Imp/CPP/Renderer/Renderer.cpp index af1a2b8..a80af87 100644 --- a/Engine/Src/Imp/CPP/Renderer/Renderer.cpp +++ b/Engine/Src/Imp/CPP/Renderer/Renderer.cpp @@ -19,6 +19,8 @@ #include #include +#include + #include #include @@ -88,7 +90,7 @@ namespace ia::iae DebugDraw::Initialize(); - s_state.ColorTargetInfo.clear_color = SDL_FColor{0.33f, 0.33f, 0.33f, 1.0f}; + s_state.ColorTargetInfo.clear_color = SDL_FColor{0.0f, 0.0f, 0.0f, 1.0f}; s_state.ColorTargetInfo.load_op = SDL_GPU_LOADOP_CLEAR; s_state.ColorTargetInfo.store_op = SDL_GPU_STOREOP_STORE; @@ -138,6 +140,8 @@ namespace ia::iae if (!(s_state.ActiveCommandBuffer = SDL_AcquireGPUCommandBuffer(s_gpuDevice))) THROW_UNKNOWN("Failed to acquire SDL GPU command buffer: ", SDL_GetError()); + const auto clearColor = WorldManager::GetActiveScene()->BackgroundColor().GetAsFloatVec(); + s_state.ColorTargetInfo.clear_color = SDL_FColor{clearColor.x, clearColor.y, clearColor.z, 1.0f}; s_state.ColorTargetInfo.texture = s_renderTargetSceneColor; s_state.DepthStencilTargetInfo.texture = s_renderTargetSceneDepth; s_state.ActiveRenderPass = SDL_BeginGPURenderPass(s_state.ActiveCommandBuffer, &s_state.ColorTargetInfo, 1, @@ -160,6 +164,8 @@ namespace ia::iae DebugDraw::Render(); const auto imDrawData = ImGui::GetDrawData(); ImGui_ImplSDLGPU3_PrepareDrawData(imDrawData, s_state.ActiveCommandBuffer); + s_state.ColorTargetInfo.load_op = SDL_GPU_LOADOP_CLEAR; + s_state.ColorTargetInfo.clear_color = SDL_FColor{0.0f, 0.0f, 0.0f, 0.0f}; s_state.ColorTargetInfo.texture = s_renderTargetDebugDrawColor; s_state.ActiveRenderPass = SDL_BeginGPURenderPass(s_state.ActiveCommandBuffer, &s_state.ColorTargetInfo, 1, nullptr); @@ -174,6 +180,8 @@ namespace ia::iae if (!swapChainTexture) return; + s_state.ColorTargetInfo.clear_color = SDL_FColor{1.0f, 1.0f, 1.0f, 1.0f}; + s_state.ColorTargetInfo.load_op = SDL_GPU_LOADOP_CLEAR; s_state.ColorTargetInfo.texture = swapChainTexture; s_state.ActiveRenderPass = @@ -285,6 +293,11 @@ namespace ia::iae namespace ia::iae { + IVec2 Engine::GetDisplayExtent() + { + return IVec2(Renderer::s_screenWidth, Renderer::s_screenHeight); + } + VOID Engine::SetActiveCamera(IN CameraComponent *cameraComponent) { Renderer::s_state.ActiveCamera = cameraComponent; diff --git a/Engine/Src/Imp/CPP/ResourceManager.cpp b/Engine/Src/Imp/CPP/ResourceManager.cpp index 4bfef19..5f9a421 100644 --- a/Engine/Src/Imp/CPP/ResourceManager.cpp +++ b/Engine/Src/Imp/CPP/ResourceManager.cpp @@ -27,8 +27,8 @@ namespace ia::iae { - Vector ResourceManager::s_images; - Vector ResourceManager::s_sounds; + Map ResourceManager::s_images; + Map ResourceManager::s_sounds; Map ResourceManager::s_imageExtents; VOID ResourceManager::Initialize() @@ -38,36 +38,68 @@ namespace ia::iae VOID ResourceManager::Terminate() { for (const auto &t : s_images) - GPUResourceManager::DestroyTexture((SDL_GPUTexture *) t); + GPUResourceManager::DestroyTexture((SDL_GPUTexture *) t->Value); for (const auto &t : s_sounds) - AudioManager::DestoryAudio(t); + AudioManager::DestoryAudio(t->Value); } - Handle ResourceManager::CreateImage(IN PCUINT8 encodedData, IN SIZE_T encodedDataSize) + Handle ResourceManager::CreateImage(IN CONST String &name, IN PCUINT8 encodedData, IN SIZE_T encodedDataSize) { INT32 w, h, n; const auto rgbaData = stbi_load_from_memory(encodedData, encodedDataSize, &w, &h, &n, STBI_rgb_alpha); - const auto result = CreateImage(rgbaData, w, h); + const auto result = CreateImage(name, rgbaData, w, h); STBI_FREE(rgbaData); return result; } - Handle ResourceManager::CreateImage(IN PCUINT8 rgbaData, IN INT32 width, IN INT32 height) + Handle ResourceManager::CreateImage(IN CONST String &name, IN PCUINT8 rgbaData, IN INT32 width, IN INT32 height) { const auto handle = (Handle) GPUResourceManager::CreateTexture(SDL_GPU_TEXTUREUSAGE_SAMPLER, width, height, rgbaData, SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM); s_imageExtents[handle] = (((UINT64) width) << 32) | height; - s_images.pushBack(handle); + s_images[name] = handle; return handle; } - Handle ResourceManager::CreateSound(IN PCUINT8 encodedData, IN SIZE_T encodedDataSize) + Handle ResourceManager::CreateSound(IN CONST String &name, IN PCUINT8 encodedData, IN SIZE_T encodedDataSize) { const auto handle = AudioManager::CreateAudio(encodedData, encodedDataSize); - s_sounds.pushBack(handle); + s_sounds[name] = handle; return handle; } + Handle ResourceManager::GetImage(IN CONST String &name) + { + return s_images[name]; + } + + Handle ResourceManager::GetSound(IN CONST String &name) + { + return s_sounds[name]; + } + + String ResourceManager::GetImageName(IN Handle handle) + { + for (const auto &t : s_images) + { + if (handle == t->Value) + return t->Key; + } + THROW_NO_SUCH_KEY(); + return ""; + } + + String ResourceManager::GetSoundName(IN Handle handle) + { + for (const auto &t : s_sounds) + { + if (handle == t->Value) + return t->Key; + } + THROW_NO_SUCH_KEY(); + return ""; + } + VOID ResourceManager::DestroyImage(IN Handle image) { GPUResourceManager::DestroyTexture((SDL_GPUTexture *) image); @@ -84,15 +116,16 @@ namespace ia::iae return {(INT32) (t >> 32), (INT32) t}; } - Handle ResourceManager::RescaleImage(IN Handle image, IN INT32 newWidth, IN INT32 newHeight) + Handle ResourceManager::ResizeImage(IN Handle image, IN INT32 newWidth, IN INT32 newHeight) { const auto currentExtent = GetImageExtent(image); const auto pixelData = GPUResourceManager::GetTexturePixelData((SDL_GPUTexture *) image, currentExtent.x, currentExtent.y); + GPUResourceManager::DestroyTexture((SDL_GPUTexture*)image); const auto newPixelData = stbir_resize_uint8_linear(pixelData.data(), currentExtent.x, currentExtent.y, currentExtent.x * 4, nullptr, newWidth, newHeight, newWidth * 4, stbir_pixel_layout::STBIR_RGBA); - const auto result = CreateImage(newPixelData, newWidth, newHeight); + const auto result = CreateImage(GetImageName(image), newPixelData, newWidth, newHeight); free(newPixelData); return result; } @@ -107,19 +140,29 @@ namespace ia::iae namespace ia::iae { - Handle Engine::CreateImage(IN PCUINT8 encodedData, IN SIZE_T encodedDataSize) + Handle Engine::CreateImage(IN CONST String &name, IN PCUINT8 encodedData, IN SIZE_T encodedDataSize) { - return ResourceManager::CreateImage(encodedData, encodedDataSize); + return ResourceManager::CreateImage(name, encodedData, encodedDataSize); } - Handle Engine::CreateImage(IN PCUINT8 rgbaData, IN INT32 width, IN INT32 height) + Handle Engine::CreateImage(IN CONST String &name, IN PCUINT8 rgbaData, IN INT32 width, IN INT32 height) { - return ResourceManager::CreateImage(rgbaData, width, height); + return ResourceManager::CreateImage(name, rgbaData, width, height); } - Handle Engine::CreateSound(IN PCUINT8 encodedData, IN SIZE_T encodedDataSize) + Handle Engine::CreateSound(IN CONST String &name, IN PCUINT8 encodedData, IN SIZE_T encodedDataSize) { - return ResourceManager::CreateSound(encodedData, encodedDataSize); + return ResourceManager::CreateSound(name, encodedData, encodedDataSize); + } + + Handle Engine::GetImage(IN CONST String &name) + { + return ResourceManager::GetImage(name); + } + + Handle Engine::GetSound(IN CONST String &name) + { + return ResourceManager::GetSound(name); } VOID Engine::DestroyImage(IN Handle image) @@ -137,9 +180,9 @@ namespace ia::iae return ResourceManager::GetImageExtent(image); } - Handle Engine::RescaleImage(IN Handle image, IN INT32 newWidth, IN INT32 newHeight) + Handle Engine::ResizeImage(IN Handle image, IN INT32 newWidth, IN INT32 newHeight) { - return ResourceManager::RescaleImage(image, newWidth, newHeight); + return ResourceManager::ResizeImage(image, newWidth, newHeight); } Handle Engine::CombineImages(IN CONST Vector &images, IN INT32 unitWidth, IN INT32 unitHeight, diff --git a/Engine/Src/Imp/CPP/Scene.cpp b/Engine/Src/Imp/CPP/Scene.cpp index 2c410ad..8147934 100644 --- a/Engine/Src/Imp/CPP/Scene.cpp +++ b/Engine/Src/Imp/CPP/Scene.cpp @@ -15,27 +15,22 @@ // along with this program. If not, see . #include -#include +#include namespace ia::iae { - Scene *Scene::Create() + RefPtr Scene::Create() { - return new Scene(); + return MakeRefPtr(); } - Scene *Scene::Create(IN CONST String &sceneXML) + RefPtr Scene::Create(IN CONST String &sceneXML) { - const auto scene = new Scene(); + const auto scene = MakeRefPtr(); return scene; } - VOID Scene::Destroy(IN Scene *scene) - { - delete scene; - } - VOID Scene::Draw() { for (auto &t : m_nodes) diff --git a/Engine/Src/Imp/CPP/WorldManager.cpp b/Engine/Src/Imp/CPP/WorldManager.cpp index bd390dd..253f1fd 100644 --- a/Engine/Src/Imp/CPP/WorldManager.cpp +++ b/Engine/Src/Imp/CPP/WorldManager.cpp @@ -19,80 +19,74 @@ namespace ia::iae { - Scene *WorldManager::m_activeScene{}; + RefPtr WorldManager::s_activeScene{}; VOID WorldManager::Initialize() { - m_activeScene = Scene::Create(); + s_activeScene = Scene::Create(); } VOID WorldManager::Terminate() { - if (m_activeScene) - Scene::Destroy(m_activeScene); + s_activeScene.reset(); } VOID WorldManager::Draw() { - m_activeScene->Draw(); + s_activeScene->Draw(); } VOID WorldManager::DebugDraw() { - m_activeScene->DebugDraw(); + s_activeScene->DebugDraw(); } VOID WorldManager::Update() { - m_activeScene->Update(); + s_activeScene->Update(); } VOID WorldManager::FixedUpdate() { - m_activeScene->FixedUpdate(); + s_activeScene->FixedUpdate(); } - VOID WorldManager::ChangeActiveScene(IN Scene *scene) + VOID WorldManager::ChangeActiveScene(IN RefPtr scene) { - m_activeScene = scene; + s_activeScene = scene; } VOID WorldManager::AddNodeToActiveScene(IN RefPtr node) { - m_activeScene->AddNode(node); + s_activeScene->AddNode(node); } INode *WorldManager::GetNodeFromActiveScene(IN CONST String &name) { - return m_activeScene->GetNode(name); + return s_activeScene->GetNode(name); } VOID WorldManager::RemoveNodeFromActiveScene(IN CONST String &name) { - m_activeScene->RemoveNode(name); + s_activeScene->RemoveNode(name); + } + + Scene *WorldManager::GetActiveScene() + { + return s_activeScene.get(); } } // namespace ia::iae namespace ia::iae { - Handle Engine::CreateScene(IN CONST String &sceneXML) + Scene *Engine::GetActiveScene() { - return (Handle) Scene::Create(sceneXML); + return WorldManager::GetActiveScene(); } - - Handle Engine::CreateEmptyScene() + + VOID Engine::ChangeActiveScene(IN RefPtr scene) { - return (Handle) Scene::Create(); - } - - VOID Engine::DestroyScene(IN Handle handle) - { - Scene::Destroy((Scene *) handle); - } - - VOID Engine::ChangeActiveScene(IN Handle scene) - { - WorldManager::ChangeActiveScene((Scene *) scene); + WorldManager::ChangeActiveScene(scene); } VOID Engine::AddNodeToActiveScene(IN RefPtr node) @@ -109,14 +103,4 @@ namespace ia::iae { WorldManager::RemoveNodeFromActiveScene(name); } - - VOID Engine::AddNodeToScene(IN Handle scene, IN RefPtr node) - { - ((Scene *) scene)->AddNode(node); - } - - VOID Engine::RemoveNodeFromScene(IN Handle scene, IN CONST String &name) - { - ((Scene *) scene)->RemoveNode(name); - } } // namespace ia::iae \ No newline at end of file diff --git a/Engine/Src/Imp/HPP/Renderer/EmbeddedShader.hpp b/Engine/Src/Imp/HPP/Renderer/EmbeddedShader.hpp index 0aa29d3..84771c7 100644 --- a/Engine/Src/Imp/HPP/Renderer/EmbeddedShader.hpp +++ b/Engine/Src/Imp/HPP/Renderer/EmbeddedShader.hpp @@ -124,16 +124,16 @@ layout(location = 0) out vec4 outColor; vec4 overlay(vec4 background, vec4 foreground) { return mix( - 2.0 * background * foreground, - 1.0 - 2.0 * (1.0 - background) * (1.0 - foreground), - step(0.5, background) + background, + foreground, + foreground.a ); } void main() { vec2 uv = vec2(inTexCoord.x, 1.0 - inTexCoord.y); - outColor = overlay(texture(debugDrawTexture, uv), texture(sceneDrawTexture, uv)); + outColor = overlay(texture(sceneDrawTexture, uv), texture(debugDrawTexture, uv)); } */ @@ -148,7 +148,7 @@ CONSTEXPR UINT8 SHADER_SOURCE_GEOMETRY_FRAG[2076] = { CONSTEXPR UINT8 SHADER_SOURCE_POSTPROCESS_VERT[1272] = { 0x3,0x2,0x23,0x7,0x0,0x0,0x1,0x0,0xb,0x0,0xd,0x0,0x2b,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x11,0x0,0x2,0x0,0x1,0x0,0x0,0x0,0xb,0x0,0x6,0x0,0x1,0x0,0x0,0x0,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30,0x0,0x0,0x0,0x0,0xe,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xf,0x0,0x8,0x0,0x0,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x6d,0x61,0x69,0x6e,0x0,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x3,0x0,0x3,0x0,0x2,0x0,0x0,0x0,0xc2,0x1,0x0,0x0,0x4,0x0,0x9,0x0,0x47,0x4c,0x5f,0x41,0x52,0x42,0x5f,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x5f,0x73,0x68,0x61,0x64,0x65,0x72,0x5f,0x6f,0x62,0x6a,0x65,0x63,0x74,0x73,0x0,0x0,0x4,0x0,0xa,0x0,0x47,0x4c,0x5f,0x47,0x4f,0x4f,0x47,0x4c,0x45,0x5f,0x63,0x70,0x70,0x5f,0x73,0x74,0x79,0x6c,0x65,0x5f,0x6c,0x69,0x6e,0x65,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x76,0x65,0x0,0x0,0x4,0x0,0x8,0x0,0x47,0x4c,0x5f,0x47,0x4f,0x4f,0x47,0x4c,0x45,0x5f,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x76,0x65,0x0,0x5,0x0,0x4,0x0,0x4,0x0,0x0,0x0,0x6d,0x61,0x69,0x6e,0x0,0x0,0x0,0x0,0x5,0x0,0x5,0x0,0x9,0x0,0x0,0x0,0x6f,0x75,0x74,0x54,0x65,0x78,0x43,0x6f,0x6f,0x72,0x64,0x0,0x5,0x0,0x6,0x0,0xc,0x0,0x0,0x0,0x67,0x6c,0x5f,0x56,0x65,0x72,0x74,0x65,0x78,0x49,0x6e,0x64,0x65,0x78,0x0,0x0,0x5,0x0,0x6,0x0,0x1b,0x0,0x0,0x0,0x67,0x6c,0x5f,0x50,0x65,0x72,0x56,0x65,0x72,0x74,0x65,0x78,0x0,0x0,0x0,0x0,0x6,0x0,0x6,0x0,0x1b,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x67,0x6c,0x5f,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x0,0x6,0x0,0x7,0x0,0x1b,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x67,0x6c,0x5f,0x50,0x6f,0x69,0x6e,0x74,0x53,0x69,0x7a,0x65,0x0,0x0,0x0,0x0,0x6,0x0,0x7,0x0,0x1b,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x67,0x6c,0x5f,0x43,0x6c,0x69,0x70,0x44,0x69,0x73,0x74,0x61,0x6e,0x63,0x65,0x0,0x6,0x0,0x7,0x0,0x1b,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x67,0x6c,0x5f,0x43,0x75,0x6c,0x6c,0x44,0x69,0x73,0x74,0x61,0x6e,0x63,0x65,0x0,0x5,0x0,0x3,0x0,0x1d,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x9,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0xc,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x2a,0x0,0x0,0x0,0x47,0x0,0x3,0x0,0x1b,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0x1b,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0x1b,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0x1b,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x48,0x0,0x5,0x0,0x1b,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x13,0x0,0x2,0x0,0x2,0x0,0x0,0x0,0x21,0x0,0x3,0x0,0x3,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x16,0x0,0x3,0x0,0x6,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x17,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x15,0x0,0x4,0x0,0xa,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0xb,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0xb,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0xa,0x0,0x0,0x0,0xe,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0xa,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x17,0x0,0x4,0x0,0x17,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x15,0x0,0x4,0x0,0x18,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x18,0x0,0x0,0x0,0x19,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1c,0x0,0x4,0x0,0x1a,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x19,0x0,0x0,0x0,0x1e,0x0,0x6,0x0,0x1b,0x0,0x0,0x0,0x17,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1a,0x0,0x0,0x0,0x1a,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x1c,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1b,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x1c,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0xa,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x2b,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x0,0x0,0x80,0x3f,0x2b,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x29,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x17,0x0,0x0,0x0,0x36,0x0,0x5,0x0,0x2,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0xf8,0x0,0x2,0x0,0x5,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0xa,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0xc4,0x0,0x5,0x0,0xa,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0xd,0x0,0x0,0x0,0xe,0x0,0x0,0x0,0xc7,0x0,0x5,0x0,0xa,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x6f,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x12,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0xa,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0xc7,0x0,0x5,0x0,0xa,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x6f,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x15,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x50,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x12,0x0,0x0,0x0,0x15,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x9,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x8e,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x50,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x83,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x24,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x51,0x0,0x5,0x0,0x6,0x0,0x0,0x0,0x26,0x0,0x0,0x0,0x24,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x51,0x0,0x5,0x0,0x6,0x0,0x0,0x0,0x27,0x0,0x0,0x0,0x24,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x50,0x0,0x7,0x0,0x17,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0x26,0x0,0x0,0x0,0x27,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x29,0x0,0x0,0x0,0x2a,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x2a,0x0,0x0,0x0,0x28,0x0,0x0,0x0,0xfd,0x0,0x1,0x0,0x38,0x0,0x1,0x0,}; -CONSTEXPR UINT8 SHADER_SOURCE_POSTPROCESS_FRAG[1760] = { -0x3,0x2,0x23,0x7,0x0,0x0,0x1,0x0,0xb,0x0,0xd,0x0,0x44,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x11,0x0,0x2,0x0,0x1,0x0,0x0,0x0,0xb,0x0,0x6,0x0,0x1,0x0,0x0,0x0,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30,0x0,0x0,0x0,0x0,0xe,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xf,0x0,0x7,0x0,0x4,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x6d,0x61,0x69,0x6e,0x0,0x0,0x0,0x0,0x29,0x0,0x0,0x0,0x35,0x0,0x0,0x0,0x10,0x0,0x3,0x0,0x4,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x3,0x0,0x3,0x0,0x2,0x0,0x0,0x0,0xc2,0x1,0x0,0x0,0x4,0x0,0x9,0x0,0x47,0x4c,0x5f,0x41,0x52,0x42,0x5f,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x5f,0x73,0x68,0x61,0x64,0x65,0x72,0x5f,0x6f,0x62,0x6a,0x65,0x63,0x74,0x73,0x0,0x0,0x4,0x0,0xa,0x0,0x47,0x4c,0x5f,0x47,0x4f,0x4f,0x47,0x4c,0x45,0x5f,0x63,0x70,0x70,0x5f,0x73,0x74,0x79,0x6c,0x65,0x5f,0x6c,0x69,0x6e,0x65,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x76,0x65,0x0,0x0,0x4,0x0,0x8,0x0,0x47,0x4c,0x5f,0x47,0x4f,0x4f,0x47,0x4c,0x45,0x5f,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x76,0x65,0x0,0x5,0x0,0x4,0x0,0x4,0x0,0x0,0x0,0x6d,0x61,0x69,0x6e,0x0,0x0,0x0,0x0,0x5,0x0,0x7,0x0,0xc,0x0,0x0,0x0,0x6f,0x76,0x65,0x72,0x6c,0x61,0x79,0x28,0x76,0x66,0x34,0x3b,0x76,0x66,0x34,0x3b,0x0,0x0,0x0,0x0,0x5,0x0,0x5,0x0,0xa,0x0,0x0,0x0,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x0,0x0,0x5,0x0,0x5,0x0,0xb,0x0,0x0,0x0,0x66,0x6f,0x72,0x65,0x67,0x72,0x6f,0x75,0x6e,0x64,0x0,0x0,0x5,0x0,0x3,0x0,0x27,0x0,0x0,0x0,0x75,0x76,0x0,0x0,0x5,0x0,0x5,0x0,0x29,0x0,0x0,0x0,0x69,0x6e,0x54,0x65,0x78,0x43,0x6f,0x6f,0x72,0x64,0x0,0x0,0x5,0x0,0x5,0x0,0x35,0x0,0x0,0x0,0x6f,0x75,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x0,0x0,0x0,0x0,0x5,0x0,0x7,0x0,0x39,0x0,0x0,0x0,0x64,0x65,0x62,0x75,0x67,0x44,0x72,0x61,0x77,0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x0,0x0,0x0,0x0,0x5,0x0,0x7,0x0,0x3d,0x0,0x0,0x0,0x73,0x63,0x65,0x6e,0x65,0x44,0x72,0x61,0x77,0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x0,0x0,0x0,0x0,0x5,0x0,0x4,0x0,0x41,0x0,0x0,0x0,0x70,0x61,0x72,0x61,0x6d,0x0,0x0,0x0,0x5,0x0,0x4,0x0,0x42,0x0,0x0,0x0,0x70,0x61,0x72,0x61,0x6d,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x29,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x35,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x39,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x39,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x3d,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x3d,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x13,0x0,0x2,0x0,0x2,0x0,0x0,0x0,0x21,0x0,0x3,0x0,0x3,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x16,0x0,0x3,0x0,0x6,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x17,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x21,0x0,0x5,0x0,0x9,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0xe,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x2b,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x0,0x0,0x80,0x3f,0x2b,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x3f,0x17,0x0,0x4,0x0,0x25,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x26,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x28,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x28,0x0,0x0,0x0,0x29,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x15,0x0,0x4,0x0,0x2a,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x2a,0x0,0x0,0x0,0x2b,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x2c,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x2a,0x0,0x0,0x0,0x2f,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x34,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x34,0x0,0x0,0x0,0x35,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x19,0x0,0x9,0x0,0x36,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1b,0x0,0x3,0x0,0x37,0x0,0x0,0x0,0x36,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x37,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x38,0x0,0x0,0x0,0x39,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x38,0x0,0x0,0x0,0x3d,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x36,0x0,0x5,0x0,0x2,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0xf8,0x0,0x2,0x0,0x5,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x26,0x0,0x0,0x0,0x27,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x41,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x42,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x2c,0x0,0x0,0x0,0x2d,0x0,0x0,0x0,0x29,0x0,0x0,0x0,0x2b,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x2e,0x0,0x0,0x0,0x2d,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x2c,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x29,0x0,0x0,0x0,0x2f,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x31,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x83,0x0,0x5,0x0,0x6,0x0,0x0,0x0,0x32,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x31,0x0,0x0,0x0,0x50,0x0,0x5,0x0,0x25,0x0,0x0,0x0,0x33,0x0,0x0,0x0,0x2e,0x0,0x0,0x0,0x32,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x27,0x0,0x0,0x0,0x33,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x37,0x0,0x0,0x0,0x3a,0x0,0x0,0x0,0x39,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x25,0x0,0x0,0x0,0x3b,0x0,0x0,0x0,0x27,0x0,0x0,0x0,0x57,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x3a,0x0,0x0,0x0,0x3b,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x37,0x0,0x0,0x0,0x3e,0x0,0x0,0x0,0x3d,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x25,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x27,0x0,0x0,0x0,0x57,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x3e,0x0,0x0,0x0,0x3f,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x41,0x0,0x0,0x0,0x3c,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x42,0x0,0x0,0x0,0x40,0x0,0x0,0x0,0x39,0x0,0x6,0x0,0x7,0x0,0x0,0x0,0x43,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x41,0x0,0x0,0x0,0x42,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x35,0x0,0x0,0x0,0x43,0x0,0x0,0x0,0xfd,0x0,0x1,0x0,0x38,0x0,0x1,0x0,0x36,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x37,0x0,0x3,0x0,0x8,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0x37,0x0,0x3,0x0,0x8,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0xf8,0x0,0x2,0x0,0xd,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0x8e,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0xe,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x85,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x12,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0x50,0x0,0x7,0x0,0x7,0x0,0x0,0x0,0x15,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x83,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x15,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x8e,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x17,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0xe,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x50,0x0,0x7,0x0,0x7,0x0,0x0,0x0,0x19,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x83,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x1a,0x0,0x0,0x0,0x19,0x0,0x0,0x0,0x18,0x0,0x0,0x0,0x85,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x1b,0x0,0x0,0x0,0x17,0x0,0x0,0x0,0x1a,0x0,0x0,0x0,0x50,0x0,0x7,0x0,0x7,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x83,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x1c,0x0,0x0,0x0,0x1b,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0x50,0x0,0x7,0x0,0x7,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0xc,0x0,0x7,0x0,0x7,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x1f,0x0,0x0,0x0,0xc,0x0,0x8,0x0,0x7,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2e,0x0,0x0,0x0,0x12,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0xfe,0x0,0x2,0x0,0x22,0x0,0x0,0x0,0x38,0x0,0x1,0x0,}; +CONSTEXPR UINT8 SHADER_SOURCE_POSTPROCESS_FRAG[1496] = { +0x3,0x2,0x23,0x7,0x0,0x0,0x1,0x0,0xb,0x0,0xd,0x0,0x38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x11,0x0,0x2,0x0,0x1,0x0,0x0,0x0,0xb,0x0,0x6,0x0,0x1,0x0,0x0,0x0,0x47,0x4c,0x53,0x4c,0x2e,0x73,0x74,0x64,0x2e,0x34,0x35,0x30,0x0,0x0,0x0,0x0,0xe,0x0,0x3,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xf,0x0,0x7,0x0,0x4,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x6d,0x61,0x69,0x6e,0x0,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x29,0x0,0x0,0x0,0x10,0x0,0x3,0x0,0x4,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x3,0x0,0x3,0x0,0x2,0x0,0x0,0x0,0xc2,0x1,0x0,0x0,0x4,0x0,0x9,0x0,0x47,0x4c,0x5f,0x41,0x52,0x42,0x5f,0x73,0x65,0x70,0x61,0x72,0x61,0x74,0x65,0x5f,0x73,0x68,0x61,0x64,0x65,0x72,0x5f,0x6f,0x62,0x6a,0x65,0x63,0x74,0x73,0x0,0x0,0x4,0x0,0xa,0x0,0x47,0x4c,0x5f,0x47,0x4f,0x4f,0x47,0x4c,0x45,0x5f,0x63,0x70,0x70,0x5f,0x73,0x74,0x79,0x6c,0x65,0x5f,0x6c,0x69,0x6e,0x65,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x76,0x65,0x0,0x0,0x4,0x0,0x8,0x0,0x47,0x4c,0x5f,0x47,0x4f,0x4f,0x47,0x4c,0x45,0x5f,0x69,0x6e,0x63,0x6c,0x75,0x64,0x65,0x5f,0x64,0x69,0x72,0x65,0x63,0x74,0x69,0x76,0x65,0x0,0x5,0x0,0x4,0x0,0x4,0x0,0x0,0x0,0x6d,0x61,0x69,0x6e,0x0,0x0,0x0,0x0,0x5,0x0,0x7,0x0,0xc,0x0,0x0,0x0,0x6f,0x76,0x65,0x72,0x6c,0x61,0x79,0x28,0x76,0x66,0x34,0x3b,0x76,0x66,0x34,0x3b,0x0,0x0,0x0,0x0,0x5,0x0,0x5,0x0,0xa,0x0,0x0,0x0,0x62,0x61,0x63,0x6b,0x67,0x72,0x6f,0x75,0x6e,0x64,0x0,0x0,0x5,0x0,0x5,0x0,0xb,0x0,0x0,0x0,0x66,0x6f,0x72,0x65,0x67,0x72,0x6f,0x75,0x6e,0x64,0x0,0x0,0x5,0x0,0x3,0x0,0x1b,0x0,0x0,0x0,0x75,0x76,0x0,0x0,0x5,0x0,0x5,0x0,0x1d,0x0,0x0,0x0,0x69,0x6e,0x54,0x65,0x78,0x43,0x6f,0x6f,0x72,0x64,0x0,0x0,0x5,0x0,0x5,0x0,0x29,0x0,0x0,0x0,0x6f,0x75,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x0,0x0,0x0,0x0,0x5,0x0,0x7,0x0,0x2d,0x0,0x0,0x0,0x73,0x63,0x65,0x6e,0x65,0x44,0x72,0x61,0x77,0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x0,0x0,0x0,0x0,0x5,0x0,0x7,0x0,0x31,0x0,0x0,0x0,0x64,0x65,0x62,0x75,0x67,0x44,0x72,0x61,0x77,0x54,0x65,0x78,0x74,0x75,0x72,0x65,0x0,0x0,0x0,0x0,0x5,0x0,0x4,0x0,0x35,0x0,0x0,0x0,0x70,0x61,0x72,0x61,0x6d,0x0,0x0,0x0,0x5,0x0,0x4,0x0,0x36,0x0,0x0,0x0,0x70,0x61,0x72,0x61,0x6d,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x1d,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x29,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x2d,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x2d,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x31,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x47,0x0,0x4,0x0,0x31,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x13,0x0,0x2,0x0,0x2,0x0,0x0,0x0,0x21,0x0,0x3,0x0,0x3,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x16,0x0,0x3,0x0,0x6,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x17,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x21,0x0,0x5,0x0,0x9,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x15,0x0,0x4,0x0,0x10,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x10,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x12,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x17,0x0,0x4,0x0,0x19,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x1a,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x19,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x1c,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x19,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x1c,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x10,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x1f,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x2b,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x0,0x0,0x80,0x3f,0x2b,0x0,0x4,0x0,0x10,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x28,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x28,0x0,0x0,0x0,0x29,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x19,0x0,0x9,0x0,0x2a,0x0,0x0,0x0,0x6,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1b,0x0,0x3,0x0,0x2b,0x0,0x0,0x0,0x2a,0x0,0x0,0x0,0x20,0x0,0x4,0x0,0x2c,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x2b,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x2c,0x0,0x0,0x0,0x2d,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x2c,0x0,0x0,0x0,0x31,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x36,0x0,0x5,0x0,0x2,0x0,0x0,0x0,0x4,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0xf8,0x0,0x2,0x0,0x5,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x1a,0x0,0x0,0x0,0x1b,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x35,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x3b,0x0,0x4,0x0,0x8,0x0,0x0,0x0,0x36,0x0,0x0,0x0,0x7,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x1f,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x1e,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x20,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x1f,0x0,0x0,0x0,0x24,0x0,0x0,0x0,0x1d,0x0,0x0,0x0,0x23,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x24,0x0,0x0,0x0,0x83,0x0,0x5,0x0,0x6,0x0,0x0,0x0,0x26,0x0,0x0,0x0,0x22,0x0,0x0,0x0,0x25,0x0,0x0,0x0,0x50,0x0,0x5,0x0,0x19,0x0,0x0,0x0,0x27,0x0,0x0,0x0,0x21,0x0,0x0,0x0,0x26,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x1b,0x0,0x0,0x0,0x27,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x2b,0x0,0x0,0x0,0x2e,0x0,0x0,0x0,0x2d,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x19,0x0,0x0,0x0,0x2f,0x0,0x0,0x0,0x1b,0x0,0x0,0x0,0x57,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x2e,0x0,0x0,0x0,0x2f,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x2b,0x0,0x0,0x0,0x32,0x0,0x0,0x0,0x31,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x19,0x0,0x0,0x0,0x33,0x0,0x0,0x0,0x1b,0x0,0x0,0x0,0x57,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x32,0x0,0x0,0x0,0x33,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x35,0x0,0x0,0x0,0x30,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x36,0x0,0x0,0x0,0x34,0x0,0x0,0x0,0x39,0x0,0x6,0x0,0x7,0x0,0x0,0x0,0x37,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x35,0x0,0x0,0x0,0x36,0x0,0x0,0x0,0x3e,0x0,0x3,0x0,0x29,0x0,0x0,0x0,0x37,0x0,0x0,0x0,0xfd,0x0,0x1,0x0,0x38,0x0,0x1,0x0,0x36,0x0,0x5,0x0,0x7,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x9,0x0,0x0,0x0,0x37,0x0,0x3,0x0,0x8,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0x37,0x0,0x3,0x0,0x8,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0xf8,0x0,0x2,0x0,0xd,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0xe,0x0,0x0,0x0,0xa,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x7,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x41,0x0,0x5,0x0,0x12,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0x11,0x0,0x0,0x0,0x3d,0x0,0x4,0x0,0x6,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x13,0x0,0x0,0x0,0x50,0x0,0x7,0x0,0x7,0x0,0x0,0x0,0x15,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0x14,0x0,0x0,0x0,0xc,0x0,0x8,0x0,0x7,0x0,0x0,0x0,0x16,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x2e,0x0,0x0,0x0,0xe,0x0,0x0,0x0,0xf,0x0,0x0,0x0,0x15,0x0,0x0,0x0,0xfe,0x0,0x2,0x0,0x16,0x0,0x0,0x0,0x38,0x0,0x1,0x0,}; } // namespace ia::iae \ No newline at end of file diff --git a/Engine/Src/Imp/HPP/ResourceManager.hpp b/Engine/Src/Imp/HPP/ResourceManager.hpp index 3b3822e..fce4358 100644 --- a/Engine/Src/Imp/HPP/ResourceManager.hpp +++ b/Engine/Src/Imp/HPP/ResourceManager.hpp @@ -35,19 +35,25 @@ namespace ia::iae STATIC VOID Initialize(); STATIC VOID Terminate(); - STATIC Handle CreateImage(IN PCUINT8 encodedData, IN SIZE_T encodedDataSize); - STATIC Handle CreateImage(IN PCUINT8 rgbaData, IN INT32 width, IN INT32 height); - STATIC Handle CreateSound(IN PCUINT8 encodedData, IN SIZE_T encodedDataSize); + STATIC Handle CreateImage(IN CONST String& name, IN PCUINT8 encodedData, IN SIZE_T encodedDataSize); + STATIC Handle CreateImage(IN CONST String& name, IN PCUINT8 rgbaData, IN INT32 width, IN INT32 height); + STATIC Handle CreateSound(IN CONST String& name, IN PCUINT8 encodedData, IN SIZE_T encodedDataSize); + + STATIC Handle GetImage(IN CONST String& name); + STATIC Handle GetSound(IN CONST String& name); + STATIC String GetImageName(IN Handle handle); + STATIC String GetSoundName(IN Handle handle); + STATIC VOID DestroyImage(IN Handle image); STATIC VOID DestroySound(IN Handle sound); STATIC IVec2 GetImageExtent(IN Handle image); - STATIC Handle RescaleImage(IN Handle image, IN INT32 newWidth, IN INT32 newHeight); + STATIC Handle ResizeImage(IN Handle image, IN INT32 newWidth, IN INT32 newHeight); STATIC Handle CombineImages(IN CONST Vector &images, IN INT32 unitWidth, IN INT32 unitHeight, IN INT32 unitCountX, IN INT32 unitCountY); private: - STATIC Vector s_images; - STATIC Vector s_sounds; + STATIC Map s_images; + STATIC Map s_sounds; STATIC Map s_imageExtents; }; } // namespace ia::iae \ No newline at end of file diff --git a/Engine/Src/Imp/HPP/WorldManager.hpp b/Engine/Src/Imp/HPP/WorldManager.hpp index 677c9be..0eb1e42 100644 --- a/Engine/Src/Imp/HPP/WorldManager.hpp +++ b/Engine/Src/Imp/HPP/WorldManager.hpp @@ -17,7 +17,7 @@ #pragma once #include -#include +#include #include @@ -36,12 +36,13 @@ namespace ia::iae STATIC VOID FixedUpdate(); public: - STATIC VOID ChangeActiveScene(IN Scene* scene); + STATIC Scene *GetActiveScene(); + STATIC VOID ChangeActiveScene(IN RefPtr scene); STATIC VOID AddNodeToActiveScene(IN RefPtr node); STATIC INode *GetNodeFromActiveScene(IN CONST String &name); STATIC VOID RemoveNodeFromActiveScene(IN CONST String &name); private: - STATIC Scene *m_activeScene; + STATIC RefPtr s_activeScene; }; } // namespace ia::iae \ No newline at end of file diff --git a/Engine/Src/Inc/IAEngine/Engine.hpp b/Engine/Src/Inc/IAEngine/Engine.hpp index 772cb8e..950dca3 100644 --- a/Engine/Src/Inc/IAEngine/Engine.hpp +++ b/Engine/Src/Inc/IAEngine/Engine.hpp @@ -17,32 +17,36 @@ #pragma once #include -#include #include #include +#include #include #include +#include + namespace ia::iae { class Engine { - public: + public: // Event Functions - STATIC IAE_DLL_API Handle CreateEvent(IN CONST String& name); + STATIC IAE_DLL_API Handle CreateEvent(IN CONST String &name); STATIC IAE_DLL_API VOID DestroyEvent(IN Handle event); - STATIC IAE_DLL_API Handle GetEventByName(IN CONST String& name); + STATIC IAE_DLL_API Handle GetEventByName(IN CONST String &name); STATIC IAE_DLL_API VOID AddEventListener(IN Handle event, IN std::function callback); - STATIC IAE_DLL_API VOID AddEventListener(IN CONST String& eventName, IN std::function callback); + STATIC IAE_DLL_API VOID AddEventListener(IN CONST String &eventName, IN std::function callback); STATIC IAE_DLL_API VOID BroadcastEvent(IN Handle event); - STATIC IAE_DLL_API VOID BroadcastEvent(IN CONST String& eventName); + STATIC IAE_DLL_API VOID BroadcastEvent(IN CONST String &eventName); // Renderer Functions STATIC IAE_DLL_API Handle GetGeometry_Quad(); - STATIC IAE_DLL_API Handle CreateGeometry(IN CONST Vector& vertices, IN CONST Vector& indices); + STATIC IAE_DLL_API Handle CreateGeometry(IN CONST Vector &vertices, + IN CONST Vector &indices); STATIC IAE_DLL_API VOID DestroyGeometry(IN Handle geometry); - STATIC IAE_DLL_API VOID DrawGeometry(IN Handle handle); + STATIC IAE_DLL_API VOID DrawGeometry(IN Handle handle); + STATIC IAE_DLL_API IVec2 GetDisplayExtent(); STATIC IAE_DLL_API VOID ResizeDisplay(IN INT32 newWidth, IN INT32 newHeight); // Renderer State Functions @@ -54,7 +58,8 @@ namespace ia::iae STATIC IAE_DLL_API VOID SetRenderState_ColorOverlay(IN Color color); STATIC IAE_DLL_API VOID SetRenderState_CameraRelative(IN BOOL value); STATIC IAE_DLL_API VOID SetRenderState_Texture(IN Handle image); - STATIC IAE_DLL_API VOID SetRenderState_Transform(IN Vec2 position, IN Vec2 scale, IN FLOAT32 rotation, IN UINT8 layer, IN INT16 sortIndex); + STATIC IAE_DLL_API VOID SetRenderState_Transform(IN Vec2 position, IN Vec2 scale, IN FLOAT32 rotation, + IN UINT8 layer, IN INT16 sortIndex); // Debug Draw Functions STATIC IAE_DLL_API VOID DebugDraw_SetColor(IN Color color); @@ -64,32 +69,33 @@ namespace ia::iae STATIC IAE_DLL_API VOID DebugDraw_StrokeRect(IN Vec2 position, IN Vec2 size); // Resource Functions - STATIC IAE_DLL_API Handle CreateImageFromFile(IN CONST String& path); - STATIC IAE_DLL_API Handle CreateSoundFromFile(IN CONST String& path); - STATIC IAE_DLL_API Handle CreateImage(IN PCUINT8 encodedData, IN SIZE_T encodedDataSize); - STATIC IAE_DLL_API Handle CreateImage(IN PCUINT8 rgbaData, IN INT32 width, IN INT32 height); - STATIC IAE_DLL_API Handle CreateSound(IN PCUINT8 encodedData, IN SIZE_T encodedDataSize); + STATIC IAE_DLL_API Handle CreateSoundFromFile(IN CONST String &name, IN CONST String &path); + STATIC IAE_DLL_API Handle CreateImageFromFile(IN CONST String &name, IN CONST String &path, + IN INT32 resizeToWidth = 0, IN INT32 resizeToHeight = 0); + STATIC IAE_DLL_API Handle CreateImage(IN CONST String &name, IN PCUINT8 encodedData, IN SIZE_T encodedDataSize); + STATIC IAE_DLL_API Handle CreateImage(IN CONST String &name, IN PCUINT8 rgbaData, IN INT32 width, + IN INT32 height); + STATIC IAE_DLL_API Handle CreateSound(IN CONST String &name, IN PCUINT8 encodedData, IN SIZE_T encodedDataSize); + STATIC IAE_DLL_API Handle GetImage(IN CONST String &name); + STATIC IAE_DLL_API Handle GetSound(IN CONST String &name); STATIC IAE_DLL_API VOID DestroyImage(IN Handle image); STATIC IAE_DLL_API VOID DestroySound(IN Handle sound); STATIC IAE_DLL_API IVec2 GetImageExtent(IN Handle image); - STATIC IAE_DLL_API Handle RescaleImage(IN Handle image, IN INT32 newWidth, IN INT32 newHeight); - STATIC IAE_DLL_API Handle CombineImages(IN CONST Vector& images, IN INT32 unitWidth, IN INT32 unitHeight, IN INT32 unitCountX, IN INT32 unitCountY); + STATIC IAE_DLL_API Handle ResizeImage(IN Handle image, IN INT32 newWidth, IN INT32 newHeight); + STATIC IAE_DLL_API Handle CombineImages(IN CONST Vector &images, IN INT32 unitWidth, + IN INT32 unitHeight, IN INT32 unitCountX, IN INT32 unitCountY); // Game Functions STATIC IAE_DLL_API VOID SetTimeScale(IN FLOAT32 scale); - STATIC IAE_DLL_API VOID SetActiveCamera(IN CameraComponent* cameraComponent); + STATIC IAE_DLL_API VOID SetActiveCamera(IN CameraComponent *cameraComponent); // Scene Functions - STATIC IAE_DLL_API Handle CreateSceneFromFile(IN CONST String& path); - STATIC IAE_DLL_API Handle CreateScene(IN CONST String& sceneXML); - STATIC IAE_DLL_API Handle CreateEmptyScene(); - STATIC IAE_DLL_API VOID DestroyScene(IN Handle handle); - STATIC IAE_DLL_API VOID ChangeActiveScene(IN Handle scene); + STATIC IAE_DLL_API RefPtr CreateSceneFromFile(IN CONST String &path); + STATIC IAE_DLL_API Scene *GetActiveScene(); + STATIC IAE_DLL_API VOID ChangeActiveScene(IN RefPtr scene); STATIC IAE_DLL_API VOID AddNodeToActiveScene(IN RefPtr node); - STATIC IAE_DLL_API INode* GetNodeFromActiveScene(IN CONST String& name); - STATIC IAE_DLL_API VOID RemoveNodeFromActiveScene(IN CONST String& name); - STATIC IAE_DLL_API VOID AddNodeToScene(IN Handle scene, IN RefPtr node); - STATIC IAE_DLL_API VOID RemoveNodeFromScene(IN Handle scene, IN CONST String& name); + STATIC IAE_DLL_API INode *GetNodeFromActiveScene(IN CONST String &name); + STATIC IAE_DLL_API VOID RemoveNodeFromActiveScene(IN CONST String &name); // Input Functions STATIC IAE_DLL_API Vec2 GetInputAxis(); @@ -102,11 +108,12 @@ namespace ia::iae STATIC IAE_DLL_API BOOL IsInputActionDown(IN Handle action); STATIC IAE_DLL_API BOOL WasInputActionPressed(IN Handle action); STATIC IAE_DLL_API BOOL WasInputActionReleased(IN Handle action); - STATIC IAE_DLL_API BOOL IsInputActionDown(IN CONST String& action); - STATIC IAE_DLL_API BOOL WasInputActionPressed(IN CONST String& action); - STATIC IAE_DLL_API BOOL WasInputActionReleased(IN CONST String& action); - STATIC IAE_DLL_API Handle BindInputAction(IN CONST String& name, IN InputKey key); - STATIC IAE_DLL_API VOID BindInputAxis(IN InputKey upKey, IN InputKey downKey, IN InputKey leftKey, IN InputKey rightKey); + STATIC IAE_DLL_API BOOL IsInputActionDown(IN CONST String &action); + STATIC IAE_DLL_API BOOL WasInputActionPressed(IN CONST String &action); + STATIC IAE_DLL_API BOOL WasInputActionReleased(IN CONST String &action); + STATIC IAE_DLL_API Handle BindInputAction(IN CONST String &name, IN InputKey key); + STATIC IAE_DLL_API VOID BindInputAxis(IN InputKey upKey, IN InputKey downKey, IN InputKey leftKey, + IN InputKey rightKey); // Random Functions STATIC IAE_DLL_API FLOAT32 GetRandomFloat(); @@ -121,4 +128,4 @@ namespace ia::iae // Engine Functions STATIC IAE_DLL_API BOOL IsDebugMode(); }; -} \ No newline at end of file +} // namespace ia::iae \ No newline at end of file diff --git a/Engine/Src/Imp/HPP/Scene.hpp b/Engine/Src/Inc/IAEngine/Scene.hpp similarity index 70% rename from Engine/Src/Imp/HPP/Scene.hpp rename to Engine/Src/Inc/IAEngine/Scene.hpp index f6efd23..1e97a64 100644 --- a/Engine/Src/Imp/HPP/Scene.hpp +++ b/Engine/Src/Inc/IAEngine/Scene.hpp @@ -18,31 +18,34 @@ #include -#include - namespace ia::iae { class Scene { public: - STATIC Scene *Create(); - STATIC Scene *Create(IN CONST String &sceneXML); + STATIC IAE_DLL_API RefPtr Create(); + STATIC IAE_DLL_API RefPtr Create(IN CONST String &sceneXML); - STATIC VOID Destroy(IN Scene *scene); + public: + IAE_DLL_API VOID AddNode(IN RefPtr node); + IAE_DLL_API INode *GetNode(IN CONST String &name); + IAE_DLL_API VOID RemoveNode(IN CONST String &name); + + public: + Color &BackgroundColor() + { + return m_backgroundColor; + } + + private: + Color m_backgroundColor{0, 0, 0, 255}; + Map> m_nodes; public: VOID Draw(); VOID DebugDraw(); - + VOID FixedUpdate(); VOID Update(); - - public: - VOID AddNode(IN RefPtr node); - INode *GetNode(IN CONST String &name); - VOID RemoveNode(IN CONST String &name); - - private: - Map> m_nodes; }; } // namespace ia::iae \ No newline at end of file diff --git a/Samples/SpaceInvaders/Resources/UI/Button.png b/Samples/SpaceInvaders/Resources/UI/Button.png new file mode 100644 index 0000000..e85a539 Binary files /dev/null and b/Samples/SpaceInvaders/Resources/UI/Button.png differ diff --git a/Samples/SpaceInvaders/Resources/UI/Title.png b/Samples/SpaceInvaders/Resources/UI/Title.png new file mode 100644 index 0000000..3163b03 Binary files /dev/null and b/Samples/SpaceInvaders/Resources/UI/Title.png differ diff --git a/Samples/SpaceInvaders/Src/Imp/CPP/Game.cpp b/Samples/SpaceInvaders/Src/Imp/CPP/Game.cpp index bdd6031..6085a8c 100644 --- a/Samples/SpaceInvaders/Src/Imp/CPP/Game.cpp +++ b/Samples/SpaceInvaders/Src/Imp/CPP/Game.cpp @@ -16,19 +16,26 @@ #include -Handle g_spriteBG; -RefPtr backgroundNode; +RefPtr backgroundNode; RefPtr mainCamera; C_DECL(IA_DLL_EXPORT VOID Game_OnInitialize()) { - g_spriteBG = Engine::RescaleImage(Engine::CreateImageFromFile("Resources/Sprites/bg.png"), 800, 600); + Engine::ResizeDisplay(600, 600); + + const auto displayExtent = Engine::GetDisplayExtent(); + + Engine::CreateImageFromFile("Background", "Resources/Sprites/bg.png", displayExtent.x, displayExtent.y); + Engine::CreateImageFromFile("Stars-A", "Resources/Sprites/Stars-A.png", displayExtent.x, displayExtent.y); + Engine::CreateImageFromFile("Stars-B", "Resources/Sprites/Stars-B.png", displayExtent.x, displayExtent.y); mainCamera = MakeRefPtr("MainCamera"); Engine::SetActiveCamera(mainCamera->GetCameraComponent()); - backgroundNode = MakeRefPtr("BG"); - backgroundNode->GetTextureComponent()->SetTexture(g_spriteBG); + backgroundNode = MakeRefPtr("BG"); + backgroundNode->AddComponent()->SetTexture(Engine::GetImage("Stars-A")); + //backgroundNode->AddComponent()->SetTexture(g_spriteBGStarsA); + //backgroundNode->GetTextureComponent()->SetTexture(g_spriteBG); Engine::AddNodeToActiveScene(backgroundNode); }