From e9a669eebe7ec0b91fda91049dffe32c77f132b7 Mon Sep 17 00:00:00 2001 From: Dane Johnson Date: Wed, 13 Jan 2021 20:08:39 -0600 Subject: [PATCH] Rotation --- core/Transform.cpp | 3 ++- core/Transform.h | 3 ++- core/couch.cpp | 3 +++ main.lua | 6 +++++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/core/Transform.cpp b/core/Transform.cpp index b72bc50..5ed80c4 100644 --- a/core/Transform.cpp +++ b/core/Transform.cpp @@ -4,8 +4,9 @@ Transform::Transform() { position = Vector3(0.0f); } -Transform::Transform(Vector3 position) { +Transform::Transform(Vector3 position, Vector3 rotation) { this->position = position; + this->rotation = rotation; } void Transform::Translate(cfloat x, cfloat y, cfloat z) { diff --git a/core/Transform.h b/core/Transform.h index 49f1970..1eb3e39 100644 --- a/core/Transform.h +++ b/core/Transform.h @@ -5,8 +5,9 @@ struct Transform { Transform(); - Transform(Vector3 position); + Transform(Vector3 position, Vector3 rotation); Vector3 position; + Vector3 rotation; void Translate(cfloat x, cfloat y, cfloat z); }; diff --git a/core/couch.cpp b/core/couch.cpp index 7e08cad..ebf5bf4 100644 --- a/core/couch.cpp +++ b/core/couch.cpp @@ -113,6 +113,9 @@ int main() { for (Mesh *mesh : meshes) { Matrix model(1.0f); model = glm::translate(model, mesh->transform.position); + model = glm::rotate(model, mesh->transform.rotation.x, Vector3(1.0f, 0.0f, 0.0f)); + model = glm::rotate(model, mesh->transform.rotation.y, Vector3(0.0f, 1.0f, 0.0f)); + model = glm::rotate(model, mesh->transform.rotation.z, Vector3(0.0f, 0.0f, 1.0f)); shader.UpdateModel(model); mesh->Draw(); } diff --git a/main.lua b/main.lua index 15a9364..cac7cbc 100644 --- a/main.lua +++ b/main.lua @@ -14,6 +14,7 @@ local ballvy = -1.0 function init() camera = couch.Camera() camera:MakeCurrent() + camera.transform:Translate(0.0, 0.0, 10.0) ball = couch.Ball() ball:SetupMesh() couch.AddMeshToList(ball) @@ -33,7 +34,10 @@ function update(delta) elseif loc.y < 2.0 then ballvy = 1.0 end - ball1.transform:Translate(0.0, ballvy * delta, 0.0) + ball1.transform.position.y = ball1.transform.position.y + ballvy * delta + + ball.transform.rotation.z = ball.transform.rotation.z + 1.0 * delta; + ball.transform.rotation.x = ball.transform.rotation.x + 1.0 * delta; end function onkey(key, code, action, mod)