Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jakobhellermann/bevy_editor_pls
In-App editor tools for bevy applications
https://github.com/jakobhellermann/bevy_editor_pls
Last synced: 25 days ago
JSON representation
In-App editor tools for bevy applications
- Host: GitHub
- URL: https://github.com/jakobhellermann/bevy_editor_pls
- Owner: jakobhellermann
- License: other
- Created: 2021-02-22T11:12:02.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-08-11T09:47:35.000Z (3 months ago)
- Last Synced: 2024-10-07T12:54:14.370Z (about 1 month ago)
- Language: Rust
- Homepage:
- Size: 13 MB
- Stars: 740
- Watchers: 11
- Forks: 78
- Open Issues: 28
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-bevy - bevy_editor_pls
README
# bevy_editor_pls
> :warning: **This is very much work in progress**: Take a look at the [missing features](#missing-features) to see if your use case isn't yet supported.
Adds debug tools to your bevy game, including
- hierarchy view and component inspector
- separate editor camera
- some builtin editor panels for diagnostics, debug settings
- scene export**This is not, and isn't meant to be, comparable to the actual editor bevy will end up with. `bevy_editor_pls` attempts to get the low hanging fruits by adding editor UI to the game executable, without having all the complexity that comes with having a proper well-designed editor architecture.**
## How to use:
Add the `EditorPlugin`:
```diff
+use bevy_editor_pls::prelude::*;fn main() {
App::new()
.add_plugins(DefaultPlugins)
+ .add_plugins(EditorPlugin::default())
...
.run();
}
```![editor preview](./docs/editor.png)
### Custom editor panels
```rust
use bevy_editor_pls::{egui, prelude::*};
use bevy_editor_pls_core::editor_window::{EditorWindow, EditorWindowContext};fn main() {
App::new()
...
.add_editor_window::()
...
.run();
}pub struct MyEditorWindow;
struct MyEditorWindowState {
}
impl EditorWindow for MyEditorWindow {
type State = MyEditorWindowState;
const NAME: &'static str = "Another editor panel";fn ui(world: &mut World, cx: EditorWindowContext, ui: &mut egui::Ui) {
let currently_inspected = &cx.state::().unwrap().selected;ui.label("Anything can go here");
}
}
```### Controls
The default controls are:
- `E` to toggle the editor
- `Ctrl+Enter` to pause/unpause time
- `F` to focus selected entity
- `T/R/S` to show translate/rotate/scale gizmo
- Double click on the menu bar to go fullscreenCameras:
- `2d (Pan/Zoom)`: any mouse button to pan, scroll to zoom
- `3d (Free)`: `WASD + Ctrl/Shift` + `Shift` for a speed boost for the free 3d camera
- `3d (Pan/Orbit)`: `Right click` to rotate around focus, `Middle mouse button` to panChanging the default controls
```rust
use bevy_editor_pls::EditorPlugin;
use bevy_editor_pls::controls;
use bevy_editor_pls_default_windows::hierarchy::picking::EditorRayCastSource;fn main() {
App::new()
// ..
.add_plugin(EditorPlugin)
.insert_resource(editor_controls())
.add_startup_system(set_cam3d_controls)
// ..
.run();
}fn editor_controls() -> EditorControls {
let mut editor_controls = EditorControls::default_bindings();
editor_controls.unbind(controls::Action::PlayPauseEditor);editor_controls.insert(
controls::Action::PlayPauseEditor,
controls::Binding {
input: controls::UserInput::Single(controls::Button::Keyboard(KeyCode::Escape)),
conditions: vec![controls::BindingCondition::ListeningForText(false)],
},
);editor_controls
}fn set_cam3d_controls(
mut query: Query<&mut bevy_editor_pls::default_windows::cameras::camera_3d_free::FlycamControls>,
) {
let mut controls = query.single_mut();
controls.key_up = KeyCode::Q;
controls.key_down = KeyCode::E;
}
```
## Missing features
- scene import
- visualization of invisible entities in editor (to see where the camera is for example)## Bevy support table
| bevy | bevy\_editor\_pls |
| ---- | ----------------- |
| 0.14 | 0.9 |
| 0.13 | 0.8 |
| 0.12 | 0.7 |
| 0.12 | 0.6 |
| 0.11 | 0.5 |
| 0.10 | 0.4 |
| 0.10 | 0.3 |
| 0.9 | 0.2 |
| 0.8 | 0.1 |