- if (event->type == SDL_MOUSEBUTTONUP && event->button.button == SDL_BUTTON_MIDDLE) {
- level_editor->drag = false;
- }
- } break;
+ Vec2f position = camera_map_screen(camera, x, y);
+ if (event->wheel.y > 0) {
+ level_editor->camera_scale += 0.1f;
+ } else if (event->wheel.y < 0) {
+ level_editor->camera_scale = fmaxf(0.1f, level_editor->camera_scale - 0.1f);
+ }
+ camera_scale(camera, level_editor->camera_scale);
+ Vec2f zoomed_position = camera_map_screen(camera, x, y);
+
+ level_editor->camera_position =
+ vec_sum(
+ level_editor->camera_position,
+ vec_sub(position, zoomed_position));
+ camera_center_at(camera, level_editor->camera_position);
+ } break;
+
+ case SDL_MOUSEBUTTONUP:
+ case SDL_MOUSEBUTTONDOWN: {
+ if (event->type == SDL_MOUSEBUTTONDOWN && event->button.button == SDL_BUTTON_MIDDLE) {
+ level_editor->drag = true;
+ }