mirror of
https://github.com/bevyengine/bevy
synced 2024-11-13 00:17:27 +00:00
Implement enabled
flag for fps overlay (#15246)
# Objective Fixes #15223 ## Solution Adds an `enabled` flag to the `FpsOverlayConfig` resource with a system that detects it's change, and adjusts the visibility of the overlay text entity. ## Testing I extended the `fps_overlay` example with the option to toggle the overlay. Run with: ``` cargo run --features="bevy_dev_tools" --example fps_overlay ```
This commit is contained in:
parent
3c41586154
commit
b884f96598
2 changed files with 24 additions and 2 deletions
|
@ -5,12 +5,14 @@ use bevy_asset::Handle;
|
||||||
use bevy_color::Color;
|
use bevy_color::Color;
|
||||||
use bevy_diagnostic::{DiagnosticsStore, FrameTimeDiagnosticsPlugin};
|
use bevy_diagnostic::{DiagnosticsStore, FrameTimeDiagnosticsPlugin};
|
||||||
use bevy_ecs::{
|
use bevy_ecs::{
|
||||||
|
change_detection::DetectChangesMut,
|
||||||
component::Component,
|
component::Component,
|
||||||
query::With,
|
query::With,
|
||||||
schedule::{common_conditions::resource_changed, IntoSystemConfigs},
|
schedule::{common_conditions::resource_changed, IntoSystemConfigs},
|
||||||
system::{Commands, Query, Res, Resource},
|
system::{Commands, Query, Res, Resource},
|
||||||
};
|
};
|
||||||
use bevy_hierarchy::{BuildChildren, ChildBuild};
|
use bevy_hierarchy::{BuildChildren, ChildBuild};
|
||||||
|
use bevy_render::view::Visibility;
|
||||||
use bevy_text::{Font, Text, TextSection, TextStyle};
|
use bevy_text::{Font, Text, TextSection, TextStyle};
|
||||||
use bevy_ui::{
|
use bevy_ui::{
|
||||||
node_bundles::{NodeBundle, TextBundle},
|
node_bundles::{NodeBundle, TextBundle},
|
||||||
|
@ -47,7 +49,7 @@ impl Plugin for FpsOverlayPlugin {
|
||||||
.add_systems(
|
.add_systems(
|
||||||
Update,
|
Update,
|
||||||
(
|
(
|
||||||
customize_text.run_if(resource_changed::<FpsOverlayConfig>),
|
(customize_text, toggle_display).run_if(resource_changed::<FpsOverlayConfig>),
|
||||||
update_text,
|
update_text,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -59,6 +61,8 @@ impl Plugin for FpsOverlayPlugin {
|
||||||
pub struct FpsOverlayConfig {
|
pub struct FpsOverlayConfig {
|
||||||
/// Configuration of text in the overlay.
|
/// Configuration of text in the overlay.
|
||||||
pub text_config: TextStyle,
|
pub text_config: TextStyle,
|
||||||
|
/// Displays the FPS overlay if true.
|
||||||
|
pub enabled: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for FpsOverlayConfig {
|
impl Default for FpsOverlayConfig {
|
||||||
|
@ -69,6 +73,7 @@ impl Default for FpsOverlayConfig {
|
||||||
font_size: 32.0,
|
font_size: 32.0,
|
||||||
color: Color::WHITE,
|
color: Color::WHITE,
|
||||||
},
|
},
|
||||||
|
enabled: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -119,3 +124,15 @@ fn customize_text(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn toggle_display(
|
||||||
|
overlay_config: Res<FpsOverlayConfig>,
|
||||||
|
mut query: Query<&mut Visibility, With<FpsText>>,
|
||||||
|
) {
|
||||||
|
for mut visibility in &mut query {
|
||||||
|
visibility.set_if_neq(match overlay_config.enabled {
|
||||||
|
true => Visibility::Visible,
|
||||||
|
false => Visibility::Hidden,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@ fn main() {
|
||||||
// If we want, we can use a custom font
|
// If we want, we can use a custom font
|
||||||
font: default(),
|
font: default(),
|
||||||
},
|
},
|
||||||
|
enabled: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
))
|
))
|
||||||
|
@ -47,7 +48,8 @@ fn setup(mut commands: Commands) {
|
||||||
c.spawn(TextBundle::from_section(
|
c.spawn(TextBundle::from_section(
|
||||||
concat!(
|
concat!(
|
||||||
"Press 1 to change color of the overlay.\n",
|
"Press 1 to change color of the overlay.\n",
|
||||||
"Press 2 to change size of the overlay."
|
"Press 2 to change size of the overlay.\n",
|
||||||
|
"Press 3 to toggle the overlay."
|
||||||
),
|
),
|
||||||
TextStyle::default(),
|
TextStyle::default(),
|
||||||
));
|
));
|
||||||
|
@ -62,4 +64,7 @@ fn customize_config(input: Res<ButtonInput<KeyCode>>, mut overlay: ResMut<FpsOve
|
||||||
if input.just_pressed(KeyCode::Digit2) {
|
if input.just_pressed(KeyCode::Digit2) {
|
||||||
overlay.text_config.font_size -= 2.0;
|
overlay.text_config.font_size -= 2.0;
|
||||||
}
|
}
|
||||||
|
if input.just_pressed(KeyCode::Digit3) {
|
||||||
|
overlay.enabled = !overlay.enabled;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue