use bevy::prelude::*; #[derive(Component, Copy, Clone)] pub struct AlignedBackground; pub fn adjust_aligned_backgrounds( mut query: Query<(&mut Transform, &Handle<Image>), With<AlignedBackground>>, windows: Res<Windows>, images: Res<Assets<Image>>, ) { if let Some(window) = windows.get_primary() { let width = window.width(); let height = window.height(); for (mut transform, handle) in &mut query { if let Some(image) = images.get(handle) { if width > height { let scale = image.texture_descriptor.size.width as f32 / width; transform.scale = Vec3::splat(scale); } else { let scale = image.texture_descriptor.size.height as f32 / height; transform.scale = Vec3::splat(scale); } } } } } pub struct GraphicsPlugin; impl Plugin for GraphicsPlugin { fn build(&self, app: &mut App) { app.add_system(adjust_aligned_backgrounds); } }