From ee8e73816b9134b155928b3a88c4b27078ef0973 Mon Sep 17 00:00:00 2001 From: Erik Lauterwald <92889691+erikrl2@users.noreply.github.com> Date: Sat, 11 Jun 2022 18:57:14 +0200 Subject: [PATCH 1/5] Fixed physics collider offset location --- Hazel/src/Hazel/Scene/Components.h | 1 + Hazel/src/Hazel/Scene/Scene.cpp | 2 +- Hazelnut/src/EditorLayer.cpp | 10 ++++++---- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Hazel/src/Hazel/Scene/Components.h b/Hazel/src/Hazel/Scene/Components.h index 0445b42f0..e9a133340 100644 --- a/Hazel/src/Hazel/Scene/Components.h +++ b/Hazel/src/Hazel/Scene/Components.h @@ -120,6 +120,7 @@ namespace Hazel { { glm::vec2 Offset = { 0.0f, 0.0f }; glm::vec2 Size = { 0.5f, 0.5f }; + float Rotation = 0.0f; // TODO(Yan): move into physics material in the future maybe float Density = 1.0f; diff --git a/Hazel/src/Hazel/Scene/Scene.cpp b/Hazel/src/Hazel/Scene/Scene.cpp index 698f00c23..169d23f8c 100644 --- a/Hazel/src/Hazel/Scene/Scene.cpp +++ b/Hazel/src/Hazel/Scene/Scene.cpp @@ -140,7 +140,7 @@ namespace Hazel { auto& bc2d = entity.GetComponent(); b2PolygonShape boxShape; - boxShape.SetAsBox(bc2d.Size.x * transform.Scale.x, bc2d.Size.y * transform.Scale.y); + boxShape.SetAsBox(bc2d.Size.x * transform.Scale.x, bc2d.Size.y * transform.Scale.y, b2Vec2(bc2d.Offset.x, bc2d.Offset.y), bc2d.Rotation); b2FixtureDef fixtureDef; fixtureDef.shape = &boxShape; diff --git a/Hazelnut/src/EditorLayer.cpp b/Hazelnut/src/EditorLayer.cpp index fd0185e40..47950f2c5 100644 --- a/Hazelnut/src/EditorLayer.cpp +++ b/Hazelnut/src/EditorLayer.cpp @@ -497,11 +497,12 @@ namespace Hazel { { auto [tc, bc2d] = view.get(entity); - glm::vec3 translation = tc.Translation + glm::vec3(bc2d.Offset, 0.001f); glm::vec3 scale = tc.Scale * glm::vec3(bc2d.Size * 2.0f, 1.0f); - glm::mat4 transform = glm::translate(glm::mat4(1.0f), translation) + glm::mat4 transform = glm::translate(glm::mat4(1.0f), tc.Translation) * glm::rotate(glm::mat4(1.0f), tc.Rotation.z, glm::vec3(0.0f, 0.0f, 1.0f)) + * glm::translate(glm::mat4(1.0f), glm::vec3(bc2d.Offset, 0.001f)) + * glm::rotate(glm::mat4(1.0f), bc2d.Rotation, glm::vec3(0.0f, 0.0f, 1.0f)) * glm::scale(glm::mat4(1.0f), scale); Renderer2D::DrawRect(transform, glm::vec4(0, 1, 0, 1)); @@ -515,10 +516,11 @@ namespace Hazel { { auto [tc, cc2d] = view.get(entity); - glm::vec3 translation = tc.Translation + glm::vec3(cc2d.Offset, 0.001f); glm::vec3 scale = tc.Scale * glm::vec3(cc2d.Radius * 2.0f); - glm::mat4 transform = glm::translate(glm::mat4(1.0f), translation) + glm::mat4 transform = glm::translate(glm::mat4(1.0f), tc.Translation) + * glm::rotate(glm::mat4(1.0f), tc.Rotation.z, glm::vec3(0.0f, 0.0f, 1.0f)) + * glm::translate(glm::mat4(1.0f), glm::vec3(cc2d.Offset, 0.001f)) * glm::scale(glm::mat4(1.0f), scale); Renderer2D::DrawCircle(transform, glm::vec4(0, 1, 0, 1), 0.01f); From 6ab928af5814dbea4fee62c6db2ead90616f94da Mon Sep 17 00:00:00 2001 From: Erik L <92889691+erikrl2@users.noreply.github.com> Date: Sun, 19 Jun 2022 16:46:06 +0200 Subject: [PATCH 2/5] Fixed circle collider visualizer scaling (the collider radius is only dependent on the entity's x-scale) --- Hazelnut/src/EditorLayer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Hazelnut/src/EditorLayer.cpp b/Hazelnut/src/EditorLayer.cpp index 99375c46e..4afc2e8e7 100644 --- a/Hazelnut/src/EditorLayer.cpp +++ b/Hazelnut/src/EditorLayer.cpp @@ -552,7 +552,7 @@ namespace Hazel { glm::mat4 transform = glm::translate(glm::mat4(1.0f), tc.Translation) * glm::rotate(glm::mat4(1.0f), tc.Rotation.z, glm::vec3(0.0f, 0.0f, 1.0f)) * glm::translate(glm::mat4(1.0f), glm::vec3(cc2d.Offset, 0.001f)) - * glm::scale(glm::mat4(1.0f), scale); + * glm::scale(glm::mat4(1.0f), glm::vec3(scale.x, scale.x, scale.z)); Renderer2D::DrawCircle(transform, glm::vec4(0, 1, 0, 1), 0.01f); } From 3e0855157987441d12ad655b0c4707b03401fd65 Mon Sep 17 00:00:00 2001 From: Erik Lauterwald <92889691+erikrl2@users.noreply.github.com> Date: Sat, 11 Jun 2022 18:57:14 +0200 Subject: [PATCH 3/5] Fixed physics collider offset location --- Hazel/src/Hazel/Scene/Components.h | 1 + Hazel/src/Hazel/Scene/Scene.cpp | 2 +- Hazelnut/src/EditorLayer.cpp | 10 ++++++---- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Hazel/src/Hazel/Scene/Components.h b/Hazel/src/Hazel/Scene/Components.h index 049a80dd3..fe21f071b 100644 --- a/Hazel/src/Hazel/Scene/Components.h +++ b/Hazel/src/Hazel/Scene/Components.h @@ -120,6 +120,7 @@ namespace Hazel { { glm::vec2 Offset = { 0.0f, 0.0f }; glm::vec2 Size = { 0.5f, 0.5f }; + float Rotation = 0.0f; // TODO(Yan): move into physics material in the future maybe float Density = 1.0f; diff --git a/Hazel/src/Hazel/Scene/Scene.cpp b/Hazel/src/Hazel/Scene/Scene.cpp index cf4d784cd..1a481eaf9 100644 --- a/Hazel/src/Hazel/Scene/Scene.cpp +++ b/Hazel/src/Hazel/Scene/Scene.cpp @@ -332,7 +332,7 @@ namespace Hazel { auto& bc2d = entity.GetComponent(); b2PolygonShape boxShape; - boxShape.SetAsBox(bc2d.Size.x * transform.Scale.x, bc2d.Size.y * transform.Scale.y); + boxShape.SetAsBox(bc2d.Size.x * transform.Scale.x, bc2d.Size.y * transform.Scale.y, b2Vec2(bc2d.Offset.x, bc2d.Offset.y), bc2d.Rotation); b2FixtureDef fixtureDef; fixtureDef.shape = &boxShape; diff --git a/Hazelnut/src/EditorLayer.cpp b/Hazelnut/src/EditorLayer.cpp index af3f15f54..12afd0591 100644 --- a/Hazelnut/src/EditorLayer.cpp +++ b/Hazelnut/src/EditorLayer.cpp @@ -528,11 +528,12 @@ namespace Hazel { { auto [tc, bc2d] = view.get(entity); - glm::vec3 translation = tc.Translation + glm::vec3(bc2d.Offset, 0.001f); glm::vec3 scale = tc.Scale * glm::vec3(bc2d.Size * 2.0f, 1.0f); - glm::mat4 transform = glm::translate(glm::mat4(1.0f), translation) + glm::mat4 transform = glm::translate(glm::mat4(1.0f), tc.Translation) * glm::rotate(glm::mat4(1.0f), tc.Rotation.z, glm::vec3(0.0f, 0.0f, 1.0f)) + * glm::translate(glm::mat4(1.0f), glm::vec3(bc2d.Offset, 0.001f)) + * glm::rotate(glm::mat4(1.0f), bc2d.Rotation, glm::vec3(0.0f, 0.0f, 1.0f)) * glm::scale(glm::mat4(1.0f), scale); Renderer2D::DrawRect(transform, glm::vec4(0, 1, 0, 1)); @@ -546,10 +547,11 @@ namespace Hazel { { auto [tc, cc2d] = view.get(entity); - glm::vec3 translation = tc.Translation + glm::vec3(cc2d.Offset, 0.001f); glm::vec3 scale = tc.Scale * glm::vec3(cc2d.Radius * 2.0f); - glm::mat4 transform = glm::translate(glm::mat4(1.0f), translation) + glm::mat4 transform = glm::translate(glm::mat4(1.0f), tc.Translation) + * glm::rotate(glm::mat4(1.0f), tc.Rotation.z, glm::vec3(0.0f, 0.0f, 1.0f)) + * glm::translate(glm::mat4(1.0f), glm::vec3(cc2d.Offset, 0.001f)) * glm::scale(glm::mat4(1.0f), scale); Renderer2D::DrawCircle(transform, glm::vec4(0, 1, 0, 1), 0.01f); From 7933f16c72842a03adf931fca461661684594178 Mon Sep 17 00:00:00 2001 From: Erik L <92889691+erikrl2@users.noreply.github.com> Date: Sun, 19 Jun 2022 16:46:06 +0200 Subject: [PATCH 4/5] Fixed circle collider visualizer scaling (the collider radius is only dependent on the entity's x-scale) --- Hazelnut/src/EditorLayer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Hazelnut/src/EditorLayer.cpp b/Hazelnut/src/EditorLayer.cpp index 12afd0591..63fc85642 100644 --- a/Hazelnut/src/EditorLayer.cpp +++ b/Hazelnut/src/EditorLayer.cpp @@ -552,7 +552,7 @@ namespace Hazel { glm::mat4 transform = glm::translate(glm::mat4(1.0f), tc.Translation) * glm::rotate(glm::mat4(1.0f), tc.Rotation.z, glm::vec3(0.0f, 0.0f, 1.0f)) * glm::translate(glm::mat4(1.0f), glm::vec3(cc2d.Offset, 0.001f)) - * glm::scale(glm::mat4(1.0f), scale); + * glm::scale(glm::mat4(1.0f), glm::vec3(scale.x, scale.x, scale.z)); Renderer2D::DrawCircle(transform, glm::vec4(0, 1, 0, 1), 0.01f); } From 921ebd41715cc68656e1795dc31bf5f52ce8b5da Mon Sep 17 00:00:00 2001 From: Erik <92889691+erikrl2@users.noreply.github.com> Date: Mon, 4 Jul 2022 12:27:04 +0200 Subject: [PATCH 5/5] Remove rotation --- Hazel/src/Hazel/Scene/Components.h | 1 - Hazel/src/Hazel/Scene/Scene.cpp | 2 +- Hazelnut/src/EditorLayer.cpp | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Hazel/src/Hazel/Scene/Components.h b/Hazel/src/Hazel/Scene/Components.h index fe21f071b..049a80dd3 100644 --- a/Hazel/src/Hazel/Scene/Components.h +++ b/Hazel/src/Hazel/Scene/Components.h @@ -120,7 +120,6 @@ namespace Hazel { { glm::vec2 Offset = { 0.0f, 0.0f }; glm::vec2 Size = { 0.5f, 0.5f }; - float Rotation = 0.0f; // TODO(Yan): move into physics material in the future maybe float Density = 1.0f; diff --git a/Hazel/src/Hazel/Scene/Scene.cpp b/Hazel/src/Hazel/Scene/Scene.cpp index 1a481eaf9..559475655 100644 --- a/Hazel/src/Hazel/Scene/Scene.cpp +++ b/Hazel/src/Hazel/Scene/Scene.cpp @@ -332,7 +332,7 @@ namespace Hazel { auto& bc2d = entity.GetComponent(); b2PolygonShape boxShape; - boxShape.SetAsBox(bc2d.Size.x * transform.Scale.x, bc2d.Size.y * transform.Scale.y, b2Vec2(bc2d.Offset.x, bc2d.Offset.y), bc2d.Rotation); + boxShape.SetAsBox(bc2d.Size.x * transform.Scale.x, bc2d.Size.y * transform.Scale.y, b2Vec2(bc2d.Offset.x, bc2d.Offset.y), 0.0f); b2FixtureDef fixtureDef; fixtureDef.shape = &boxShape; diff --git a/Hazelnut/src/EditorLayer.cpp b/Hazelnut/src/EditorLayer.cpp index 63fc85642..d7d252b3c 100644 --- a/Hazelnut/src/EditorLayer.cpp +++ b/Hazelnut/src/EditorLayer.cpp @@ -533,7 +533,6 @@ namespace Hazel { glm::mat4 transform = glm::translate(glm::mat4(1.0f), tc.Translation) * glm::rotate(glm::mat4(1.0f), tc.Rotation.z, glm::vec3(0.0f, 0.0f, 1.0f)) * glm::translate(glm::mat4(1.0f), glm::vec3(bc2d.Offset, 0.001f)) - * glm::rotate(glm::mat4(1.0f), bc2d.Rotation, glm::vec3(0.0f, 0.0f, 1.0f)) * glm::scale(glm::mat4(1.0f), scale); Renderer2D::DrawRect(transform, glm::vec4(0, 1, 0, 1));