From 16d32e0650dbc9efdb80321b17eab69d433f98a2 Mon Sep 17 00:00:00 2001 From: Wojciech Graj Date: Mon, 27 Mar 2023 00:43:09 +0200 Subject: [PATCH] Improve jump to satellite functionality. --- src/gfx/camera.c | 4 ++-- src/gfx/camera.h | 5 ++++- src/ui/info.c | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/gfx/camera.c b/src/gfx/camera.c index 0c641f0..12bfc45 100644 --- a/src/gfx/camera.c +++ b/src/gfx/camera.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Wojciech Graj + * Copyright (c) 2022-2023 Wojciech Graj * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -37,7 +37,7 @@ void camera_mvp_generate(struct Camera *camera, mat4 *model, mat4 mvp) void camera_zoom(struct Camera *camera, float offset) { - float rad = glm_clamp(camera->rad - offset, 1.1f, 10.f); + float rad = glm_clamp(camera->rad - offset, CAMERA_MIN_RAD, CAMERA_MAX_RAD); float d_rad = rad - camera->rad; float d_rad_pct = (camera->rad + d_rad) / (camera->rad); camera->rad = rad; diff --git a/src/gfx/camera.h b/src/gfx/camera.h index 1673515..240db8f 100644 --- a/src/gfx/camera.h +++ b/src/gfx/camera.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Wojciech Graj + * Copyright (c) 2022-2023 Wojciech Graj * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -21,6 +21,9 @@ #undef near #undef far +#define CAMERA_MIN_RAD 1.1f +#define CAMERA_MAX_RAD 10.f + struct Camera { vec3 pos; vec3 target; diff --git a/src/ui/info.c b/src/ui/info.c index a7fdea4..00ba75f 100644 --- a/src/ui/info.c +++ b/src/ui/info.c @@ -104,7 +104,7 @@ void on_info_jump_to_clicked(GtkButton *button, gpointer user_data) vec3 pos; glm_mat4_mulv3(e_phys.teme_to_world, (vec3){ r[0], r[1], r[2] }, 1.f, pos); float rad = glm_vec3_norm(pos); - e_camera.rad = glm_clamp(rad, 1.1f, 10.f); + e_camera.rad = glm_clamp(rad + .1f, CAMERA_MIN_RAD, CAMERA_MAX_RAD); glm_vec3_scale(pos, e_camera.rad / rad, e_camera.pos); camera_view_update(&e_camera); }