use crate::system::window_bounds; use bevy::core_pipeline::clear_color::ClearColorConfig; use bevy::prelude::{ Camera2d, Camera2dBundle, Color, Commands, Component, OrthographicProjection, Rect, Transform, Vec2, }; use bevy::render::camera::ScalingMode; pub fn default_projection() -> OrthographicProjection { let bounds = window_bounds(); OrthographicProjection { area: Rect::from_center_size(Vec2::ZERO, bounds.size()), scaling_mode: ScalingMode::FixedVertical(bounds.height()), ..Default::default() } } #[derive(Component)] pub struct GameCamera; pub fn spawn_2d_camera(mut commands: Commands) { let bounds = window_bounds(); commands.spawn(( GameCamera, Camera2dBundle { projection: default_projection(), camera_2d: Camera2d { clear_color: ClearColorConfig::Custom(Color::WHITE), }, transform: Transform::from_translation(bounds.half_size().extend(0.0)), ..Default::default() }, )); }