Skip to main content

starbloom_camera/
lib.rs

1use bevy_ecs::prelude::*;
2use macroquad::prelude::*;
3
4use starbloom_base::*;
5
6pub struct CameraPlugin();
7
8impl Plugin for CameraPlugin {
9    fn create(world: &mut World, schedule: &mut Schedule) {
10        world.insert_resource(MainCamera::default());
11        schedule.add_systems((prepare_camera, prepare_ui_camera));
12    }
13}
14
15#[derive(Resource, Default)]
16pub struct MainCamera {
17    pub position: Vec2,
18    pub rotation: f32,
19}
20
21pub fn prepare_camera(camera: Res<MainCamera>) {
22    let mut cam = Camera2D::from_display_rect(Rect::new(
23        0.,
24        screen_height(),
25        screen_width(),
26        -screen_height(),
27    ));
28
29    cam.target = camera.position;
30    cam.rotation = camera.rotation;
31
32    set_camera(&cam);
33}
34
35pub fn prepare_ui_camera() {
36    set_default_camera();
37}