-
-
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
You added a new example but didn't add metadata for it. Please update the root Cargo.toml file. |
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. |
You added a new example but didn't add metadata for it. Please update the root Cargo.toml file. |
.DS_Store | ||
assets/.DS_Store | ||
benches/.DS_Store | ||
crates/.DS_Store | ||
examples/.DS_Store | ||
release-content/.DS_Store | ||
tests/.DS_Store | ||
tools/.DS_Store |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
couldn't this just be 1 line
Removed the X-Controversial label because there's no more crate changes. |
You added a new example but didn't add metadata for it. Please update the root Cargo.toml file. |
- 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.
- 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.
- 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.
…d tree view plugins
…hanced UI components
…roved performance
…scrolling and improved layout
…d dynamic entity behavior
…ScrollView, SimplePanel, Theme management, TreeView, and the Entity Inspector examples. This cleanup streamlines the codebase and prepares for future enhancements.
…ative positioning for improved performance and accuracy
…ng during entity selection and scrolling refactor(inspector): enhance entity display logic to prioritize high-priority components and show multiple component types fix(virtual_scrolling): update virtual scrolling display logic for improved performance and correct positioning of items docs: add live updates implementation plan detailing architecture, phases, and testing strategy
…management and clipboard functionality
… connection handling
…ady for review/clippy runs
@@ -1,8 +1,4 @@ | |||
#![cfg_attr(docsrs, feature(doc_auto_cfg))] | |||
#![expect( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you split this into a different PR please?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh yes this should be removed. Part of my battle with getting CI checks passing :)
Remote Entity Inspector for bevy_dev_tools
bevy_dev_tools
with a comprehensive remote entity inspector usingbevy_remote
protocolObjective
This PR addresses the critical need for robust remote debugging capabilities in Bevy applications, enabling developers to inspect and monitor entity-component systems in real-time across different processes.
Solution
The solution enhances the existing
bevy_dev_tools
crate with a complete remote inspection system:Core Architecture
Key Features Implemented
Remote Connection System (
src/inspector/http_client.rs
):High-Performance Virtual Scrolling (
src/inspector/ui/virtual_scrolling.rs
):Interactive Component Viewer (
src/inspector/ui/component_viewer.rs
):Entity Management System (
src/inspector/ui/entity_list.rs
):UI Component Library (
src/inspector/ui/
,src/widgets/
):Network Resilience (
src/inspector/inspector.rs
):Testing
Manual Testing Performed
Testing Instructions for Reviewers
Basic Remote Inspector Test:
Performance Test (Large Entity Counts):
Network Resilience Test:
Platforms Tested
Areas Needing Additional Testing
Showcase
The Remote Inspector provides professional debugging capabilities comparable to Unity's Inspector or Unreal's World Outliner:
Key Features Demonstrated
Two-Panel Layout: Entity browser on left, live component inspector on right
Smart Component Formatting:
Remote Connection Workflow:
Developer Experience:
Connection Status Flow:
Ticking data:
https://github.com/user-attachments/assets/a3577223-3c34-491e-9f7f-b86ba269b0df