use bevy::color::palettes::css::{BLUE, GREEN, RED, YELLOW};
use bevy::diagnostic::{DiagnosticsStore, FrameTimeDiagnosticsPlugin, LogDiagnosticsPlugin};
use bevy::math::Isometry2d;
use bevy::prelude::*;
use bevy::window::{PresentMode, WindowResolution};
use bevy::winit::WinitSettings;
const TEXT_COUNT: usize = 50;
const START_X: f32 = -800.0;
const START_Y: f32 = 200.0;
const X_STEP: f32 = 250.0;
const Y_STEP: f32 = 50.0;
fn main() {
App::new()
.insert_resource(WinitSettings::continuous())
.add_plugins((
DefaultPlugins.set(WindowPlugin {
primary_window: Some(Window {
present_mode: PresentMode::AutoNoVsync,
resolution: WindowResolution::new(1920, 1080).with_scale_factor_override(1.0),
..default()
}),
..default()
}),
LogDiagnosticsPlugin::default(),
FrameTimeDiagnosticsPlugin::default(),
))
.add_systems(Startup, setup)
.add_systems(Update, (draw_labels, draw_all_glyphs))
.run();
}
fn setup(mut commands: Commands, mut gizmo_config_store: ResMut<GizmoConfigStore>) {
commands.spawn(Camera2d);
let (config, _) = gizmo_config_store.config_mut::<DefaultGizmoConfigGroup>();
config.line.width = 1.;
}
fn draw_labels(mut text_gizmos: Gizmos, diagnostic: Res<DiagnosticsStore>) {
let colors = [RED, GREEN, BLUE, YELLOW];
for i in 0..TEXT_COUNT {
let row = i / 5;
let col = i % 5;
let color = colors[i % 4];
text_gizmos.text_2d(
Isometry2d {
translation: Vec2::new(
START_X + col as f32 * X_STEP,
START_Y - row as f32 * Y_STEP,
),
rotation: Rot2::degrees(2.),
},
&format!("label {i}"),
25.,
Vec2::ZERO,
color,
);
}
if let Some(fps) = diagnostic.get(&FrameTimeDiagnosticsPlugin::FPS)
&& let Some(fps_smoothed) = fps.smoothed()
{
text_gizmos.text_2d(
Isometry2d::from_translation(Vec2::new(600., START_Y + 150.)),
&format!("fps: {:.1}", fps_smoothed),
25.,
Vec2::ZERO,
Color::WHITE,
);
}
text_gizmos.text_2d(
Isometry2d::from_translation(Vec2::new(-300., START_Y + 200.)),
"lxgh",
150.,
Vec2::ZERO,
Color::WHITE,
);
}
const ALL_GLYPHS: &str = " !\"#$%&'()*\n\
+,-./012345\n\
6789:;<=>?@\n\
ABCDEFGHIJK\n\
LMNOPQRSTUV\n\
WXYZ[\\]^_`a\n\
bcdefghijkl\n\
mnopqrstuvw\n\
xyz{|}~";
fn draw_all_glyphs(mut text_gizmos: Gizmos) {
text_gizmos.text_2d(
Isometry2d::from_xy(600., 0.),
ALL_GLYPHS,
30.0,
Vec2::ZERO,
Color::WHITE,
);
}