2024-03-06 20:33:05 +00:00
|
|
|
//! This crate provides additional utilities for the [Bevy game engine](https://bevyengine.org),
|
|
|
|
//! focused on improving developer experience.
|
2024-03-08 20:03:09 +00:00
|
|
|
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
|
2024-03-06 20:33:05 +00:00
|
|
|
|
|
|
|
use bevy_app::prelude::*;
|
2024-03-11 19:26:14 +00:00
|
|
|
|
2024-03-06 20:33:05 +00:00
|
|
|
#[cfg(feature = "bevy_ci_testing")]
|
|
|
|
pub mod ci_testing;
|
2024-03-11 19:26:14 +00:00
|
|
|
pub mod fps_overlay;
|
2024-03-06 20:33:05 +00:00
|
|
|
|
Add a gizmo-based overlay to show UI node outlines (Adopted) (#11237)
# Objective
- This is an adopted version of #10420
- The objective is to help debugging the Ui layout tree with helpful
outlines, that can be easily enabled/disabled
## Solution
- Like #10420, the solution is using the bevy_gizmos in outlining the
nodes
---
## Changelog
### Added
- Added debug_overlay mod to `bevy_dev_tools`
- Added bevy_ui_debug feature to `bevy_dev_tools`
## How to use
- The user must use `bevy_dev_tools` feature in TOML
- The user must use the plugin UiDebugPlugin, that can be found on
`bevy::dev_tools::debug_overlay`
- Finally, to enable the function, the user must set
`UiDebugOptions::enabled` to true
Someone can easily toggle the function with something like:
```rust
fn toggle_overlay(input: Res<ButtonInput<KeyCode>>, options: ResMut<UiDebugOptions>) {
if input.just_pressed(KeyCode::Space) {
// The toggle method will enable if disabled and disable if enabled
options.toggle();
}
}
```
Note that this feature can be disabled from dev_tools, as its in fact
behind a default feature there, being the feature bevy_ui_debug.
# Limitations
Currently, due to limitations with gizmos itself, it's not possible to
support this feature to more the one window, so this tool is limited to
the primary window only.
# Showcase
![image](https://github.com/bevyengine/bevy/assets/126117294/ce9d70e6-0a57-4fa9-9753-ff5a9d82c009)
Ui example with debug_overlay enabled
![image](https://github.com/bevyengine/bevy/assets/126117294/e945015c-5bab-4d7f-9273-472aabaf25a9)
And disabled
---------
Co-authored-by: Nicola Papale <nico@nicopap.ch>
Co-authored-by: Pablo Reinhardt <pabloreinhardt@gmail.com>
Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
2024-03-18 18:11:06 +00:00
|
|
|
#[cfg(feature = "bevy_ui_debug")]
|
|
|
|
pub mod debug_overlay;
|
|
|
|
|
2024-03-06 20:33:05 +00:00
|
|
|
/// Enables developer tools in an [`App`]. This plugin is added automatically with `bevy_dev_tools`
|
|
|
|
/// feature.
|
|
|
|
///
|
|
|
|
/// Warning: It is not recommended to enable this in final shipped games or applications.
|
|
|
|
/// Dev tools provide a high level of access to the internals of your application,
|
|
|
|
/// and may interfere with ordinary use and gameplay.
|
|
|
|
///
|
|
|
|
/// To enable developer tools, you can either:
|
|
|
|
///
|
|
|
|
/// - Create a custom crate feature (e.g "`dev_mode`"), which enables the `bevy_dev_tools` feature
|
|
|
|
/// along with any other development tools you might be using:
|
|
|
|
///
|
|
|
|
/// ```toml
|
|
|
|
/// [feature]
|
|
|
|
/// dev_mode = ["bevy/bevy_dev_tools", "other_dev_tools"]
|
|
|
|
/// ```
|
|
|
|
///
|
|
|
|
/// - Use `--feature bevy/bevy_dev_tools` flag when using the `cargo run` command:
|
|
|
|
///
|
|
|
|
/// `cargo run --features bevy/bevy_dev_tools`
|
|
|
|
///
|
|
|
|
/// - Add the `bevy_dev_tools` feature to the bevy dependency in your `Cargo.toml` file:
|
|
|
|
///
|
|
|
|
/// `features = ["bevy_dev_tools"]`
|
|
|
|
///
|
|
|
|
/// Note: The third method is not recommended, as it requires you to remove the feature before
|
|
|
|
/// creating a build for release to the public.
|
|
|
|
pub struct DevToolsPlugin;
|
|
|
|
|
|
|
|
impl Plugin for DevToolsPlugin {
|
|
|
|
fn build(&self, _app: &mut App) {
|
|
|
|
#[cfg(feature = "bevy_ci_testing")]
|
|
|
|
{
|
|
|
|
ci_testing::setup_app(_app);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|