pub fn camera_system<T>(
    window_resized_events: EventReader<'_, '_, WindowResized>,
    window_created_events: EventReader<'_, '_, WindowCreated>,
    window_scale_factor_changed_events: EventReader<'_, '_, WindowScaleFactorChanged>,
    image_asset_events: EventReader<'_, '_, AssetEvent<Image>>,
    primary_window: Query<'_, '_, Entity, With<PrimaryWindow>>,
    windows: Query<'_, '_, (Entity, &Window)>,
    images: Res<'_, Assets<Image>>,
    manual_texture_views: Res<'_, ManualTextureViews>,
    cameras: Query<'_, '_, (&mut Camera, &mut T)>
)
Expand description

System in charge of updating a Camera when its window or projection changes.

The system detects window creation, resize, and scale factor change events to update the camera projection if needed. It also queries any CameraProjection component associated with the same entity as the Camera one, to automatically update the camera projection matrix.

The system function is generic over the camera projection type, and only instances of OrthographicProjection and PerspectiveProjection are automatically added to the app, as well as the runtime-selected Projection. The system runs during PostUpdate.

World Resources

Res<Assets<Image>> – For cameras that render to an image, this resource is used to inspect information about the render target. This system will not access any other image assets.