#include #include #include "player.h" void move_player(Player *player, GLFWwindow* window, double* mouse_x, double* mouse_y, double width, double height) { if (glfwGetKey(window, GLFW_KEY_W) == GLFW_PRESS) { player->pos_x += player->dir_x * player->move_speed; player->pos_y += player->dir_y * player->move_speed; } if (glfwGetKey(window, GLFW_KEY_S) == GLFW_PRESS) { player->pos_x -= player->dir_x * player->move_speed; player->pos_y -= player->dir_y * player->move_speed; } // old implementation // if (glfwGetKey(window, GLFW_KEY_A) == GLFW_PRESS) { // // this changes where we're casting our rays // double old_dir_x = player->dir_x; // player->dir_x = player->dir_x * cos(-player->sensitivity) - player->dir_y * sin(-player->sensitivity); // player->dir_y = old_dir_x * sin(-player->sensitivity) + player->dir_y * cos(-player->sensitivity); // // this updates perspective // double old_plane_x = player->plane_x; // player->plane_x = player->plane_x * cos(-player->sensitivity) - player->plane_y * sin(-player->sensitivity); // player->plane_y = old_plane_x * sin(-player->sensitivity) + player->plane_y * cos(-player->sensitivity); // } // if (glfwGetKey(window, GLFW_KEY_D) == GLFW_PRESS) { // double old_dir_x = player->dir_x; // player->dir_x = player->dir_x * cos(player->sensitivity) - player->dir_y * sin(player->sensitivity); // player->dir_y = old_dir_x * sin(player->sensitivity) + player->dir_y * cos(player->sensitivity); // double old_plane_x = player->plane_x; // player->plane_x = player->plane_x * cos(player->sensitivity) - player->plane_y * sin(player->sensitivity); // player->plane_y = old_plane_x * sin(player->sensitivity) + player->plane_y * cos(player->sensitivity); // } // issues //double new_mouse_x = 0, new_mouse_y = 0; //glfwGetCursorPos(window, &new_mouse_x, &new_mouse_y); //new_mouse_x -= width / 2; //new_mouse_y -= height / 2; //double dx = new_mouse_x - *mouse_x; //double dy = new_mouse_y - *mouse_y; //*mouse_x = new_mouse_x; //*mouse_y = new_mouse_y; //player->dir += dx * player->sensitivity; //player->dir_x = cos(player->dir); //player->dir_y = sin(player->dir); double mouse_dx, mouse_dy; double old_mouse_x, old_mouse_y; old_mouse_x = *mouse_x; old_mouse_y = *mouse_y; glfwGetCursorPos(window, mouse_x, mouse_y); mouse_dx = *mouse_x - old_mouse_x; mouse_dy = *mouse_y - old_mouse_y; double rot_speed = mouse_dx * player->sensitivity; double old_dir_x = player->dir_x; player->dir_x = player->dir_x * cos(rot_speed) - player->dir_y * sin(rot_speed); player->dir_y = old_dir_x * sin(rot_speed) + player->dir_y * cos(rot_speed); double old_plane_x = player->plane_x; player->plane_x = player->plane_x * cos(rot_speed) - player->plane_y * sin(rot_speed); player->plane_y = old_plane_x * sin(rot_speed) + player->plane_y * cos(rot_speed); }