From 9f80a278a6f188c8e9131df0684bad14a07491ee Mon Sep 17 00:00:00 2001 From: untodesu Date: Fri, 21 Mar 2025 18:16:40 +0500 Subject: Toggles system rework, added flight pmove mode - Reworked toggles to use a constant-styled enumerations - Added TOGGLE_PM_FLIGHT and an according movement mode. Now server-side just doesn't simulate gravity altogether for players, instead relying on whatever the client provides which works fine for now. Closes #12 --- game/client/camera.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'game/client/camera.cc') diff --git a/game/client/camera.cc b/game/client/camera.cc index 5eb150a..30ec581 100644 --- a/game/client/camera.cc +++ b/game/client/camera.cc @@ -14,6 +14,7 @@ #include "client/player_move.hh" #include "client/session.hh" #include "client/settings.hh" +#include "client/toggles.hh" ConfigFloat camera::roll_angle(2.0f, 0.0f, 4.0f); ConfigFloat camera::vertical_fov(90.0f, 45.0f, 110.0f); @@ -88,10 +89,12 @@ void camera::update(void) glm::fvec3 right_vector, up_vector; cxangles::vectors(camera::angles, &camera::direction, &right_vector, &up_vector); - // Apply view roll angle - // FIXME: check if grounded auto client_angles = camera::angles; - client_angles[2] = cxpr::radians(-camera::roll_angle.get_value() * glm::dot(velocity.value / PMOVE_MAX_SPEED_GROUND, right_vector)); + + if(!toggles::get(TOGGLE_PM_FLIGHT)) { + // Apply the quake-like view rolling + client_angles[2] = cxpr::radians(-camera::roll_angle.get_value() * glm::dot(velocity.value / PMOVE_MAX_SPEED_GROUND, right_vector)); + } const auto z_near = 0.01f; const auto z_far = 1.25f * static_cast(CHUNK_SIZE * camera::view_distance.get_value()); -- cgit