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}