diff options
author | Schark <jordan@schark.online> | 2023-05-12 02:14:15 -0700 |
---|---|---|
committer | Schark <jordan@schark.online> | 2023-05-12 02:14:15 -0700 |
commit | 743d7f3ef9709a89c6ba48ed83e26a0bdfbdd200 (patch) | |
tree | f1f959406c201e2a9c2e1515f0bc09200145e8fc /src/player.c | |
parent | 4b23f2fcc44fc636d8d4dbe94881cf937c54199b (diff) | |
download | gamedev-743d7f3ef9709a89c6ba48ed83e26a0bdfbdd200.tar.gz gamedev-743d7f3ef9709a89c6ba48ed83e26a0bdfbdd200.zip |
y-shearing!
Diffstat (limited to 'src/player.c')
-rw-r--r-- | src/player.c | 47 |
1 files changed, 13 insertions, 34 deletions
diff --git a/src/player.c b/src/player.c index c06dfa4..512069a 100644 --- a/src/player.c +++ b/src/player.c @@ -12,41 +12,17 @@ void move_player(Player *player, GLFWwindow* window, double* mouse_x, double* mo player->pos_x -= player->dir_x * player->move_speed; player->pos_y -= player->dir_y * player->move_speed; } + if (glfwGetKey(window, GLFW_KEY_A) == GLFW_PRESS) { + player->pos_x += player->dir_y * player->move_speed; + player->pos_y -= player->dir_x * player->move_speed; + } + if (glfwGetKey(window, GLFW_KEY_D) == GLFW_PRESS) { + player->pos_x -= player->dir_y * player->move_speed; + player->pos_y += player->dir_x * 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); - - + // mouse controls (including y-shearing angle calculations + // DO NOT TOUCH, THIS TOOK A WHOLE NIGHT TO FIGURE OUT double mouse_dx, mouse_dy; double old_mouse_x, old_mouse_y; old_mouse_x = *mouse_x; @@ -61,5 +37,8 @@ void move_player(Player *player, GLFWwindow* window, double* mouse_x, double* mo 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); + player->look_angle += mouse_dy * -player->sensitivity; + if (player->look_angle > M_PI/4) { player->look_angle = M_PI/4; } + if (player->look_angle < -M_PI/4) { player->look_angle = -M_PI/4; } } |