#[allow(clippy::module_inception)] mod camera; mod camera_driver_node; mod clear_color; mod manual_texture_view; mod projection; pub use camera::*; pub use camera_driver_node::*; pub use clear_color::*; pub use manual_texture_view::*; pub use projection::*; use crate::{ extract_component::ExtractComponentPlugin, extract_resource::ExtractResourcePlugin, render_graph::RenderGraph, ExtractSchedule, Render, RenderApp, RenderSet, }; use bevy_app::{App, Plugin}; use bevy_ecs::schedule::IntoSystemConfigs; #[derive(Default)] pub struct CameraPlugin; impl Plugin for CameraPlugin { fn build(&self, app: &mut App) { app.register_type::() .register_type::() .register_type::>() .register_type::() .register_type::() .register_type::() .register_type::() .register_type::() .register_type::() .register_type::() .init_resource::() .init_resource::() .add_plugins(( CameraProjectionPlugin::::default(), CameraProjectionPlugin::::default(), CameraProjectionPlugin::::default(), ExtractResourcePlugin::::default(), ExtractResourcePlugin::::default(), ExtractComponentPlugin::::default(), )); if let Ok(render_app) = app.get_sub_app_mut(RenderApp) { render_app .init_resource::() .add_systems(ExtractSchedule, extract_cameras) .add_systems(Render, sort_cameras.in_set(RenderSet::ManageViews)); let camera_driver_node = CameraDriverNode::new(&mut render_app.world); let mut render_graph = render_app.world.resource_mut::(); render_graph.add_node(crate::graph::CameraDriverLabel, camera_driver_node); } } }