aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi.dcr@tutanota.com>2022-03-09 17:46:59 +0100
committerXavier Del Campo Romero <xavi.dcr@tutanota.com>2022-03-30 08:20:21 +0200
commite9d69f90837c4cc688fc90b783db508e2dcc9f6f (patch)
treea03394984d234300fedc15bf8d7bc1432516e520
parent244f0b26f8910593d5cf4c60b4051d8e1e1b090c (diff)
downloadrts-e9d69f90837c4cc688fc90b783db508e2dcc9f6f.tar.gz
camera: implement mouse support
-rw-r--r--src/camera/src/mouse.c29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/camera/src/mouse.c b/src/camera/src/mouse.c
index eff15bf..4249ca5 100644
--- a/src/camera/src/mouse.c
+++ b/src/camera/src/mouse.c
@@ -21,12 +21,37 @@ static void update_speed(struct camera *const cam, const struct mouse *const m)
{
MAX_SPEED = 10,
STEP = 1,
- T_STEP = 3
+ THRESHOLD_X = CAMERA_CURSOR_WIDTH * 3,
+ THRESHOLD_Y = CAMERA_CURSOR_HEIGHT * 3
};
- struct cursor *const c = &cam->cursor;
+ const struct cursor *const c = &cam->cursor;
+ if (c->x >= screen_w - THRESHOLD_X)
+ {
+ if (cam->x_speed - STEP > -MAX_SPEED)
+ cam->x_speed -= STEP;
+ }
+ else if (c->x < THRESHOLD_X)
+ {
+ if (cam->x_speed + STEP < MAX_SPEED)
+ cam->x_speed += STEP;
+ }
+ else
+ cam->x_speed = 0;
+ if (c->y >= screen_h - THRESHOLD_Y)
+ {
+ if (cam->y_speed - STEP > -MAX_SPEED)
+ cam->y_speed -= STEP;
+ }
+ else if (c->y < THRESHOLD_Y)
+ {
+ if (cam->y_speed + STEP < MAX_SPEED)
+ cam->y_speed += STEP;
+ }
+ else
+ cam->y_speed = 0;
}
void camera_update_mouse(struct camera *const cam, const struct mouse *const m)