From 99e1b4f8d69abc92fecfc758535406650cfa1893 Mon Sep 17 00:00:00 2001 From: sippeangelo Date: Thu, 13 Mar 2014 01:32:09 +0100 Subject: [PATCH] Transform.Scale --- Escape-the-Dawn/Components/Transform.h | 4 ++++ Escape-the-Dawn/GameWorld.cpp | 2 +- Escape-the-Dawn/Renderer.cpp | 7 +++---- Escape-the-Dawn/Renderer.h | 2 +- Escape-the-Dawn/Systems/RenderSystem.cpp | 5 +++-- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Escape-the-Dawn/Components/Transform.h b/Escape-the-Dawn/Components/Transform.h index 9f2df7a..5d20a67 100644 --- a/Escape-the-Dawn/Components/Transform.h +++ b/Escape-the-Dawn/Components/Transform.h @@ -9,9 +9,13 @@ namespace Components struct Transform : Component { + Transform() + : Scale(glm::vec3(1.f)) { } + glm::vec3 Position; glm::quat Orientation; glm::vec3 Velocity; + glm::vec3 Scale; }; } diff --git a/Escape-the-Dawn/GameWorld.cpp b/Escape-the-Dawn/GameWorld.cpp index f3c027a..f985944 100644 --- a/Escape-the-Dawn/GameWorld.cpp +++ b/Escape-the-Dawn/GameWorld.cpp @@ -87,10 +87,10 @@ void GameWorld::Initialize() m_Player = CreateEntity(); transform = AddComponent(m_Player, "Transform"); transform->Position = glm::vec3(0.f, 4.f, 0.f); + transform->Scale = glm::vec3(2.0f); model = AddComponent(m_Player, "Model"); model->ModelFile = "ship.obj"; auto bounds = AddComponent(m_Player, "Bounds"); - bounds->Origin = glm::vec3(0.f); bounds->VolumeVector = glm::vec3(1.0f, 2.0f, 3.0f); ent = CreateEntity(); diff --git a/Escape-the-Dawn/Renderer.cpp b/Escape-the-Dawn/Renderer.cpp index 1c5aa20..0948515 100644 --- a/Escape-the-Dawn/Renderer.cpp +++ b/Escape-the-Dawn/Renderer.cpp @@ -285,12 +285,11 @@ void Renderer::AddTextToDraw() //Add to draw shit vector } -void Renderer::AddModelToDraw(std::shared_ptr _model, glm::vec3 _position, glm::quat _orientation) +void Renderer::AddModelToDraw(std::shared_ptr model, glm::vec3 position, glm::quat orientation, glm::vec3 scale) { - glm::mat4 RotationMatrix = glm::toMat4(_orientation); - glm::mat4 ModelMatrix = glm::translate(glm::mat4(), _position) * RotationMatrix ; + glm::mat4 ModelMatrix = glm::translate(glm::mat4(), position) * glm::toMat4(orientation) * glm::scale(scale); // You can now use ModelMatrix to build the MVP matrix - ModelsToRender.push_back(new ModelData(_model, ModelMatrix)); + ModelsToRender.push_back(new ModelData(model, ModelMatrix)); } void Renderer::AddPointLightToDraw( diff --git a/Escape-the-Dawn/Renderer.h b/Escape-the-Dawn/Renderer.h index 7ec2264..1f4ef77 100644 --- a/Escape-the-Dawn/Renderer.h +++ b/Escape-the-Dawn/Renderer.h @@ -54,7 +54,7 @@ public: void Draw(double dt); void DrawText(); - void AddModelToDraw(std::shared_ptr model, glm::vec3 position, glm::quat orientation); + void AddModelToDraw(std::shared_ptr model, glm::vec3 position, glm::quat orientation, glm::vec3 scale); void AddTextToDraw(); void AddPointLightToDraw( glm::vec3 _position, diff --git a/Escape-the-Dawn/Systems/RenderSystem.cpp b/Escape-the-Dawn/Systems/RenderSystem.cpp index 1c3fb20..c113486 100644 --- a/Escape-the-Dawn/Systems/RenderSystem.cpp +++ b/Escape-the-Dawn/Systems/RenderSystem.cpp @@ -25,7 +25,7 @@ void Systems::RenderSystem::UpdateEntity( double dt, EntityID entity, EntityID p } auto model = m_CachedModels[modelComponent->ModelFile]; - m_Renderer->AddModelToDraw(model, transformComponent->Position, transformComponent->Orientation); + m_Renderer->AddModelToDraw(model, transformComponent->Position, transformComponent->Orientation, transformComponent->Scale); } // Debug draw bounds @@ -33,7 +33,8 @@ void Systems::RenderSystem::UpdateEntity( double dt, EntityID entity, EntityID p auto bounds = m_World->GetComponent(entity, "Bounds"); if (bounds != nullptr) { glm::vec3 origin = transformComponent->Position + bounds->Origin; - m_Renderer->AddAABBToDraw(origin, bounds->VolumeVector); + glm::vec3 volumeVector = transformComponent->Scale * bounds->VolumeVector; + m_Renderer->AddAABBToDraw(origin, volumeVector); } #endif