-
-
Notifications
You must be signed in to change notification settings - Fork 4k
feat: Add comprehensive read-only Bevy Inspector with remote inspection capabilities #20189
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
- Added a new module for editor UI widgets, including ScrollViewBuilder, CoreScrollArea, ExpansionButton, BasicPanel, and ScrollableContainer. - Implemented basic theme support with EditorTheme struct. - Created a Panel widget with collapsible and resizable features. - Developed a scrollable area widget with mouse wheel support and content height calculation methods. - Added examples for using scroll widgets and programmatic scrolling. - Introduced a simple panel widget with configurable dimensions and styling. - Implemented a simple scrollable container with mouse wheel support. - Established a theming system compatible with bevy_feathers, including themed UI elements and a theme management plugin.
You added a new example but didn't add metadata for it. Please update the root Cargo.toml file. |
- Deleted the entire inspector module including events, plugin, remote, selection, tree, and UI components. - Removed associated structures and systems for handling entity and component data from the remote server. - Cleaned up the entity list panel by removing unused scrollable container plugin. - Updated widget module to remove legacy scrollable container and examples.
Added X-Controversial just because of new crate. |
You added a new example but didn't add metadata for it. Please update the root Cargo.toml file. |
In all honesty, it's likely this gets moved to bevy_dev_tools. Just haven't had the time yet! |
Why aren't |
Only because I was hoping to get some feedback on what was worth actually updstreaming outside of the inspector really. It's entirely possible not all of these widgets would have a use outside of the inspector/editor - though a lot of them probably would! |
Awesome work. Keep it up. I'm kind of newish at coding and absolutely have only very basic understanding of remote stuff/server/client, however I was wondering if you can answer my question? How come there is the use of JSON instead of RON? I thought RONs are meant to be more flexible than JSON and are able to hold more information, data structure wise? And since this is all done in Rust, why not use a Rust format instead of a JavaScript format? Also, will the use of JSON here prevent others from using RON format? Or do we somehow serialize/deserialize the RON information into JSON before transmitting the information from client to server and vice versa? Thank you for your time. |
- Removed the EntityListPlugin from bevy_editor panels. - Updated the entity naming logic to improve display names based on components. - Introduced a new entity grouping system to categorize entities by their primary components. - Added a tree view widget for hierarchical display of grouped entities. - Implemented comprehensive tests for entity grouping and naming functionalities. - Created a new example inspector application to visualize entities from a remote Bevy application.
You added a new example but didn't add metadata for it. Please update the root Cargo.toml file. |
…d tree view plugins
…zation - Updated imports to use `bevy_app`, `bevy_ecs`, and `bevy_ui` instead of `bevy::prelude::*`. - Reorganized the inspector's remote client to temporarily disable remote functionality until `bevy::remote` is available. - Refactored various widgets and panels to utilize `Default::default()` instead of `default()`. - Enhanced the entity list and tree view widgets for better integration with the new structure. - Improved the handling of expansion buttons and list views to streamline component data fetching. - Updated example to demonstrate the new inspector setup and added a test resource for inspection.
…evy Dev Tools - Added systems for handling inspector window toggle, spawning the inspector window, updating inspector content, and managing entity selection. - Created reusable UI widgets including disclosure triangles, collapsible panels, entity list items, and component badges. - Enhanced entity grouping logic in the inspector for better organization and visibility. - Implemented detailed view for selected entities, displaying their components and properties. - Added a search box widget for filtering entities in the inspector. - Updated styling and layout for improved user experience in the inspector interface.
(Almost) A read-only bevy editor!
bevy_editor
crate with modular architecture for real-time entity and component inspectionbevy_remote
protocol for inspecting external Bevy applicationsObjective
This PR addresses the need for a robust, standalone entity inspector and editor for Bevy applications that can connect to remote processes via
bevy_remote
.Solution
The solution introduces a new
bevy_editor
crate with a modular architecture:Core Architecture
Key Features Implemented
Remote Connection System (
src/remote/
):UI Widget Library (
src/widgets/
):Panel System (
src/panels/
):Component Formatting (
src/formatting/
):Theme System (
src/themes/
):Testing
Manual Testing Performed
Testing Instructions for Reviewers
Basic Inspector Test:
Remote Connection Test:
Individual Component Test:
Platforms Tested
Areas Needing Additional Testing
Showcase
The new Bevy Editor provides a professional entity inspection experience similar to other game engines:
Key Features Demonstrated
Two-Panel Layout: Clean entity list on the left, detailed component inspector on the right
Smart Component Formatting:
Modular Usage:
Remote Connection: