bevy_scrolling_2d_camera/
lib.rs

1use bevy::prelude::*;
2
3mod resources;
4mod systems;
5mod states;
6
7pub use resources::*;
8use systems::*;
9use states::*;
10
11pub struct ScrollingCameraPlugin;
12
13impl Plugin for ScrollingCameraPlugin {
14    fn build(&self, app: &mut App) {
15        app
16        .init_resource::<ScrollingCamera>()
17        .init_resource::<CameraVelocity>()
18        .init_resource::<CapturedMouseRightClickPosition>()
19        .init_resource::<ZoomBound>()
20        .init_state::<CameraState>()
21        .add_systems(Startup, spawn_camera)
22        .add_systems(Update, camera_move.run_if(in_state(CameraState::Scrolling)))
23        .add_systems(Update, capture_mouse_right_click_for_scrolling.run_if(in_state(CameraState::Idling)))
24        .add_systems(Update, control_camera_movment.run_if(in_state(CameraState::Scrolling)))
25        .add_systems(Update, camera_zoom)
26        ;
27    }
28}
29