From 0149c4145f0f398e9fba85c2584d0481a260f57c Mon Sep 17 00:00:00 2001 From: Carter Anderson Date: Sat, 30 Jul 2022 15:03:21 +0000 Subject: [PATCH] Update changelog for 0.8.0 (#5494) Big thanks to @colepoirier for putting together the changelog this time around! --- CHANGELOG.md | 512 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 512 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a70b76da94..efeaf2945e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,518 @@ current changes on git with [previous release tags][git_tag_comparison]. [git_tag_comparison]: https://github.com/bevyengine/bevy/compare/v0.6.0...main +## Version 0.8.0 (2022-07-30) + +### Added + +- [Callable PBR functions][4939] +- [Spotlights][4715] +- [Camera Driven Rendering][4745] +- [Camera Driven Viewports][4898] +- [Visibilty Inheritance, universal `ComputedVisibility`, and `RenderLayers` support][5310] +- [Better Materials: `AsBindGroup` trait and derive, simpler `Material` trait][5053] +- [Derive `AsBindGroup` Improvements: Better errors, more options, update examples][5364] +- [Support `AsBindGroup` for 2d materials as well][5312] +- [Parallel Frustum Culling][4489] +- [Hierarchy commandization][4197] +- [Generate vertex tangents using mikktspace][3872] +- [Add a `SpatialBundle` with `Visibility` and `Transform` components][5344] +- [Add `RegularPolygon` and `Circle` meshes][3730] +- [Add a `SceneBundle` to spawn a scene][2424] +- [Allow higher order systems][4833] +- [Add global `init()` and `get()` accessors for all newtyped `TaskPools`][2250] +- [Add reusable shader functions for transforming position/normal/tangent][4901] +- [Add support for vertex colors][4528] +- [Add support for removing attributes from meshes][5254] +- [Add option to center a window][4999] +- [Add `depth_load_op` configuration field to `Camera3d`][4904] +- [Refactor `Camera` methods and add viewport rect][4948] +- [Add `TextureFormat::R16Unorm` support for `Image`][5249] +- [Add a `VisibilityBundle` with `Visibility` and `ComputedVisibility` components][5335] +- [Add ExtractResourcePlugin][3745] +- [Add depth_bias to SpecializedMaterial][4101] +- [Added `offset` parameter to `TextureAtlas::from_grid_with_padding`][4836] +- [Add the possibility to create custom 2d orthographic cameras][4048] +- [bevy_render: Add `attributes` and `attributes_mut` methods to `Mesh`][3927] +- [Add helper methods for rotating `Transform`s][5151] +- [Enable wgpu profiling spans when using bevy's trace feature][5182] +- [bevy_pbr: rework `extract_meshes`][4240] +- [Add `inverse_projection` and `inverse_view_proj` fields to shader view uniform][5119] +- [Add `ViewRangefinder3d` to reduce boilerplate when enqueuing standard 3D `PhaseItems`][5014] +- [Create `bevy_ptr` standalone crate][4653] +- [Add `IntoIterator` impls for `&Query` and `&mut Query`][4692] +- [Add untyped APIs for `Components` and `Resources`][4447] +- [Add infallible resource getters for `WorldCell`][4104] +- [Add `get_change_ticks` method to `EntityRef` and `EntityMut`][2539] +- [Add comparison methods to `FilteredAccessSet`][4211] +- [Add `Commands::new_from_entities`][4423] +- [Add `QueryState::get_single_unchecked_manual` and its family members][4841] +- [Add `ParallelCommands` system parameter][4749] +- [Add methods for querying lists of entities][4879] +- [Implement `FusedIterator` for eligible `Iterator` types][4942] +- [Add `component_id()` function to `World` and `Components`][5066] +- [Add ability to inspect entity's components][5136] +- [Add a more helpful error to help debug panicking command on despawned entity][5198] +- [Add `ExactSizeIterator` implementation for `QueryCombinatonIter`][5148] +- [Added the `ignore_fields` attribute to the derive macros for `*Label` types][5366] +- [Exact sized event iterators][3863] +- [Add a `clear()` method to the `EventReader` that consumes the iterator][4693] +- [Add helpers to send `Events` from `World`][5355] +- [Add file metadata to `AssetIo`][2123] +- [Add missing audio/ogg file extensions: .oga, .spx][4703] +- [Add `reload_asset` method to `AssetServer`][5106] +- [Allow specifying chrome tracing file path using an environment variable][4618] +- [Create a simple tool to compare traces between executions][4628] +- [Add a tracing span for run criteria][4709] +- [Add tracing spans for `Query::par_for_each` and its variants.][4711] +- [Add a `release_all` method on `Input`][5011] +- [Add a `reset_all` method on `Input`][5015] +- [Add a helper tool to build examples for wasm][4776] +- [bevy_reflect: add a `ReflectFromPtr` type to create `&dyn Reflect` from a `*const ()`][4475] +- [Add a `ReflectDefault` type and add `#[reflect(Default)]` to all component types that implement Default and are user facing][3733] +- [Add a macro to implement `Reflect` for struct types and migrate glam types to use this for reflection][4540] +- [bevy_reflect: reflect arrays][4701] +- [bevy_reflect: reflect char][4790] +- [bevy_reflect: add `GetTypeRegistration` impl for reflected tuples][4226] +- [Add reflection for `Resources`][5175] +- [bevy_reflect: add `as_reflect` and `as_reflect_mut` methods on `Reflect`][4350] +- [Add an `apply_or_insert` method to `ReflectResource` and `ReflectComponent`][5201] +- [bevy_reflect: `IntoIter` for `DynamicList` and `DynamicMap`][4108] +- [bevy_reflect: Add `PartialEq` to reflected `f32`s and `f64`s][4217] +- [Create mutable versions of `TypeRegistry` methods][4484] +- [bevy_reflect: add a `get_boxed` method to `reflect_trait`][4120] +- [bevy_reflect: add `#[reflect(default)]` attribute for `FromReflect`][4140] +- [bevy_reflect: add statically available type info for reflected types][4042] +- [Add an `assert_is_exclusive_system` function][5275] +- [bevy_ui: add a multi-windows check for `Interaction` (we dont yet support multiple windows)][5225] + +### Changed + +- [Depend on Taffy (a Dioxus and Bevy-maintained fork of Stretch)][4716] +- [Use lifetimed, type erased pointers in bevy_ecs][3001] +- [Migrate to `encase` from `crevice`][4339] +- [Update `wgpu` to 0.13][5168] +- [Pointerfication followup: Type safety and cleanup][4621] +- [bevy_ptr works in no_std environments][4760] +- [Fail to compile on 16-bit platforms][4736] +- [Improve ergonomics and reduce boilerplate around creating text elements][5343] +- [Don't cull `Ui` nodes that have a rotation][5389] +- [Rename `ElementState` to `ButtonState`][4314] +- [Move `Size` to `bevy_ui`][4285] +- [Move `Rect` to `bevy_ui` and rename it to `UiRect`][4276] +- [Modify `FontAtlas` so that it can handle fonts of any size][3592] +- [Rename `CameraUi`][5234] +- [Remove `task_pool` parameter from `par_for_each(_mut)`][4705] +- [Copy `TaskPool` resoures to sub-Apps][4792] +- [Allow closing windows at runtime][3575] +- [Move the configuration of the `WindowPlugin` to a `Resource`][5227] +- [Optionally resize `Window` canvas element to fit parent element][4726] +- [Change window resolution types from tuple to `Vec2`][5276] +- [Update time by sending frame `Instant` through a channel][4744] +- [Split time functionality into `bevy_time`][4187] +- [Split mesh shader files to make the shaders more reusable][4867] +- [Set `naga` capabilities corresponding to `wgpu` features][4824] +- [Separate out PBR lighting, shadows, clustered forward, and utils from pbr.wgsl][4938] +- [Separate PBR and tonemapping into 2 functions][5078] +- [Make `RenderStage::Extract` run on the render world][4402] +- [Change default `FilterMode` of `Image` to `Linear`][4465] +- [bevy_render: Fix KTX2 UASTC format mapping][4569] +- [Allow rendering meshes without UV coordinate data][5222] +- [Validate vertex attribute format on insertion][5259] +- [Use `Affine3A` for `GlobalTransform`to allow any affine transformation][4379] +- [Recalculate entity `AABB`s when meshes change][4944] +- [Change `check_visibility` to use thread-local queues instead of a channel][4663] +- [Allow unbatched render phases to use unstable sorts][5049] +- [Extract resources into their target location][5271] +- [Enable loading textures of unlimited size][5305] +- [Do not create nor execute render passes which have no `PhaseItems` to draw][4643] +- [Filter material handles on extraction][4178] +- [Apply vertex colors to `ColorMaterial` and `Mesh2D`][4812] +- [Make `MaterialPipelineKey` fields public][4508] +- [Simplified API to get NDC from camera and world position][4041] +- [Set `alpha_mode` based on alpha value][4658] +- [Make `Wireframe` respect `VisibleEntities`][4660] +- [Use const `Vec2` in lights cluster and bounding box when possible][4602] +- [Make accessors for mesh vertices and indices public][3906] +- [Use `BufferUsages::UNIFORM` for `SkinnedMeshUniform`][4816] +- [Place origin of `OrthographicProjection` at integer pixel when using `ScalingMode::WindowSize`][4085] +- [Make `ScalingMode` more flexible][3253] +- [Move texture sample out of branch in `prepare_normal`][5129] +- [Make the fields of the `Material2dKey` public][5212] +- [Use collect to build mesh attributes][5255] +- [Replace `ReadOnlyFetch` with `ReadOnlyWorldQuery`][4626] +- [Replace `ComponentSparseSet`'s internals with a `Column`][4909] +- [Remove QF generics from all `Query/State` methods and types][5170] +- [Remove `.system()`][4499] +- [Make change lifespan deterministic and update docs][3956] +- [Make derived `SystemParam` readonly if possible][4650] +- [Merge `matches_archetype` and `matches_table`][4807] +- [Allows conversion of mutable queries to immutable queries][5376] +- [Skip `drop` when `needs_drop` is `false`][4773] +- [Use u32 over usize for `ComponentSparseSet` indicies][4723] +- [Remove redundant `ComponentId` in `Column`][4855] +- [Directly copy moved `Table` components to the target location][5056] +- [`SystemSet::before` and `SystemSet::after` now take `AsSystemLabel`][4503] +- [Converted exclusive systems to parallel systems wherever possible][2774] +- [Improve `size_hint` on `QueryIter`][4244] +- [Improve debugging tools for change detection][4160] +- [Make `RunOnce` a non-manual `System` impl][3922] +- [Apply buffers in `ParamSet`][4677] +- [Don't allocate for `ComponentDescriptors` of non-dynamic component types][4725] +- [Mark mutable APIs under ECS storage as `pub(crate)`][5065] +- [Update `ExactSizeIterator` impl to support archetypal filters (`With`, `Without`)][5124] +- [Removed world cell from places where split multable access is not needed][5167] +- [Add Events to `bevy_ecs` prelude][5159] +- [Improve `EntityMap` API][5231] +- [Implement `From` for `ShouldRun`.][5306] +- [Allow iter combinations on custom world queries][5286] +- [Simplify design for `*Label`s][4957] +- [Tidy up the code of events][4713] +- [Rename `send_default_event` to `send_event_default` on world][5383] +- [enable optional dependencies to stay optional][5023] +- [Remove the dependency cycles][5171] +- [Enforce type safe usage of Handle::get][4794] +- [Export anyhow::error for custom asset loaders][5359] +- [Update `shader_material_glsl` example to include texture sampling][5215] +- [Remove unused code in game of life shader][5349] +- [Make the contributor birbs bounce to the window height][5274] +- [Improve Gamepad D-Pad Button Detection][5220] +- [bevy_reflect: support map insertio][5173] +- [bevy_reflect: improve debug formatting for reflected types][4218] +- [bevy_reflect_derive: big refactor tidying up the code][4712] +- [bevy_reflect: small refactor and default `Reflect` methods][4739] +- [Make `Reflect` safe to implement][5010] +- [`bevy_reflect`: put `serialize` into external `ReflectSerialize` type][4782] +- [Remove `Serialize` impl for `dyn Array` and friends][4780] +- [Re-enable `#[derive(TypeUuid)]` for generics][4118] +- [Move primitive type registration into `bevy_reflect`][4844] +- [Implement reflection for more `glam` types][5194] +- [Make `reflect_partial_eq` return more accurate results][5210] +- [Make public macros more robust with `$crate`][4655] +- [Ensure that the parent is always the expected entity][4717] +- [Support returning data out of `with_children`][4708] +- [Remove `EntityMut::get_unchecked`][4547] +- [Diagnostics: meaningful error when graph node has wrong number of inputs][4924] +- [Remove redundant `Size` import][5339] +- [Export and register `Mat2`.][5324] +- [Implement `Debug` for `Gamepads`][5291] +- [Update codebase to use `IntoIterator` where possible.][5269] +- [Rename `headless_defaults` example to `no_renderer` for clarity][5263] +- [Remove dead `SystemLabelMarker` struct][5190] +- [bevy_reflect: remove `glam` from a test which is active without the glam feature][5195] +- [Disable vsync for stress tests][5187] +- [Move `get_short_name` utility method from `bevy_reflect` into `bevy_utils`][5174] +- [Derive `Default` for enums where possible][5158] +- [Implement `Eq` and `PartialEq` for `MouseScrollUnit`][5048] +- [Some cleanup for `bevy_ptr`][4668] +- [Move float_ord from `bevy_core` to `bevy_utils`][4189] +- [Remove unused `CountdownEvent`][4290] +- [Some minor cleanups of asset_server][4604] +- [Use `elapsed()` on `Instant`][4599] +- [Make paused `Timers` update `just_finished` on tick][4445] +- [bevy_utils: remove hardcoded log level limit][4580] +- [Make `Time::update_with_instant` public for use in tests][4469] +- [Do not impl Component for Task][4113] +- [Remove nonexistent `WgpuResourceDiagnosticsPlugin`][4541] +- [Update ndk-glue requirement from 0.5 to 0.6][3624] +- [Update tracing-tracy requirement from 0.8.0 to 0.9.0][4786] +- [update image to 0.24][4121] +- [update xshell to 0.2][4789] +- [Update gilrs to v0.9][4848] +- [bevy_log: upgrade to tracing-tracy 0.10.0][4991] +- [update hashbrown to 0.12][5035] +- [Update `clap` to 3.2 in tools using `value_parser`][5031] +- [Updated `glam` to `0.21`.][5142] +- [Update Notify Dependency][5396] + +### Fixed + +- [bevy_ui: keep `Color` as 4 `f32`s][4494] +- [Fix issues with bevy on android other than the rendering][5130] +- [Update layout/style when scale factor changes too][4689] +- [Fix `Overflow::Hidden` so it works correctly with `scale_factor_override`][3854] +- [Fix `bevy_ui` touch input][4099] +- [Fix physical viewport calculation][5055] +- [Minimally fix the known unsoundness in `bevy_mikktspace`][5299] +- [Make `Transform` propagation correct in the presence of updated children][4608] +- [`StorageBuffer` uses wrong type to calculate the buffer size.][4557] +- [Fix confusing near and far fields in Camera][4457] +- [Allow minimising window if using a 2d camera][4527] +- [WGSL: use correct syntax for matrix access][5039] +- [Gltf: do not import `IoTaskPool` in wasm][5038] +- [Fix skinned mesh normal handling in mesh shader][5095] +- [Don't panic when `StandardMaterial` `normal_map` hasn't loaded yet][5307] +- [Fix incorrect rotation in `Transform::rotate_around`][5300] +- [Fix `extract_wireframes`][5301] +- [Fix type parameter name conflicts of `#[derive(Bundle)]`][4636] +- [Remove unnecessary `unsafe impl` of `Send+Sync` for `ParallelSystemContainer`][5137] +- [Fix line material shader][5348] +- [Fix `mouse_clicked` check for touch][2029] +- [Fix unsoundness with `Or`/`AnyOf`/`Option` component access][4659] +- [Improve soundness of `CommandQueue`][4863] +- [Fix some memory leaks detected by miri][4959] +- [Fix Android example icon][4076] +- [Fix broken `WorldCell` test][5009] +- [Bugfix `State::set` transition condition infinite loop][4890] +- [Fix crash when using `Duration::MAX`][4900] +- [Fix release builds: Move asserts under `#[cfg(debug_assertions)]`][4871] +- [Fix frame count being a float][4493] +- [Fix "unused" warnings when compiling with `render` feature but without `animation`][4714] +- [Fix re-adding a plugin to a `PluginGroup`][2039] +- [Fix torus normals][4520] +- [Add `NO_STORAGE_BUFFERS_SUPPORT` shaderdef when needed][4949] + +[2029]: https://github.com/bevyengine/bevy/pull/2029 +[2039]: https://github.com/bevyengine/bevy/pull/2039 +[2123]: https://github.com/bevyengine/bevy/pull/2123 +[2250]: https://github.com/bevyengine/bevy/pull/2250 +[2424]: https://github.com/bevyengine/bevy/pull/2424 +[2539]: https://github.com/bevyengine/bevy/pull/2539 +[2774]: https://github.com/bevyengine/bevy/pull/2774 +[3001]: https://github.com/bevyengine/bevy/pull/3001 +[3253]: https://github.com/bevyengine/bevy/pull/3253 +[3575]: https://github.com/bevyengine/bevy/pull/3575 +[3592]: https://github.com/bevyengine/bevy/pull/3592 +[3624]: https://github.com/bevyengine/bevy/pull/3624 +[3730]: https://github.com/bevyengine/bevy/pull/3730 +[3733]: https://github.com/bevyengine/bevy/pull/3733 +[3745]: https://github.com/bevyengine/bevy/pull/3745 +[3854]: https://github.com/bevyengine/bevy/pull/3854 +[3863]: https://github.com/bevyengine/bevy/pull/3863 +[3872]: https://github.com/bevyengine/bevy/pull/3872 +[3906]: https://github.com/bevyengine/bevy/pull/3906 +[3922]: https://github.com/bevyengine/bevy/pull/3922 +[3927]: https://github.com/bevyengine/bevy/pull/3927 +[3956]: https://github.com/bevyengine/bevy/pull/3956 +[4041]: https://github.com/bevyengine/bevy/pull/4041 +[4042]: https://github.com/bevyengine/bevy/pull/4042 +[4048]: https://github.com/bevyengine/bevy/pull/4048 +[4076]: https://github.com/bevyengine/bevy/pull/4076 +[4085]: https://github.com/bevyengine/bevy/pull/4085 +[4099]: https://github.com/bevyengine/bevy/pull/4099 +[4101]: https://github.com/bevyengine/bevy/pull/4101 +[4104]: https://github.com/bevyengine/bevy/pull/4104 +[4108]: https://github.com/bevyengine/bevy/pull/4108 +[4113]: https://github.com/bevyengine/bevy/pull/4113 +[4118]: https://github.com/bevyengine/bevy/pull/4118 +[4120]: https://github.com/bevyengine/bevy/pull/4120 +[4121]: https://github.com/bevyengine/bevy/pull/4121 +[4140]: https://github.com/bevyengine/bevy/pull/4140 +[4160]: https://github.com/bevyengine/bevy/pull/4160 +[4178]: https://github.com/bevyengine/bevy/pull/4178 +[4187]: https://github.com/bevyengine/bevy/pull/4187 +[4189]: https://github.com/bevyengine/bevy/pull/4189 +[4197]: https://github.com/bevyengine/bevy/pull/4197 +[4211]: https://github.com/bevyengine/bevy/pull/4211 +[4217]: https://github.com/bevyengine/bevy/pull/4217 +[4218]: https://github.com/bevyengine/bevy/pull/4218 +[4226]: https://github.com/bevyengine/bevy/pull/4226 +[4240]: https://github.com/bevyengine/bevy/pull/4240 +[4244]: https://github.com/bevyengine/bevy/pull/4244 +[4276]: https://github.com/bevyengine/bevy/pull/4276 +[4285]: https://github.com/bevyengine/bevy/pull/4285 +[4290]: https://github.com/bevyengine/bevy/pull/4290 +[4314]: https://github.com/bevyengine/bevy/pull/4314 +[4339]: https://github.com/bevyengine/bevy/pull/4339 +[4350]: https://github.com/bevyengine/bevy/pull/4350 +[4379]: https://github.com/bevyengine/bevy/pull/4379 +[4402]: https://github.com/bevyengine/bevy/pull/4402 +[4423]: https://github.com/bevyengine/bevy/pull/4423 +[4445]: https://github.com/bevyengine/bevy/pull/4445 +[4447]: https://github.com/bevyengine/bevy/pull/4447 +[4457]: https://github.com/bevyengine/bevy/pull/4457 +[4465]: https://github.com/bevyengine/bevy/pull/4465 +[4469]: https://github.com/bevyengine/bevy/pull/4469 +[4475]: https://github.com/bevyengine/bevy/pull/4475 +[4484]: https://github.com/bevyengine/bevy/pull/4484 +[4489]: https://github.com/bevyengine/bevy/pull/4489 +[4493]: https://github.com/bevyengine/bevy/pull/4493 +[4494]: https://github.com/bevyengine/bevy/pull/4494 +[4499]: https://github.com/bevyengine/bevy/pull/4499 +[4503]: https://github.com/bevyengine/bevy/pull/4503 +[4508]: https://github.com/bevyengine/bevy/pull/4508 +[4520]: https://github.com/bevyengine/bevy/pull/4520 +[4527]: https://github.com/bevyengine/bevy/pull/4527 +[4528]: https://github.com/bevyengine/bevy/pull/4528 +[4540]: https://github.com/bevyengine/bevy/pull/4540 +[4541]: https://github.com/bevyengine/bevy/pull/4541 +[4547]: https://github.com/bevyengine/bevy/pull/4547 +[4557]: https://github.com/bevyengine/bevy/pull/4557 +[4569]: https://github.com/bevyengine/bevy/pull/4569 +[4580]: https://github.com/bevyengine/bevy/pull/4580 +[4599]: https://github.com/bevyengine/bevy/pull/4599 +[4602]: https://github.com/bevyengine/bevy/pull/4602 +[4604]: https://github.com/bevyengine/bevy/pull/4604 +[4608]: https://github.com/bevyengine/bevy/pull/4608 +[4618]: https://github.com/bevyengine/bevy/pull/4618 +[4621]: https://github.com/bevyengine/bevy/pull/4621 +[4626]: https://github.com/bevyengine/bevy/pull/4626 +[4628]: https://github.com/bevyengine/bevy/pull/4628 +[4636]: https://github.com/bevyengine/bevy/pull/4636 +[4643]: https://github.com/bevyengine/bevy/pull/4643 +[4650]: https://github.com/bevyengine/bevy/pull/4650 +[4653]: https://github.com/bevyengine/bevy/pull/4653 +[4655]: https://github.com/bevyengine/bevy/pull/4655 +[4658]: https://github.com/bevyengine/bevy/pull/4658 +[4659]: https://github.com/bevyengine/bevy/pull/4659 +[4660]: https://github.com/bevyengine/bevy/pull/4660 +[4663]: https://github.com/bevyengine/bevy/pull/4663 +[4668]: https://github.com/bevyengine/bevy/pull/4668 +[4677]: https://github.com/bevyengine/bevy/pull/4677 +[4689]: https://github.com/bevyengine/bevy/pull/4689 +[4692]: https://github.com/bevyengine/bevy/pull/4692 +[4693]: https://github.com/bevyengine/bevy/pull/4693 +[4701]: https://github.com/bevyengine/bevy/pull/4701 +[4703]: https://github.com/bevyengine/bevy/pull/4703 +[4705]: https://github.com/bevyengine/bevy/pull/4705 +[4708]: https://github.com/bevyengine/bevy/pull/4708 +[4709]: https://github.com/bevyengine/bevy/pull/4709 +[4711]: https://github.com/bevyengine/bevy/pull/4711 +[4712]: https://github.com/bevyengine/bevy/pull/4712 +[4713]: https://github.com/bevyengine/bevy/pull/4713 +[4714]: https://github.com/bevyengine/bevy/pull/4714 +[4715]: https://github.com/bevyengine/bevy/pull/4715 +[4716]: https://github.com/bevyengine/bevy/pull/4716 +[4717]: https://github.com/bevyengine/bevy/pull/4717 +[4723]: https://github.com/bevyengine/bevy/pull/4723 +[4725]: https://github.com/bevyengine/bevy/pull/4725 +[4726]: https://github.com/bevyengine/bevy/pull/4726 +[4736]: https://github.com/bevyengine/bevy/pull/4736 +[4739]: https://github.com/bevyengine/bevy/pull/4739 +[4744]: https://github.com/bevyengine/bevy/pull/4744 +[4745]: https://github.com/bevyengine/bevy/pull/4745 +[4749]: https://github.com/bevyengine/bevy/pull/4749 +[4760]: https://github.com/bevyengine/bevy/pull/4760 +[4773]: https://github.com/bevyengine/bevy/pull/4773 +[4776]: https://github.com/bevyengine/bevy/pull/4776 +[4780]: https://github.com/bevyengine/bevy/pull/4780 +[4782]: https://github.com/bevyengine/bevy/pull/4782 +[4786]: https://github.com/bevyengine/bevy/pull/4786 +[4789]: https://github.com/bevyengine/bevy/pull/4789 +[4790]: https://github.com/bevyengine/bevy/pull/4790 +[4792]: https://github.com/bevyengine/bevy/pull/4792 +[4794]: https://github.com/bevyengine/bevy/pull/4794 +[4807]: https://github.com/bevyengine/bevy/pull/4807 +[4812]: https://github.com/bevyengine/bevy/pull/4812 +[4816]: https://github.com/bevyengine/bevy/pull/4816 +[4824]: https://github.com/bevyengine/bevy/pull/4824 +[4833]: https://github.com/bevyengine/bevy/pull/4833 +[4836]: https://github.com/bevyengine/bevy/pull/4836 +[4841]: https://github.com/bevyengine/bevy/pull/4841 +[4844]: https://github.com/bevyengine/bevy/pull/4844 +[4848]: https://github.com/bevyengine/bevy/pull/4848 +[4855]: https://github.com/bevyengine/bevy/pull/4855 +[4863]: https://github.com/bevyengine/bevy/pull/4863 +[4867]: https://github.com/bevyengine/bevy/pull/4867 +[4871]: https://github.com/bevyengine/bevy/pull/4871 +[4879]: https://github.com/bevyengine/bevy/pull/4879 +[4890]: https://github.com/bevyengine/bevy/pull/4890 +[4898]: https://github.com/bevyengine/bevy/pull/4898 +[4900]: https://github.com/bevyengine/bevy/pull/4900 +[4901]: https://github.com/bevyengine/bevy/pull/4901 +[4904]: https://github.com/bevyengine/bevy/pull/4904 +[4909]: https://github.com/bevyengine/bevy/pull/4909 +[4924]: https://github.com/bevyengine/bevy/pull/4924 +[4938]: https://github.com/bevyengine/bevy/pull/4938 +[4939]: https://github.com/bevyengine/bevy/pull/4939 +[4942]: https://github.com/bevyengine/bevy/pull/4942 +[4944]: https://github.com/bevyengine/bevy/pull/4944 +[4948]: https://github.com/bevyengine/bevy/pull/4948 +[4949]: https://github.com/bevyengine/bevy/pull/4949 +[4957]: https://github.com/bevyengine/bevy/pull/4957 +[4959]: https://github.com/bevyengine/bevy/pull/4959 +[4991]: https://github.com/bevyengine/bevy/pull/4991 +[4999]: https://github.com/bevyengine/bevy/pull/4999 +[5009]: https://github.com/bevyengine/bevy/pull/5009 +[5010]: https://github.com/bevyengine/bevy/pull/5010 +[5011]: https://github.com/bevyengine/bevy/pull/5011 +[5014]: https://github.com/bevyengine/bevy/pull/5014 +[5015]: https://github.com/bevyengine/bevy/pull/5015 +[5023]: https://github.com/bevyengine/bevy/pull/5023 +[5031]: https://github.com/bevyengine/bevy/pull/5031 +[5035]: https://github.com/bevyengine/bevy/pull/5035 +[5038]: https://github.com/bevyengine/bevy/pull/5038 +[5039]: https://github.com/bevyengine/bevy/pull/5039 +[5048]: https://github.com/bevyengine/bevy/pull/5048 +[5049]: https://github.com/bevyengine/bevy/pull/5049 +[5053]: https://github.com/bevyengine/bevy/pull/5053 +[5055]: https://github.com/bevyengine/bevy/pull/5055 +[5056]: https://github.com/bevyengine/bevy/pull/5056 +[5065]: https://github.com/bevyengine/bevy/pull/5065 +[5066]: https://github.com/bevyengine/bevy/pull/5066 +[5078]: https://github.com/bevyengine/bevy/pull/5078 +[5095]: https://github.com/bevyengine/bevy/pull/5095 +[5106]: https://github.com/bevyengine/bevy/pull/5106 +[5119]: https://github.com/bevyengine/bevy/pull/5119 +[5124]: https://github.com/bevyengine/bevy/pull/5124 +[5129]: https://github.com/bevyengine/bevy/pull/5129 +[5130]: https://github.com/bevyengine/bevy/pull/5130 +[5136]: https://github.com/bevyengine/bevy/pull/5136 +[5137]: https://github.com/bevyengine/bevy/pull/5137 +[5142]: https://github.com/bevyengine/bevy/pull/5142 +[5148]: https://github.com/bevyengine/bevy/pull/5148 +[5151]: https://github.com/bevyengine/bevy/pull/5151 +[5158]: https://github.com/bevyengine/bevy/pull/5158 +[5159]: https://github.com/bevyengine/bevy/pull/5159 +[5167]: https://github.com/bevyengine/bevy/pull/5167 +[5168]: https://github.com/bevyengine/bevy/pull/5168 +[5170]: https://github.com/bevyengine/bevy/pull/5170 +[5171]: https://github.com/bevyengine/bevy/pull/5171 +[5173]: https://github.com/bevyengine/bevy/pull/5173 +[5174]: https://github.com/bevyengine/bevy/pull/5174 +[5175]: https://github.com/bevyengine/bevy/pull/5175 +[5182]: https://github.com/bevyengine/bevy/pull/5182 +[5187]: https://github.com/bevyengine/bevy/pull/5187 +[5190]: https://github.com/bevyengine/bevy/pull/5190 +[5194]: https://github.com/bevyengine/bevy/pull/5194 +[5195]: https://github.com/bevyengine/bevy/pull/5195 +[5198]: https://github.com/bevyengine/bevy/pull/5198 +[5201]: https://github.com/bevyengine/bevy/pull/5201 +[5210]: https://github.com/bevyengine/bevy/pull/5210 +[5212]: https://github.com/bevyengine/bevy/pull/5212 +[5215]: https://github.com/bevyengine/bevy/pull/5215 +[5220]: https://github.com/bevyengine/bevy/pull/5220 +[5222]: https://github.com/bevyengine/bevy/pull/5222 +[5225]: https://github.com/bevyengine/bevy/pull/5225 +[5227]: https://github.com/bevyengine/bevy/pull/5227 +[5231]: https://github.com/bevyengine/bevy/pull/5231 +[5234]: https://github.com/bevyengine/bevy/pull/5234 +[5249]: https://github.com/bevyengine/bevy/pull/5249 +[5254]: https://github.com/bevyengine/bevy/pull/5254 +[5255]: https://github.com/bevyengine/bevy/pull/5255 +[5259]: https://github.com/bevyengine/bevy/pull/5259 +[5263]: https://github.com/bevyengine/bevy/pull/5263 +[5269]: https://github.com/bevyengine/bevy/pull/5269 +[5271]: https://github.com/bevyengine/bevy/pull/5271 +[5274]: https://github.com/bevyengine/bevy/pull/5274 +[5275]: https://github.com/bevyengine/bevy/pull/5275 +[5276]: https://github.com/bevyengine/bevy/pull/5276 +[5286]: https://github.com/bevyengine/bevy/pull/5286 +[5291]: https://github.com/bevyengine/bevy/pull/5291 +[5299]: https://github.com/bevyengine/bevy/pull/5299 +[5300]: https://github.com/bevyengine/bevy/pull/5300 +[5301]: https://github.com/bevyengine/bevy/pull/5301 +[5305]: https://github.com/bevyengine/bevy/pull/5305 +[5306]: https://github.com/bevyengine/bevy/pull/5306 +[5307]: https://github.com/bevyengine/bevy/pull/5307 +[5310]: https://github.com/bevyengine/bevy/pull/5310 +[5312]: https://github.com/bevyengine/bevy/pull/5312 +[5324]: https://github.com/bevyengine/bevy/pull/5324 +[5335]: https://github.com/bevyengine/bevy/pull/5335 +[5339]: https://github.com/bevyengine/bevy/pull/5339 +[5343]: https://github.com/bevyengine/bevy/pull/5343 +[5344]: https://github.com/bevyengine/bevy/pull/5344 +[5348]: https://github.com/bevyengine/bevy/pull/5348 +[5349]: https://github.com/bevyengine/bevy/pull/5349 +[5355]: https://github.com/bevyengine/bevy/pull/5355 +[5359]: https://github.com/bevyengine/bevy/pull/5359 +[5364]: https://github.com/bevyengine/bevy/pull/5364 +[5366]: https://github.com/bevyengine/bevy/pull/5366 +[5376]: https://github.com/bevyengine/bevy/pull/5376 +[5383]: https://github.com/bevyengine/bevy/pull/5383 +[5389]: https://github.com/bevyengine/bevy/pull/5389 +[5396]: https://github.com/bevyengine/bevy/pull/5396 + ## Version 0.7.0 (2022-04-15) ### Added