From 8470efa3b836f24c6edfec877661e3ed153636c1 Mon Sep 17 00:00:00 2001 From: v7eZ3t Date: Wed, 9 Feb 2022 21:47:47 +0100 Subject: [PATCH] add vertical movement --- cw 6/src/main_6_1.cpp | 55 ++++++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/cw 6/src/main_6_1.cpp b/cw 6/src/main_6_1.cpp index c1f5bc9..33e350c 100644 --- a/cw 6/src/main_6_1.cpp +++ b/cw 6/src/main_6_1.cpp @@ -1,4 +1,4 @@ -#include "glew.h" +#include "glew.h" #include "freeglut.h" #include "glm.hpp" #include "ext.hpp" @@ -11,6 +11,7 @@ #include "Camera.h" #include "Texture.h" #include "SOIL/stb_image_aug.h" +#include "PsString.h" #define M_PI 3.14159265358979323846 @@ -103,6 +104,7 @@ char lastClickedButtonAngle = 's'; float vehicleSpeed = 0.0f; float lastVehicleAngle = 0.0f; float vehicleAngleSpeed = 0.0f; +float vehicleVerticalSpeed = 0.0f; bool directionChanged = false; void keyboard(unsigned char key, int x, int y) @@ -111,11 +113,11 @@ void keyboard(unsigned char key, int x, int y) float angleSpeed = 0.1f; float moveSpeed = 0.1f; //lastClickedButton = key; - if (key == 'w' || key == 's') + if (key == 'w' || key == 's') { lastClickedButtonFrontal = key; } - + printf("%c", key); @@ -125,8 +127,8 @@ void keyboard(unsigned char key, int x, int y) case 'd': vehicleAngleSpeed += 0.001f; break; case 'w': vehicleSpeed += 0.001f; break; case 's': vehicleSpeed -= 0.001f; break; - case 'z': vehiclePos += vehicleSide * moveSpeed; break; - case 'x': vehiclePos -= vehicleSide * moveSpeed; break; + case 'z': vehicleVerticalSpeed += 0.001f; break; + case 'x': vehicleVerticalSpeed -= 0.001f; break; //case 'h': rotation_y = glm::quat(1, 0, 0, 0); rotation_x = glm::quat(1, 0, 0, 0); rotationCamera = glm::quat(1, 0, 0, 0); break; //case 'h': rotation_y = glm::quat(1, 0, 0, 0); rotation_x = glm::quat(1, 0, 0, 0); rotationCamera = glm::quat(1, 0, 0, 0); break; @@ -142,6 +144,9 @@ void keyboard(unsigned char key, int x, int y) //rot_y = glm::angleAxis(vehicleAngle * 0.01f, glm::vec3(0, 1, 0)); } + + + void changeVehicleSpeed() { if (vehicleAngleSpeed > 0.01f) { @@ -158,17 +163,31 @@ void changeVehicleSpeed() { vehicleSpeed = -0.01f; } + if (vehicleVerticalSpeed > 0.001f) { + vehicleSpeed = 0.001f; + } + if (vehicleVerticalSpeed < -0.001f) { + vehicleSpeed = -0.001f; + } + + vehiclePos.y = vehiclePos.y + vehicleVerticalSpeed; + + switch (lastClickedButtonFrontal) { case 'w': vehiclePos += vehicleDir * vehicleSpeed; break; case 's': vehiclePos -= vehicleDir * -vehicleSpeed; break; } - + vehicleAngle += vehicleAngleSpeed; - + + printf("vehicleSpeed: %.4f\n", vehicleSpeed); + printf("vehicleAngleSpeed: %.4f\n", vehicleAngleSpeed); + printf("vehicleVerticalSpeed: %.4f\n", vehicleVerticalSpeed); } + void mouse(int x, int y) { if (mouseXPositionLast >= 0) { @@ -183,7 +202,7 @@ bool freecam = false; glm::mat4 createCameraMatrix() { - //trzymanie freecama do usuniêcia + //trzymanie freecama do usuni�cia freecam = false; //delta_x = delta_x + vehicleAngle; glm::quat rot_x = glm::angleAxis(delta_y, glm::vec3(1, 0, 0)); @@ -434,6 +453,8 @@ void drawScene() drawObjectTexture(fishContext, modelMatrix, textureFish01); } + + drawPlaneTexture(planeContext, glm::rotate(glm::radians(90.f), glm::vec3(0.f, 0.f, 1.f)), groundTexture); glUseProgram(skyboxTexture); @@ -461,7 +482,7 @@ void drawScene() glDepthFunc(GL_LESS); // set depth function back to default glUseProgram(0); - + } @@ -469,21 +490,21 @@ void drawSceneLight(int pass) { - /* Set current color to "white" and disable lighting - to emulate OpenGL 1.1's GL_REPLACE texture environment. */ + /* Set current color to "white" and disable lighting + to emulate OpenGL 1.1's GL_REPLACE texture environment. */ glColor3f(1.0, 1.0, 1.0); glDisable(GL_LIGHTING); - /* Generate the S & T coordinates for the caustic textures - from the object coordinates. */ + /* Generate the S & T coordinates for the caustic textures + from the object coordinates. */ glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_OBJECT_LINEAR); - + glEnable(GL_TEXTURE_GEN_S); glEnable(GL_TEXTURE_GEN_T); - + drawScene(); } @@ -495,7 +516,7 @@ void renderScene() changeVehicleSpeed(); cameraMatrix = createCameraMatrix(); perspectiveMatrix = Core::createPerspectiveMatrix(); -// changeVehicleSpeed(); + // changeVehicleSpeed(); int startTime, endTime; startTime = glutGet(GLUT_ELAPSED_TIME); @@ -613,7 +634,7 @@ void renderScene() glDrawArrays(GL_TRIANGLES, 0, 36); glBindVertexArray(0); - //Próba mg³y + //Pr�ba mg�y glClearColor(0.5f, 0.5f, 0.5f, 1.0f); // We'll Clear To The Color Of The Fog ( Modified ) float color[] = { 0.5f, 0.5f, 0.5f, 1.0f }; glFogi(GL_FOG_MODE, GL_EXP2); // Fog Mode