From e5203bbc63b0c6469f8bda93104a81212f3f4e53 Mon Sep 17 00:00:00 2001 From: Caenneth Date: Mon, 24 Jun 2024 16:51:03 +0200 Subject: [PATCH] animation for chalkboard --- scene-graph.scg | 6 +++--- src/main.c | 29 ++++++++++++++++++++++++++--- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/scene-graph.scg b/scene-graph.scg index f91c40c..9e5fabe 100644 --- a/scene-graph.scg +++ b/scene-graph.scg @@ -48,7 +48,7 @@ texture ../texture/floor/Carpet.png obj 0 use 1 name myChair1_1 -rotateY -1.5 +rotateY 0.0 scale 1.0 1.0 1.0 # Platz 2 # @@ -1579,9 +1579,9 @@ obj 147 name myChalkboard scale 1.9 1.9 1.9 rotateX 0.0 -rotateY -1.5 +rotateY 0.0 rotateZ 0.0 -translate 0.0 -0.5 6.5 +translate 6.4 -0.3 0.3 # Chalkboard 1 # obj 138 diff --git a/src/main.c b/src/main.c index 9154311..f6e6881 100644 --- a/src/main.c +++ b/src/main.c @@ -56,6 +56,7 @@ SceneNode* rootNode; /** * Input handler for camera movement. * */ +float chalkboardYPosition = 0.0f; void handleInputs(double deltaTime) { assert(window != NULL); @@ -93,11 +94,33 @@ void handleInputs(double deltaTime) { cameraPosition.y -= deltaTime * 10; } + SceneNode* chalkboard = findNodeByName("myChalkboard1", rootNode); + if (!chalkboard) return; if (glfwGetKey(window, GLFW_KEY_X) == GLFW_PRESS) { - SceneNode* chalkboard = findNodeByName("myChalkboard1", SceneNode* root); - chalkboard->transformation[3][1] += 0.1f; // Erhöht die Y-Position + if (chalkboardYPosition >= 1.0f) { + chalkboardYPosition = 1.0f; + return; + } + chalkboardYPosition += deltaTime * 1.0f; + chalkboard->transformation = (mat4){1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, chalkboardYPosition, 0.0f, 1.0f}; + updateSceneNode(chalkboard, &findNodeByName("myChalkboard", rootNode)->worldTransformation); } - + if (glfwGetKey(window, GLFW_KEY_C) == GLFW_PRESS) { + if (chalkboardYPosition <= 0.0f) { + chalkboardYPosition = 0.0f; + return; + } + chalkboardYPosition -= deltaTime * 1.0f; + chalkboard->transformation = (mat4){1.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 1.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 1.0f, 0.0f, + 0.0f, chalkboardYPosition, 0.0f, 1.0f}; + updateSceneNode(chalkboard, &findNodeByName("myChalkboard", rootNode)->worldTransformation); + } + if (glfwGetKey(window, GLFW_KEY_L) == GLFW_PRESS) { objectPosition.x += deltaTime * 10; }