Compare commits

...

2 commits

Author SHA1 Message Date
MagicTINTIN
2ee55100e5 Merge branch 'master' of https://git.etud.insa-toulouse.fr/serviere/EnginPasTangible 2023-03-20 09:55:49 +01:00
MagicTINTIN
9e1a61af1d smoooooth controls 2023-03-20 09:55:36 +01:00

122
main.c
View file

@ -18,7 +18,7 @@
* *
* For instance if you want fps and position set the value to 2*3=6 * For instance if you want fps and position set the value to 2*3=6
*/ */
#define DEBUG_MODE 5 #define DEBUG_MODE 1
GLuint screenWidth = 720, screenHeight = 480; GLuint screenWidth = 720, screenHeight = 480;
const GLFWvidmode* mode; const GLFWvidmode* mode;
@ -44,6 +44,13 @@ float ez[3] = {0};
float ex[3] = {0}; float ex[3] = {0};
float ey[3] = {0}; float ey[3] = {0};
bool upar = false;
bool downar = false;
bool leftar = false;
bool rightar = false;
bool forwardar = false;
bool backwardar = false;
float fovValue=1.0; float fovValue=1.0;
//283=3.14/2 * 180 //283=3.14/2 * 180
const int maxYmouse = 283; const int maxYmouse = 283;
@ -73,49 +80,59 @@ static void key_callback(GLFWwindow* window, int key, int scancode, int action,
multiplicatorFov=1.; multiplicatorFov=1.;
} }
if (!action == GLFW_PRESS) if (action == GLFW_PRESS) {
return; if (key == GLFW_KEY_ESCAPE)
if (key == GLFW_KEY_ESCAPE)
{
//glfwSetWindowShouldClose(window, GLFW_TRUE);
pause=!pause;
printf(pause ? "En pause\n" : "En fonctionnement\n");
if (pause)
{ {
glfwSetWindowTitle(window, "EnginPasTangible (En pause)"); //glfwSetWindowShouldClose(window, GLFW_TRUE);
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL); pause=!pause;
printf(pause ? "En pause\n" : "En fonctionnement\n");
if (pause)
{
glfwSetWindowTitle(window, "EnginPasTangible (En pause)");
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
}
else
{
glfwSetWindowTitle(window, APPNAMEVERSION);
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
}
} }
else if (key == GLFW_KEY_BACKSPACE)
{ glfwSetWindowShouldClose(window, GLFW_TRUE);
glfwSetWindowTitle(window, APPNAMEVERSION); if (key == GLFW_KEY_SPACE)
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); upar = true;
if (key == GLFW_KEY_LEFT_CONTROL)
downar = true;
if (key == GLFW_KEY_UP || key == GLFW_KEY_W) {
forwardar = true;
}
if (key == GLFW_KEY_DOWN || key == GLFW_KEY_S ) {
backwardar = true;
}
if (key == GLFW_KEY_RIGHT || key == GLFW_KEY_D) {
rightar = true;
}
if (key == GLFW_KEY_LEFT || key == GLFW_KEY_A ) {
leftar = true;
} }
} }
if (key == GLFW_KEY_BACKSPACE) else if (action == GLFW_RELEASE) {
glfwSetWindowShouldClose(window, GLFW_TRUE); if (key == GLFW_KEY_SPACE)
if (key == GLFW_KEY_SPACE && stateControl != GLFW_PRESS) upar = false;
camPosY += speed; if (key == GLFW_KEY_LEFT_CONTROL)
if (key == GLFW_KEY_SPACE && stateControl == GLFW_PRESS) downar = false;
camPosY -= speed; if (key == GLFW_KEY_UP || key == GLFW_KEY_W) {
if (key == GLFW_KEY_UP || key == GLFW_KEY_W) { forwardar = false;
camPosX += speed*ez[0]; }
camPosY += speed*ez[1]; if (key == GLFW_KEY_DOWN || key == GLFW_KEY_S ) {
camPosZ += speed*ez[2]; backwardar = false;
} }
if (key == GLFW_KEY_DOWN || key == GLFW_KEY_S ) { if (key == GLFW_KEY_RIGHT || key == GLFW_KEY_D) {
camPosX -= speed*ez[0]; rightar = false;
camPosY -= speed*ez[1]; }
camPosZ -= speed*ez[2]; if (key == GLFW_KEY_LEFT || key == GLFW_KEY_A ) {
} leftar = false;
if (key == GLFW_KEY_RIGHT || key == GLFW_KEY_D) { }
camPosX += speed*ex[0];
camPosY += speed*ex[1];
camPosZ += speed*ex[2];
}
if (key == GLFW_KEY_LEFT || key == GLFW_KEY_A ) {
camPosX -= speed*ex[0];
camPosY -= speed*ex[1];
camPosZ -= speed*ex[2];
} }
} }
@ -256,6 +273,31 @@ int main (){
ey[2] = ex[0] * ez[1] - ex[1] * ez[0]; ey[2] = ex[0] * ez[1] - ex[1] * ez[0];
//crossProduct(ex,ez); //crossProduct(ex,ez);
if (upar)
camPosY += speed;
if (downar)
camPosY -= speed;
if (forwardar) {
camPosX += speed*ez[0];
camPosY += speed*ez[1];
camPosZ += speed*ez[2];
}
if (backwardar) {
camPosX -= speed*ez[0];
camPosY -= speed*ez[1];
camPosZ -= speed*ez[2];
}
if (rightar) {
camPosX += speed*ex[0];
camPosY += speed*ex[1];
camPosZ += speed*ex[2];
}
if (leftar) {
camPosX -= speed*ex[0];
camPosY -= speed*ex[1];
camPosZ -= speed*ex[2];
}
currentTime = glfwGetTime(); currentTime = glfwGetTime();
deltaTime = currentTime - lastFrame; deltaTime = currentTime - lastFrame;
lastFrame = currentTime; lastFrame = currentTime;