From a9640fff362144ed08a4d57738a6307231bd93e5 Mon Sep 17 00:00:00 2001 From: MihailRis Date: Fri, 21 Jun 2024 20:55:14 +0300 Subject: [PATCH] add ModelBatch.translate(...), .rotate(...), .scale(...) --- src/graphics/render/ModelBatch.cpp | 12 ++++++++++++ src/graphics/render/ModelBatch.hpp | 4 ++++ src/graphics/render/WorldRenderer.cpp | 15 +++++++++------ 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/graphics/render/ModelBatch.cpp b/src/graphics/render/ModelBatch.cpp index ae4fea94..dc269012 100644 --- a/src/graphics/render/ModelBatch.cpp +++ b/src/graphics/render/ModelBatch.cpp @@ -116,6 +116,18 @@ static glm::mat4 extract_rotation(glm::mat4 matrix) { return glm::toMat3(rotation); } +void ModelBatch::translate(glm::vec3 vec) { + pushMatrix(glm::translate(glm::mat4(1.0f), vec)); +} + +void ModelBatch::rotate(glm::vec3 axis, float angle) { + pushMatrix(glm::rotate(glm::mat4(1.0f), angle, axis)); +} + +void ModelBatch::scale(glm::vec3 vec) { + pushMatrix(glm::scale(glm::mat4(1.0f), vec)); +} + void ModelBatch::pushMatrix(glm::mat4 matrix) { matrices.push_back(combined); combined = combined * matrix; diff --git a/src/graphics/render/ModelBatch.hpp b/src/graphics/render/ModelBatch.hpp index f4e89649..67b367f5 100644 --- a/src/graphics/render/ModelBatch.hpp +++ b/src/graphics/render/ModelBatch.hpp @@ -74,6 +74,10 @@ public: ModelBatch(size_t capacity, Assets* assets, Chunks* chunks); ~ModelBatch(); + void translate(glm::vec3 vec); + void rotate(glm::vec3 axis, float angle); + void scale(glm::vec3 vec); + void pushMatrix(glm::mat4 matrix); void popMatrix(); diff --git a/src/graphics/render/WorldRenderer.cpp b/src/graphics/render/WorldRenderer.cpp index 75ed0abd..7b3a6120 100644 --- a/src/graphics/render/WorldRenderer.cpp +++ b/src/graphics/render/WorldRenderer.cpp @@ -196,20 +196,23 @@ void WorldRenderer::renderLevel( model::Model model {}; auto& mesh = model.addMesh("gui/warning"); - mesh.addBox({}, glm::vec3(1)); - mesh.addBox({}, glm::vec3(2)); + mesh.addBox({}, glm::vec3(0.3f)); + mesh.addBox({}, glm::vec3(0.6f)); auto& mesh2 = model.addMesh("gui/error"); - mesh2.addBox({}, glm::vec3(1.25f)); - mesh2.addBox({}, glm::vec3(3.25f)); + mesh2.addBox({}, glm::vec3(0.7f)); + mesh2.addBox({}, glm::vec3(0.9f)); + float timer = static_cast(Window::time()); assets->getTexture("gui/menubg")->bind(); shader->uniformMatrix("u_model", glm::mat4(1.0f)); - modelBatch->pushMatrix(glm::translate(glm::mat4(1.0f), glm::vec3(0, 88, 0))); - modelBatch->pushMatrix(glm::rotate(glm::mat4(1.0f), static_cast(Window::time()), glm::vec3(1, 0, 0))); + modelBatch->translate({0, 86, 0}); + modelBatch->scale(glm::vec3(glm::sin(timer*6)+1)); + modelBatch->rotate(glm::vec3(1, 0, 0), timer); modelBatch->draw(model); modelBatch->popMatrix(); modelBatch->popMatrix(); + modelBatch->popMatrix(); skybox->unbind(); }