{"id":13794548,"url":"https://github.com/jakobhellermann/bevy_editor_pls","last_synced_at":"2025-05-14T01:04:59.155Z","repository":{"id":37079670,"uuid":"341173084","full_name":"jakobhellermann/bevy_editor_pls","owner":"jakobhellermann","description":"In-App editor tools for bevy applications","archived":false,"fork":false,"pushed_at":"2024-12-06T15:05:39.000Z","size":13642,"stargazers_count":793,"open_issues_count":29,"forks_count":86,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-04-03T08:02:58.532Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jakobhellermann.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-22T11:12:02.000Z","updated_at":"2025-03-31T07:26:33.000Z","dependencies_parsed_at":"2024-01-07T06:22:09.301Z","dependency_job_id":"262ae8fc-6fb5-4f85-b96d-403a9aa1a8b5","html_url":"https://github.com/jakobhellermann/bevy_editor_pls","commit_stats":{"total_commits":303,"total_committers":27,"mean_commits":"11.222222222222221","dds":0.3432343234323433,"last_synced_commit":"c1c4fab1d43124181743b331c9b72cf686cc2ee3"},"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakobhellermann%2Fbevy_editor_pls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakobhellermann%2Fbevy_editor_pls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakobhellermann%2Fbevy_editor_pls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakobhellermann%2Fbevy_editor_pls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jakobhellermann","download_url":"https://codeload.github.com/jakobhellermann/bevy_editor_pls/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248223828,"owners_count":21068069,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T23:00:43.107Z","updated_at":"2025-04-10T13:06:38.238Z","avatar_url":"https://github.com/jakobhellermann.png","language":"Rust","funding_links":[],"categories":["Rust","Dev tools"],"sub_categories":[],"readme":"# bevy_editor_pls\n\n\u003e :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.\n\nAdds debug tools to your bevy game, including\n\n- hierarchy view and component inspector\n- separate editor camera\n- some builtin editor panels for diagnostics, debug settings\n- scene export\n\n**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.**\n\n## How to use:\n\nAdd the `EditorPlugin`:\n\n```diff\n+use bevy_editor_pls::prelude::*;\n\nfn main() {\n    App::new()\n        .add_plugins(DefaultPlugins)\n+       .add_plugins(EditorPlugin::default())\n        ...\n        .run();\n}\n```\n\n![editor preview](./docs/editor.png)\n\n### Custom editor panels\n\n```rust\nuse bevy_editor_pls::{egui, prelude::*};\nuse bevy_editor_pls_core::editor_window::{EditorWindow, EditorWindowContext};\n\nfn main() {\n    App::new()\n        ...\n        .add_editor_window::\u003cMyEditorWindow\u003e()\n        ...\n        .run();\n}\n\npub struct MyEditorWindow;\nstruct MyEditorWindowState {\n}\nimpl EditorWindow for MyEditorWindow {\n    type State = MyEditorWindowState;\n    const NAME: \u0026'static str = \"Another editor panel\";\n\n    fn ui(world: \u0026mut World, cx: EditorWindowContext, ui: \u0026mut egui::Ui) {\n        let currently_inspected = \u0026cx.state::\u003cMyEditorWindow\u003e().unwrap().selected;\n\n        ui.label(\"Anything can go here\");\n    }\n}\n```\n\n### Controls\n\nThe default controls are:\n\n- `E` to toggle the editor\n- `Ctrl+Enter` to pause/unpause time\n- `F` to focus selected entity\n- `T/R/S` to show translate/rotate/scale gizmo\n- Double click on the menu bar to go fullscreen\n\nCameras:\n\n- `2d (Pan/Zoom)`: any mouse button to pan, scroll to zoom\n- `3d (Free)`: `WASD + Ctrl/Shift` + `Shift` for a speed boost for the free 3d camera\n- `3d (Pan/Orbit)`: `Right click` to rotate around focus, `Middle mouse button` to pan\n\n\u003cdetails\u003e\n\u003csummary\u003eChanging the default controls\u003c/summary\u003e\n\n```rust\nuse bevy_editor_pls::EditorPlugin;\nuse bevy_editor_pls::controls;\nuse bevy_editor_pls_default_windows::hierarchy::picking::EditorRayCastSource;\n\nfn main() {\n    App::new()\n        // ..\n        .add_plugin(EditorPlugin)\n        .insert_resource(editor_controls())\n        .add_startup_system(set_cam3d_controls)\n        // ..\n        .run();\n}\n\nfn editor_controls() -\u003e EditorControls {\n    let mut editor_controls = EditorControls::default_bindings();\n    editor_controls.unbind(controls::Action::PlayPauseEditor);\n\n    editor_controls.insert(\n        controls::Action::PlayPauseEditor,\n        controls::Binding {\n            input: controls::UserInput::Single(controls::Button::Keyboard(KeyCode::Escape)),\n            conditions: vec![controls::BindingCondition::ListeningForText(false)],\n        },\n    );\n\n    editor_controls\n}\n\nfn set_cam3d_controls(\n    mut query: Query\u003c\u0026mut bevy_editor_pls::default_windows::cameras::camera_3d_free::FlycamControls\u003e,\n) {\n    let mut controls = query.single_mut();\n    controls.key_up = KeyCode::Q;\n    controls.key_down = KeyCode::E;\n}\n```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n## Missing features\n\n- scene import\n- visualization of invisible entities in editor (to see where the camera is for example)\n\n## Bevy support table\n\n| bevy | bevy\\_editor\\_pls |\n| ---- | ----------------- |\n| 0.14 | 0.9               |\n| 0.13 | 0.8               |\n| 0.12 | 0.7               |\n| 0.12 | 0.6               |\n| 0.11 | 0.5               |\n| 0.10 | 0.4               |\n| 0.10 | 0.3               |\n| 0.9  | 0.2               |\n| 0.8  | 0.1               |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakobhellermann%2Fbevy_editor_pls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakobhellermann%2Fbevy_editor_pls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakobhellermann%2Fbevy_editor_pls/lists"}