diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/camera/src/mouse.c | 29 |
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) |
