bevy_pixel_camera/
pixel_plugin.rs

1#[allow(deprecated)]
2use super::PixelProjection;
3
4use bevy::prelude::{App, IntoSystemConfigs, Plugin, PostUpdate};
5use bevy::render::camera::{
6    self, Camera, OrthographicProjection, PerspectiveProjection, Projection, ScalingMode,
7};
8use bevy::render::primitives::Aabb;
9use bevy::render::view::visibility;
10use bevy::render::view::{InheritedVisibility, Visibility, VisibleEntities};
11use bevy::transform::TransformSystem;
12
13/// Provides the camera system.
14pub struct PixelCameraPlugin;
15
16#[allow(deprecated)]
17impl Plugin for PixelCameraPlugin {
18    fn build(&self, app: &mut App) {
19        app.register_type::<Camera>()
20            .register_type::<Visibility>()
21            .register_type::<InheritedVisibility>()
22            .register_type::<OrthographicProjection>()
23            .register_type::<VisibleEntities>()
24            .register_type::<ScalingMode>()
25            .register_type::<Aabb>()
26            .add_systems(PostUpdate, super::update_pixel_camera_viewport)
27            .add_systems(PostUpdate, camera::camera_system::<PixelProjection>)
28            .add_systems(
29                PostUpdate,
30                visibility::update_frusta::<PixelProjection>
31                    .in_set(visibility::VisibilitySystems::UpdateOrthographicFrusta)
32                    .after(camera::camera_system::<PixelProjection>)
33                    .after(TransformSystem::TransformPropagate)
34                    .ambiguous_with(visibility::update_frusta::<PerspectiveProjection>)
35                    .ambiguous_with(visibility::update_frusta::<OrthographicProjection>)
36                    .ambiguous_with(visibility::update_frusta::<Projection>),
37            )
38            .add_systems(
39                PostUpdate,
40                super::pixel_zoom_system.after(camera::camera_system::<OrthographicProjection>),
41            );
42    }
43}