bevy/crates
ickshonpe 563d6e36bb
Add stack index to Node (#9853)
# Objective

If we add the stack index to `Node` then we don't need to walk the
`UiStack` repeatedly during extraction.

## Solution

Add a field `stack_index`  to `Node`.
Update it in `ui_stack_system`.
Iterate queries directly in the UI's extraction systems.

### Benchmarks 
```
cargo run --profile stress-test --features trace_tracy --example many_buttons -- --no-text --no-borders
```

frames (yellow this PR, red main):

<img width="447" alt="frames-per-second"
src="https://github.com/bevyengine/bevy/assets/27962798/385c0ccf-c257-42a2-b736-117542d56eff">

`ui_stack_system`:
<img width="585" alt="ui-stack-system"
src="https://github.com/bevyengine/bevy/assets/27962798/2916cc44-2887-4c3b-a144-13250d84f7d5">

extract schedule:
<img width="469" alt="extract-schedule"
src="https://github.com/bevyengine/bevy/assets/27962798/858d4ab4-d99f-48e8-b153-1c92f51e0743">

---

## Changelog

* Added the field `stack_index` to `Node`.
* `ui_stack_system` updates `Node::stack_index` after a new `UiStack` is
generated.
* The UI's extraction functions iterate a query directly rather than
walking the `UiStack` and doing lookups.
2023-10-31 23:32:51 +00:00
..
bevy_a11y Various accessibility API updates. (#9989) 2023-10-02 21:22:52 +00:00
bevy_animation refactor: Change Option<With<T>> query params to Has<T> (#9959) 2023-10-02 01:21:41 +00:00
bevy_app Derive Error for more error types (#10240) 2023-10-28 22:20:37 +00:00
bevy_asset Additional AssetPath unit tests. (#10279) 2023-10-27 03:29:25 +00:00
bevy_audio More ergonomic spatial audio (#9800) 2023-10-09 19:43:56 +00:00
bevy_core Global TaskPool API improvements (#10008) 2023-10-23 20:48:48 +00:00
bevy_core_pipeline StandardMaterial Light Transmission (#8015) 2023-10-31 20:59:02 +00:00
bevy_derive Replace all labels with interned labels (#7762) 2023-10-25 21:39:23 +00:00
bevy_diagnostic Unify FixedTime and Time while fixing several problems (#8964) 2023-10-16 01:57:55 +00:00
bevy_dylib Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_dynamic_plugin Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_ecs Derive Error for more error types (#10240) 2023-10-28 22:20:37 +00:00
bevy_ecs_compile_fail_tests Updates for rust 1.73 (#10035) 2023-10-06 00:31:10 +00:00
bevy_encase_derive Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_gilrs Unify FixedTime and Time while fixing several problems (#8964) 2023-10-16 01:57:55 +00:00
bevy_gizmos Bind group entries (#9694) 2023-10-21 15:39:22 +00:00
bevy_gltf StandardMaterial Light Transmission (#8015) 2023-10-31 20:59:02 +00:00
bevy_hierarchy Fix some warnings shown in nightly (#10012) 2023-10-05 05:41:09 +00:00
bevy_input docs: Update input_toggle_active example (#9913) 2023-10-28 06:17:48 +00:00
bevy_internal StandardMaterial Light Transmission (#8015) 2023-10-31 20:59:02 +00:00
bevy_log Update tracy-client requirement from 0.15 to 0.16 (#9436) 2023-08-15 07:45:21 +00:00
bevy_macro_utils Replace all labels with interned labels (#7762) 2023-10-25 21:39:23 +00:00
bevy_macros_compile_fail_tests bevy_derive: Fix #[deref] breaking other attributes (#9551) 2023-08-28 17:36:18 +00:00
bevy_math Add Cubic prefix to all cubic curve generators (#10299) 2023-10-28 21:53:38 +00:00
bevy_mikktspace Use clippy::doc_markdown more. (#10286) 2023-10-27 22:49:02 +00:00
bevy_pbr StandardMaterial Light Transmission (#8015) 2023-10-31 20:59:02 +00:00
bevy_ptr add and fix shields in Readmes (#9993) 2023-10-15 00:52:31 +00:00
bevy_reflect bevy_reflect: Fix ignored/skipped field order (#7575) 2023-10-22 12:43:31 +00:00
bevy_reflect_compile_fail_tests Improve TypeUuid's derive macro error messages (#9315) 2023-10-02 12:42:01 +00:00
bevy_render StandardMaterial Light Transmission (#8015) 2023-10-31 20:59:02 +00:00
bevy_scene Correct Scene loader error description (#10161) 2023-10-17 17:58:35 +00:00
bevy_sprite Image Sampler Improvements (#10254) 2023-10-26 23:30:09 +00:00
bevy_tasks Update async-io requirement from 1.13.0 to 2.0.0 (#10238) 2023-10-23 23:49:57 +00:00
bevy_text [bevy_text] Document what happens when font is not specified (#10252) 2023-10-28 19:55:25 +00:00
bevy_time add on_real_time_timer run condition (#10179) 2023-10-20 12:58:37 +00:00
bevy_transform Derive Error for more error types (#10240) 2023-10-28 22:20:37 +00:00
bevy_ui Add stack index to Node (#9853) 2023-10-31 23:32:51 +00:00
bevy_utils Replace all labels with interned labels (#7762) 2023-10-25 21:39:23 +00:00
bevy_window Slightly improve CursorIcon doc. (#10289) 2023-10-28 12:30:33 +00:00
bevy_winit Use clippy::doc_markdown more. (#10286) 2023-10-27 22:49:02 +00:00