bevy/crates
ickshonpe ba532e4a37
MeasureFunc improvements (#8402)
# Objective

fixes #8516

* Give `CalculatedSize` a more specific and intuitive name.

* `MeasureFunc`s should only be updated when their `CalculatedSize` is
modified by the systems managing their content.

For example, suppose that you have a UI displaying an image using an
`ImageNode`. When the window is resized, the node's `MeasureFunc` will
be updated even though the dimensions of the texture contained by the
node are unchanged.

* Fix the `CalculatedSize` API so that it no longer requires the extra
boxing and the `dyn_clone` method.


## Solution

* Rename `CalculatedSize` to `ContentSize`

* Only update `MeasureFunc`s on `CalculatedSize` changes.

* Remove the `dyn_clone` method from `Measure` and move the `Measure`
from the `ContentSize` component rather than cloning it.

* Change the measure_func field of `ContentSize` to type
`Option<taffy::node::MeasureFunc>`. Add a `set` method that wraps the
given measure appropriately.

---

## Changelog

* Renamed `CalculatedSize` to `ContentSize`.
* Replaced `upsert_leaf` with a function `update_measure` that only
updates the node's `MeasureFunc`.
* `MeasureFunc`s are only updated when the `ContentSize` changes and not
when the layout changes.
* Scale factor is no longer applied to the size values passed to the
`MeasureFunc`.
* Remove the `ContentSize` scaling in `text_system`.
* The `dyn_clone` method has been removed from the `Measure` trait.
* `Measure`s are moved from the `ContentSize` component instead of
cloning them.
* Added `set` method to `ContentSize` that replaces the `new` function.

## Migration Guide

* `CalculatedSize` has been renamed to `ContentSize`.
* The `upsert_leaf` function has been removed from `UiSurface` and
replaced with `update_measure` which updates the `MeasureFunc` without
node insertion.
* The `dyn_clone` method has been removed from the `Measure` trait.
* The new function of `CalculatedSize` has been replaced with the method
`set`.
2023-05-01 15:40:53 +00:00
..
bevy_a11y Suppress the clippy::type_complexity lint (#8313) 2023-04-06 21:27:36 +00:00
bevy_animation Fixed several missing links in docs. (#8117) 2023-04-23 17:28:36 +00:00
bevy_app Re-add the "frame" span for tracy comparisons (#8362) 2023-04-25 14:56:05 +00:00
bevy_asset bevy_asset: Add LoadContext::get_handle_untyped (#8470) 2023-04-25 19:32:34 +00:00
bevy_audio Ability to set a Global Volume (#7706) 2023-04-10 14:08:43 +00:00
bevy_core Just print out name string, not the entire Name struct (#8494) 2023-04-26 20:00:03 +00:00
bevy_core_pipeline Updated to wgpu 0.16.0, wgpu-hal 0.16.0 and naga 0.12.0 (#8446) 2023-04-26 15:34:23 +00:00
bevy_derive Suppress the clippy::type_complexity lint (#8313) 2023-04-06 21:27:36 +00:00
bevy_diagnostic Suppress the clippy::type_complexity lint (#8313) 2023-04-06 21:27:36 +00:00
bevy_dylib Suppress the clippy::type_complexity lint (#8313) 2023-04-06 21:27:36 +00:00
bevy_dynamic_plugin Suppress the clippy::type_complexity lint (#8313) 2023-04-06 21:27:36 +00:00
bevy_ecs Added reference to ParallelCommands in the Commands doc (#8510) 2023-05-01 15:31:33 +00:00
bevy_ecs_compile_fail_tests Fix 1.69 CI clippy lints (#8450) 2023-04-20 16:51:21 +00:00
bevy_encase_derive Suppress the clippy::type_complexity lint (#8313) 2023-04-06 21:27:36 +00:00
bevy_gilrs Add gamepad rumble support to bevy_input (#8398) 2023-04-24 15:28:53 +00:00
bevy_gizmos Add a bounding box gizmo (#8468) 2023-04-24 15:23:06 +00:00
bevy_gltf Add support for custom glTF vertex attributes. (#5370) 2023-04-24 14:20:13 +00:00
bevy_hierarchy Remove Children component when calling despawn_descendants (#8476) 2023-04-24 14:14:52 +00:00
bevy_input Add gamepad rumble support to bevy_input (#8398) 2023-04-24 15:28:53 +00:00
bevy_internal make glsl and spirv support optional (#8491) 2023-04-25 19:30:48 +00:00
bevy_log add a feature for memory tracing with tracy (#8272) 2023-04-17 16:04:46 +00:00
bevy_macro_utils Simplify world schedule methods (#8403) 2023-04-19 19:48:35 +00:00
bevy_math Suppress the clippy::type_complexity lint (#8313) 2023-04-06 21:27:36 +00:00
bevy_mikktspace Suppress the clippy::type_complexity lint (#8313) 2023-04-06 21:27:36 +00:00
bevy_pbr Updated to wgpu 0.16.0, wgpu-hal 0.16.0 and naga 0.12.0 (#8446) 2023-04-26 15:34:23 +00:00
bevy_ptr Fixed several missing links in docs. (#8117) 2023-04-23 17:28:36 +00:00
bevy_reflect bevy_reflect: Better proxies (#6971) 2023-04-26 12:17:46 +00:00
bevy_reflect_compile_fail_tests Fix 1.69 CI clippy lints (#8450) 2023-04-20 16:51:21 +00:00
bevy_render Screenshots in wasm (#8455) 2023-04-28 19:37:11 +00:00
bevy_scene avoid panic with parented scenes on deleted entities (#8512) 2023-05-01 15:33:42 +00:00
bevy_sprite Updated to wgpu 0.16.0, wgpu-hal 0.16.0 and naga 0.12.0 (#8446) 2023-04-26 15:34:23 +00:00
bevy_tasks Fixed several missing links in docs. (#8117) 2023-04-23 17:28:36 +00:00
bevy_text Fix panic when using debug_asset_server (#8485) 2023-04-25 10:11:11 +00:00
bevy_time Fix timer with zero duration (#8467) 2023-04-24 14:32:42 +00:00
bevy_transform Add a bounding box gizmo (#8468) 2023-04-24 15:23:06 +00:00
bevy_ui MeasureFunc improvements (#8402) 2023-05-01 15:40:53 +00:00
bevy_utils Simplify world schedule methods (#8403) 2023-04-19 19:48:35 +00:00
bevy_window Fixed several missing links in docs. (#8117) 2023-04-23 17:28:36 +00:00
bevy_winit Fixed several missing links in docs. (#8117) 2023-04-23 17:28:36 +00:00