rantz_camera2d/
plugins.rs1use crate::prelude::*;
2use bevy::prelude::*;
3use rantz_spatial2d::prelude::*;
4
5pub struct CameraPlugin2D;
7
8impl Plugin for CameraPlugin2D {
9 fn build(&self, app: &mut App) {
10 self.register_types(app);
11 self.add_systems(app);
12 }
13}
14
15impl CameraPlugin2D {
16 fn register_types(&self, app: &mut App) {
17 app.register_type::<MainCamera>()
18 .register_type::<MainCameraShouldTarget>()
19 .register_type::<CameraStyle>()
20 .register_type::<DeadZone>()
21 .register_type::<CameraLerp>()
22 .register_type::<CameraLead>()
23 .register_type::<CameraTarget>();
24 }
25
26 fn add_systems(&self, app: &mut App) {
27 app.add_systems(
28 PostStartup,
29 set_initial_main_camera_target.before(SpatialSystems2D::Propagate),
30 )
31 .add_systems(
32 PostUpdate,
33 (
34 camera_follow_target,
35 main_camera_target_added,
36 main_camera_target_removed,
37 )
38 .before(SpatialSystems2D::Propagate),
39 );
40 }
41}