//! This example illustrates how to override the window scale factor imposed by the //! operating system. use bevy::prelude::*; fn main() { App::new() .add_plugins(DefaultPlugins.set(WindowPlugin { window: WindowDescriptor { width: 500., height: 300., ..default() }, ..default() })) .add_startup_system(setup) .add_system(toggle_override) .add_system(change_scale_factor) .run(); } fn setup(mut commands: Commands, asset_server: Res) { // camera commands.spawn(Camera2dBundle::default()); // root node commands .spawn(NodeBundle { style: Style { size: Size::new(Val::Percent(100.0), Val::Percent(100.0)), justify_content: JustifyContent::SpaceBetween, ..default() }, ..default() }) .with_children(|parent| { // left vertical fill (border) parent .spawn(NodeBundle { style: Style { size: Size::new(Val::Px(200.0), Val::Percent(100.0)), border: UiRect::all(Val::Px(2.0)), ..default() }, background_color: Color::rgb(0.65, 0.65, 0.65).into(), ..default() }) .with_children(|parent| { parent.spawn( TextBundle::from_section( "Example text", TextStyle { font: asset_server.load("fonts/FiraSans-Bold.ttf"), font_size: 30.0, color: Color::WHITE, }, ) .with_style(Style { align_self: AlignSelf::FlexEnd, ..default() }), ); }); }); } /// This system toggles scale factor overrides when enter is pressed fn toggle_override(input: Res>, mut windows: ResMut) { let window = windows.primary_mut(); if input.just_pressed(KeyCode::Return) { window.set_scale_factor_override(window.scale_factor_override().xor(Some(1.))); } } /// This system changes the scale factor override when up or down is pressed fn change_scale_factor(input: Res>, mut windows: ResMut) { let window = windows.primary_mut(); if input.just_pressed(KeyCode::Up) { window.set_scale_factor_override(window.scale_factor_override().map(|n| n + 1.)); } else if input.just_pressed(KeyCode::Down) { window.set_scale_factor_override(window.scale_factor_override().map(|n| (n - 1.).max(1.))); } }