More flight mode stuff

This commit is contained in:
2025-06-07 13:59:15 +02:00
parent 55ba42f19b
commit 7b0328a8a5
2 changed files with 19 additions and 10 deletions
+5 -3
View File
@@ -117,9 +117,11 @@ evtman_init ()
evtman_add_handler (0, SDL_EVENT_KEY_DOWN, evt_pred_key, KEY (SDLK_SPACE), evt_cb_flag_on, "flying_up");
evtman_add_handler (0, SDL_EVENT_KEY_UP, evt_pred_key, KEY (SDLK_SPACE), evt_cb_flag_off, "flying_up");
evtman_add_handler (0, SDL_EVENT_KEY_DOWN, evt_pred_key, KEY (SDLK_LSHIFT), evt_cb_flag_on, "flying_down");
evtman_add_handler (0, SDL_EVENT_KEY_UP, evt_pred_key, KEY (SDLK_LSHIFT), evt_cb_flag_off, "flying_down");
evtman_add_handler (0, SDL_EVENT_KEY_DOWN, evt_pred_key, KEY (SDLK_LCTRL), evt_cb_flag_on, "flying_down");
evtman_add_handler (0, SDL_EVENT_KEY_UP, evt_pred_key, KEY (SDLK_LCTRL), evt_cb_flag_off, "flying_down");
evtman_add_handler (0, SDL_EVENT_KEY_DOWN, evt_pred_key, KEY (SDLK_LSHIFT), evt_cb_flag_on, "flying_fast");
evtman_add_handler (0, SDL_EVENT_KEY_UP, evt_pred_key, KEY (SDLK_LSHIFT), evt_cb_flag_off, "flying_fast");
#undef KEY
}
+14 -7
View File
@@ -30,12 +30,19 @@ game_state_tick (int ticks)
sky. */
sky_entity->position[0] = camera_position[0];
sky_entity->position[2] = camera_position[2];
int speed = 5;
if (flags_get ("flight_enabled") && flags_get ("flying_fast"))
{
speed = 10;
}
if (flags_get ("moving_forward"))
{
vec3 dir, change, new_pos;
camera_get_direction (dir);
glm_vec3_scale (dir, delta_time * 5, change);
glm_vec3_scale (dir, delta_time * speed, change);
glm_vec3_add (player_entity->position, change, new_pos);
glm_vec3_copy (new_pos, player_entity->position);
}
@@ -44,7 +51,7 @@ game_state_tick (int ticks)
{
vec3 dir, change, new_pos;
camera_get_direction (dir);
glm_vec3_scale (dir, delta_time * 5, change);
glm_vec3_scale (dir, delta_time * speed, change);
glm_vec3_sub (player_entity->position, change, new_pos);
glm_vec3_copy (new_pos, player_entity->position);
}
@@ -53,7 +60,7 @@ game_state_tick (int ticks)
{
vec3 right, change, new_pos;
camera_get_right (right);
glm_vec3_scale (right, delta_time * 5, change);
glm_vec3_scale (right, delta_time * speed, change);
glm_vec3_add (player_entity->position, change, new_pos);
glm_vec3_copy (new_pos, player_entity->position);
}
@@ -62,15 +69,15 @@ game_state_tick (int ticks)
{
vec3 right, change, new_pos;
camera_get_right (right);
glm_vec3_scale (right, delta_time * 5, change);
glm_vec3_scale (right, delta_time * speed, change);
glm_vec3_sub (player_entity->position, change, new_pos);
glm_vec3_copy (new_pos, player_entity->position);
}
if (flags_get ("flying_up") && flags_get ("flight_enabled"))
{
vec3 change, new_pos;
glm_vec3_scale (GLM_YUP, delta_time * 5, change);
glm_vec3_scale (GLM_YUP, delta_time * speed, change);
glm_vec3_add (player_entity->position, change, new_pos);
glm_vec3_copy (new_pos, player_entity->position);
}
@@ -78,7 +85,7 @@ game_state_tick (int ticks)
if (flags_get ("flying_down") && flags_get ("flight_enabled"))
{
vec3 change, new_pos;
glm_vec3_scale (GLM_YUP, delta_time * 5, change);
glm_vec3_scale (GLM_YUP, delta_time * speed, change);
glm_vec3_sub (player_entity->position, change, new_pos);
glm_vec3_copy (new_pos, player_entity->position);
}