From 4dac7c5366fef46501eabd0629d232ca0a872c03 Mon Sep 17 00:00:00 2001 From: Michael Bradley Date: Sat, 24 May 2025 18:43:09 -0400 Subject: [PATCH] Add dev tools --- Cargo.lock | 25 +++++++++++++++++++++++++ Cargo.toml | 12 +++++++++++- src/dev.rs | 30 ++++++++++++++++++++++++++++++ src/lib.rs | 7 ++++++- src/main.rs | 10 ++-------- 5 files changed, 74 insertions(+), 10 deletions(-) create mode 100644 src/dev.rs diff --git a/Cargo.lock b/Cargo.lock index 71c5896..1af9a77 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -590,6 +590,30 @@ dependencies = [ "syn", ] +[[package]] +name = "bevy_dev_tools" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e1ae2246832d0fce2f6eb3b7f3d05084a06e36b24bb72cb8b9a171de7e4a341" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_diagnostic", + "bevy_ecs", + "bevy_input", + "bevy_picking", + "bevy_reflect", + "bevy_render", + "bevy_state", + "bevy_text", + "bevy_time", + "bevy_ui", + "bevy_utils", + "bevy_window", + "tracing", +] + [[package]] name = "bevy_diagnostic" version = "0.16.0" @@ -786,6 +810,7 @@ dependencies = [ "bevy_color", "bevy_core_pipeline", "bevy_derive", + "bevy_dev_tools", "bevy_diagnostic", "bevy_ecs", "bevy_gizmos", diff --git a/Cargo.toml b/Cargo.toml index 6c0a0d3..ba7dbfa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,10 +25,11 @@ bevy = { version = "0.16.0", default-features = false, features = [ "bevy_core_pipeline", "bevy_remote", "bevy_render", + "bevy_state", "bevy_ui", "bevy_window", "bevy_winit", - "dynamic_linking", + "default_font", "multi_threaded", "std", "wayland", @@ -44,3 +45,12 @@ rand = { version = "0.9.1", default-features = false, features = [ "thread_rng", ] } wyrand = "0.3.2" + +[features] +default = ["dev"] +dev = [ + "bevy/bevy_dev_tools", + "bevy/bevy_remote", + "bevy/bevy_ui_debug", + "bevy/dynamic_linking", +] diff --git a/src/dev.rs b/src/dev.rs new file mode 100644 index 0000000..62f82d5 --- /dev/null +++ b/src/dev.rs @@ -0,0 +1,30 @@ +use bevy::{ + dev_tools::{ + fps_overlay::{FpsOverlayConfig, FpsOverlayPlugin}, + states::log_transitions, + }, + input::common_conditions::input_just_pressed, + prelude::*, +}; + +use crate::AppState; + +pub(super) fn dev_tools(app: &mut App) { + app.add_plugins(FpsOverlayPlugin::default()); + app.add_systems( + Update, + ( + log_transitions::, + toggle_debug_ui.run_if(input_just_pressed(KeyCode::Digit1)), + toggle_fps.run_if(input_just_pressed(KeyCode::Digit2)), + ), + ); +} + +fn toggle_debug_ui(mut ui: ResMut) { + ui.toggle(); +} + +fn toggle_fps(mut fps: ResMut) { + fps.enabled = !fps.enabled; +} diff --git a/src/lib.rs b/src/lib.rs index da2e8fc..31ba246 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,6 +4,9 @@ use avian2d::{math::Vector, prelude::*}; use bevy::{input::common_conditions::input_pressed, prelude::*}; use clap::{Args, Parser}; +#[cfg(feature = "dev")] +mod dev; + mod game; use game::{ runtime::{move_camera, move_player, quit, zoom_camera}, @@ -50,6 +53,8 @@ impl Plugin for AppSettings { ..default() }), PhysicsPlugins::default().with_length_unit(50.0), + #[cfg(feature = "dev")] + dev::dev_tools, )) .add_systems( Startup, @@ -71,7 +76,7 @@ impl Plugin for AppSettings { if let Some(ref seed) = self.source.seed { app.insert_resource(seed.clone()); } else if let Some(ref peer) = self.source.connect { - println!("{peer}"); + info!("Got peer: {peer}"); todo!("Handle connecting to peer and retrieving seed"); } else { app.insert_resource(Seed::random()); diff --git a/src/main.rs b/src/main.rs index fac1335..ffb5f8a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,14 +1,8 @@ -use bevy::{ - prelude::{App, AppExit}, - remote::{RemotePlugin, http::RemoteHttpPlugin}, -}; +use bevy::prelude::{App, AppExit}; use clap::Parser; use distributed_physics_test::AppSettings; fn main() -> AppExit { - App::new() - .add_plugins(AppSettings::parse()) - .add_plugins((RemotePlugin::default(), RemoteHttpPlugin::default())) - .run() + App::new().add_plugins(AppSettings::parse()).run() }