From 3687a70abaaf0c6b0bf4882bda0e5203c7820e76 Mon Sep 17 00:00:00 2001 From: Isuru Samarathunga Date: Sat, 13 Sep 2025 15:09:51 +0530 Subject: [PATCH] Add GLM --- .gitmodules | 3 ++ Src/IAESandbox/imp/cpp/Ground.cpp | 4 +- Src/IAESandbox/imp/cpp/Player.cpp | 6 +-- Src/IAEngine/CMakeLists.txt | 2 +- .../imp/cpp/Components/AtlasRenderer.cpp | 8 ++-- .../imp/cpp/Components/SpriteRenderer.cpp | 12 +++--- .../imp/cpp/Components/TextureRenderer.cpp | 2 +- Src/IAEngine/imp/cpp/Input.cpp | 38 +++++++++---------- Src/IAEngine/imp/cpp/Nodes/Node.cpp | 12 +++--- Src/IAEngine/imp/cpp/Physics/Physics.cpp | 8 ++-- Src/IAEngine/imp/cpp/Rendering/Mesh/Quad.cpp | 10 ++--- .../imp/cpp/Rendering/Pipeline/UnlitMesh.cpp | 2 +- Src/IAEngine/imp/cpp/Rendering/Renderer.cpp | 14 +++---- Src/IAEngine/imp/cpp/Scene.cpp | 6 +-- Src/IAEngine/imp/cpp/Texture.cpp | 4 +- Src/IAEngine/inc/IAEngine/Base.hpp | 8 +++- .../inc/IAEngine/Components/AtlasRenderer.hpp | 2 +- .../IAEngine/Components/SpriteRenderer.hpp | 8 ++-- .../IAEngine/Components/TextureRenderer.hpp | 4 +- Src/IAEngine/inc/IAEngine/Input.hpp | 4 +- Src/IAEngine/inc/IAEngine/Nodes/Transform.hpp | 30 +++++++-------- Src/IAEngine/inc/IAEngine/Physics/Physics.hpp | 8 ++-- .../inc/IAEngine/Rendering/Mesh/Quad.hpp | 2 +- .../inc/IAEngine/Rendering/Renderer.hpp | 12 +++--- Src/IAEngine/inc/IAEngine/Rendering/Types.hpp | 4 +- Src/IAEngine/inc/IAEngine/Texture.hpp | 10 ++--- Vendor/CMakeLists.txt | 4 ++ Vendor/glm | 1 + 28 files changed, 120 insertions(+), 108 deletions(-) create mode 160000 Vendor/glm diff --git a/.gitmodules b/.gitmodules index 2bee549..fbd5ecc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -11,3 +11,6 @@ path = Dependencies/IACore url = https://git.iasoft.dev/dev0/IACore branch = main +[submodule "Vendor/glm"] + path = Vendor/glm + url = https://github.com/g-truc/glm diff --git a/Src/IAESandbox/imp/cpp/Ground.cpp b/Src/IAESandbox/imp/cpp/Ground.cpp index 2f56b4f..9e327bc 100644 --- a/Src/IAESandbox/imp/cpp/Ground.cpp +++ b/Src/IAESandbox/imp/cpp/Ground.cpp @@ -27,8 +27,8 @@ namespace ia::iae::game m_spriteRenderer->AddAnimation({.ShouldLoop = true, .Keys = {keyFrame}}); m_spriteRenderer->BakeAnimations(); - m_id2 = Physics::CreateStaticBody({GetPosition().X + 300, GetPosition().Y + 25}); - Physics::AddBoxCollider(m_id2, {600.0f, 50.0f}); + //m_id2 = Physics::CreateStaticBody({GetPosition().X + 300, GetPosition().Y + 25}); + //Physics::AddBoxCollider(m_id2, {600.0f, 50.0f}); } VOID Ground::OnRemoved() diff --git a/Src/IAESandbox/imp/cpp/Player.cpp b/Src/IAESandbox/imp/cpp/Player.cpp index 986df2e..42e1b4b 100644 --- a/Src/IAESandbox/imp/cpp/Player.cpp +++ b/Src/IAESandbox/imp/cpp/Player.cpp @@ -28,8 +28,8 @@ namespace ia::iae::game m_spriteRenderer->AddAnimation({.ShouldLoop = true, .Keys = {keyFrame}}); m_spriteRenderer->BakeAnimations(); - m_id = Physics::CreateDynamicBody({GetPosition().X + 20, GetPosition().Y + 20}); - Physics::AddBoxCollider(m_id, {40.0f, 40.0f}); + //m_id = Physics::CreateDynamicBody({GetPosition().X + 20, GetPosition().Y + 20}); + //Physics::AddBoxCollider(m_id, {40.0f, 40.0f}); } VOID Player::OnRemoved() @@ -46,6 +46,6 @@ namespace ia::iae::game VOID Player::Update() { Node::Update(); - SetLocalPosition(Physics::GetBodyPosition(m_id) - iam::Vec3f{20.0f, 20.0f, 0.0f}); + SetLocalPosition(Physics::GetBodyPosition(m_id) - glm::vec3{20.0f, 20.0f, 0.0f}); } } // namespace ia::iae::game \ No newline at end of file diff --git a/Src/IAEngine/CMakeLists.txt b/Src/IAEngine/CMakeLists.txt index e9a52b1..b0faf4e 100644 --- a/Src/IAEngine/CMakeLists.txt +++ b/Src/IAEngine/CMakeLists.txt @@ -40,5 +40,5 @@ add_library(IAEngine STATIC ${IAEngine_Sources}) target_include_directories(IAEngine PUBLIC inc/) target_include_directories(IAEngine PRIVATE imp/hpp) -target_link_libraries(IAEngine PUBLIC IACore ImGui) +target_link_libraries(IAEngine PUBLIC IACore ImGui glm::glm) target_link_libraries(IAEngine PRIVATE SDL3::SDL3 SDL3_mixer::SDL3_mixer) diff --git a/Src/IAEngine/imp/cpp/Components/AtlasRenderer.cpp b/Src/IAEngine/imp/cpp/Components/AtlasRenderer.cpp index 1b483db..ac98409 100644 --- a/Src/IAEngine/imp/cpp/Components/AtlasRenderer.cpp +++ b/Src/IAEngine/imp/cpp/Components/AtlasRenderer.cpp @@ -49,7 +49,7 @@ namespace ia::iae VOID AtlasRendererComponent::Draw() { - iam::Vec3f p{m_node->GetPosition().X, m_node->GetPosition().Y, m_node->GetPosition().Z}; + glm::vec3 p{m_node->GetPosition().x, m_node->GetPosition().y, m_node->GetPosition().z}; for (INT32 y = 0; y < m_tileGrid.TileCountY; y++) { for (INT32 x = 0; x < m_tileGrid.TileCountX; x++) @@ -57,10 +57,10 @@ namespace ia::iae const auto t = m_tileGrid.m_tileTextures[x + (y * m_tileGrid.TileCountX)]; if (t != INVALID_HANDLE) m_textures[t]->Draw(p + m_tileGrid.Position, {1.0f, 1.0f, 1.0f}, 0.0f, false, false, {1.0f, 1.0f, 1.0f, 1.0f}); - p.X += m_tileGrid.TileWidth; + p.x += m_tileGrid.TileWidth; } - p.X = m_node->GetPosition().X; - p.Y += m_tileGrid.TileHeight; + p.x = m_node->GetPosition().x; + p.y += m_tileGrid.TileHeight; } } } // namespace ia::iae \ No newline at end of file diff --git a/Src/IAEngine/imp/cpp/Components/SpriteRenderer.cpp b/Src/IAEngine/imp/cpp/Components/SpriteRenderer.cpp index 7bdba0c..364068e 100644 --- a/Src/IAEngine/imp/cpp/Components/SpriteRenderer.cpp +++ b/Src/IAEngine/imp/cpp/Components/SpriteRenderer.cpp @@ -20,8 +20,6 @@ #include -#include - namespace ia::iae { SpriteRendererComponent::SpriteRendererComponent(IN Node *node) : IComponent(node) @@ -71,7 +69,7 @@ namespace ia::iae if(!animFrame.Texture) return; animFrame.Texture->Draw( m_node->GetPosition() + animFrame.Position, m_node->GetScale() * animFrame.Scale, - m_node->GetRotation().Z + animFrame.Rotation.Z, m_isFlippedH, m_isFlippedV, animFrame.ColorOverlay); + m_node->GetRotation().z + animFrame.Rotation.z, m_isFlippedH, m_isFlippedV, animFrame.ColorOverlay); } VOID SpriteRendererComponent::UpdateAnimation() @@ -86,10 +84,10 @@ namespace ia::iae #define INTERP_PROPERTY(name) \ m_currentAnimationState.name = iam::Lerp(m_prevAnimationKeyFrame.name, m_nextAnimationKeyFrame.name, t); - INTERP_PROPERTY(Position); - INTERP_PROPERTY(Rotation); - INTERP_PROPERTY(Scale); - INTERP_PROPERTY(ColorOverlay); + //INTERP_PROPERTY(Position); [IATODO] + //INTERP_PROPERTY(Rotation); + //INTERP_PROPERTY(Scale); + //INTERP_PROPERTY(ColorOverlay); #undef INTERP_PROPERTY } diff --git a/Src/IAEngine/imp/cpp/Components/TextureRenderer.cpp b/Src/IAEngine/imp/cpp/Components/TextureRenderer.cpp index 16d4521..6de0026 100644 --- a/Src/IAEngine/imp/cpp/Components/TextureRenderer.cpp +++ b/Src/IAEngine/imp/cpp/Components/TextureRenderer.cpp @@ -33,6 +33,6 @@ namespace ia::iae { m_texture->Draw( m_node->GetPosition() + m_position, m_node->GetScale(), - m_node->GetRotation().Z, false, false, iam::Vec4f{1.0f, 1.0f, 1.0f, 1.0f}); + m_node->GetRotation().z, false, false, glm::vec4{1.0f, 1.0f, 1.0f, 1.0f}); } } // namespace ia::iae \ No newline at end of file diff --git a/Src/IAEngine/imp/cpp/Input.cpp b/Src/IAEngine/imp/cpp/Input.cpp index faf6411..8b4543f 100644 --- a/Src/IAEngine/imp/cpp/Input.cpp +++ b/Src/IAEngine/imp/cpp/Input.cpp @@ -22,27 +22,27 @@ namespace ia::iae { struct InputDirection { - iam::Vec2f Velocity{}; + glm::vec2 Velocity{}; Input::DirectionalInput Direction{Input::DirectionalInput::NONE}; }; STATIC CONSTEXPR InputDirection INPUT_TO_DIRECTION_MAP[] = { - {iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* 0 */ - {iam::Vec2f{1.0f, 0.0f}, Input::DirectionalInput::RIGHT}, /* D */ - {iam::Vec2f{-1.0f, 0.0f}, Input::DirectionalInput::LEFT}, /* A */ - {iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* A, D */ - {iam::Vec2f{0.0f, 1.0f}, Input::DirectionalInput::DOWN}, /* S */ - {iam::Vec2f{1.0f, 1.0f}, Input::DirectionalInput::DOWN_RIGHT}, /* S, D */ - {iam::Vec2f{-1.0f, 1.0f}, Input::DirectionalInput::DOWN_LEFT}, /* S, A */ - {iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* S, A, D */ - {iam::Vec2f{0.0f, -1.0f}, Input::DirectionalInput::UP}, /* W */ - {iam::Vec2f{1.0f, -1.0f}, Input::DirectionalInput::UP_RIGHT}, /* W, D */ - {iam::Vec2f{-1.0f, -1.0f}, Input::DirectionalInput::UP_LEFT}, /* W, A */ - {iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, A, D */ - {iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S */ - {iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S, D */ - {iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S, A */ - {iam::Vec2f{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S, A, D */ + {glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* 0 */ + {glm::vec2{1.0f, 0.0f}, Input::DirectionalInput::RIGHT}, /* D */ + {glm::vec2{-1.0f, 0.0f}, Input::DirectionalInput::LEFT}, /* A */ + {glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* A, D */ + {glm::vec2{0.0f, 1.0f}, Input::DirectionalInput::DOWN}, /* S */ + {glm::vec2{1.0f, 1.0f}, Input::DirectionalInput::DOWN_RIGHT}, /* S, D */ + {glm::vec2{-1.0f, 1.0f}, Input::DirectionalInput::DOWN_LEFT}, /* S, A */ + {glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* S, A, D */ + {glm::vec2{0.0f, -1.0f}, Input::DirectionalInput::UP}, /* W */ + {glm::vec2{1.0f, -1.0f}, Input::DirectionalInput::UP_RIGHT}, /* W, D */ + {glm::vec2{-1.0f, -1.0f}, Input::DirectionalInput::UP_LEFT}, /* W, A */ + {glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, A, D */ + {glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S */ + {glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S, D */ + {glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S, A */ + {glm::vec2{0.0f, 0.0f}, Input::DirectionalInput::NONE}, /* W, S, A, D */ }; BOOL Input::s_keys[256]; @@ -68,14 +68,14 @@ namespace ia::iae memcpy(s_prevKeys, s_keys, sizeof(s_prevKeys)); } - iam::Vec2f Input::GetDirectionalInput() + glm::vec2 Input::GetDirectionalInput() { return INPUT_TO_DIRECTION_MAP[(IsKeyDown(Input::KEY_W) << 3) | (IsKeyDown(Input::KEY_S) << 2) | (IsKeyDown(Input::KEY_A) << 1) | (IsKeyDown(Input::KEY_D) << 0)] .Velocity; } - iam::Vec2f Input::GetDirectionalInput(OUT DirectionalInput &direction) + glm::vec2 Input::GetDirectionalInput(OUT DirectionalInput &direction) { const auto dir = INPUT_TO_DIRECTION_MAP[(IsKeyDown(Input::KEY_W) << 3) | (IsKeyDown(Input::KEY_S) << 2) | (IsKeyDown(Input::KEY_A) << 1) | (IsKeyDown(Input::KEY_D) << 0)]; diff --git a/Src/IAEngine/imp/cpp/Nodes/Node.cpp b/Src/IAEngine/imp/cpp/Nodes/Node.cpp index 2749752..1850b0f 100644 --- a/Src/IAEngine/imp/cpp/Nodes/Node.cpp +++ b/Src/IAEngine/imp/cpp/Nodes/Node.cpp @@ -39,12 +39,12 @@ namespace ia::iae BOOL drew = false; for (auto &n : m_children) { - if (((INT32) n->GetPosition().Z) >= 0) + if (((INT32) n->GetPosition().z) >= 0) continue; n->Draw(); } - if(((INT32) GetPosition().Z) < 0) + if(((INT32) GetPosition().z) < 0) { for (auto &c : m_components) c->Draw(); @@ -54,11 +54,11 @@ namespace ia::iae { for (auto &n : m_children) { - if (((INT32) n->GetPosition().Z) != i) + if (((INT32) n->GetPosition().z) != i) continue; n->Draw(); } - if (((INT32) GetPosition().Z) == i) + if (((INT32) GetPosition().z) == i) { for (auto &c : m_components) c->Draw(); @@ -67,12 +67,12 @@ namespace ia::iae for (auto &n : m_children) { - if (((INT32) n->GetPosition().Z) < 8) + if (((INT32) n->GetPosition().z) < 8) continue; n->Draw(); } - if(((INT32) GetPosition().Z) > 8) + if(((INT32) GetPosition().z) > 8) { for (auto &c : m_components) c->Draw(); diff --git a/Src/IAEngine/imp/cpp/Physics/Physics.cpp b/Src/IAEngine/imp/cpp/Physics/Physics.cpp index e33243e..11c3d7f 100644 --- a/Src/IAEngine/imp/cpp/Physics/Physics.cpp +++ b/Src/IAEngine/imp/cpp/Physics/Physics.cpp @@ -32,21 +32,21 @@ namespace ia::iae { } - Handle Physics::CreateStaticBody(IN iam::Vec3f position) + Handle Physics::CreateStaticBody(IN glm::vec3 position) { return INVALID_HANDLE; } - Handle Physics::CreateDynamicBody(IN iam::Vec3f position) + Handle Physics::CreateDynamicBody(IN glm::vec3 position) { return INVALID_HANDLE; } - VOID Physics::AddBoxCollider(IN Handle body, IN iam::Vec3f size) + VOID Physics::AddBoxCollider(IN Handle body, IN glm::vec3 size) { } - iam::Vec3f Physics::GetBodyPosition(IN Handle body) + glm::vec3 Physics::GetBodyPosition(IN Handle body) { return {}; } diff --git a/Src/IAEngine/imp/cpp/Rendering/Mesh/Quad.cpp b/Src/IAEngine/imp/cpp/Rendering/Mesh/Quad.cpp index 4f83338..5005d29 100644 --- a/Src/IAEngine/imp/cpp/Rendering/Mesh/Quad.cpp +++ b/Src/IAEngine/imp/cpp/Rendering/Mesh/Quad.cpp @@ -25,9 +25,9 @@ namespace ia::iae VOID QuadMesh::Initialize() { - Vertex_Mesh vertices[6] = {{iam::Vec3f{-1, 1, 0}, iam::Vec2f{0, 0}}, {iam::Vec3f{1, 1, 0}, iam::Vec2f{1, 0}}, - {iam::Vec3f{1, -1, 0}, iam::Vec2f{1, 1}}, {iam::Vec3f{-1, 1, 0}, iam::Vec2f{0, 0}}, - {iam::Vec3f{1, -1, 0}, iam::Vec2f{1, 1}}, {iam::Vec3f{-1, -1, 0}, iam::Vec2f{0, 1}}}; + Vertex_Mesh vertices[6] = {{glm::vec3{-1, 1, 0}, glm::vec2{0, 0}}, {glm::vec3{1, 1, 0}, glm::vec2{1, 0}}, + {glm::vec3{1, -1, 0}, glm::vec2{1, 1}}, {glm::vec3{-1, 1, 0}, glm::vec2{0, 0}}, + {glm::vec3{1, -1, 0}, glm::vec2{1, 1}}, {glm::vec3{-1, -1, 0}, glm::vec2{0, 1}}}; g_quadMeshVertexBuffer = GPUBuffer::Create(GPUBuffer::Usage::VERTEX, &vertices, sizeof(vertices)); } @@ -37,8 +37,8 @@ namespace ia::iae g_quadMeshVertexBuffer.reset(); } - VOID QuadMesh::Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation) + VOID QuadMesh::Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation) { - Renderer::Draw(g_quadMeshVertexBuffer->GetHandle(), 6); + Renderer::Draw(position, scale, rotation, g_quadMeshVertexBuffer->GetHandle(), 6); } } // namespace ia::iae \ No newline at end of file diff --git a/Src/IAEngine/imp/cpp/Rendering/Pipeline/UnlitMesh.cpp b/Src/IAEngine/imp/cpp/Rendering/Pipeline/UnlitMesh.cpp index 7d57776..f60a44b 100644 --- a/Src/IAEngine/imp/cpp/Rendering/Pipeline/UnlitMesh.cpp +++ b/Src/IAEngine/imp/cpp/Rendering/Pipeline/UnlitMesh.cpp @@ -51,7 +51,7 @@ namespace ia::iae {.location = 1, .buffer_slot = 0, .format = SDL_GPU_VERTEXELEMENTFORMAT_FLOAT2, - .offset = sizeof(iam::Vec3f)}}; + .offset = sizeof(glm::vec3)}}; SDL_GPUGraphicsPipelineCreateInfo createInfo = { .vertex_shader = (SDL_GPUShader *) vertexShader, .fragment_shader = (SDL_GPUShader *) pixelShader, diff --git a/Src/IAEngine/imp/cpp/Rendering/Renderer.cpp b/Src/IAEngine/imp/cpp/Rendering/Renderer.cpp index 164a87d..4636c12 100644 --- a/Src/IAEngine/imp/cpp/Rendering/Renderer.cpp +++ b/Src/IAEngine/imp/cpp/Rendering/Renderer.cpp @@ -117,7 +117,7 @@ namespace ia::iae SDL_DestroyGPUDevice(g_gpuDevice); } - VOID Renderer::AddDebugUIWindow(IN PCCHAR title, IN CONST iam::Vec2f &position, IN CONST iam::Vec2f &size, + VOID Renderer::AddDebugUIWindow(IN PCCHAR title, IN CONST glm::vec2 &position, IN CONST glm::vec2 &size, IN std::function contentDrawCallback) { s_debugUIWindows.pushBack(DebugUIWindow{title, position, size, contentDrawCallback}); @@ -131,8 +131,8 @@ namespace ia::iae for (const auto &w : s_debugUIWindows) { ImGui::Begin(w.Title); - ImGui::SetWindowPos({w.Position.X, w.Position.Y}); - ImGui::SetWindowSize({w.Size.X, w.Size.Y}); + ImGui::SetWindowPos({w.Position.x, w.Position.y}); + ImGui::SetWindowSize({w.Size.x, w.Size.y}); w.ContentDrawCallback(); ImGui::End(); } @@ -179,11 +179,11 @@ namespace ia::iae SDL_SubmitGPUCommandBuffer(g_cmdBuffer); } - VOID Renderer::BindTexture(IN Handle handle, IN BOOL flipV, IN BOOL flipH, IN CONST iam::Vec4f &colorOverlay) + VOID Renderer::BindTexture(IN Handle handle, IN BOOL flipV, IN BOOL flipH, IN CONST glm::vec4 &colorOverlay) { STATIC struct { - iam::Vec4f colorOverlay; + glm::vec4 colorOverlay; UINT32 flipV; UINT32 flipH; } textureState; @@ -195,14 +195,14 @@ namespace ia::iae SDL_PushGPUFragmentUniformData(g_cmdBuffer, 0, &textureState, sizeof(textureState)); } - VOID Renderer::Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN INT32 vertexCount) + VOID Renderer::Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN INT32 vertexCount) { SDL_GPUBufferBinding bindings[] = {{.buffer = (SDL_GPUBuffer *) vertexBufferHandle, .offset = 0}}; SDL_BindGPUVertexBuffers(g_renderPass, 0, bindings, 1); SDL_DrawGPUPrimitives(g_renderPass, vertexCount, 1, 0, 0); } - VOID Renderer::Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN Handle indexBufferHandle, IN INT32 indexCount) + VOID Renderer::Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN Handle indexBufferHandle, IN INT32 indexCount) { SDL_GPUBufferBinding bindings[] = {{.buffer = (SDL_GPUBuffer *) vertexBufferHandle, .offset = 0}, {.buffer = (SDL_GPUBuffer *) indexBufferHandle, .offset = 0}}; diff --git a/Src/IAEngine/imp/cpp/Scene.cpp b/Src/IAEngine/imp/cpp/Scene.cpp index 6719fa1..e78fa4d 100644 --- a/Src/IAEngine/imp/cpp/Scene.cpp +++ b/Src/IAEngine/imp/cpp/Scene.cpp @@ -30,7 +30,7 @@ namespace ia::iae { for (auto &n : m_nodes) { - if (((INT32) n->GetPosition().Z) >= 0) + if (((INT32) n->GetPosition().z) >= 0) continue; n->Draw(); } @@ -39,7 +39,7 @@ namespace ia::iae { for (auto &n : m_nodes) { - if (((INT32) n->GetPosition().Z) != i) + if (((INT32) n->GetPosition().z) != i) continue; n->Draw(); } @@ -47,7 +47,7 @@ namespace ia::iae for (auto &n : m_nodes) { - if (((INT32) n->GetPosition().Z) < 8) + if (((INT32) n->GetPosition().z) < 8) continue; n->Draw(); } diff --git a/Src/IAEngine/imp/cpp/Texture.cpp b/Src/IAEngine/imp/cpp/Texture.cpp index e7180a1..31844da 100644 --- a/Src/IAEngine/imp/cpp/Texture.cpp +++ b/Src/IAEngine/imp/cpp/Texture.cpp @@ -31,8 +31,8 @@ namespace ia::iae { } - VOID Texture::Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation, IN BOOL flipH, - IN BOOL flipV, IN CONST iam::Vec4f &colorOverlay) CONST + VOID Texture::Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation, IN BOOL flipH, + IN BOOL flipV, IN CONST glm::vec4 &colorOverlay) CONST { Renderer::BindTexture(m_handle, flipV, flipH, colorOverlay); QuadMesh::Draw(position, m_size * scale, rotation); diff --git a/Src/IAEngine/inc/IAEngine/Base.hpp b/Src/IAEngine/inc/IAEngine/Base.hpp index d164cc5..2b46103 100644 --- a/Src/IAEngine/inc/IAEngine/Base.hpp +++ b/Src/IAEngine/inc/IAEngine/Base.hpp @@ -22,7 +22,13 @@ #include #include -#include +#include +#include +#include +#include +#include // glm::translate, glm::rotate, glm::scale +#include // glm::perspective +#include // glm::pi #define IAE_LOG_TAG "IAE" diff --git a/Src/IAEngine/inc/IAEngine/Components/AtlasRenderer.hpp b/Src/IAEngine/inc/IAEngine/Components/AtlasRenderer.hpp index 56507d6..5380f08 100644 --- a/Src/IAEngine/inc/IAEngine/Components/AtlasRenderer.hpp +++ b/Src/IAEngine/inc/IAEngine/Components/AtlasRenderer.hpp @@ -26,7 +26,7 @@ namespace ia::iae public: struct TileGrid { - iam::Vec3f Position{}; + glm::vec3 Position{}; INT32 TileWidth{}; INT32 TileHeight{}; diff --git a/Src/IAEngine/inc/IAEngine/Components/SpriteRenderer.hpp b/Src/IAEngine/inc/IAEngine/Components/SpriteRenderer.hpp index 075a0da..c74c592 100644 --- a/Src/IAEngine/inc/IAEngine/Components/SpriteRenderer.hpp +++ b/Src/IAEngine/inc/IAEngine/Components/SpriteRenderer.hpp @@ -27,10 +27,10 @@ namespace ia::iae struct AnimationKeyFrame { INT32 Duration{100}; - iam::Vec3f Position{}; - iam::Vec3f Rotation{}; - iam::Vec3f Scale{1.0f, 1.0f, 1.0f}; - iam::Vec4f ColorOverlay{1.0f, 1.0f, 1.0f, 1.0f}; + glm::vec3 Position{}; + glm::vec3 Rotation{}; + glm::vec3 Scale{1.0f, 1.0f, 1.0f}; + glm::vec4 ColorOverlay{1.0f, 1.0f, 1.0f, 1.0f}; BOOL ShouldInterpolate{}; RefPtr Texture; }; diff --git a/Src/IAEngine/inc/IAEngine/Components/TextureRenderer.hpp b/Src/IAEngine/inc/IAEngine/Components/TextureRenderer.hpp index 320087a..f8ec03b 100644 --- a/Src/IAEngine/inc/IAEngine/Components/TextureRenderer.hpp +++ b/Src/IAEngine/inc/IAEngine/Components/TextureRenderer.hpp @@ -31,7 +31,7 @@ namespace ia::iae return m_texture; } - iam::Vec3f &Position() + glm::vec3 &Position() { return m_position; } @@ -41,7 +41,7 @@ namespace ia::iae VOID Update(); private: - iam::Vec3f m_position; + glm::vec3 m_position; RefPtr m_texture; }; } // namespace ia::iae \ No newline at end of file diff --git a/Src/IAEngine/inc/IAEngine/Input.hpp b/Src/IAEngine/inc/IAEngine/Input.hpp index ac3cf4c..81fcf6f 100644 --- a/Src/IAEngine/inc/IAEngine/Input.hpp +++ b/Src/IAEngine/inc/IAEngine/Input.hpp @@ -285,8 +285,8 @@ namespace ia::iae return s_prevKeys[key] && !s_keys[key]; } - STATIC iam::Vec2f GetDirectionalInput(); - STATIC iam::Vec2f GetDirectionalInput(OUT DirectionalInput& direction); + STATIC glm::vec2 GetDirectionalInput(); + STATIC glm::vec2 GetDirectionalInput(OUT DirectionalInput& direction); private: STATIC BOOL s_keys[256]; diff --git a/Src/IAEngine/inc/IAEngine/Nodes/Transform.hpp b/Src/IAEngine/inc/IAEngine/Nodes/Transform.hpp index 47a1286..36e84d5 100644 --- a/Src/IAEngine/inc/IAEngine/Nodes/Transform.hpp +++ b/Src/IAEngine/inc/IAEngine/Nodes/Transform.hpp @@ -24,51 +24,51 @@ namespace ia::iae class Transform { public: - VOID SetLocalPosition(IN CONST iam::Vec3f &v) + VOID SetLocalPosition(IN CONST glm::vec3 &v) { m_local.Position = v; RecalculatePosition(); } - VOID SetLocalScale(IN CONST iam::Vec3f &v) + VOID SetLocalScale(IN CONST glm::vec3 &v) { m_local.Scale = v; RecalculateScale(); } - VOID SetLocalRotation(IN CONST iam::Vec3f &v) + VOID SetLocalRotation(IN CONST glm::vec3 &v) { m_local.Rotation = v; RecalculateRotation(); } public: - CONST iam::Vec3f &GetPosition() CONST + CONST glm::vec3 &GetPosition() CONST { return m_global.Position; } - CONST iam::Vec3f &GetScale() CONST + CONST glm::vec3 &GetScale() CONST { return m_global.Scale; } - CONST iam::Vec3f &GetRotation() CONST + CONST glm::vec3 &GetRotation() CONST { return m_global.Rotation; } - CONST iam::Vec3f &GetLocalPosition() CONST + CONST glm::vec3 &GetLocalPosition() CONST { return m_local.Position; } - CONST iam::Vec3f &GetLocalScale() CONST + CONST glm::vec3 &GetLocalScale() CONST { return m_local.Scale; } - CONST iam::Vec3f &GetLocalRotation() CONST + CONST glm::vec3 &GetLocalRotation() CONST { return m_local.Rotation; } @@ -80,21 +80,21 @@ namespace ia::iae protected: VOID RecalculatePosition() { - m_global.Position = (m_parent ? m_parent->GetPosition() : iam::Vec3f{}) + m_local.Position; + m_global.Position = (m_parent ? m_parent->GetPosition() : glm::vec3{}) + m_local.Position; for (auto &c : m_children) c->RecalculatePosition(); } VOID RecalculateRotation() { - m_global.Rotation = (m_parent ? m_parent->GetRotation() : iam::Vec3f{}) + m_local.Rotation; + m_global.Rotation = (m_parent ? m_parent->GetRotation() : glm::vec3{}) + m_local.Rotation; for (auto &c : m_children) c->RecalculateRotation(); } VOID RecalculateScale() { - m_global.Scale = (m_parent ? m_parent->GetScale() : iam::Vec3f{}) + m_local.Scale; + m_global.Scale = (m_parent ? m_parent->GetScale() : glm::vec3{}) + m_local.Scale; for (auto &c : m_children) c->RecalculateScale(); } @@ -102,9 +102,9 @@ namespace ia::iae private: struct { - iam::Vec3f Position{0.0f, 0.0f, 0.0f}; - iam::Vec3f Rotation{0.0f, 0.0f, 0.0f}; - iam::Vec3f Scale{1.0f, 1.0f, 1.0f}; + glm::vec3 Position{0.0f, 0.0f, 0.0f}; + glm::vec3 Rotation{0.0f, 0.0f, 0.0f}; + glm::vec3 Scale{1.0f, 1.0f, 1.0f}; } m_local{}, m_global{}; }; } // namespace ia::iae \ No newline at end of file diff --git a/Src/IAEngine/inc/IAEngine/Physics/Physics.hpp b/Src/IAEngine/inc/IAEngine/Physics/Physics.hpp index aeb50d1..105caae 100644 --- a/Src/IAEngine/inc/IAEngine/Physics/Physics.hpp +++ b/Src/IAEngine/inc/IAEngine/Physics/Physics.hpp @@ -28,10 +28,10 @@ namespace ia::iae STATIC VOID Update(); - STATIC Handle CreateStaticBody(IN iam::Vec3f position); - STATIC Handle CreateDynamicBody(IN iam::Vec3f position); - STATIC VOID AddBoxCollider(IN Handle body, IN iam::Vec3f size); + STATIC Handle CreateStaticBody(IN glm::vec3 position); + STATIC Handle CreateDynamicBody(IN glm::vec3 position); + STATIC VOID AddBoxCollider(IN Handle body, IN glm::vec3 size); - STATIC iam::Vec3f GetBodyPosition(IN Handle body); + STATIC glm::vec3 GetBodyPosition(IN Handle body); }; } \ No newline at end of file diff --git a/Src/IAEngine/inc/IAEngine/Rendering/Mesh/Quad.hpp b/Src/IAEngine/inc/IAEngine/Rendering/Mesh/Quad.hpp index 11ca913..35240c1 100644 --- a/Src/IAEngine/inc/IAEngine/Rendering/Mesh/Quad.hpp +++ b/Src/IAEngine/inc/IAEngine/Rendering/Mesh/Quad.hpp @@ -26,6 +26,6 @@ namespace ia::iae STATIC VOID Initialize(); STATIC VOID Terminate(); - STATIC VOID Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation); + STATIC VOID Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation); }; } // namespace ia::iae \ No newline at end of file diff --git a/Src/IAEngine/inc/IAEngine/Rendering/Renderer.hpp b/Src/IAEngine/inc/IAEngine/Rendering/Renderer.hpp index 6f73d8b..9bc2d2a 100644 --- a/Src/IAEngine/inc/IAEngine/Rendering/Renderer.hpp +++ b/Src/IAEngine/inc/IAEngine/Rendering/Renderer.hpp @@ -27,8 +27,8 @@ namespace ia::iae struct DebugUIWindow { PCCHAR Title{""}; - iam::Vec2f Position{}; - iam::Vec2f Size{}; + glm::vec2 Position{}; + glm::vec2 Size{}; std::function ContentDrawCallback{}; }; @@ -37,17 +37,17 @@ namespace ia::iae STATIC VOID Terminate(); public: - STATIC VOID AddDebugUIWindow(IN PCCHAR title, IN CONST iam::Vec2f &position, IN CONST iam::Vec2f &size, + STATIC VOID AddDebugUIWindow(IN PCCHAR title, IN CONST glm::vec2 &position, IN CONST glm::vec2 &size, IN std::function contentDrawCallback); public: STATIC VOID BeginFrame(); STATIC VOID EndFrame(); - STATIC VOID BindTexture(IN Handle handle, IN BOOL flipV, IN BOOL flipH, IN CONST iam::Vec4f& colorOverlay); + STATIC VOID BindTexture(IN Handle handle, IN BOOL flipV, IN BOOL flipH, IN CONST glm::vec4& colorOverlay); - STATIC VOID Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN INT32 vertexCount); - STATIC VOID Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN Handle indexBufferHandle, IN INT32 indexCount); + STATIC VOID Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN INT32 vertexCount); + STATIC VOID Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation, IN Handle vertexBufferHandle, IN Handle indexBufferHandle, IN INT32 indexCount); public: STATIC INT32 Width() diff --git a/Src/IAEngine/inc/IAEngine/Rendering/Types.hpp b/Src/IAEngine/inc/IAEngine/Rendering/Types.hpp index cb64285..f72c43c 100644 --- a/Src/IAEngine/inc/IAEngine/Rendering/Types.hpp +++ b/Src/IAEngine/inc/IAEngine/Rendering/Types.hpp @@ -22,8 +22,8 @@ namespace ia::iae { struct Vertex_Mesh { - iam::Vec3f Position{}; - iam::Vec2f UV{}; + glm::vec3 Position{}; + glm::vec2 UV{}; }; diff --git a/Src/IAEngine/inc/IAEngine/Texture.hpp b/Src/IAEngine/inc/IAEngine/Texture.hpp index c53eef8..0329ab2 100644 --- a/Src/IAEngine/inc/IAEngine/Texture.hpp +++ b/Src/IAEngine/inc/IAEngine/Texture.hpp @@ -27,22 +27,22 @@ namespace ia::iae ~Texture(); public: - VOID Draw(IN CONST iam::Vec3f &position, IN CONST iam::Vec3f &scale, IN FLOAT32 rotation, IN BOOL flipH, - IN BOOL flipV, IN CONST iam::Vec4f &colorOverlay) CONST; + VOID Draw(IN CONST glm::vec3 &position, IN CONST glm::vec3 &scale, IN FLOAT32 rotation, IN BOOL flipH, + IN BOOL flipV, IN CONST glm::vec4 &colorOverlay) CONST; public: INT32 GetWidth() CONST { - return (INT32)m_size.X; + return (INT32)m_size.x; } INT32 GetHeight() CONST { - return (INT32)m_size.Y; + return (INT32)m_size.y; } private: CONST Handle m_handle{}; - CONST iam::Vec3f m_size; + CONST glm::vec3 m_size; }; } // namespace ia::iae \ No newline at end of file diff --git a/Vendor/CMakeLists.txt b/Vendor/CMakeLists.txt index 3539e36..08c0d8d 100644 --- a/Vendor/CMakeLists.txt +++ b/Vendor/CMakeLists.txt @@ -37,3 +37,7 @@ target_include_directories( "imgui/backends" ) +# ----------------------------------------------- +# GLM +# ----------------------------------------------- +add_subdirectory(glm/) diff --git a/Vendor/glm b/Vendor/glm new file mode 160000 index 0000000..2d4c4b4 --- /dev/null +++ b/Vendor/glm @@ -0,0 +1 @@ +Subproject commit 2d4c4b4dd31fde06cfffad7915c2b3006402322f