From 24506ff9cd3a2cff5bf36d1ecdbb1bed8a7c154d Mon Sep 17 00:00:00 2001 From: Alice Cecile Date: Sun, 20 Oct 2024 11:00:10 -0400 Subject: [PATCH] Add stub release notes and migration guides for 0.15 release (#1673) --- ...ceReady_when_spawning_any_kind_of_scene.md | 1 + ...tch_NativeActivity_and_GameActivity_usa.md | 2 + .../12770_Implement_gamepads_as_entities.md | 44 + ...formation_and_optimize_dynamic_allocati.md | 3 + ...flect_implementation_for_Setlike_things.md | 5 + ...9_Add_2d_opaque_phase_with_depth_buffer.md | 1 + .../13240_Dont_ignore_draw_errors.md | 3 + ...21_bevy_reflect_Nested_TypeInfo_getters.md | 5 + ...y_bitmask_as_an_alternative_SSAO_method.md | 1 + .../13620_Fix_UI_texture_atlas_with_offset.md | 25 + .../13669_Expose_winits_MonitorHandle.md | 1 + ..._requirement_info_to_image_loading_docs.md | 1 + ...ator_for_when_you_want_to_mutate_an_eve.md | 3 + ..._world_with_to_match_DynamicScenewrite_.md | 14 + ...eneInstanceReady_to_trigger_an_observer.md | 16 + ...d_implicit_emissive_weight_with_default.md | 1 + .../13991_Minimal_Bubbling_Observers.md | 3 + ...ack_source_location_in_change_detection.md | 1 + ...s_of_system_params_in_buildable_systems.md | 19 + ...y_hold_VecEntity_instead_of_TypeIdVecEn.md | 2 + ..._to_be_localized_to_specific_optionally.md | 1 + ..._unused_type_parameter_in_Paralleldrain.md | 21 + ...4193_Faster_MeshletMesh_deserialization.md | 6 + ...rait_by_AsyncSeekForward_for_Reader_to_.md | 1 + ...e_need_for_EventLoopProxy_to_be_NonSend.md | 17 + ...eDebugName_to_bevy_corenameNameOrEntity.md | 1 + .../14228_Clean_up_UiSystem_system_sets.md | 3 + ...mIteratorIntoIterator_for_dynamic_types.md | 1 + ...x_and_index_arrays_together_into_growab.md | 5 + ...7_Add_support_for_skybox_transformation.md | 1 + .../14273_Move_Msaa_to_component.md | 1 + .../14284_Add_custom_cursors.md | 3 + ...econd_generic_from_add_before_add_after.md | 15 + ...port_for_environment_map_transformation.md | 1 + ...unused_default_feature_from_bevy_window.md | 11 + ...5_Added_new_method_to_Cone_3D_primitive.md | 1 + ...4343_Export_glTF_skins_as_a_Gltf_struct.md | 1 + ...pty_and_simplify_the_implementation_of_.md | 1 + ...bservers_to_operate_over_slices_of_data.md | 1 + .../14357_Using_Cas_instead_of_CAS_14341.md | 1 + .../14373_Optimize_transform_propagation.md | 1 + ...isallow_empty_cubic_and_rational_curves.md | 5 + ...ansforms_entities_with_GlobalTransforms.md | 1 + .../14387_Deprecate_is_playing_animation.md | 1 + ...tes_functions_to_return_MeshVertexAttri.md | 1 + ...rldget_reflect_and_Worldget_reflect_mut.md | 1 + ...bevy_ui_when_building_without_bevy_text.md | 3 + .../14441_Simplify_run_conditions.md | 21 + ..._an_optional_dependency_for_bevy_gizmos.md | 1 + ...mut_self_for_Worldincrement_change_tick.md | 11 + ...or_Bounded2dBounded3d_to_use_isometries.md | 21 + ...4_Remove_deprecated_bevy_dynamic_plugin.md | 1 + ...rstart_and_play_work_accordingly_to_doc.md | 2 + ...with_Conflicts_involving_read_all_and_w.md | 1 + ...meraUpdateSystem_before_UiSystemPrepare.md | 1 + ...shlet_software_raster__start_of_cleanup.md | 1 + ...smuteco_validate_the_world_of_the_Compo.md | 1 + ...rove_the_gizmo_for_Plane3d_reusing_grid.md | 18 + ...ch_rotation__translation_in_grid_gizmos.md | 1 + .../14663_Adds_ShaderStorageBuffer_asset.md | 1 + ...Isometry_in_bevy_gizmos_wherever_we_can.md | 9 + .../14690_Add_query_reborrowing.md | 1 + ...tency_between_Wireframe2d_and_Wireframe.md | 2 + .../14731_Fix_arc_2d_Gizmos.md | 27 + ...SetFinalCleanup_for_Worldclear_entities.md | 1 + .../14790_Make_QueryFilter_an_unsafe_trait.md | 1 + .../14793_Remove_useless_Direction_field.md | 1 + .../14833_Rewrite_screenshots.md | 1 + .../14838_bevy_reflect_Add_Type_type.md | 37 + ...ace_feature_with_a_field_in_bevy_render.md | 6 + .../14862_Picking_event_ordering.md | 12 + ...riable_timesteps_around_fixed_timesteps.md | 19 + .../14886_Update_Grid_Gizmo_to_use_Color.md | 1 + ...nd_doc_errors_when_a_subset_of_features.md | 1 + ...4893_Fix_underflow_panic_in_InitTriInfo.md | 1 + ...ndGroup_to_use_a_associated_SystemParam.md | 1 + ...gister_one_shot_system__register_system.md | 1 + ...ssset_vertex_buffer_aware_of_slice_size.md | 1 + ...pickingeventsDragDrop_to_unclash_stdops.md | 2 + ...e_bevy_transform_to_required_components.md | 1 + ..._Replace_bevy_utilsCowArc_with_atomicow.md | 1 + ..._Cameras_worldviewport_conversion_metho.md | 8 + ..._masks_allowing_fine_control_of_the_tar.md | 1 + ...mponents_for_improved_consistency_and_c.md | 13 + ...tyHash_and_related_types_from_bevy_util.md | 1 + ...icProjectiondefault_into_2d__3d_Adopted.md | 17 + ...ove_OrthographicProjectionscale_adopted.md | 13 + ..._get_components_immutable_variants_only.md | 1 + ...5107_bevy_reflect_Refactor_serde_module.md | 27 + ...108_bevy_reflect_Add_DynamicTyped_trait.md | 1 + .../15126_Remove_ReceivedCharacter.md | 32 + ...1_Removed_Type_Parameters_from_Observer.md | 1 + .../15163_use_precomputed_border_values.md | 3 + ...n_extracting_entities_in_dynamic_scenes.md | 60 + ...t_systems_that_take_references_as_input.md | 7 + ...96_Rename_push_children_to_add_children.md | 7 + ...onent_in_methods_on_DynamicSceneBuilder.md | 7 + ...eue_for_methods_with_deferred_semantics.md | 2 + ...7_AssetServer_LoadState_API_consistency.md | 1 + .../15239_Fix_floating_point_math.md | 2 + ...t_Replace_value_terminology_with_opaque.md | 27 + ...return_type_of_Worldresource_ref_to_Ref.md | 21 + ...279_Allow_bevy_utils_in_no_std_Contexts.md | 1 + ...15281_Add_core_and_alloc_over_std_Lints.md | 1 + ...n_clips_to_animate_arbitrary_properties.md | 1 + ...294_Remove_allocation_in_get_short_name.md | 19 + .../15340_move_ShortName_to_bevy_reflect.md | 1 + .../15341_Add_UI_GhostNode.md | 3 + ...ources_out_of_TextureAtlasLayout_and_ma.md | 40 + ...d_the_ability_to_control_font_smoothing.md | 7 + .../15372_Use_crate_disqualified.md | 1 + ...servers_traversal_should_use_query_data.md | 1 + ...flect_Update_EulerRot_to_match_glam_029.md | 1 + ...utable_borrow_instead_of_BoxSelf_for_re.md | 1 + .../15410_Follow_up_to_cached_run_system.md | 1 + ...tities_to_operate_on_components_before_.md | 2 + .../15434_Curvebased_animation.md | 46 + ...s_for_QueryEntityErrorQueryDoesNotMatch.md | 1 + .../15442_Clip_to_the_UI_nodes_content_box.md | 1 + .../15454_Rename_init_component__friends.md | 7 + ...f_cubic_spline_curves_with_the_Curve_AP.md | 1 + ...grate_visibility_to_required_components.md | 1 + .../15484_Remove_ReturnUnit_variant.md | 1 + ...rate_bevy_sprite_to_required_components.md | 3 + ...509_bevy_asset_Improve_NestedLoader_API.md | 6 + ...es_and_materials_to_required_components.md | 28 + ...tion_for_observers_system_registry_and_.md | 1 + ...leanup_unneeded_lifetimes_in_bevy_asset.md | 1 + ..._15540_Make_Worldflush_commands_private.md | 1 + ...4_Migrate_lights_to_required_components.md | 1 + .../15561_Overflow_clip_margin.md | 11 + ..._bug_and_reduce_Mesh_data_copies_by_two.md | 1 + ...rate_fog_volumes_to_required_components.md | 1 + ..._TAA_SSAO_and_SSR_to_required_component.md | 1 + ...73_Migrate_audio_to_required_components.md | 7 + ...9_Migrate_scenes_to_required_components.md | 26 + ...emoved_components_with_the_render_world.md | 1 + .../15583_Rename_BreakLineOn_to_LineBreak.md | 1 + .../15585_move_ANDROID_APP_to_bevy_window.md | 1 + .../15586_Featuregate_all_image_formats.md | 14 + ...ble_ordering_for_animation_graph_evalua.md | 7 + .../migration-guides/15591_Text_rework.md | 31 + ..._by_id_and_friends_to_take_multiple_ids.md | 1 + .../15598_Remove_TransformCurve.md | 1 + ...amily_of_functions_to_take_multiple_ent.md | 20 + ...rve_to_observe_entity_on_EntityWorldMut.md | 1 + ...ialize_tuple_struct_with_one_field_as_n.md | 11 + ..._additive_blending_for_animation_graphs.md | 1 + ..._Migrate_cameras_to_required_components.md | 1 + ...15643_Permeshlet_compressed_vertex_data.md | 1 + ..._bevy_winit_dependency_and_move_cursor_.md | 2 + .../15652_Deprecate_get_or_spawn.md | 1 + .../15658_Deprecate_Eventsoldest_id.md | 2 + ...62_Fix_additive_blending_of_quaternions.md | 1 + ...66_Split_out_bevy_mesh_from_bevy_render.md | 3 + .../15690_Migrate_bevy_picking.md | 15 + ...nstead_of_Vec2Vec3_for_Ray2dnewRay3dnew.md | 1 + ...eflection_probes_to_required_components.md | 1 + ...aterial_component_with__UiMaterialHandl.md | 1 + ...AnimationGraph_component_with_a_wrapper.md | 1 + .../15756_Type_safe_retained_render_world.md | 3 + ...ponent_trait_implementation_from_Handle.md | 5 + ..._and_CompressedImageSaver_to_bevy_image.md | 1 + ...Add_bevy_windowWindow_options_for_MacOS.md | 13 + .../15830_Deprecate_SpatialBundle.md | 13 + ...pecialcase_EntityPLACEHOLDER_formatting.md | 1 + .../15857_split_up_TextStyle.md | 1 + .../15887_Text_Rework_cleanup.md | 10 + ...uality_comparisons_for_asset_load_error.md | 3 + ...grate_UI_bundles_to_required_components.md | 71 ++ ...omponent_from_render_world_if_not_extra.md | 1 + ...5_Fix_asset_settings_example_regression.md | 6 + ..._public_apis_of_TimeTimer_and_Stopwatch.md | 4 + ...ve_API_for_scaling_orthographic_cameras.md | 4 + .../15973_Remove_AVIF_feature.md | 1 + ...ies_into_Node_Use_ComputedNode_for_comp.md | 44 + .../0.15/migration-guides/_guides.toml | 1061 +++++++++++++++++ .../0.15/release-notes/10193_Cosmic_text.md | 4 + ...tch_NativeActivity_and_GameActivity_usa.md | 4 + .../12770_Implement_gamepads_as_entities.md | 4 + ...flect_implementation_for_Setlike_things.md | 4 + ...ment_percentagecloser_soft_shadows_PCSS.md | 4 + .../13669_Expose_winits_MonitorHandle.md | 4 + ...tprocessing_stack_and_implement_chromat.md | 4 + ...ator_for_when_you_want_to_mutate_an_eve.md | 4 + .../13889_Make_Tasks_functional_on_WASM.md | 4 + ...d_name_component_to_gltf_mesh_primitive.md | 4 + .../13991_Minimal_Bubbling_Observers.md | 4 + ...ack_source_location_in_change_detection.md | 4 + ...se_dense_iteration_for__archetypal_iter.md | 4 + .../14071_Uniform_mesh_sampling.md | 4 + ..._to_be_localized_to_specific_optionally.md | 4 + .../release-notes/14106_Cyclic_splines.md | 4 + ..._Hook__Observer_Trigger_for_replaced_va.md | 4 + ...x_and_index_arrays_together_into_growab.md | 4 + .../14269_Basic_isometry_types.md | 4 + .../release-notes/14284_Add_custom_cursors.md | 4 + .../release-notes/14316_Fast_renormalize.md | 4 + ...rait_for_general_interoperation__Part_I.md | 4 + .../14646_feat_add_insert_if_new_14397.md | 4 + ...se_dense_iter_for_archetypal_iteration_.md | 4 + ...ke_variadic_to_improve_docs_readability.md | 4 + ..._to_create_curves_interpolatingeasing_b.md | 4 + ...lder__Support_dynamic_system_parameters.md | 4 + .../14833_Rewrite_screenshots.md | 4 + .../14848_Improved_text_batching.md | 4 + .../14863_Expose_bevy_math_ops.md | 4 + ...exture_to_be_scrolled_over_time_with_an.md | 4 + ...4876_Add_Order_Independent_Transparency.md | 4 + ...ion_of_the_Bevy_Remote_Protocol_Adopted.md | 4 + .../14920_Add_cached_run_system_API.md | 4 + ...e_bevy_transform_to_required_components.md | 4 + .../14976_Color_gradient_curve.md | 4 + ..._masks_allowing_fine_control_of_the_tar.md | 4 + ...supporting_documentation_to_bevy_assets.md | 4 + .../15085_Add_state_scoped_events.md | 4 + .../15170_Enabledisable_UI_antialiasing.md | 4 + ...t_systems_that_take_references_as_input.md | 4 + ...5189_System_param_for_dynamic_resources.md | 4 + .../0.15/release-notes/15204_box_shadow.md | 4 + ..._and_EntityMutExcept_world_queries_in_p.md | 4 + .../15260_Added_HeadlessPlugins_15203.md | 4 + ...be_used_as_a_required_component_default.md | 4 + ...e_panics_through_SystemParam_validation.md | 4 + ...15281_Add_core_and_alloc_over_std_Lints.md | 4 + ...n_clips_to_animate_arbitrary_properties.md | 4 + .../0.15/release-notes/15291_UI_Scrolling.md | 4 + .../release-notes/15341_Add_UI_GhostNode.md | 4 + ...c_fog_support_for_both_point_lights_and.md | 4 + ...d_the_ability_to_control_font_smoothing.md | 4 + .../0.15/release-notes/15419_Gpu_readback.md | 4 + .../15434_Curvebased_animation.md | 4 + ...s_for_QueryEntityErrorQueryDoesNotMatch.md | 4 + .../15458_Runtime_required_components.md | 4 + ...475_bevy_reflect_Generic_parameter_info.md | 4 + ...476_QuerySingle_family_of_system_params.md | 4 + .../15488_Populated_query_system_param.md | 4 + ...r_Triggering_Events_via_AnimationEvents.md | 4 + ...amily_of_functions_to_take_multiple_ent.md | 4 + ...d_more_tools_for_traversing_hierarchies.md | 4 + ..._additive_blending_for_animation_graphs.md | 4 + .../15675_Add_most_common_interpolations.md | 4 + ...ackend_and_MeshRayCast_system_parameter.md | 4 + ...5772_bevy_reflect_Add_Reflectable_trait.md | 4 + .../6042_bevy_reflect_Reflect_remote_types.md | 4 + ...eflect_implement_the_unique_reflect_rfc.md | 4 + ...erializeWithRegistry_and_SerializeWithR.md | 4 + .../0.15/release-notes/_release-notes.toml | 508 ++++++++ 248 files changed, 3093 insertions(+) create mode 100644 release-content/0.15/migration-guides/11741_Send_SceneInstanceReady_when_spawning_any_kind_of_scene.md create mode 100644 release-content/0.15/migration-guides/12095_Add_features_to_switch_NativeActivity_and_GameActivity_usa.md create mode 100644 release-content/0.15/migration-guides/12770_Implement_gamepads_as_entities.md create mode 100644 release-content/0.15/migration-guides/12929_Remove_redundant_information_and_optimize_dynamic_allocati.md create mode 100644 release-content/0.15/migration-guides/13014_Dedicated_Reflect_implementation_for_Setlike_things.md create mode 100644 release-content/0.15/migration-guides/13069_Add_2d_opaque_phase_with_depth_buffer.md create mode 100644 release-content/0.15/migration-guides/13240_Dont_ignore_draw_errors.md create mode 100644 release-content/0.15/migration-guides/13321_bevy_reflect_Nested_TypeInfo_getters.md create mode 100644 release-content/0.15/migration-guides/13454_Added_visibility_bitmask_as_an_alternative_SSAO_method.md create mode 100644 release-content/0.15/migration-guides/13620_Fix_UI_texture_atlas_with_offset.md create mode 100644 release-content/0.15/migration-guides/13669_Expose_winits_MonitorHandle.md create mode 100644 release-content/0.15/migration-guides/13712_Add_feature_requirement_info_to_image_loading_docs.md create mode 100644 release-content/0.15/migration-guides/13818_Created_an_EventMutator_for_when_you_want_to_mutate_an_eve.md create mode 100644 release-content/0.15/migration-guides/13855_Align_Scenewrite_to_world_with_to_match_DynamicScenewrite_.md create mode 100644 release-content/0.15/migration-guides/13859_Change_SceneInstanceReady_to_trigger_an_observer.md create mode 100644 release-content/0.15/migration-guides/13871_Replaced_implicit_emissive_weight_with_default.md create mode 100644 release-content/0.15/migration-guides/13991_Minimal_Bubbling_Observers.md create mode 100644 release-content/0.15/migration-guides/14034_Track_source_location_in_change_detection.md create mode 100644 release-content/0.15/migration-guides/14050_Support_more_kinds_of_system_params_in_buildable_systems.md create mode 100644 release-content/0.15/migration-guides/14073_Lighting_Should_Only_hold_VecEntity_instead_of_TypeIdVecEn.md create mode 100644 release-content/0.15/migration-guides/14099_Allow_volumetric_fog_to_be_localized_to_specific_optionally.md create mode 100644 release-content/0.15/migration-guides/14178_Remove_unused_type_parameter_in_Paralleldrain.md create mode 100644 release-content/0.15/migration-guides/14193_Faster_MeshletMesh_deserialization.md create mode 100644 release-content/0.15/migration-guides/14194_Replace_AsyncSeek_trait_by_AsyncSeekForward_for_Reader_to_.md create mode 100644 release-content/0.15/migration-guides/14198_Remove_need_for_EventLoopProxy_to_be_NonSend.md create mode 100644 release-content/0.15/migration-guides/14211_Rename_bevy_corenameDebugName_to_bevy_corenameNameOrEntity.md create mode 100644 release-content/0.15/migration-guides/14228_Clean_up_UiSystem_system_sets.md create mode 100644 release-content/0.15/migration-guides/14250_Implement_FromIteratorIntoIterator_for_dynamic_types.md create mode 100644 release-content/0.15/migration-guides/14257_Pack_multiple_vertex_and_index_arrays_together_into_growab.md create mode 100644 release-content/0.15/migration-guides/14267_Add_support_for_skybox_transformation.md create mode 100644 release-content/0.15/migration-guides/14273_Move_Msaa_to_component.md create mode 100644 release-content/0.15/migration-guides/14284_Add_custom_cursors.md create mode 100644 release-content/0.15/migration-guides/14285_Remove_second_generic_from_add_before_add_after.md create mode 100644 release-content/0.15/migration-guides/14290_Add_support_for_environment_map_transformation.md create mode 100644 release-content/0.15/migration-guides/14313_Remove_unused_default_feature_from_bevy_window.md create mode 100644 release-content/0.15/migration-guides/14325_Added_new_method_to_Cone_3D_primitive.md create mode 100644 release-content/0.15/migration-guides/14343_Export_glTF_skins_as_a_Gltf_struct.md create mode 100644 release-content/0.15/migration-guides/14352_Add_FilteredAccessempty_and_simplify_the_implementation_of_.md create mode 100644 release-content/0.15/migration-guides/14354_Update_trigger_observers_to_operate_over_slices_of_data.md create mode 100644 release-content/0.15/migration-guides/14357_Using_Cas_instead_of_CAS_14341.md create mode 100644 release-content/0.15/migration-guides/14373_Optimize_transform_propagation.md create mode 100644 release-content/0.15/migration-guides/14382_Disallow_empty_cubic_and_rational_curves.md create mode 100644 release-content/0.15/migration-guides/14384_Only_propagate_transforms_entities_with_GlobalTransforms.md create mode 100644 release-content/0.15/migration-guides/14387_Deprecate_is_playing_animation.md create mode 100644 release-content/0.15/migration-guides/14394_Changed_Meshattributes_functions_to_return_MeshVertexAttri.md create mode 100644 release-content/0.15/migration-guides/14416_feat_Add_Worldget_reflect_and_Worldget_reflect_mut.md create mode 100644 release-content/0.15/migration-guides/14430_Fix_error_in_bevy_ui_when_building_without_bevy_text.md create mode 100644 release-content/0.15/migration-guides/14441_Simplify_run_conditions.md create mode 100644 release-content/0.15/migration-guides/14448_Making_bevy_render_an_optional_dependency_for_bevy_gizmos.md create mode 100644 release-content/0.15/migration-guides/14459_Require_mut_self_for_Worldincrement_change_tick.md create mode 100644 release-content/0.15/migration-guides/14485_Refactor_Bounded2dBounded3d_to_use_isometries.md create mode 100644 release-content/0.15/migration-guides/14534_Remove_deprecated_bevy_dynamic_plugin.md create mode 100644 release-content/0.15/migration-guides/14546_Make_AnimationPlayerstart_and_play_work_accordingly_to_doc.md create mode 100644 release-content/0.15/migration-guides/14579_Fix_soudness_issue_with_Conflicts_involving_read_all_and_w.md create mode 100644 release-content/0.15/migration-guides/14609_Explicitly_order_CameraUpdateSystem_before_UiSystemPrepare.md create mode 100644 release-content/0.15/migration-guides/14623_Meshlet_software_raster__start_of_cleanup.md create mode 100644 release-content/0.15/migration-guides/14631_Make_QueryStatetransmuteco_validate_the_world_of_the_Compo.md create mode 100644 release-content/0.15/migration-guides/14650_Improve_the_gizmo_for_Plane3d_reusing_grid.md create mode 100644 release-content/0.15/migration-guides/14656_Switch_rotation__translation_in_grid_gizmos.md create mode 100644 release-content/0.15/migration-guides/14663_Adds_ShaderStorageBuffer_asset.md create mode 100644 release-content/0.15/migration-guides/14676_Use_Isometry_in_bevy_gizmos_wherever_we_can.md create mode 100644 release-content/0.15/migration-guides/14690_Add_query_reborrowing.md create mode 100644 release-content/0.15/migration-guides/14720_Consistency_between_Wireframe2d_and_Wireframe.md create mode 100644 release-content/0.15/migration-guides/14731_Fix_arc_2d_Gizmos.md create mode 100644 release-content/0.15/migration-guides/14764_Add_RenderSetFinalCleanup_for_Worldclear_entities.md create mode 100644 release-content/0.15/migration-guides/14790_Make_QueryFilter_an_unsafe_trait.md create mode 100644 release-content/0.15/migration-guides/14793_Remove_useless_Direction_field.md create mode 100644 release-content/0.15/migration-guides/14833_Rewrite_screenshots.md create mode 100644 release-content/0.15/migration-guides/14838_bevy_reflect_Add_Type_type.md create mode 100644 release-content/0.15/migration-guides/14842_Replace_the_wgpu_trace_feature_with_a_field_in_bevy_render.md create mode 100644 release-content/0.15/migration-guides/14862_Picking_event_ordering.md create mode 100644 release-content/0.15/migration-guides/14881_Allow_ordering_variable_timesteps_around_fixed_timesteps.md create mode 100644 release-content/0.15/migration-guides/14886_Update_Grid_Gizmo_to_use_Color.md create mode 100644 release-content/0.15/migration-guides/14887_Fix_Gizmos_warnings_and_doc_errors_when_a_subset_of_features.md create mode 100644 release-content/0.15/migration-guides/14893_Fix_underflow_panic_in_InitTriInfo.md create mode 100644 release-content/0.15/migration-guides/14909_Refactor_AsBindGroup_to_use_a_associated_SystemParam.md create mode 100644 release-content/0.15/migration-guides/14910_Rename_Commandsregister_one_shot_system__register_system.md create mode 100644 release-content/0.15/migration-guides/14916_Make_TrackedRenderPassset_vertex_buffer_aware_of_slice_size.md create mode 100644 release-content/0.15/migration-guides/14926_rename_Drop_to_bevypickingeventsDragDrop_to_unclash_stdops.md create mode 100644 release-content/0.15/migration-guides/14964_Migrate_bevy_transform_to_required_components.md create mode 100644 release-content/0.15/migration-guides/14977_Replace_bevy_utilsCowArc_with_atomicow.md create mode 100644 release-content/0.15/migration-guides/14989_Return_Results_from_Cameras_worldviewport_conversion_metho.md create mode 100644 release-content/0.15/migration-guides/15013_Implement_animation_masks_allowing_fine_control_of_the_tar.md create mode 100644 release-content/0.15/migration-guides/15035_Rename_rendering_components_for_improved_consistency_and_c.md create mode 100644 release-content/0.15/migration-guides/15039_Remove_remnant_EntityHash_and_related_types_from_bevy_util.md create mode 100644 release-content/0.15/migration-guides/15073_Split_OrthographicProjectiondefault_into_2d__3d_Adopted.md create mode 100644 release-content/0.15/migration-guides/15075_Remove_OrthographicProjectionscale_adopted.md create mode 100644 release-content/0.15/migration-guides/15089__EntityRefMut_get_components_immutable_variants_only.md create mode 100644 release-content/0.15/migration-guides/15107_bevy_reflect_Refactor_serde_module.md create mode 100644 release-content/0.15/migration-guides/15108_bevy_reflect_Add_DynamicTyped_trait.md create mode 100644 release-content/0.15/migration-guides/15126_Remove_ReceivedCharacter.md create mode 100644 release-content/0.15/migration-guides/15151_Removed_Type_Parameters_from_Observer.md create mode 100644 release-content/0.15/migration-guides/15163_use_precomputed_border_values.md create mode 100644 release-content/0.15/migration-guides/15174_Use_FromReflect_when_extracting_entities_in_dynamic_scenes.md create mode 100644 release-content/0.15/migration-guides/15184_Support_systems_that_take_references_as_input.md create mode 100644 release-content/0.15/migration-guides/15196_Rename_push_children_to_add_children.md create mode 100644 release-content/0.15/migration-guides/15210_explicitly_mention_component_in_methods_on_DynamicSceneBuilder.md create mode 100644 release-content/0.15/migration-guides/15234_Rename_Add_to_Queue_for_methods_with_deferred_semantics.md create mode 100644 release-content/0.15/migration-guides/15237_AssetServer_LoadState_API_consistency.md create mode 100644 release-content/0.15/migration-guides/15239_Fix_floating_point_math.md create mode 100644 release-content/0.15/migration-guides/15240_bevy_reflect_Replace_value_terminology_with_opaque.md create mode 100644 release-content/0.15/migration-guides/15263_change_return_type_of_Worldresource_ref_to_Ref.md create mode 100644 release-content/0.15/migration-guides/15279_Allow_bevy_utils_in_no_std_Contexts.md create mode 100644 release-content/0.15/migration-guides/15281_Add_core_and_alloc_over_std_Lints.md create mode 100644 release-content/0.15/migration-guides/15282_Allow_animation_clips_to_animate_arbitrary_properties.md create mode 100644 release-content/0.15/migration-guides/15294_Remove_allocation_in_get_short_name.md create mode 100644 release-content/0.15/migration-guides/15340_move_ShortName_to_bevy_reflect.md create mode 100644 release-content/0.15/migration-guides/15341_Add_UI_GhostNode.md create mode 100644 release-content/0.15/migration-guides/15344_Split_TextureAtlasSources_out_of_TextureAtlasLayout_and_ma.md create mode 100644 release-content/0.15/migration-guides/15368_Add_the_ability_to_control_font_smoothing.md create mode 100644 release-content/0.15/migration-guides/15372_Use_crate_disqualified.md create mode 100644 release-content/0.15/migration-guides/15385_Bubbling_observers_traversal_should_use_query_data.md create mode 100644 release-content/0.15/migration-guides/15402_bevy_reflect_Update_EulerRot_to_match_glam_029.md create mode 100644 release-content/0.15/migration-guides/15406_Make_drain_take_a_mutable_borrow_instead_of_BoxSelf_for_re.md create mode 100644 release-content/0.15/migration-guides/15410_Follow_up_to_cached_run_system.md create mode 100644 release-content/0.15/migration-guides/15422_Change_ReflectMapEntities_to_operate_on_components_before_.md create mode 100644 release-content/0.15/migration-guides/15434_Curvebased_animation.md create mode 100644 release-content/0.15/migration-guides/15435_List_components_for_QueryEntityErrorQueryDoesNotMatch.md create mode 100644 release-content/0.15/migration-guides/15442_Clip_to_the_UI_nodes_content_box.md create mode 100644 release-content/0.15/migration-guides/15454_Rename_init_component__friends.md create mode 100644 release-content/0.15/migration-guides/15469_Basic_integration_of_cubic_spline_curves_with_the_Curve_AP.md create mode 100644 release-content/0.15/migration-guides/15474_Migrate_visibility_to_required_components.md create mode 100644 release-content/0.15/migration-guides/15484_Remove_ReturnUnit_variant.md create mode 100644 release-content/0.15/migration-guides/15489_Migrate_bevy_sprite_to_required_components.md create mode 100644 release-content/0.15/migration-guides/15509_bevy_asset_Improve_NestedLoader_API.md create mode 100644 release-content/0.15/migration-guides/15524_Migrate_meshes_and_materials_to_required_components.md create mode 100644 release-content/0.15/migration-guides/15526_System_param_validation_for_observers_system_registry_and_.md create mode 100644 release-content/0.15/migration-guides/15546_Cleanup_unneeded_lifetimes_in_bevy_asset.md create mode 100644 release-content/0.15/migration-guides/15553_15540_Make_Worldflush_commands_private.md create mode 100644 release-content/0.15/migration-guides/15554_Migrate_lights_to_required_components.md create mode 100644 release-content/0.15/migration-guides/15561_Overflow_clip_margin.md create mode 100644 release-content/0.15/migration-guides/15566_Fix_Mesh_allocator_bug_and_reduce_Mesh_data_copies_by_two.md create mode 100644 release-content/0.15/migration-guides/15568_Migrate_fog_volumes_to_required_components.md create mode 100644 release-content/0.15/migration-guides/15572_Migrate_motion_blur_TAA_SSAO_and_SSR_to_required_component.md create mode 100644 release-content/0.15/migration-guides/15573_Migrate_audio_to_required_components.md create mode 100644 release-content/0.15/migration-guides/15579_Migrate_scenes_to_required_components.md create mode 100644 release-content/0.15/migration-guides/15582_Synchronize_removed_components_with_the_render_world.md create mode 100644 release-content/0.15/migration-guides/15583_Rename_BreakLineOn_to_LineBreak.md create mode 100644 release-content/0.15/migration-guides/15585_move_ANDROID_APP_to_bevy_window.md create mode 100644 release-content/0.15/migration-guides/15586_Featuregate_all_image_formats.md create mode 100644 release-content/0.15/migration-guides/15589_Impose_a_more_sensible_ordering_for_animation_graph_evalua.md create mode 100644 release-content/0.15/migration-guides/15591_Text_rework.md create mode 100644 release-content/0.15/migration-guides/15593_Enable_EntityRefget_by_id_and_friends_to_take_multiple_ids.md create mode 100644 release-content/0.15/migration-guides/15598_Remove_TransformCurve.md create mode 100644 release-content/0.15/migration-guides/15614_Allow_Worldentity_family_of_functions_to_take_multiple_ent.md create mode 100644 release-content/0.15/migration-guides/15616_Rename_observe_to_observe_entity_on_EntityWorldMut.md create mode 100644 release-content/0.15/migration-guides/15628_Serialize_and_deserialize_tuple_struct_with_one_field_as_n.md create mode 100644 release-content/0.15/migration-guides/15631_Implement_additive_blending_for_animation_graphs.md create mode 100644 release-content/0.15/migration-guides/15641_Migrate_cameras_to_required_components.md create mode 100644 release-content/0.15/migration-guides/15643_Permeshlet_compressed_vertex_data.md create mode 100644 release-content/0.15/migration-guides/15649_Inverse_bevy_render_bevy_winit_dependency_and_move_cursor_.md create mode 100644 release-content/0.15/migration-guides/15652_Deprecate_get_or_spawn.md create mode 100644 release-content/0.15/migration-guides/15658_Deprecate_Eventsoldest_id.md create mode 100644 release-content/0.15/migration-guides/15662_Fix_additive_blending_of_quaternions.md create mode 100644 release-content/0.15/migration-guides/15666_Split_out_bevy_mesh_from_bevy_render.md create mode 100644 release-content/0.15/migration-guides/15690_Migrate_bevy_picking.md create mode 100644 release-content/0.15/migration-guides/15735_Use_Dir2Dir3_instead_of_Vec2Vec3_for_Ray2dnewRay3dnew.md create mode 100644 release-content/0.15/migration-guides/15737_Migrate_reflection_probes_to_required_components.md create mode 100644 release-content/0.15/migration-guides/15740_Replace_HandleM_UiMaterial_component_with__UiMaterialHandl.md create mode 100644 release-content/0.15/migration-guides/15742_Replace_HandleAnimationGraph_component_with_a_wrapper.md create mode 100644 release-content/0.15/migration-guides/15756_Type_safe_retained_render_world.md create mode 100644 release-content/0.15/migration-guides/15796_Remove_the_Component_trait_implementation_from_Handle.md create mode 100644 release-content/0.15/migration-guides/15812_Move_ImageLoader_and_CompressedImageSaver_to_bevy_image.md create mode 100644 release-content/0.15/migration-guides/15820_Add_bevy_windowWindow_options_for_MacOS.md create mode 100644 release-content/0.15/migration-guides/15830_Deprecate_SpatialBundle.md create mode 100644 release-content/0.15/migration-guides/15839_bevy_ecs_Specialcase_EntityPLACEHOLDER_formatting.md create mode 100644 release-content/0.15/migration-guides/15857_split_up_TextStyle.md create mode 100644 release-content/0.15/migration-guides/15887_Text_Rework_cleanup.md create mode 100644 release-content/0.15/migration-guides/15890_Remove_incorrect_equality_comparisons_for_asset_load_error.md create mode 100644 release-content/0.15/migration-guides/15898_Migrate_UI_bundles_to_required_components.md create mode 100644 release-content/0.15/migration-guides/15904_Attempt_to_remove_component_from_render_world_if_not_extra.md create mode 100644 release-content/0.15/migration-guides/15945_Fix_asset_settings_example_regression.md create mode 100644 release-content/0.15/migration-guides/15962_aligning_public_apis_of_TimeTimer_and_Stopwatch.md create mode 100644 release-content/0.15/migration-guides/15969_Improve_API_for_scaling_orthographic_cameras.md create mode 100644 release-content/0.15/migration-guides/15973_Remove_AVIF_feature.md create mode 100644 release-content/0.15/migration-guides/15975_Merge_Style_properties_into_Node_Use_ComputedNode_for_comp.md create mode 100644 release-content/0.15/migration-guides/_guides.toml create mode 100644 release-content/0.15/release-notes/10193_Cosmic_text.md create mode 100644 release-content/0.15/release-notes/12095_Add_features_to_switch_NativeActivity_and_GameActivity_usa.md create mode 100644 release-content/0.15/release-notes/12770_Implement_gamepads_as_entities.md create mode 100644 release-content/0.15/release-notes/13014_Dedicated_Reflect_implementation_for_Setlike_things.md create mode 100644 release-content/0.15/release-notes/13497_Implement_percentagecloser_soft_shadows_PCSS.md create mode 100644 release-content/0.15/release-notes/13669_Expose_winits_MonitorHandle.md create mode 100644 release-content/0.15/release-notes/13695_Start_a_builtin_postprocessing_stack_and_implement_chromat.md create mode 100644 release-content/0.15/release-notes/13818_Created_an_EventMutator_for_when_you_want_to_mutate_an_eve.md create mode 100644 release-content/0.15/release-notes/13889_Make_Tasks_functional_on_WASM.md create mode 100644 release-content/0.15/release-notes/13912_featgltf_add_name_component_to_gltf_mesh_primitive.md create mode 100644 release-content/0.15/release-notes/13991_Minimal_Bubbling_Observers.md create mode 100644 release-content/0.15/release-notes/14034_Track_source_location_in_change_detection.md create mode 100644 release-content/0.15/release-notes/14049_Opportunistically_use_dense_iteration_for__archetypal_iter.md create mode 100644 release-content/0.15/release-notes/14071_Uniform_mesh_sampling.md create mode 100644 release-content/0.15/release-notes/14099_Allow_volumetric_fog_to_be_localized_to_specific_optionally.md create mode 100644 release-content/0.15/release-notes/14106_Cyclic_splines.md create mode 100644 release-content/0.15/release-notes/14212_Component_Lifecycle_Hook__Observer_Trigger_for_replaced_va.md create mode 100644 release-content/0.15/release-notes/14257_Pack_multiple_vertex_and_index_arrays_together_into_growab.md create mode 100644 release-content/0.15/release-notes/14269_Basic_isometry_types.md create mode 100644 release-content/0.15/release-notes/14284_Add_custom_cursors.md create mode 100644 release-content/0.15/release-notes/14316_Fast_renormalize.md create mode 100644 release-content/0.15/release-notes/14630_A_Curve_trait_for_general_interoperation__Part_I.md create mode 100644 release-content/0.15/release-notes/14646_feat_add_insert_if_new_14397.md create mode 100644 release-content/0.15/release-notes/14673_Opportunistically_use_dense_iter_for_archetypal_iteration_.md create mode 100644 release-content/0.15/release-notes/14703_Use_docfake_variadic_to_improve_docs_readability.md create mode 100644 release-content/0.15/release-notes/14788_add_curve_utilities_to_create_curves_interpolatingeasing_b.md create mode 100644 release-content/0.15/release-notes/14817_SystemParamBuilder__Support_dynamic_system_parameters.md create mode 100644 release-content/0.15/release-notes/14833_Rewrite_screenshots.md create mode 100644 release-content/0.15/release-notes/14848_Improved_text_batching.md create mode 100644 release-content/0.15/release-notes/14863_Expose_bevy_math_ops.md create mode 100644 release-content/0.15/release-notes/14868_Allow_fog_density_texture_to_be_scrolled_over_time_with_an.md create mode 100644 release-content/0.15/release-notes/14876_Add_Order_Independent_Transparency.md create mode 100644 release-content/0.15/release-notes/14880_Initial_implementation_of_the_Bevy_Remote_Protocol_Adopted.md create mode 100644 release-content/0.15/release-notes/14920_Add_cached_run_system_API.md create mode 100644 release-content/0.15/release-notes/14964_Migrate_bevy_transform_to_required_components.md create mode 100644 release-content/0.15/release-notes/14976_Color_gradient_curve.md create mode 100644 release-content/0.15/release-notes/15013_Implement_animation_masks_allowing_fine_control_of_the_tar.md create mode 100644 release-content/0.15/release-notes/15056_Add_module_and_supporting_documentation_to_bevy_assets.md create mode 100644 release-content/0.15/release-notes/15085_Add_state_scoped_events.md create mode 100644 release-content/0.15/release-notes/15170_Enabledisable_UI_antialiasing.md create mode 100644 release-content/0.15/release-notes/15184_Support_systems_that_take_references_as_input.md create mode 100644 release-content/0.15/release-notes/15189_System_param_for_dynamic_resources.md create mode 100644 release-content/0.15/release-notes/15204_box_shadow.md create mode 100644 release-content/0.15/release-notes/15207_Add_EntityRefExcept_and_EntityMutExcept_world_queries_in_p.md create mode 100644 release-content/0.15/release-notes/15260_Added_HeadlessPlugins_15203.md create mode 100644 release-content/0.15/release-notes/15269_Allow_a_closure_to_be_used_as_a_required_component_default.md create mode 100644 release-content/0.15/release-notes/15276_Reduce_runtime_panics_through_SystemParam_validation.md create mode 100644 release-content/0.15/release-notes/15281_Add_core_and_alloc_over_std_Lints.md create mode 100644 release-content/0.15/release-notes/15282_Allow_animation_clips_to_animate_arbitrary_properties.md create mode 100644 release-content/0.15/release-notes/15291_UI_Scrolling.md create mode 100644 release-content/0.15/release-notes/15341_Add_UI_GhostNode.md create mode 100644 release-content/0.15/release-notes/15361_Implement_volumetric_fog_support_for_both_point_lights_and.md create mode 100644 release-content/0.15/release-notes/15368_Add_the_ability_to_control_font_smoothing.md create mode 100644 release-content/0.15/release-notes/15419_Gpu_readback.md create mode 100644 release-content/0.15/release-notes/15434_Curvebased_animation.md create mode 100644 release-content/0.15/release-notes/15435_List_components_for_QueryEntityErrorQueryDoesNotMatch.md create mode 100644 release-content/0.15/release-notes/15458_Runtime_required_components.md create mode 100644 release-content/0.15/release-notes/15475_bevy_reflect_Generic_parameter_info.md create mode 100644 release-content/0.15/release-notes/15476_QuerySingle_family_of_system_params.md create mode 100644 release-content/0.15/release-notes/15488_Populated_query_system_param.md create mode 100644 release-content/0.15/release-notes/15538_Add_Support_for_Triggering_Events_via_AnimationEvents.md create mode 100644 release-content/0.15/release-notes/15614_Allow_Worldentity_family_of_functions_to_take_multiple_ent.md create mode 100644 release-content/0.15/release-notes/15627_Add_more_tools_for_traversing_hierarchies.md create mode 100644 release-content/0.15/release-notes/15631_Implement_additive_blending_for_animation_graphs.md create mode 100644 release-content/0.15/release-notes/15675_Add_most_common_interpolations.md create mode 100644 release-content/0.15/release-notes/15800_Add_mesh_picking_backend_and_MeshRayCast_system_parameter.md create mode 100644 release-content/0.15/release-notes/5772_bevy_reflect_Add_Reflectable_trait.md create mode 100644 release-content/0.15/release-notes/6042_bevy_reflect_Reflect_remote_types.md create mode 100644 release-content/0.15/release-notes/7207_reflect_implement_the_unique_reflect_rfc.md create mode 100644 release-content/0.15/release-notes/8611_bevy_reflect_Add_DeserializeWithRegistry_and_SerializeWithR.md create mode 100644 release-content/0.15/release-notes/_release-notes.toml diff --git a/release-content/0.15/migration-guides/11741_Send_SceneInstanceReady_when_spawning_any_kind_of_scene.md b/release-content/0.15/migration-guides/11741_Send_SceneInstanceReady_when_spawning_any_kind_of_scene.md new file mode 100644 index 0000000000..185d81bfec --- /dev/null +++ b/release-content/0.15/migration-guides/11741_Send_SceneInstanceReady_when_spawning_any_kind_of_scene.md @@ -0,0 +1 @@ +- `SceneInstanceReady { parent: Entity }` is now `SceneInstanceReady { id: InstanceId, parent: Option }`. diff --git a/release-content/0.15/migration-guides/12095_Add_features_to_switch_NativeActivity_and_GameActivity_usa.md b/release-content/0.15/migration-guides/12095_Add_features_to_switch_NativeActivity_and_GameActivity_usa.md new file mode 100644 index 0000000000..0e0656c2e7 --- /dev/null +++ b/release-content/0.15/migration-guides/12095_Add_features_to_switch_NativeActivity_and_GameActivity_usa.md @@ -0,0 +1,2 @@ +Because `cargo-apk` is not compatible with `GameActivity`, building/running using `cargo apk build/run -p bevy_mobile_example` is no longer possible. +Users should follow the new workflow described in document. diff --git a/release-content/0.15/migration-guides/12770_Implement_gamepads_as_entities.md b/release-content/0.15/migration-guides/12770_Implement_gamepads_as_entities.md new file mode 100644 index 0000000000..0ff2062821 --- /dev/null +++ b/release-content/0.15/migration-guides/12770_Implement_gamepads_as_entities.md @@ -0,0 +1,44 @@ +Gamepad input is no longer accessed using resources, instead they are entities and are accessible using the Gamepad component as long as the gamepad is connected. + +Gamepads resource has been deleted, instead of using an internal id to identify gamepads you can use its Entity. Disconnected gamepads will **NOT** be despawned. Gamepad components that don’t need to preserve their state will be removed i.e. Gamepad component is removed, but GamepadSettings is kept. +Reconnected gamepads will try to preserve their Entity id and necessary components will be re-inserted. + +GamepadSettings is no longer a resource, instead it is a component attached to the Gamepad entity. + +Axis, Axis and ButtonInput methods are accessible via Gamepad component. + +```diff +fn gamepad_system( +- gamepads: Res, +- button_inputs: Res>, +- button_axes: Res>, +- axes: Res>, ++ gamepads: Query<&Gamepad> +) { + for gamepad in gamepads.iter() { +- if button_inputs.just_pressed(GamepadButton::new(gamepad, GamepadButtonType::South)) { ++ if gamepad.just_pressed(GamepadButton::South) { + println!("just pressed South"); + } + +- let right_trigger = button_axes +- .get(GamepadButton::new( +- gamepad, +- GamepadButtonType::RightTrigger2, +- )) +- .unwrap(); ++ let right_trigger = gamepad.get(GamepadButton::RightTrigger2).unwrap(); + if right_trigger.abs() > 0.01 { + info!("RightTrigger2 value is {}", right_trigger); + } + +- let left_stick_x = axes +- .get(GamepadAxis::new(gamepad, GamepadAxisType::LeftStickX)) +- .unwrap(); ++ let left_stick_x = gamepad.get(GamepadAxis::LeftStickX).unwrap(); + if left_stick_x.abs() > 0.01 { + info!("LeftStickX value is {}", left_stick_x); + } + } +} +``` diff --git a/release-content/0.15/migration-guides/12929_Remove_redundant_information_and_optimize_dynamic_allocati.md b/release-content/0.15/migration-guides/12929_Remove_redundant_information_and_optimize_dynamic_allocati.md new file mode 100644 index 0000000000..6e8d661b49 --- /dev/null +++ b/release-content/0.15/migration-guides/12929_Remove_redundant_information_and_optimize_dynamic_allocati.md @@ -0,0 +1,3 @@ +`Table` now uses `ThinColumn` instead of `Column`. That means that methods that previously returned `Column`, will now return `ThinColumn` instead. + +`ThinColumn` has a much more limited and low-level API, but you can still achieve the same things in `ThinColumn` as you did in `Column`. For example, instead of calling `Column::get_added_tick`, you’d call `ThinColumn::get_added_ticks_slice` and index it to get the specific added tick. diff --git a/release-content/0.15/migration-guides/13014_Dedicated_Reflect_implementation_for_Setlike_things.md b/release-content/0.15/migration-guides/13014_Dedicated_Reflect_implementation_for_Setlike_things.md new file mode 100644 index 0000000000..89405a6163 --- /dev/null +++ b/release-content/0.15/migration-guides/13014_Dedicated_Reflect_implementation_for_Setlike_things.md @@ -0,0 +1,5 @@ +- The new `Set` variants on the enums listed in the change section should probably be considered by people working with this level of the lib + +__Help wanted!__ + +I’m not sure if this change is able to break code. From my understanding it shouldn’t since we just add functionality but I’m not sure yet if theres anything missing from my impl that would be normally provided by `impl_reflect_value!` diff --git a/release-content/0.15/migration-guides/13069_Add_2d_opaque_phase_with_depth_buffer.md b/release-content/0.15/migration-guides/13069_Add_2d_opaque_phase_with_depth_buffer.md new file mode 100644 index 0000000000..6c4e7e438b --- /dev/null +++ b/release-content/0.15/migration-guides/13069_Add_2d_opaque_phase_with_depth_buffer.md @@ -0,0 +1 @@ +- `ColorMaterial` now contains `AlphaMode2d`. To keep previous behaviour, use `AlphaMode::BLEND`. If you know your sprite is opaque, use `AlphaMode::OPAQUE` diff --git a/release-content/0.15/migration-guides/13240_Dont_ignore_draw_errors.md b/release-content/0.15/migration-guides/13240_Dont_ignore_draw_errors.md new file mode 100644 index 0000000000..4270a53b0e --- /dev/null +++ b/release-content/0.15/migration-guides/13240_Dont_ignore_draw_errors.md @@ -0,0 +1,3 @@ +If you were using `RenderCommandResult::Failure` to just ignore an error and retry later, use `RenderCommandResult::Skip` instead. + +This wasn’t intentional, but this PR should also help with https://github.com/bevyengine/bevy/issues/12660 since we can turn a few unwraps into error messages now. diff --git a/release-content/0.15/migration-guides/13321_bevy_reflect_Nested_TypeInfo_getters.md b/release-content/0.15/migration-guides/13321_bevy_reflect_Nested_TypeInfo_getters.md new file mode 100644 index 0000000000..d738caa851 --- /dev/null +++ b/release-content/0.15/migration-guides/13321_bevy_reflect_Nested_TypeInfo_getters.md @@ -0,0 +1,5 @@ +All active fields for reflected types (including lists, maps, tuples, etc.), must implement `Typed`. For the majority of users this won’t have any visible impact. + +However, users implementing `Reflect` manually may need to update their types to implement `Typed` if they weren’t already. + +Additionally, custom dynamic types will need to implement the new hidden `MaybeTyped` trait. diff --git a/release-content/0.15/migration-guides/13454_Added_visibility_bitmask_as_an_alternative_SSAO_method.md b/release-content/0.15/migration-guides/13454_Added_visibility_bitmask_as_an_alternative_SSAO_method.md new file mode 100644 index 0000000000..59bdc4c349 --- /dev/null +++ b/release-content/0.15/migration-guides/13454_Added_visibility_bitmask_as_an_alternative_SSAO_method.md @@ -0,0 +1 @@ +SSAO algorithm was changed from GTAO to VBAO (visibility bitmasks). A new field, `constant_object_thickness`, was added to `ScreenSpaceAmbientOcclusion`. `ScreenSpaceAmbientOcclusion` also lost its `Eq` and `Hash` implementations. diff --git a/release-content/0.15/migration-guides/13620_Fix_UI_texture_atlas_with_offset.md b/release-content/0.15/migration-guides/13620_Fix_UI_texture_atlas_with_offset.md new file mode 100644 index 0000000000..17a84184b6 --- /dev/null +++ b/release-content/0.15/migration-guides/13620_Fix_UI_texture_atlas_with_offset.md @@ -0,0 +1,25 @@ +```diff +let ui_node = ExtractedUiNode { + stack_index, + transform, + color, + rect, + image, +- atlas_size: Some(atlas_size * scale_factor), ++ atlas_scaling: Some(Vec2::splat(scale_factor)), + clip, + flip_x, + flip_y, + camera_entity, + border, + border_radius, + node_type, + }, +``` + +```diff +let computed_slices = ComputedTextureSlices { + slices, +- image_size, +} +``` diff --git a/release-content/0.15/migration-guides/13669_Expose_winits_MonitorHandle.md b/release-content/0.15/migration-guides/13669_Expose_winits_MonitorHandle.md new file mode 100644 index 0000000000..f67e5c6edc --- /dev/null +++ b/release-content/0.15/migration-guides/13669_Expose_winits_MonitorHandle.md @@ -0,0 +1 @@ +- `WindowMode` variants now take a `MonitorSelection`, which can be set to `MonitorSelection::Primary` to mirror the old behavior. diff --git a/release-content/0.15/migration-guides/13712_Add_feature_requirement_info_to_image_loading_docs.md b/release-content/0.15/migration-guides/13712_Add_feature_requirement_info_to_image_loading_docs.md new file mode 100644 index 0000000000..3955c19203 --- /dev/null +++ b/release-content/0.15/migration-guides/13712_Add_feature_requirement_info_to_image_loading_docs.md @@ -0,0 +1 @@ +Image format related entities are feature gated, if there are compilation errors about unknown names there are some of features in list (`exr`, `hdr`, `basis-universal`, `png`, `dds`, `tga`, `jpeg`, `bmp`, `ktx2`, `webp` and `pnm`) should be added. diff --git a/release-content/0.15/migration-guides/13818_Created_an_EventMutator_for_when_you_want_to_mutate_an_eve.md b/release-content/0.15/migration-guides/13818_Created_an_EventMutator_for_when_you_want_to_mutate_an_eve.md new file mode 100644 index 0000000000..c8c04a488b --- /dev/null +++ b/release-content/0.15/migration-guides/13818_Created_an_EventMutator_for_when_you_want_to_mutate_an_eve.md @@ -0,0 +1,3 @@ +Users currently using `ManualEventReader` should use `EventCursor` instead. `ManualEventReader` will be removed in Bevy 0.16. Additionally, `Events::get_reader` has been replaced by `Events::get_cursor`. + +Users currently directly accessing the `Events` resource for mutation should move to `EventMutator` if possible. diff --git a/release-content/0.15/migration-guides/13855_Align_Scenewrite_to_world_with_to_match_DynamicScenewrite_.md b/release-content/0.15/migration-guides/13855_Align_Scenewrite_to_world_with_to_match_DynamicScenewrite_.md new file mode 100644 index 0000000000..d42524c8d8 --- /dev/null +++ b/release-content/0.15/migration-guides/13855_Align_Scenewrite_to_world_with_to_match_DynamicScenewrite_.md @@ -0,0 +1,14 @@ +`Scene::write_to_world_with` no longer returns an `InstanceInfo`. + +Before + +```rust +scene.write_to_world_with(world, ®istry) +``` + +After + +```rust +let mut entity_map = EntityHashMap::default(); +scene.write_to_world_with(world, &mut entity_map, ®istry) +``` diff --git a/release-content/0.15/migration-guides/13859_Change_SceneInstanceReady_to_trigger_an_observer.md b/release-content/0.15/migration-guides/13859_Change_SceneInstanceReady_to_trigger_an_observer.md new file mode 100644 index 0000000000..7fa679058c --- /dev/null +++ b/release-content/0.15/migration-guides/13859_Change_SceneInstanceReady_to_trigger_an_observer.md @@ -0,0 +1,16 @@ +If you have a system which read `SceneInstanceReady` events: + +> +`fn ready_system(ready_events: EventReader<'_, '_, SceneInstanceReady>) {` + + +It must be rewritten as an observer: + +> +`commands.observe(|trigger: Trigger| {` + + +Or, if you were expecting the event in relation to a specific entity or entities, as an entity observer: + +> +`commands.entity(entity).observe(|trigger: Trigger| {` diff --git a/release-content/0.15/migration-guides/13871_Replaced_implicit_emissive_weight_with_default.md b/release-content/0.15/migration-guides/13871_Replaced_implicit_emissive_weight_with_default.md new file mode 100644 index 0000000000..cf873b4c07 --- /dev/null +++ b/release-content/0.15/migration-guides/13871_Replaced_implicit_emissive_weight_with_default.md @@ -0,0 +1 @@ + diff --git a/release-content/0.15/migration-guides/13991_Minimal_Bubbling_Observers.md b/release-content/0.15/migration-guides/13991_Minimal_Bubbling_Observers.md new file mode 100644 index 0000000000..9ebf9af403 --- /dev/null +++ b/release-content/0.15/migration-guides/13991_Minimal_Bubbling_Observers.md @@ -0,0 +1,3 @@ +- Manual implementations of `Event` should add associated type `Traverse = TraverseNone` and associated constant `AUTO_PROPAGATE = false`; +- `Trigger::new` has new field `propagation: &mut Propagation` which provides the bubbling state. +- `ObserverRunner` now takes the same `&mut Propagation` as a final parameter. diff --git a/release-content/0.15/migration-guides/14034_Track_source_location_in_change_detection.md b/release-content/0.15/migration-guides/14034_Track_source_location_in_change_detection.md new file mode 100644 index 0000000000..90c154d7c1 --- /dev/null +++ b/release-content/0.15/migration-guides/14034_Track_source_location_in_change_detection.md @@ -0,0 +1 @@ +- Added `changed_by` field to many internal ECS functions used with change detection when the `track_change_detection` feature flag is enabled. Use Location::caller() to provide the source of the function call. diff --git a/release-content/0.15/migration-guides/14050_Support_more_kinds_of_system_params_in_buildable_systems.md b/release-content/0.15/migration-guides/14050_Support_more_kinds_of_system_params_in_buildable_systems.md new file mode 100644 index 0000000000..d0cae12181 --- /dev/null +++ b/release-content/0.15/migration-guides/14050_Support_more_kinds_of_system_params_in_buildable_systems.md @@ -0,0 +1,19 @@ +The API for `SystemBuilder` has changed. Instead of constructing a builder with a world and then adding params, you first create a tuple of param builders and then supply the world. + +```rust +// Before +let system = SystemBuilder::<()>::new(&mut world) + .local::() + .builder::>(|x| *x = 10) + .builder::>(|builder| { builder.with::(); }) + .build(system); + +// After +let system = ( + ParamBuilder, + LocalBuilder(10), + QueryParamBuilder::new(|builder| { builder.with::(); }), +) + .build_state(&mut world) + .build_system(system); +``` diff --git a/release-content/0.15/migration-guides/14073_Lighting_Should_Only_hold_VecEntity_instead_of_TypeIdVecEn.md b/release-content/0.15/migration-guides/14073_Lighting_Should_Only_hold_VecEntity_instead_of_TypeIdVecEn.md new file mode 100644 index 0000000000..2533fbe0d5 --- /dev/null +++ b/release-content/0.15/migration-guides/14073_Lighting_Should_Only_hold_VecEntity_instead_of_TypeIdVecEn.md @@ -0,0 +1,2 @@ +> +now `SpotLightBundle` , `CascadesVisibleEntities `and `CubemapVisibleEntities `use VisibleMeshEntities instead of `VisibleEntities` diff --git a/release-content/0.15/migration-guides/14099_Allow_volumetric_fog_to_be_localized_to_specific_optionally.md b/release-content/0.15/migration-guides/14099_Allow_volumetric_fog_to_be_localized_to_specific_optionally.md new file mode 100644 index 0000000000..9651b9d2e9 --- /dev/null +++ b/release-content/0.15/migration-guides/14099_Allow_volumetric_fog_to_be_localized_to_specific_optionally.md @@ -0,0 +1 @@ +- A `FogVolume` is now necessary in order to enable volumetric fog, in addition to `VolumetricFogSettings` on the camera. Existing uses of volumetric fog can be migrated by placing a large `FogVolume` surrounding the scene. diff --git a/release-content/0.15/migration-guides/14178_Remove_unused_type_parameter_in_Paralleldrain.md b/release-content/0.15/migration-guides/14178_Remove_unused_type_parameter_in_Paralleldrain.md new file mode 100644 index 0000000000..9d5d154ef7 --- /dev/null +++ b/release-content/0.15/migration-guides/14178_Remove_unused_type_parameter_in_Paralleldrain.md @@ -0,0 +1,21 @@ +The type parameter of `Parallel::drain()` was unused, so it is now removed. If you were manually specifying it, you can remove the bounds. + +```rust +// 0.14 +// Create a `Parallel` and give it a value. +let mut parallel: Parallel> = Parallel::default(); +*parallel.borrow_local_mut() = vec![1, 2, 3]; + +for v in parallel.drain::() { + // ... +} + +// 0.15 +let mut parallel: Parallel> = Parallel::default(); +*parallel.borrow_local_mut() = vec![1, 2, 3]; + +// Remove the type parameter. +for v in parallel.drain() { + // ... +} +``` diff --git a/release-content/0.15/migration-guides/14193_Faster_MeshletMesh_deserialization.md b/release-content/0.15/migration-guides/14193_Faster_MeshletMesh_deserialization.md new file mode 100644 index 0000000000..bc25073886 --- /dev/null +++ b/release-content/0.15/migration-guides/14193_Faster_MeshletMesh_deserialization.md @@ -0,0 +1,6 @@ +- Regenerate your `MeshletMesh` assets, as the disk format has changed, and `MESHLET_MESH_ASSET_VERSION` has been bumped +- `MeshletMesh` fields are now private +- `MeshletMeshSaverLoad` is now named `MeshletMeshSaverLoader` +- The `Meshlet`, `MeshletBoundingSpheres`, and `MeshletBoundingSphere` types are now private +- `MeshletMeshSaveOrLoadError::SerializationOrDeserialization` has been removed +- Added `MeshletMeshSaveOrLoadError::WrongFileType`, match on this variant if you match on `MeshletMeshSaveOrLoadError` diff --git a/release-content/0.15/migration-guides/14194_Replace_AsyncSeek_trait_by_AsyncSeekForward_for_Reader_to_.md b/release-content/0.15/migration-guides/14194_Replace_AsyncSeek_trait_by_AsyncSeekForward_for_Reader_to_.md new file mode 100644 index 0000000000..82f5bb13ac --- /dev/null +++ b/release-content/0.15/migration-guides/14194_Replace_AsyncSeek_trait_by_AsyncSeekForward_for_Reader_to_.md @@ -0,0 +1 @@ +Replace all instances of `AsyncSeek` with `AsyncSeekForward` in your asset reader implementations. diff --git a/release-content/0.15/migration-guides/14198_Remove_need_for_EventLoopProxy_to_be_NonSend.md b/release-content/0.15/migration-guides/14198_Remove_need_for_EventLoopProxy_to_be_NonSend.md new file mode 100644 index 0000000000..59c4553c3c --- /dev/null +++ b/release-content/0.15/migration-guides/14198_Remove_need_for_EventLoopProxy_to_be_NonSend.md @@ -0,0 +1,17 @@ +`EventLoopProxy` has been renamed to `EventLoopProxyWrapper` and is now `Send`, making it an ordinary resource. + +Before: + +```rust +event_loop_system(event_loop: NonSend>) { + event_loop.send_event(MyEvent); +} +``` + +After: + +```rust +event_loop_system(event_loop: Res>) { + event_loop.send_event(MyEvent); +} +``` diff --git a/release-content/0.15/migration-guides/14211_Rename_bevy_corenameDebugName_to_bevy_corenameNameOrEntity.md b/release-content/0.15/migration-guides/14211_Rename_bevy_corenameDebugName_to_bevy_corenameNameOrEntity.md new file mode 100644 index 0000000000..01375c1b02 --- /dev/null +++ b/release-content/0.15/migration-guides/14211_Rename_bevy_corenameDebugName_to_bevy_corenameNameOrEntity.md @@ -0,0 +1 @@ +- Rename usages of `bevy_core::name::DebugName` to `bevy_core::name::NameOrEntity` diff --git a/release-content/0.15/migration-guides/14228_Clean_up_UiSystem_system_sets.md b/release-content/0.15/migration-guides/14228_Clean_up_UiSystem_system_sets.md new file mode 100644 index 0000000000..f80d59efeb --- /dev/null +++ b/release-content/0.15/migration-guides/14228_Clean_up_UiSystem_system_sets.md @@ -0,0 +1,3 @@ +`UiSystem` system set adjustments. + +- The `UiSystem::Outline` system set is now strictly ordered after `UiSystem::Layout`, rather than overlapping it. diff --git a/release-content/0.15/migration-guides/14250_Implement_FromIteratorIntoIterator_for_dynamic_types.md b/release-content/0.15/migration-guides/14250_Implement_FromIteratorIntoIterator_for_dynamic_types.md new file mode 100644 index 0000000000..2da19481c7 --- /dev/null +++ b/release-content/0.15/migration-guides/14250_Implement_FromIteratorIntoIterator_for_dynamic_types.md @@ -0,0 +1 @@ +- Change `DynamicArray::from_vec` to `DynamicArray::from_iter` diff --git a/release-content/0.15/migration-guides/14257_Pack_multiple_vertex_and_index_arrays_together_into_growab.md b/release-content/0.15/migration-guides/14257_Pack_multiple_vertex_and_index_arrays_together_into_growab.md new file mode 100644 index 0000000000..2af5a0be49 --- /dev/null +++ b/release-content/0.15/migration-guides/14257_Pack_multiple_vertex_and_index_arrays_together_into_growab.md @@ -0,0 +1,5 @@ +__Changed__ + +- Vertex and index buffers for meshes may now be packed alongside other buffers, for performance. +- `GpuMesh` has been renamed to `RenderMesh`, to reflect the fact that it no longer directly stores handles to GPU objects. +- Because meshes no longer have their own vertex and index buffers, the responsibility for the buffers has moved from `GpuMesh` (now called `RenderMesh`) to the `MeshAllocator` resource. To access the vertex data for a mesh, use `MeshAllocator::mesh_vertex_slice`. To access the index data for a mesh, use `MeshAllocator::mesh_index_slice`. diff --git a/release-content/0.15/migration-guides/14267_Add_support_for_skybox_transformation.md b/release-content/0.15/migration-guides/14267_Add_support_for_skybox_transformation.md new file mode 100644 index 0000000000..5e9f31e6ed --- /dev/null +++ b/release-content/0.15/migration-guides/14267_Add_support_for_skybox_transformation.md @@ -0,0 +1 @@ +- Since we have added a new filed to the Skybox struct, users will need to include `..Default::default()` or some rotation value in their initialization code. diff --git a/release-content/0.15/migration-guides/14273_Move_Msaa_to_component.md b/release-content/0.15/migration-guides/14273_Move_Msaa_to_component.md new file mode 100644 index 0000000000..a1ec2c53e4 --- /dev/null +++ b/release-content/0.15/migration-guides/14273_Move_Msaa_to_component.md @@ -0,0 +1 @@ +`Msaa` is no longer configured as a global resource, and should be specified on each spawned camera if a non-default setting is desired. diff --git a/release-content/0.15/migration-guides/14284_Add_custom_cursors.md b/release-content/0.15/migration-guides/14284_Add_custom_cursors.md new file mode 100644 index 0000000000..f2e54589bb --- /dev/null +++ b/release-content/0.15/migration-guides/14284_Add_custom_cursors.md @@ -0,0 +1,3 @@ +- `CursorIcon` is no longer a field in `Window`, but a separate component can be inserted to a window entity. It has been changed to an enum that can hold custom images in addition to system icons. +- `Cursor` is renamed to `CursorOptions` and `cursor` field of `Window` is renamed to `cursor_options` +- `CursorIcon` is renamed to `SystemCursorIcon` diff --git a/release-content/0.15/migration-guides/14285_Remove_second_generic_from_add_before_add_after.md b/release-content/0.15/migration-guides/14285_Remove_second_generic_from_add_before_add_after.md new file mode 100644 index 0000000000..ecf6692da0 --- /dev/null +++ b/release-content/0.15/migration-guides/14285_Remove_second_generic_from_add_before_add_after.md @@ -0,0 +1,15 @@ +Removed second generic from `PluginGroupBuilder` methods: `add_before` and `add_after`. + +```rust +// Before: +DefaultPlugins + .build() + .add_before::(FooPlugin) + .add_after::(BarPlugin) + +// After: +DefaultPlugins + .build() + .add_before::(FooPlugin) + .add_after::(BarPlugin) +``` diff --git a/release-content/0.15/migration-guides/14290_Add_support_for_environment_map_transformation.md b/release-content/0.15/migration-guides/14290_Add_support_for_environment_map_transformation.md new file mode 100644 index 0000000000..5740331d23 --- /dev/null +++ b/release-content/0.15/migration-guides/14290_Add_support_for_environment_map_transformation.md @@ -0,0 +1 @@ +- Since we have added a new filed to the `EnvironmentMapLight` struct, users will need to include `..default()` or some rotation value in their initialization code. diff --git a/release-content/0.15/migration-guides/14313_Remove_unused_default_feature_from_bevy_window.md b/release-content/0.15/migration-guides/14313_Remove_unused_default_feature_from_bevy_window.md new file mode 100644 index 0000000000..3dc69affdf --- /dev/null +++ b/release-content/0.15/migration-guides/14313_Remove_unused_default_feature_from_bevy_window.md @@ -0,0 +1,11 @@ +`bevy_window` had an empty default feature flag that did not do anything, so it was removed. You may have to remove any references to it if you specified it manually. + +```toml +# 0.14 +[dependencies] +bevy_window = { version = "0.14", default-features = false, features = ["default"] } + +# 0.15 +[dependencies] +bevy_window = { version = "0.15", default-features = false } +``` diff --git a/release-content/0.15/migration-guides/14325_Added_new_method_to_Cone_3D_primitive.md b/release-content/0.15/migration-guides/14325_Added_new_method_to_Cone_3D_primitive.md new file mode 100644 index 0000000000..e4356916c4 --- /dev/null +++ b/release-content/0.15/migration-guides/14325_Added_new_method_to_Cone_3D_primitive.md @@ -0,0 +1 @@ +- Addition of `new` method to the 3D primitive Cone struct. diff --git a/release-content/0.15/migration-guides/14343_Export_glTF_skins_as_a_Gltf_struct.md b/release-content/0.15/migration-guides/14343_Export_glTF_skins_as_a_Gltf_struct.md new file mode 100644 index 0000000000..a465e849f9 --- /dev/null +++ b/release-content/0.15/migration-guides/14343_Export_glTF_skins_as_a_Gltf_struct.md @@ -0,0 +1 @@ +- Change `GltfAssetLabel::Skin(..)` to `GltfAssetLabel::InverseBindMatrices(..)`. diff --git a/release-content/0.15/migration-guides/14352_Add_FilteredAccessempty_and_simplify_the_implementation_of_.md b/release-content/0.15/migration-guides/14352_Add_FilteredAccessempty_and_simplify_the_implementation_of_.md new file mode 100644 index 0000000000..ed0c9aafee --- /dev/null +++ b/release-content/0.15/migration-guides/14352_Add_FilteredAccessempty_and_simplify_the_implementation_of_.md @@ -0,0 +1 @@ +- The behaviour of `AnyOf<()>` and `Or<()>` has been changed to match no archetypes rather than all archetypes to naturally match the corresponding logical operation. Consider replacing them with `()` instead. diff --git a/release-content/0.15/migration-guides/14354_Update_trigger_observers_to_operate_over_slices_of_data.md b/release-content/0.15/migration-guides/14354_Update_trigger_observers_to_operate_over_slices_of_data.md new file mode 100644 index 0000000000..97bdc3e059 --- /dev/null +++ b/release-content/0.15/migration-guides/14354_Update_trigger_observers_to_operate_over_slices_of_data.md @@ -0,0 +1 @@ +- TBD diff --git a/release-content/0.15/migration-guides/14357_Using_Cas_instead_of_CAS_14341.md b/release-content/0.15/migration-guides/14357_Using_Cas_instead_of_CAS_14341.md new file mode 100644 index 0000000000..cf873b4c07 --- /dev/null +++ b/release-content/0.15/migration-guides/14357_Using_Cas_instead_of_CAS_14341.md @@ -0,0 +1 @@ + diff --git a/release-content/0.15/migration-guides/14373_Optimize_transform_propagation.md b/release-content/0.15/migration-guides/14373_Optimize_transform_propagation.md new file mode 100644 index 0000000000..3bb9592532 --- /dev/null +++ b/release-content/0.15/migration-guides/14373_Optimize_transform_propagation.md @@ -0,0 +1 @@ +This change does not introduce any breaking changes. Users of the Bevy engine will automatically benefit from this performance improvement without needing to modify their code. diff --git a/release-content/0.15/migration-guides/14382_Disallow_empty_cubic_and_rational_curves.md b/release-content/0.15/migration-guides/14382_Disallow_empty_cubic_and_rational_curves.md new file mode 100644 index 0000000000..0845410aed --- /dev/null +++ b/release-content/0.15/migration-guides/14382_Disallow_empty_cubic_and_rational_curves.md @@ -0,0 +1,5 @@ +The `to_curve` method on Bevy’s cubic splines is now fallible (returning a `Result`), meaning that any existing calls will need to be updated by handling the possibility of an error variant. + +Similarly, any custom implementation of `CubicGenerator` or `RationalGenerator` will need to be amended to include an `Error` type and be made fallible itself. + +Finally, the fields of `CubicCurve` and `RationalCurve` are now private, so any direct constructions of these structs from segments will need to be replaced with the new `CubicCurve::from_segments` and `RationalCurve::from_segments` methods. diff --git a/release-content/0.15/migration-guides/14384_Only_propagate_transforms_entities_with_GlobalTransforms.md b/release-content/0.15/migration-guides/14384_Only_propagate_transforms_entities_with_GlobalTransforms.md new file mode 100644 index 0000000000..9d3356f9b4 --- /dev/null +++ b/release-content/0.15/migration-guides/14384_Only_propagate_transforms_entities_with_GlobalTransforms.md @@ -0,0 +1 @@ +- To avoid surprising performance pitfalls, `Transform` / `GlobalTransform` propagation is no longer performed down through hierarchies where intermediate parent are missing a `GlobalTransform`. To restore the previous behavior, add `GlobalTransform::default` to intermediate entities. diff --git a/release-content/0.15/migration-guides/14387_Deprecate_is_playing_animation.md b/release-content/0.15/migration-guides/14387_Deprecate_is_playing_animation.md new file mode 100644 index 0000000000..35ba0ae1e9 --- /dev/null +++ b/release-content/0.15/migration-guides/14387_Deprecate_is_playing_animation.md @@ -0,0 +1 @@ +The user will just need to replace functions named `is_playing_animation` with `animation_is_playing`. diff --git a/release-content/0.15/migration-guides/14394_Changed_Meshattributes_functions_to_return_MeshVertexAttri.md b/release-content/0.15/migration-guides/14394_Changed_Meshattributes_functions_to_return_MeshVertexAttri.md new file mode 100644 index 0000000000..d5500f300d --- /dev/null +++ b/release-content/0.15/migration-guides/14394_Changed_Meshattributes_functions_to_return_MeshVertexAttri.md @@ -0,0 +1 @@ +- When using the iterator returned by `Mesh::attributes` or `Mesh::attributes_mut` the first value of the tuple is not the `MeshVertexAttribute` instead of `MeshVertexAttributeId`. To access the `MeshVertexAttributeId` use the `MeshVertexAttribute.id` field. diff --git a/release-content/0.15/migration-guides/14416_feat_Add_Worldget_reflect_and_Worldget_reflect_mut.md b/release-content/0.15/migration-guides/14416_feat_Add_Worldget_reflect_and_Worldget_reflect_mut.md new file mode 100644 index 0000000000..6e9af6949c --- /dev/null +++ b/release-content/0.15/migration-guides/14416_feat_Add_Worldget_reflect_and_Worldget_reflect_mut.md @@ -0,0 +1 @@ +No breaking changes, but users can use the new methods if they did it manually before. diff --git a/release-content/0.15/migration-guides/14430_Fix_error_in_bevy_ui_when_building_without_bevy_text.md b/release-content/0.15/migration-guides/14430_Fix_error_in_bevy_ui_when_building_without_bevy_text.md new file mode 100644 index 0000000000..858751b790 --- /dev/null +++ b/release-content/0.15/migration-guides/14430_Fix_error_in_bevy_ui_when_building_without_bevy_text.md @@ -0,0 +1,3 @@ +**This is not a breaking change for users migrating from 0.14, since `MeasureArgs` did not exist then.** + +When the `bevy_text` feature is disabled for `bevy_ui`, the type of the `MeasureArgs::font_system` field is now a `PhantomData` instead of being removed entirely. This is in order to keep the lifetime parameter, even though it is unused without text being enabled. diff --git a/release-content/0.15/migration-guides/14441_Simplify_run_conditions.md b/release-content/0.15/migration-guides/14441_Simplify_run_conditions.md new file mode 100644 index 0000000000..b1a39ba381 --- /dev/null +++ b/release-content/0.15/migration-guides/14441_Simplify_run_conditions.md @@ -0,0 +1,21 @@ +Some run conditions have been simplified. + +```rust +// Before: +app.add_systems(Update, ( + system_0.run_if(run_once()), + system_1.run_if(resource_changed_or_removed::()), + system_2.run_if(resource_removed::()), + system_3.run_if(on_event::()), + system_4.run_if(any_component_removed::()), +)); + +// After: +app.add_systems(Update, ( + system_0.run_if(run_once), + system_1.run_if(resource_changed_or_removed::), + system_2.run_if(resource_removed::), + system_3.run_if(on_event::), + system_4.run_if(any_component_removed::), +)); +``` diff --git a/release-content/0.15/migration-guides/14448_Making_bevy_render_an_optional_dependency_for_bevy_gizmos.md b/release-content/0.15/migration-guides/14448_Making_bevy_render_an_optional_dependency_for_bevy_gizmos.md new file mode 100644 index 0000000000..ba73e618a5 --- /dev/null +++ b/release-content/0.15/migration-guides/14448_Making_bevy_render_an_optional_dependency_for_bevy_gizmos.md @@ -0,0 +1 @@ +No user-visible changes needed from the users. diff --git a/release-content/0.15/migration-guides/14459_Require_mut_self_for_Worldincrement_change_tick.md b/release-content/0.15/migration-guides/14459_Require_mut_self_for_Worldincrement_change_tick.md new file mode 100644 index 0000000000..f29370daa2 --- /dev/null +++ b/release-content/0.15/migration-guides/14459_Require_mut_self_for_Worldincrement_change_tick.md @@ -0,0 +1,11 @@ +The method `World::increment_change_tick` now requires `&mut self` instead of `&self`. If you need to call this method but do not have mutable access to the world, consider using `world.as_unsafe_world_cell_readonly().increment_change_tick()`, which does the same thing, but is less efficient than the method on `World` due to requiring atomic synchronization. + +```rust +fn my_system(world: &World) { + // Before + world.increment_change_tick(); + + // After + world.as_unsafe_world_cell_readonly().increment_change_tick(); +} +``` diff --git a/release-content/0.15/migration-guides/14485_Refactor_Bounded2dBounded3d_to_use_isometries.md b/release-content/0.15/migration-guides/14485_Refactor_Bounded2dBounded3d_to_use_isometries.md new file mode 100644 index 0000000000..b8fc038316 --- /dev/null +++ b/release-content/0.15/migration-guides/14485_Refactor_Bounded2dBounded3d_to_use_isometries.md @@ -0,0 +1,21 @@ +The `Bounded2d` and `Bounded3d` traits now take `Isometry2d` and `Isometry3d` parameters (respectively) instead of separate translation and rotation arguments. Existing calls to `aabb_2d`, `bounding_circle`, `aabb_3d`, and `bounding_sphere` will have to be changed to use isometries instead. A straightforward conversion is to refactor just by calling `Isometry2d/3d::new`, as follows: + +```rust +// Old: +let aabb = my_shape.aabb_2d(my_translation, my_rotation); + +// New: +let aabb = my_shape.aabb_2d(Isometry2d::new(my_translation, my_rotation)); +``` + +However, if the old translation and rotation are 3d translation/rotations originating from a `Transform` or `GlobalTransform`, then `to_isometry` may be used instead. For example: + +```rust +// Old: +let bounding_sphere = my_shape.bounding_sphere(shape_transform.translation, shape_transform.rotation); + +// New: +let bounding_sphere = my_shape.bounding_sphere(shape_transform.to_isometry()); +``` + +This discussion also applies to the `from_point_cloud` construction method of `Aabb2d`/`BoundingCircle`/`Aabb3d`/`BoundingSphere`, which has similarly been altered to use isometries. diff --git a/release-content/0.15/migration-guides/14534_Remove_deprecated_bevy_dynamic_plugin.md b/release-content/0.15/migration-guides/14534_Remove_deprecated_bevy_dynamic_plugin.md new file mode 100644 index 0000000000..e8e123f735 --- /dev/null +++ b/release-content/0.15/migration-guides/14534_Remove_deprecated_bevy_dynamic_plugin.md @@ -0,0 +1 @@ +Dynamic plugins were deprecated in 0.14 for being unsound, and they have now been fully removed. Please consider using the alternatives listed in the `bevy_dynamic_plugin` crate documentation, or worst-case scenario you may copy the code from 0.14. diff --git a/release-content/0.15/migration-guides/14546_Make_AnimationPlayerstart_and_play_work_accordingly_to_doc.md b/release-content/0.15/migration-guides/14546_Make_AnimationPlayerstart_and_play_work_accordingly_to_doc.md new file mode 100644 index 0000000000..accaa172c0 --- /dev/null +++ b/release-content/0.15/migration-guides/14546_Make_AnimationPlayerstart_and_play_work_accordingly_to_doc.md @@ -0,0 +1,2 @@ +`AnimationPlayer::start` now correspondingly to its docs restarts a running animation. +`AnimationPlayer::play` doesn’t reset the weight anymore. diff --git a/release-content/0.15/migration-guides/14579_Fix_soudness_issue_with_Conflicts_involving_read_all_and_w.md b/release-content/0.15/migration-guides/14579_Fix_soudness_issue_with_Conflicts_involving_read_all_and_w.md new file mode 100644 index 0000000000..9595b94ad2 --- /dev/null +++ b/release-content/0.15/migration-guides/14579_Fix_soudness_issue_with_Conflicts_involving_read_all_and_w.md @@ -0,0 +1 @@ +The `get_conflicts` method of `Access` now returns an `AccessConflict` enum instead of simply a `Vec` of `ComponentId`s that are causing the access conflict. This can be useful in cases where there are no particular `ComponentId`s conflicting, but instead **all** of them are; for example `fn system(q1: Query, q2: Query)` diff --git a/release-content/0.15/migration-guides/14609_Explicitly_order_CameraUpdateSystem_before_UiSystemPrepare.md b/release-content/0.15/migration-guides/14609_Explicitly_order_CameraUpdateSystem_before_UiSystemPrepare.md new file mode 100644 index 0000000000..022df52a26 --- /dev/null +++ b/release-content/0.15/migration-guides/14609_Explicitly_order_CameraUpdateSystem_before_UiSystemPrepare.md @@ -0,0 +1 @@ +`CameraUpdateSystem` is now explicitly ordered before `UiSystem::Prepare` instead of being ambiguous with it. diff --git a/release-content/0.15/migration-guides/14623_Meshlet_software_raster__start_of_cleanup.md b/release-content/0.15/migration-guides/14623_Meshlet_software_raster__start_of_cleanup.md new file mode 100644 index 0000000000..3afcb58f31 --- /dev/null +++ b/release-content/0.15/migration-guides/14623_Meshlet_software_raster__start_of_cleanup.md @@ -0,0 +1 @@ +- TBD (ask me at the end of the release for meshlet changes as a whole) diff --git a/release-content/0.15/migration-guides/14631_Make_QueryStatetransmuteco_validate_the_world_of_the_Compo.md b/release-content/0.15/migration-guides/14631_Make_QueryStatetransmuteco_validate_the_world_of_the_Compo.md new file mode 100644 index 0000000000..46ddaac458 --- /dev/null +++ b/release-content/0.15/migration-guides/14631_Make_QueryStatetransmuteco_validate_the_world_of_the_Compo.md @@ -0,0 +1 @@ +- `QueryState::transmute`, `QueryState::transmute_filtered`, `QueryState::join` and `QueryState::join_filtered` now take a `impl Into` instead of a `&Components` diff --git a/release-content/0.15/migration-guides/14650_Improve_the_gizmo_for_Plane3d_reusing_grid.md b/release-content/0.15/migration-guides/14650_Improve_the_gizmo_for_Plane3d_reusing_grid.md new file mode 100644 index 0000000000..978cc73ceb --- /dev/null +++ b/release-content/0.15/migration-guides/14650_Improve_the_gizmo_for_Plane3d_reusing_grid.md @@ -0,0 +1,18 @@ +The optional builder methods on + +```rust + +gizmos.primitive_3d(&Plane3d { }, ...); + +``` + +changed from + +- `segment_length` +- `segment_count` +- `axis_count` + +to + +- `cell_count` +- `spacing` diff --git a/release-content/0.15/migration-guides/14656_Switch_rotation__translation_in_grid_gizmos.md b/release-content/0.15/migration-guides/14656_Switch_rotation__translation_in_grid_gizmos.md new file mode 100644 index 0000000000..1e46fce8f2 --- /dev/null +++ b/release-content/0.15/migration-guides/14656_Switch_rotation__translation_in_grid_gizmos.md @@ -0,0 +1 @@ +- Users might have to double check their already existing calls to all the `grid` methods. It should be more intuitive now though. diff --git a/release-content/0.15/migration-guides/14663_Adds_ShaderStorageBuffer_asset.md b/release-content/0.15/migration-guides/14663_Adds_ShaderStorageBuffer_asset.md new file mode 100644 index 0000000000..2d15f8c4f3 --- /dev/null +++ b/release-content/0.15/migration-guides/14663_Adds_ShaderStorageBuffer_asset.md @@ -0,0 +1 @@ +The `AsBindGroup` `storage` attribute has been modified to reference the new `Handle` asset instead. Usages of Vec` should be converted into assets instead. diff --git a/release-content/0.15/migration-guides/14676_Use_Isometry_in_bevy_gizmos_wherever_we_can.md b/release-content/0.15/migration-guides/14676_Use_Isometry_in_bevy_gizmos_wherever_we_can.md new file mode 100644 index 0000000000..3659233da9 --- /dev/null +++ b/release-content/0.15/migration-guides/14676_Use_Isometry_in_bevy_gizmos_wherever_we_can.md @@ -0,0 +1,9 @@ +The gizmos methods function signature changes as follows: + +- 2D + - if it took `position` & `rotation_angle` before -> `Isometry2d::new(position, Rot2::radians(rotation_angle))` + - if it just took `position` before -> `Isometry2d::from_translation(position)` + +- 3D + - if it took `position` & `rotation` before -> `Isometry3d::new(position, rotation)` + - if it just took `position` before -> `Isometry3d::from_translation(position)` diff --git a/release-content/0.15/migration-guides/14690_Add_query_reborrowing.md b/release-content/0.15/migration-guides/14690_Add_query_reborrowing.md new file mode 100644 index 0000000000..65eb7684d6 --- /dev/null +++ b/release-content/0.15/migration-guides/14690_Add_query_reborrowing.md @@ -0,0 +1 @@ +- `WorldQuery` now has an additional `shrink_fetch` method you have to implement if you were implementing `WorldQuery` manually. diff --git a/release-content/0.15/migration-guides/14720_Consistency_between_Wireframe2d_and_Wireframe.md b/release-content/0.15/migration-guides/14720_Consistency_between_Wireframe2d_and_Wireframe.md new file mode 100644 index 0000000000..d5cd18d8c5 --- /dev/null +++ b/release-content/0.15/migration-guides/14720_Consistency_between_Wireframe2d_and_Wireframe.md @@ -0,0 +1,2 @@ +- `Wireframe2dConfig`.`default_color` type is now `Color` instead of `Srgba`. Use `.into()` to convert between them. +- `Wireframe2dColor`.`color` type is now `Color` instead of `Srgba`. Use `.into()` to convert between them. diff --git a/release-content/0.15/migration-guides/14731_Fix_arc_2d_Gizmos.md b/release-content/0.15/migration-guides/14731_Fix_arc_2d_Gizmos.md new file mode 100644 index 0000000000..38136bb245 --- /dev/null +++ b/release-content/0.15/migration-guides/14731_Fix_arc_2d_Gizmos.md @@ -0,0 +1,27 @@ +- users have to adjust their usages of `arc_2d`: + - before: + +```rust +arc_2d( + pos, + angle, + arc_angle, + radius, + color +) +``` + + - after: + +```rust +arc_2d( + // this `+ arc_angle * 0.5` quirk is only if you want to preserve the previous behavior + // with the new API. + // feel free to try to fix this though since your current calls to this function most likely + // involve some computations to counter-act that quirk in the first place + Isometry2d::new(pos, Rot2::radians(angle + arc_angle * 0.5), + arc_angle, + radius, + color +) +``` diff --git a/release-content/0.15/migration-guides/14764_Add_RenderSetFinalCleanup_for_Worldclear_entities.md b/release-content/0.15/migration-guides/14764_Add_RenderSetFinalCleanup_for_Worldclear_entities.md new file mode 100644 index 0000000000..89295d80bb --- /dev/null +++ b/release-content/0.15/migration-guides/14764_Add_RenderSetFinalCleanup_for_Worldclear_entities.md @@ -0,0 +1 @@ +`World::clear_entities` is now part of `RenderSet::PostCleanup` rather than `RenderSet::Cleanup`. Your cleanup systems should likely stay in `RenderSet::Cleanup`. diff --git a/release-content/0.15/migration-guides/14790_Make_QueryFilter_an_unsafe_trait.md b/release-content/0.15/migration-guides/14790_Make_QueryFilter_an_unsafe_trait.md new file mode 100644 index 0000000000..781c4ee399 --- /dev/null +++ b/release-content/0.15/migration-guides/14790_Make_QueryFilter_an_unsafe_trait.md @@ -0,0 +1 @@ +`QueryFilter` is now an `unsafe trait`. If you were manually implementing it, you will need to verify that the `WorldQuery` implementation is read-only and then add the `unsafe` keyword to the `impl`. diff --git a/release-content/0.15/migration-guides/14793_Remove_useless_Direction_field.md b/release-content/0.15/migration-guides/14793_Remove_useless_Direction_field.md new file mode 100644 index 0000000000..b622360fe8 --- /dev/null +++ b/release-content/0.15/migration-guides/14793_Remove_useless_Direction_field.md @@ -0,0 +1 @@ +`Style` no longer has a `direction` field, and `Direction` has been deleted. They didn’t do anything, so you can delete any references to them as well. diff --git a/release-content/0.15/migration-guides/14833_Rewrite_screenshots.md b/release-content/0.15/migration-guides/14833_Rewrite_screenshots.md new file mode 100644 index 0000000000..8053ae14bb --- /dev/null +++ b/release-content/0.15/migration-guides/14833_Rewrite_screenshots.md @@ -0,0 +1 @@ +`ScreenshotManager` has been removed. To take a screenshot, spawn a `Screenshot` entity with the specified render target and provide an observer targeting the `ScreenshotCaptured` event. See the `window/screenshot` example to see an example. diff --git a/release-content/0.15/migration-guides/14838_bevy_reflect_Add_Type_type.md b/release-content/0.15/migration-guides/14838_bevy_reflect_Add_Type_type.md new file mode 100644 index 0000000000..f3a6356da4 --- /dev/null +++ b/release-content/0.15/migration-guides/14838_bevy_reflect_Add_Type_type.md @@ -0,0 +1,37 @@ +Certain type info structs now only return their item types as `Type` instead of exposing direct methods on them. + +The following methods have been removed: + +- `ArrayInfo::item_type_path_table` +- `ArrayInfo::item_type_id` +- `ArrayInfo::item_is` +- `ListInfo::item_type_path_table` +- `ListInfo::item_type_id` +- `ListInfo::item_is` +- `SetInfo::value_type_path_table` +- `SetInfo::value_type_id` +- `SetInfo::value_is` +- `MapInfo::key_type_path_table` +- `MapInfo::key_type_id` +- `MapInfo::key_is` +- `MapInfo::value_type_path_table` +- `MapInfo::value_type_id` +- `MapInfo::value_is` + +Instead, access the `Type` directly using one of the new methods: + +- `ArrayInfo::item_ty` +- `ListInfo::item_ty` +- `SetInfo::value_ty` +- `MapInfo::key_ty` +- `MapInfo::value_ty` + +For example: + +```rust +// BEFORE +let type_id = array_info.item_type_id(); + +// AFTER +let type_id = array_info.item_ty().id(); +``` diff --git a/release-content/0.15/migration-guides/14842_Replace_the_wgpu_trace_feature_with_a_field_in_bevy_render.md b/release-content/0.15/migration-guides/14842_Replace_the_wgpu_trace_feature_with_a_field_in_bevy_render.md new file mode 100644 index 0000000000..59a486b7db --- /dev/null +++ b/release-content/0.15/migration-guides/14842_Replace_the_wgpu_trace_feature_with_a_field_in_bevy_render.md @@ -0,0 +1,6 @@ +- The `bevy/wgpu_trace`, `bevy_render/wgpu_trace`, and `bevy_internal/wgpu_trace` features no longer exist. Remove them from your `Cargo.toml`, CI, tooling, and what-not. +- Follow the instructions in the updated `docs/debugging.md` file in the repository, under the WGPU Tracing section. + +Because of the changes made, you can now generate traces to any path, rather than the hardcoded `%WorkspaceRoot%/wgpu_trace` (where `%WorkspaceRoot%` is… the root of your crate’s workspace) folder. + +(If WGPU hasn’t restored tracing functionality…) Do note that WGPU has not yet restored tracing functionality. However, once it does, the above should be sufficient to generate new traces. diff --git a/release-content/0.15/migration-guides/14862_Picking_event_ordering.md b/release-content/0.15/migration-guides/14862_Picking_event_ordering.md new file mode 100644 index 0000000000..7ee85cbe44 --- /dev/null +++ b/release-content/0.15/migration-guides/14862_Picking_event_ordering.md @@ -0,0 +1,12 @@ +For users switching from `bevy_mod_picking` to `bevy_picking`: + +- Instead of adding an `On` component, use `.observe(|trigger: Trigger|)`. You may now apply multiple handlers to the same entity using this command. +- Pointer interaction events now have semi-deterministic ordering which (more or less) aligns with the order of the raw input stream. Consult the docs on `bevy_picking::event::pointer_events` for current information. You may need to adjust your event handling logic accordingly. +- `PointerCancel` has been replaced with `Pointer`, which now has the semantics of an OS touch pointer cancel event. +- `InputMove` and `InputPress` have been merged into `PointerInput`. The use remains exactly the same. +- Picking interaction events are now only accessible through observers, and no `EventReader`. This functionality may be re-implemented later. + +For users of `bevy_winit`: + +- The event `bevy_winit::WinitEvent` has moved to `bevy_window::WindowEvent`. If this was the only thing you depended on `bevy_winit` for, you should switch your dependency to `bevy_window`. +- `bevy_window` now depends on `bevy_input`. The dependencies of `bevy_input` are a subset of the existing dependencies for `bevy_window` so this should be non-breaking. diff --git a/release-content/0.15/migration-guides/14881_Allow_ordering_variable_timesteps_around_fixed_timesteps.md b/release-content/0.15/migration-guides/14881_Allow_ordering_variable_timesteps_around_fixed_timesteps.md new file mode 100644 index 0000000000..6f15fbe169 --- /dev/null +++ b/release-content/0.15/migration-guides/14881_Allow_ordering_variable_timesteps_around_fixed_timesteps.md @@ -0,0 +1,19 @@ +[run_fixed_main_schedule](https://docs.rs/bevy/latest/bevy/time/fn.run_fixed_main_schedule.html) is no longer public. If you used to order against it, use the new dedicated `RunFixedMainLoopSystem` system set instead. You can replace your usage of `run_fixed_main_schedule` one for one by `RunFixedMainLoopSystem::FixedMainLoop`, but it is now more idiomatic to place your systems in either `RunFixedMainLoopSystem::BeforeFixedMainLoop` or `RunFixedMainLoopSystem::AfterFixedMainLoop` + +Old: + +```rust +app.add_systems( + RunFixedMainLoop, + some_system.before(run_fixed_main_schedule) +); +``` + +New: + +```rust +app.add_systems( + RunFixedMainLoop, + some_system.in_set(RunFixedMainLoopSystem::BeforeFixedMainLoop) +); +``` diff --git a/release-content/0.15/migration-guides/14886_Update_Grid_Gizmo_to_use_Color.md b/release-content/0.15/migration-guides/14886_Update_Grid_Gizmo_to_use_Color.md new file mode 100644 index 0000000000..4ac9305216 --- /dev/null +++ b/release-content/0.15/migration-guides/14886_Update_Grid_Gizmo_to_use_Color.md @@ -0,0 +1 @@ +This shouldn’t be adding anything that isn’t already in a migration guide? I assume as it uses `impl Into<...>` in the public interfaces that any users of these APIs shouldn’t have to make any code changes. diff --git a/release-content/0.15/migration-guides/14887_Fix_Gizmos_warnings_and_doc_errors_when_a_subset_of_features.md b/release-content/0.15/migration-guides/14887_Fix_Gizmos_warnings_and_doc_errors_when_a_subset_of_features.md new file mode 100644 index 0000000000..f9a397193b --- /dev/null +++ b/release-content/0.15/migration-guides/14887_Fix_Gizmos_warnings_and_doc_errors_when_a_subset_of_features.md @@ -0,0 +1 @@ +There shouldn’t be any reason to migrate, although if for some reason you use `GizmoMeshConfig` and `bevy_render` but not `bevy_pbr` or `bevy_sprite` (such that it does nothing), then you will get an error that it no longer exists. diff --git a/release-content/0.15/migration-guides/14893_Fix_underflow_panic_in_InitTriInfo.md b/release-content/0.15/migration-guides/14893_Fix_underflow_panic_in_InitTriInfo.md new file mode 100644 index 0000000000..200e2755d3 --- /dev/null +++ b/release-content/0.15/migration-guides/14893_Fix_underflow_panic_in_InitTriInfo.md @@ -0,0 +1 @@ +- No breaking changes introduced. diff --git a/release-content/0.15/migration-guides/14909_Refactor_AsBindGroup_to_use_a_associated_SystemParam.md b/release-content/0.15/migration-guides/14909_Refactor_AsBindGroup_to_use_a_associated_SystemParam.md new file mode 100644 index 0000000000..d906cea462 --- /dev/null +++ b/release-content/0.15/migration-guides/14909_Refactor_AsBindGroup_to_use_a_associated_SystemParam.md @@ -0,0 +1 @@ +`AsBindGroup` now allows the user to specify a `SystemParam` to be used for creating bind groups. diff --git a/release-content/0.15/migration-guides/14910_Rename_Commandsregister_one_shot_system__register_system.md b/release-content/0.15/migration-guides/14910_Rename_Commandsregister_one_shot_system__register_system.md new file mode 100644 index 0000000000..2a6bf3d483 --- /dev/null +++ b/release-content/0.15/migration-guides/14910_Rename_Commandsregister_one_shot_system__register_system.md @@ -0,0 +1 @@ +`Commands::register_one_shot_system` has been renamed to `register_system`. diff --git a/release-content/0.15/migration-guides/14916_Make_TrackedRenderPassset_vertex_buffer_aware_of_slice_size.md b/release-content/0.15/migration-guides/14916_Make_TrackedRenderPassset_vertex_buffer_aware_of_slice_size.md new file mode 100644 index 0000000000..7a7c7cd364 --- /dev/null +++ b/release-content/0.15/migration-guides/14916_Make_TrackedRenderPassset_vertex_buffer_aware_of_slice_size.md @@ -0,0 +1 @@ +- `TrackedRenderPass::set_vertex_buffer` function has been modified to update vertex buffers when the same buffer with the same offset is provided, but its size has changed. Some existing code may rely on the previous behavior, which did not update the vertex buffer in this scenario. diff --git a/release-content/0.15/migration-guides/14926_rename_Drop_to_bevypickingeventsDragDrop_to_unclash_stdops.md b/release-content/0.15/migration-guides/14926_rename_Drop_to_bevypickingeventsDragDrop_to_unclash_stdops.md new file mode 100644 index 0000000000..f4bef64add --- /dev/null +++ b/release-content/0.15/migration-guides/14926_rename_Drop_to_bevypickingeventsDragDrop_to_unclash_stdops.md @@ -0,0 +1,2 @@ +- Rename `Drop` to `DragDrop` + - `bevy::picking::events::Drop` is now `bevy::picking::events::DragDrop` diff --git a/release-content/0.15/migration-guides/14964_Migrate_bevy_transform_to_required_components.md b/release-content/0.15/migration-guides/14964_Migrate_bevy_transform_to_required_components.md new file mode 100644 index 0000000000..c56de8c7df --- /dev/null +++ b/release-content/0.15/migration-guides/14964_Migrate_bevy_transform_to_required_components.md @@ -0,0 +1 @@ +Replace all insertions of `GlobalTransform` and/or `TransformBundle` with `Transform` alone. diff --git a/release-content/0.15/migration-guides/14977_Replace_bevy_utilsCowArc_with_atomicow.md b/release-content/0.15/migration-guides/14977_Replace_bevy_utilsCowArc_with_atomicow.md new file mode 100644 index 0000000000..0607d93be4 --- /dev/null +++ b/release-content/0.15/migration-guides/14977_Replace_bevy_utilsCowArc_with_atomicow.md @@ -0,0 +1 @@ +`bevy_utils::CowArc` has moved to a new crate called [atomicow](https://crates.io/crates/atomicow). diff --git a/release-content/0.15/migration-guides/14989_Return_Results_from_Cameras_worldviewport_conversion_metho.md b/release-content/0.15/migration-guides/14989_Return_Results_from_Cameras_worldviewport_conversion_metho.md new file mode 100644 index 0000000000..0ae7f5dbd2 --- /dev/null +++ b/release-content/0.15/migration-guides/14989_Return_Results_from_Cameras_worldviewport_conversion_metho.md @@ -0,0 +1,8 @@ +The following methods on `Camera` now return a `Result` instead of an `Option` so that they can provide more information about failures: + +- `world_to_viewport` +- `world_to_viewport_with_depth` +- `viewport_to_world` +- `viewport_to_world_2d` + +Call `.ok()` on the `Result` to turn it back into an `Option`, or handle the `Result` directly. diff --git a/release-content/0.15/migration-guides/15013_Implement_animation_masks_allowing_fine_control_of_the_tar.md b/release-content/0.15/migration-guides/15013_Implement_animation_masks_allowing_fine_control_of_the_tar.md new file mode 100644 index 0000000000..e4cb3dcc31 --- /dev/null +++ b/release-content/0.15/migration-guides/15013_Implement_animation_masks_allowing_fine_control_of_the_tar.md @@ -0,0 +1 @@ +- The serialized format of animation graphs has changed with the addition of animation masks. To upgrade animation graph RON files, add `mask` and `mask_groups` fields as appropriate. (They can be safely set to zero.) diff --git a/release-content/0.15/migration-guides/15035_Rename_rendering_components_for_improved_consistency_and_c.md b/release-content/0.15/migration-guides/15035_Rename_rendering_components_for_improved_consistency_and_c.md new file mode 100644 index 0000000000..899c759de1 --- /dev/null +++ b/release-content/0.15/migration-guides/15035_Rename_rendering_components_for_improved_consistency_and_c.md @@ -0,0 +1,13 @@ +Many rendering components have been renamed for improved consistency and clarity. + +- `AutoExposureSettings` → `AutoExposure` +- `BloomSettings` → `Bloom` +- `BloomPrefilterSettings` → `BloomPrefilter` +- `ContrastAdaptiveSharpeningSettings` → `ContrastAdaptiveSharpening` +- `DepthOfFieldSettings` → `DepthOfField` +- `FogSettings` → `DistanceFog` +- `SmaaSettings` → `Smaa` +- `TemporalAntiAliasSettings` → `TemporalAntiAliasing` +- `ScreenSpaceAmbientOcclusionSettings` → `ScreenSpaceAmbientOcclusion` +- `ScreenSpaceReflectionsSettings` → `ScreenSpaceReflections` +- `VolumetricFogSettings` → `VolumetricFog` diff --git a/release-content/0.15/migration-guides/15039_Remove_remnant_EntityHash_and_related_types_from_bevy_util.md b/release-content/0.15/migration-guides/15039_Remove_remnant_EntityHash_and_related_types_from_bevy_util.md new file mode 100644 index 0000000000..c27b6f4bf3 --- /dev/null +++ b/release-content/0.15/migration-guides/15039_Remove_remnant_EntityHash_and_related_types_from_bevy_util.md @@ -0,0 +1 @@ +- Uses of `bevy::utils::{EntityHash, EntityHasher, EntityHashMap, EntityHashSet}` now have to be imported from `bevy::ecs::entity`. diff --git a/release-content/0.15/migration-guides/15073_Split_OrthographicProjectiondefault_into_2d__3d_Adopted.md b/release-content/0.15/migration-guides/15073_Split_OrthographicProjectiondefault_into_2d__3d_Adopted.md new file mode 100644 index 0000000000..2156d379b3 --- /dev/null +++ b/release-content/0.15/migration-guides/15073_Split_OrthographicProjectiondefault_into_2d__3d_Adopted.md @@ -0,0 +1,17 @@ +- In initialization of `OrthographicProjection`, change `..default()` to `..OrthographicProjection::default_2d()` or `..OrthographicProjection::default_3d()` + +Example: + +```diff +--- a/examples/3d/orthographic.rs ++++ b/examples/3d/orthographic.rs +@@ -20,7 +20,7 @@ fn setup( + projection: OrthographicProjection { + scale: 3.0, + scaling_mode: ScalingMode::FixedVertical(2.0), +- ..default() ++ ..OrthographicProjection::default_3d() + } + .into(), + transform: Transform::from_xyz(5.0, 5.0, 5.0).looking_at(Vec3::ZERO, Vec3::Y), +``` diff --git a/release-content/0.15/migration-guides/15075_Remove_OrthographicProjectionscale_adopted.md b/release-content/0.15/migration-guides/15075_Remove_OrthographicProjectionscale_adopted.md new file mode 100644 index 0000000000..530b8f0e06 --- /dev/null +++ b/release-content/0.15/migration-guides/15075_Remove_OrthographicProjectionscale_adopted.md @@ -0,0 +1,13 @@ +Replace all uses of `scale` with `scaling_mode`, keeping in mind that `scale` is (was) a multiplier. For example, replace + +```rust + scale: 2.0, + scaling_mode: ScalingMode::FixedHorizontal(4.0), + +``` + +with + +```rust + scaling_mode: ScalingMode::FixedHorizontal(8.0), +``` diff --git a/release-content/0.15/migration-guides/15089__EntityRefMut_get_components_immutable_variants_only.md b/release-content/0.15/migration-guides/15089__EntityRefMut_get_components_immutable_variants_only.md new file mode 100644 index 0000000000..64d400b468 --- /dev/null +++ b/release-content/0.15/migration-guides/15089__EntityRefMut_get_components_immutable_variants_only.md @@ -0,0 +1 @@ +- Renamed `FilteredEntityRef::components` to `FilteredEntityRef::accessed_components` and `FilteredEntityMut::components` to `FilteredEntityMut::accessed_components`. diff --git a/release-content/0.15/migration-guides/15107_bevy_reflect_Refactor_serde_module.md b/release-content/0.15/migration-guides/15107_bevy_reflect_Refactor_serde_module.md new file mode 100644 index 0000000000..d886420153 --- /dev/null +++ b/release-content/0.15/migration-guides/15107_bevy_reflect_Refactor_serde_module.md @@ -0,0 +1,27 @@ +The fields on `ReflectSerializer` and `TypedReflectSerializer` are now private. To instantiate, the corresponding constructor must be used: + +```rust +// BEFORE +let serializer = ReflectSerializer { + value: &my_value, + registry: &type_registry, +}; + +// AFTER +let serializer = ReflectSerializer::new(&my_value, &type_registry); +``` + +Additionally, the following types are no longer public: + +- `ArraySerializer` +- `EnumSerializer` +- `ListSerializer` +- `MapSerializer` +- `ReflectValueSerializer` (fully removed) +- `StructSerializer` +- `TupleSerializer` +- `TupleStructSerializer` + +As well as the following traits: + +- `DeserializeValue` (fully removed) diff --git a/release-content/0.15/migration-guides/15108_bevy_reflect_Add_DynamicTyped_trait.md b/release-content/0.15/migration-guides/15108_bevy_reflect_Add_DynamicTyped_trait.md new file mode 100644 index 0000000000..e8af46a281 --- /dev/null +++ b/release-content/0.15/migration-guides/15108_bevy_reflect_Add_DynamicTyped_trait.md @@ -0,0 +1 @@ +`Reflect` now has a supertrait of `DynamicTyped`. If you were manually implementing `Reflect` and did not implement `Typed`, you will now need to do so. diff --git a/release-content/0.15/migration-guides/15126_Remove_ReceivedCharacter.md b/release-content/0.15/migration-guides/15126_Remove_ReceivedCharacter.md new file mode 100644 index 0000000000..5b0e07dcdd --- /dev/null +++ b/release-content/0.15/migration-guides/15126_Remove_ReceivedCharacter.md @@ -0,0 +1,32 @@ +`ReceivedCharacter` was deprecated in 0.14 due to `winit` reworking their keyboard system. It has now been fully removed. Switch to using `KeyboardInput` instead. + +```rust +// 0.14 +fn listen_characters(events: EventReader) { + for event in events.read() { + info!("{}", event.char); + } +} + +// 0.15 +fn listen_characters(events: EventReader) { + for event in events.read() { + // Only check for characters when the key is pressed. + if !event.state.is_pressed() { + continue; + } + + // Note that some keys such as `Space` and `Tab` won't be detected as a character. + // Instead, check for them as separate enum variants. + match &event.logical_key { + Key::Character(character) => { + info!("{} pressed.", character); + }, + Key::Space => { + info!("Space pressed."); + }, + _ => {}, + } + } +} +``` diff --git a/release-content/0.15/migration-guides/15151_Removed_Type_Parameters_from_Observer.md b/release-content/0.15/migration-guides/15151_Removed_Type_Parameters_from_Observer.md new file mode 100644 index 0000000000..a6c9d38ef3 --- /dev/null +++ b/release-content/0.15/migration-guides/15151_Removed_Type_Parameters_from_Observer.md @@ -0,0 +1 @@ +If you filtered for observers using `Observer`, instead filter for an `Observer`. diff --git a/release-content/0.15/migration-guides/15163_use_precomputed_border_values.md b/release-content/0.15/migration-guides/15163_use_precomputed_border_values.md new file mode 100644 index 0000000000..c417537c93 --- /dev/null +++ b/release-content/0.15/migration-guides/15163_use_precomputed_border_values.md @@ -0,0 +1,3 @@ +The `logical_rect` and `physical_rect` methods have been removed from `Node`. Use `Rect::from_center_size` with the translation and node size instead. + +The types of the fields border and border_radius of `ExtractedUiNode` have been changed to `BorderRect` and `ResolvedBorderRadius` respectively. diff --git a/release-content/0.15/migration-guides/15174_Use_FromReflect_when_extracting_entities_in_dynamic_scenes.md b/release-content/0.15/migration-guides/15174_Use_FromReflect_when_extracting_entities_in_dynamic_scenes.md new file mode 100644 index 0000000000..848b1ce9c4 --- /dev/null +++ b/release-content/0.15/migration-guides/15174_Use_FromReflect_when_extracting_entities_in_dynamic_scenes.md @@ -0,0 +1,60 @@ +The `DynamicScene` format is changed to use custom serialize impls so old scene files will need updating: + +Old: + +```ron +( + resources: {}, + entities: { + 4294967299: ( + components: { + "bevy_render::camera::projection::OrthographicProjection": ( + near: 0.0, + far: 1000.0, + viewport_origin: ( + x: 0.5, + y: 0.5, + ), + scaling_mode: WindowSize(1.0), + scale: 1.0, + area: ( + min: ( + x: -1.0, + y: -1.0, + ), + max: ( + x: 1.0, + y: 1.0, + ), + ), + ), + }, + ), + }, +) +``` + +New: + +```ron +( + resources: {}, + entities: { + 4294967299: ( + components: { + "bevy_render::camera::projection::OrthographicProjection": ( + near: 0.0, + far: 1000.0, + viewport_origin: (0.5, 0.5), + scaling_mode: WindowSize(1.0), + scale: 1.0, + area: ( + min: (-1.0, -1.0), + max: (1.0, 1.0), + ), + ), + }, + ), + }, +) +``` diff --git a/release-content/0.15/migration-guides/15184_Support_systems_that_take_references_as_input.md b/release-content/0.15/migration-guides/15184_Support_systems_that_take_references_as_input.md new file mode 100644 index 0000000000..7ea3e18b8c --- /dev/null +++ b/release-content/0.15/migration-guides/15184_Support_systems_that_take_references_as_input.md @@ -0,0 +1,7 @@ +- All current explicit usages of the following types must be changed in the way specified: + - `SystemId` to `SystemId, O>` + - `System` to `System>` + - `IntoSystem` to `IntoSystem, O, M>` + - `Condition` to `Condition>` + +- `In>` is no longer a valid input parameter type. Use `Trigger` directly, instead. diff --git a/release-content/0.15/migration-guides/15196_Rename_push_children_to_add_children.md b/release-content/0.15/migration-guides/15196_Rename_push_children_to_add_children.md new file mode 100644 index 0000000000..842a51f84e --- /dev/null +++ b/release-content/0.15/migration-guides/15196_Rename_push_children_to_add_children.md @@ -0,0 +1,7 @@ +> +This section is optional. If there are no breaking changes, you can delete this section. + + +- If this PR is a breaking change (relative to the last release of Bevy), describe how a user might need to migrate their code to support these changes + +rename any use of `push_children()` to the updated `add_children()` diff --git a/release-content/0.15/migration-guides/15210_explicitly_mention_component_in_methods_on_DynamicSceneBuilder.md b/release-content/0.15/migration-guides/15210_explicitly_mention_component_in_methods_on_DynamicSceneBuilder.md new file mode 100644 index 0000000000..11ea831985 --- /dev/null +++ b/release-content/0.15/migration-guides/15210_explicitly_mention_component_in_methods_on_DynamicSceneBuilder.md @@ -0,0 +1,7 @@ +`DynamicSceneBuilder::allow_all` and `deny_all` now set resource accesses, not just components. To return to the previous behavior, use the new `allow_all_components` or `deny_all_components` methods. + +The following methods for `DynamicSceneBuilder` have been renamed: + +- `with_filter` -> `with_component_filter` +- `allow` -> `allow_component` +- `deny` -> `deny_component` diff --git a/release-content/0.15/migration-guides/15234_Rename_Add_to_Queue_for_methods_with_deferred_semantics.md b/release-content/0.15/migration-guides/15234_Rename_Add_to_Queue_for_methods_with_deferred_semantics.md new file mode 100644 index 0000000000..39ab86ab18 --- /dev/null +++ b/release-content/0.15/migration-guides/15234_Rename_Add_to_Queue_for_methods_with_deferred_semantics.md @@ -0,0 +1,2 @@ +- `Commands::add` and `Commands::push` have been replaced with `Commands::queue`. +- `ChildBuilder::add_command` has been renamed to `ChildBuilder::queue_command`. diff --git a/release-content/0.15/migration-guides/15237_AssetServer_LoadState_API_consistency.md b/release-content/0.15/migration-guides/15237_AssetServer_LoadState_API_consistency.md new file mode 100644 index 0000000000..cf873b4c07 --- /dev/null +++ b/release-content/0.15/migration-guides/15237_AssetServer_LoadState_API_consistency.md @@ -0,0 +1 @@ + diff --git a/release-content/0.15/migration-guides/15239_Fix_floating_point_math.md b/release-content/0.15/migration-guides/15239_Fix_floating_point_math.md new file mode 100644 index 0000000000..d938ab4eb3 --- /dev/null +++ b/release-content/0.15/migration-guides/15239_Fix_floating_point_math.md @@ -0,0 +1,2 @@ +- Not a breaking change +- Projects should use bevy math where applicable diff --git a/release-content/0.15/migration-guides/15240_bevy_reflect_Replace_value_terminology_with_opaque.md b/release-content/0.15/migration-guides/15240_bevy_reflect_Replace_value_terminology_with_opaque.md new file mode 100644 index 0000000000..5df601349a --- /dev/null +++ b/release-content/0.15/migration-guides/15240_bevy_reflect_Replace_value_terminology_with_opaque.md @@ -0,0 +1,27 @@ +The reflection concept of “value type” has been replaced with a clearer “opaque type”. The following renames have been made to account for this: + +- `ReflectKind::Value` → `ReflectKind::Opaque` +- `ReflectRef::Value` → `ReflectRef::Opaque` +- `ReflectMut::Value` → `ReflectMut::Opaque` +- `ReflectOwned::Value` → `ReflectOwned::Opaque` +- `TypeInfo::Value` → `TypeInfo::Opaque` +- `ValueInfo` → `OpaqueInfo` +- `impl_reflect_value!` → `impl_reflect_opaque!` +- `impl_from_reflect_value!` → `impl_from_reflect_opaque!` + +Additionally, declaring your own opaque types no longer uses `#[reflect_value]`. This attribute has been replaced by `#[reflect(opaque)]`: + +```rust +// BEFORE +#[derive(Reflect)] +#[reflect_value(Default)] +struct MyOpaqueType(u32); + +// AFTER +#[derive(Reflect)] +#[reflect(opaque)] +#[reflect(Default)] +struct MyOpaqueType(u32); +``` + +Note that the order in which `#[reflect(opaque)]` appears does not matter. diff --git a/release-content/0.15/migration-guides/15263_change_return_type_of_Worldresource_ref_to_Ref.md b/release-content/0.15/migration-guides/15263_change_return_type_of_Worldresource_ref_to_Ref.md new file mode 100644 index 0000000000..bbb7f32c0a --- /dev/null +++ b/release-content/0.15/migration-guides/15263_change_return_type_of_Worldresource_ref_to_Ref.md @@ -0,0 +1,21 @@ +Previously `World::get_resource_ref::` and `World::resource_ref::` would return a `Res` which was inconsistent with the rest of the `World` API (notably `resource_scope`). This has been fixed and the methods now return `Ref`. + +This means it is no longer possible to get `Res` from `World`. If you were relying on this, you should try using `Ref` instead since it has the same functionality. + +__Before__ + +```rust +let my_resource: Res = world.resource_ref(); +function_taking_resource(my_resource); + +fn function_taking_resource(resource: Res) { /* ... */ } +``` + +__After__ + +```rust +let my_resource: Ref = world.resource_ref(); +function_taking_resource(my_resource); + +fn function_taking_resource(resource: Ref) { /* ... */ } +``` diff --git a/release-content/0.15/migration-guides/15279_Allow_bevy_utils_in_no_std_Contexts.md b/release-content/0.15/migration-guides/15279_Allow_bevy_utils_in_no_std_Contexts.md new file mode 100644 index 0000000000..6c0fbb742b --- /dev/null +++ b/release-content/0.15/migration-guides/15279_Allow_bevy_utils_in_no_std_Contexts.md @@ -0,0 +1 @@ +If you were importing `bevy_utils` and setting `default_features` to `false`, but relying on elements which are now gated behind the `std` or `alloc` features, include the relevant feature in your `Cargo.toml`. diff --git a/release-content/0.15/migration-guides/15281_Add_core_and_alloc_over_std_Lints.md b/release-content/0.15/migration-guides/15281_Add_core_and_alloc_over_std_Lints.md new file mode 100644 index 0000000000..a5b0f873a2 --- /dev/null +++ b/release-content/0.15/migration-guides/15281_Add_core_and_alloc_over_std_Lints.md @@ -0,0 +1 @@ +The MSRV is now 1.81. Please update to this version or higher. diff --git a/release-content/0.15/migration-guides/15282_Allow_animation_clips_to_animate_arbitrary_properties.md b/release-content/0.15/migration-guides/15282_Allow_animation_clips_to_animate_arbitrary_properties.md new file mode 100644 index 0000000000..e549ff4bcc --- /dev/null +++ b/release-content/0.15/migration-guides/15282_Allow_animation_clips_to_animate_arbitrary_properties.md @@ -0,0 +1 @@ +- Animation keyframes are now an extensible trait, not an enum. Replace `Keyframes::Translation(...)`, `Keyframes::Scale(...)`, `Keyframes::Rotation(...)`, and `Keyframes::Weights(...)` with `Box::new(TranslationKeyframes(...))`, `Box::new(ScaleKeyframes(...))`, `Box::new(RotationKeyframes(...))`, and `Box::new(MorphWeightsKeyframes(...))` respectively. diff --git a/release-content/0.15/migration-guides/15294_Remove_allocation_in_get_short_name.md b/release-content/0.15/migration-guides/15294_Remove_allocation_in_get_short_name.md new file mode 100644 index 0000000000..6e9448f789 --- /dev/null +++ b/release-content/0.15/migration-guides/15294_Remove_allocation_in_get_short_name.md @@ -0,0 +1,19 @@ +__For `format!`, `dbg!`, `panic!`, etc.__ + +```rust +// Before +panic!("{} is too short!", get_short_name(name)); + +// After +panic!("{} is too short!", ShortName(name)); +``` + +__Need a `String` Value__ + +```rust +// Before +let short: String = get_short_name(name); + +// After +let short: String = ShortName(name).to_string(); +``` diff --git a/release-content/0.15/migration-guides/15340_move_ShortName_to_bevy_reflect.md b/release-content/0.15/migration-guides/15340_move_ShortName_to_bevy_reflect.md new file mode 100644 index 0000000000..7caccc97c3 --- /dev/null +++ b/release-content/0.15/migration-guides/15340_move_ShortName_to_bevy_reflect.md @@ -0,0 +1 @@ +- References to `bevy_utils::ShortName` should instead now be `bevy_reflect::ShortName`. diff --git a/release-content/0.15/migration-guides/15341_Add_UI_GhostNode.md b/release-content/0.15/migration-guides/15341_Add_UI_GhostNode.md new file mode 100644 index 0000000000..9a795a9598 --- /dev/null +++ b/release-content/0.15/migration-guides/15341_Add_UI_GhostNode.md @@ -0,0 +1,3 @@ +Any code that previously relied on `Parent`/`Children` to iterate UI children may now want to use `bevy_ui::UiChildren` to ensure ghost nodes are skipped, and their first descendant Nodes included. + +UI root nodes may now be children of ghost nodes, which means `Without` might not query all root nodes. Use `bevy_ui::UiRootNodes` where needed to iterate root nodes instead. diff --git a/release-content/0.15/migration-guides/15344_Split_TextureAtlasSources_out_of_TextureAtlasLayout_and_ma.md b/release-content/0.15/migration-guides/15344_Split_TextureAtlasSources_out_of_TextureAtlasLayout_and_ma.md new file mode 100644 index 0000000000..839b12fae8 --- /dev/null +++ b/release-content/0.15/migration-guides/15344_Split_TextureAtlasSources_out_of_TextureAtlasLayout_and_ma.md @@ -0,0 +1,40 @@ +`TextureAtlasBuilder` no longer stores a mapping back to the original images in `TextureAtlasLayout`; that functionality has been added to a new struct, `TextureAtlasSources`, instead. This also means that the signature for `TextureAtlasBuilder::finish` has changed, meaning that calls of the form: + +```rust +let (atlas_layout, image) = builder.build()?; +``` + +Will now change to the form: + +```rust +let (atlas_layout, atlas_sources, image) = builder.build()?; +``` + +And instead of performing a reverse-lookup from the layout, like so: + +```rust +let atlas_layout_handle = texture_atlases.add(atlas_layout.clone()); +let index = atlas_layout.get_texture_index(&my_handle); +let handle = TextureAtlas { + layout: atlas_layout_handle, + index, +}; +``` + +You can perform the lookup from the sources instead: + +```rust +let atlas_layout = texture_atlases.add(atlas_layout); +let index = atlas_sources.get_texture_index(&my_handle); +let handle = TextureAtlas { + layout: atlas_layout, + index, +}; +``` + +Additionally, `TextureAtlasSources` also has a convenience method, `handle`, which directly combines the index and an existing `TextureAtlasLayout` handle into a new `TextureAtlas`: + +```rust +let atlas_layout = texture_atlases.add(atlas_layout); +let handle = atlas_sources.handle(atlas_layout, &my_handle); +``` diff --git a/release-content/0.15/migration-guides/15368_Add_the_ability_to_control_font_smoothing.md b/release-content/0.15/migration-guides/15368_Add_the_ability_to_control_font_smoothing.md new file mode 100644 index 0000000000..5c5ee88cb6 --- /dev/null +++ b/release-content/0.15/migration-guides/15368_Add_the_ability_to_control_font_smoothing.md @@ -0,0 +1,7 @@ +- `Text` now contains a `font_smoothing: FontSmoothing` property, make sure to include it or add `..default()` when using the struct directly; +- `FontSizeKey` has been renamed to `FontAtlasKey`, and now also contains the `FontSmoothing` setting; +- The following methods now take an extra `font_smoothing: FontSmoothing` argument: + - `FontAtlas::new()` + - `FontAtlasSet::add_glyph_to_atlas()` + - `FontAtlasSet::get_glyph_atlas_info()` + - `FontAtlasSet::get_outlined_glyph_texture()` diff --git a/release-content/0.15/migration-guides/15372_Use_crate_disqualified.md b/release-content/0.15/migration-guides/15372_Use_crate_disqualified.md new file mode 100644 index 0000000000..d659fa012c --- /dev/null +++ b/release-content/0.15/migration-guides/15372_Use_crate_disqualified.md @@ -0,0 +1 @@ +Replace references to `bevy_utils::ShortName` with `disqualified::ShortName`. diff --git a/release-content/0.15/migration-guides/15385_Bubbling_observers_traversal_should_use_query_data.md b/release-content/0.15/migration-guides/15385_Bubbling_observers_traversal_should_use_query_data.md new file mode 100644 index 0000000000..fb485ba79b --- /dev/null +++ b/release-content/0.15/migration-guides/15385_Bubbling_observers_traversal_should_use_query_data.md @@ -0,0 +1 @@ +Update implementations of `Traversal`. diff --git a/release-content/0.15/migration-guides/15402_bevy_reflect_Update_EulerRot_to_match_glam_029.md b/release-content/0.15/migration-guides/15402_bevy_reflect_Update_EulerRot_to_match_glam_029.md new file mode 100644 index 0000000000..0c5bdc741d --- /dev/null +++ b/release-content/0.15/migration-guides/15402_bevy_reflect_Update_EulerRot_to_match_glam_029.md @@ -0,0 +1 @@ +The reflection implementation for `EulerRot` has been updated to align with `glam` 0.29. Please update any reflection-based usages accordingly. diff --git a/release-content/0.15/migration-guides/15406_Make_drain_take_a_mutable_borrow_instead_of_BoxSelf_for_re.md b/release-content/0.15/migration-guides/15406_Make_drain_take_a_mutable_borrow_instead_of_BoxSelf_for_re.md new file mode 100644 index 0000000000..c031a81ae0 --- /dev/null +++ b/release-content/0.15/migration-guides/15406_Make_drain_take_a_mutable_borrow_instead_of_BoxSelf_for_re.md @@ -0,0 +1 @@ +- `reflect::Map`, `reflect::List`, and `reflect::Set` all now take a `&mut self` instead of a `Box`. Callers of these traits should add `&mut` before their boxes, and implementers of these traits should update to match. diff --git a/release-content/0.15/migration-guides/15410_Follow_up_to_cached_run_system.md b/release-content/0.15/migration-guides/15410_Follow_up_to_cached_run_system.md new file mode 100644 index 0000000000..e465f7bdad --- /dev/null +++ b/release-content/0.15/migration-guides/15410_Follow_up_to_cached_run_system.md @@ -0,0 +1 @@ +- `IntoSystem::pipe` and `IntoSystem::map` now return `IntoPipeSystem` and `IntoAdapterSystem` instead of `PipeSystem` and `AdapterSystem`. Most notably these types don’t implement `System` but rather only `IntoSystem`. diff --git a/release-content/0.15/migration-guides/15422_Change_ReflectMapEntities_to_operate_on_components_before_.md b/release-content/0.15/migration-guides/15422_Change_ReflectMapEntities_to_operate_on_components_before_.md new file mode 100644 index 0000000000..cbd09a103b --- /dev/null +++ b/release-content/0.15/migration-guides/15422_Change_ReflectMapEntities_to_operate_on_components_before_.md @@ -0,0 +1,2 @@ +- Consumers of `ReflectMapEntities` will need to call `map_entities` on values prior to inserting them into the world. +- Implementors of `MapEntities` will need to remove the `mappings` method, which is no longer needed for `ReflectMapEntities` and has been removed from the trait. diff --git a/release-content/0.15/migration-guides/15434_Curvebased_animation.md b/release-content/0.15/migration-guides/15434_Curvebased_animation.md new file mode 100644 index 0000000000..29a7b27ddb --- /dev/null +++ b/release-content/0.15/migration-guides/15434_Curvebased_animation.md @@ -0,0 +1,46 @@ +Most user code that does not directly deal with `AnimationClip` and `VariableCurve` will not need to be changed. On the other hand, `VariableCurve` has been completely overhauled. If you were previously defining animation curves in code using keyframes, you will need to migrate that code to use curve constructors instead. For example, a rotation animation defined using keyframes and added to an animation clip like this: + +```rust +animation_clip.add_curve_to_target( + animation_target_id, + VariableCurve { + keyframe_timestamps: vec![0.0, 1.0, 2.0, 3.0, 4.0], + keyframes: Keyframes::Rotation(vec![ + Quat::IDENTITY, + Quat::from_axis_angle(Vec3::Y, PI / 2.), + Quat::from_axis_angle(Vec3::Y, PI / 2. * 2.), + Quat::from_axis_angle(Vec3::Y, PI / 2. * 3.), + Quat::IDENTITY, + ]), + interpolation: Interpolation::Linear, + }, +); +``` + +would now be added like this: + +```rust +animation_clip.add_curve_to_target( + animation_target_id, + AnimatableKeyframeCurve::new([0.0, 1.0, 2.0, 3.0, 4.0].into_iter().zip([ + Quat::IDENTITY, + Quat::from_axis_angle(Vec3::Y, PI / 2.), + Quat::from_axis_angle(Vec3::Y, PI / 2. * 2.), + Quat::from_axis_angle(Vec3::Y, PI / 2. * 3.), + Quat::IDENTITY, + ])) + .map(RotationCurve) + .expect("Failed to build rotation curve"), +); +``` + +Note that the interface of `AnimationClip::add_curve_to_target` has also changed (as this example shows, if subtly), and now takes its curve input as an `impl AnimationCurve`. If you need to add a `VariableCurve` directly, a new method `add_variable_curve_to_target` accommodates that (and serves as a one-to-one migration in this regard). + +__For reviewers__ + +The diff is pretty big, and the structure of some of the changes might not be super-obvious: + +- `keyframes.rs` became `animation_curves.rs`, and `AnimationCurve` is based heavily on `Keyframes`, with the adaptors also largely following suite. +- The Curve API adaptor structs were moved from `bevy_math::curve::mod` into their own module `adaptors`. There are no functional changes to how these adaptors work; this is just to make room for the specialized reflection implementations since `mod.rs` was getting kind of cramped. +- The new module `gltf_curves` holds the additional curve constructions that are needed by the glTF loader. Note that the loader uses a mix of these and off-the-shelf `bevy_math` curve stuff. +- `animatable.rs` no longer holds logic related to keyframe interpolation, which is now delegated to the existing abstractions in `bevy_math::curve::cores`. diff --git a/release-content/0.15/migration-guides/15435_List_components_for_QueryEntityErrorQueryDoesNotMatch.md b/release-content/0.15/migration-guides/15435_List_components_for_QueryEntityErrorQueryDoesNotMatch.md new file mode 100644 index 0000000000..ee8873fe13 --- /dev/null +++ b/release-content/0.15/migration-guides/15435_List_components_for_QueryEntityErrorQueryDoesNotMatch.md @@ -0,0 +1 @@ +- `QueryEntityError` now has a lifetime. Convert it to a custom error if you need to store it. diff --git a/release-content/0.15/migration-guides/15442_Clip_to_the_UI_nodes_content_box.md b/release-content/0.15/migration-guides/15442_Clip_to_the_UI_nodes_content_box.md new file mode 100644 index 0000000000..071a854482 --- /dev/null +++ b/release-content/0.15/migration-guides/15442_Clip_to_the_UI_nodes_content_box.md @@ -0,0 +1 @@ +Migration guide is on #15561 diff --git a/release-content/0.15/migration-guides/15454_Rename_init_component__friends.md b/release-content/0.15/migration-guides/15454_Rename_init_component__friends.md new file mode 100644 index 0000000000..bb147cfea7 --- /dev/null +++ b/release-content/0.15/migration-guides/15454_Rename_init_component__friends.md @@ -0,0 +1,7 @@ +- `World::init_component` has been renamed to `register_component`. +- `World::init_component_with_descriptor` has been renamed to `register_component_with_descriptor`. +- `World::init_bundle` has been renamed to `register_bundle`. +- `Components::init_component` has been renamed to `register_component`. +- `Components::init_component_with_descriptor` has been renamed to `register_component_with_descriptor`. +- `Components::init_resource` has been renamed to `register_resource`. +- `Components::init_non_send` had been renamed to `register_non_send`. diff --git a/release-content/0.15/migration-guides/15469_Basic_integration_of_cubic_spline_curves_with_the_Curve_AP.md b/release-content/0.15/migration-guides/15469_Basic_integration_of_cubic_spline_curves_with_the_Curve_AP.md new file mode 100644 index 0000000000..a79408d1ea --- /dev/null +++ b/release-content/0.15/migration-guides/15469_Basic_integration_of_cubic_spline_curves_with_the_Curve_AP.md @@ -0,0 +1 @@ +The `RationalCurve::domain` method has been renamed to `RationalCurve::length`. Calling `.domain()` on a `RationalCurve` now returns its entire domain as an `Interval`. diff --git a/release-content/0.15/migration-guides/15474_Migrate_visibility_to_required_components.md b/release-content/0.15/migration-guides/15474_Migrate_visibility_to_required_components.md new file mode 100644 index 0000000000..32f4532f62 --- /dev/null +++ b/release-content/0.15/migration-guides/15474_Migrate_visibility_to_required_components.md @@ -0,0 +1 @@ +Replace all insertions of `VisibilityBundle` with the `Visibility` component. The other components required by it will now be inserted automatically. diff --git a/release-content/0.15/migration-guides/15484_Remove_ReturnUnit_variant.md b/release-content/0.15/migration-guides/15484_Remove_ReturnUnit_variant.md new file mode 100644 index 0000000000..ef4cb31881 --- /dev/null +++ b/release-content/0.15/migration-guides/15484_Remove_ReturnUnit_variant.md @@ -0,0 +1 @@ +- Removed the `Return::Unit` variant; use `Return::unit()` instead. diff --git a/release-content/0.15/migration-guides/15489_Migrate_bevy_sprite_to_required_components.md b/release-content/0.15/migration-guides/15489_Migrate_bevy_sprite_to_required_components.md new file mode 100644 index 0000000000..da16aa3e21 --- /dev/null +++ b/release-content/0.15/migration-guides/15489_Migrate_bevy_sprite_to_required_components.md @@ -0,0 +1,3 @@ +Replace all uses of `SpriteBundle` with `Sprite`. There are several new convenience constructors: `Sprite::from_image`, `Sprite::from_atlas_image`, `Sprite::from_color`. + +WARNING: use of `Handle` and `TextureAtlas` as components on sprite entities will NO LONGER WORK. Use the fields on `Sprite` instead. I would have removed the `Component` impls from `TextureAtlas` and `Handle` except it is still used within ui. We should fix this moving forward with the migration. diff --git a/release-content/0.15/migration-guides/15509_bevy_asset_Improve_NestedLoader_API.md b/release-content/0.15/migration-guides/15509_bevy_asset_Improve_NestedLoader_API.md new file mode 100644 index 0000000000..a1247ffa69 --- /dev/null +++ b/release-content/0.15/migration-guides/15509_bevy_asset_Improve_NestedLoader_API.md @@ -0,0 +1,6 @@ +Code which uses `bevy_asset`’s `LoadContext::loader` / `NestedLoader` will see some naming changes: + +- `untyped` is replaced by `with_unknown_type` +- `with_asset_type` is replaced by `with_static_type` +- `with_asset_type_id` is replaced by `with_dynamic_type` +- `direct` is replaced by `immediate` (the opposite of “immediate” is “deferred”) diff --git a/release-content/0.15/migration-guides/15524_Migrate_meshes_and_materials_to_required_components.md b/release-content/0.15/migration-guides/15524_Migrate_meshes_and_materials_to_required_components.md new file mode 100644 index 0000000000..f56abd9119 --- /dev/null +++ b/release-content/0.15/migration-guides/15524_Migrate_meshes_and_materials_to_required_components.md @@ -0,0 +1,28 @@ +Asset handles for meshes and mesh materials must now be wrapped in the `Mesh2d` and `MeshMaterial2d` or `Mesh3d` and `MeshMaterial3d` components for 2D and 3D respectively. Raw handles as components no longer render meshes. + +Additionally, `MaterialMesh2dBundle`, `MaterialMeshBundle`, and `PbrBundle` have been deprecated. Instead, use the mesh and material components directly. + +Previously: + +```rust +commands.spawn(MaterialMesh2dBundle { + mesh: meshes.add(Circle::new(100.0)).into(), + material: materials.add(Color::srgb(7.5, 0.0, 7.5)), + transform: Transform::from_translation(Vec3::new(-200., 0., 0.)), + ..default() +}); +``` + +Now: + +```rust +commands.spawn(( + Mesh2d(meshes.add(Circle::new(100.0))), + MeshMaterial2d(materials.add(Color::srgb(7.5, 0.0, 7.5))), + Transform::from_translation(Vec3::new(-200., 0., 0.)), +)); +``` + +If the mesh material is missing, a white default material is now used. Previously, nothing was rendered if the material was missing. + +The `WithMesh2d` and `WithMesh3d` query filter type aliases have also been removed. Simply use `With` or `With`. diff --git a/release-content/0.15/migration-guides/15526_System_param_validation_for_observers_system_registry_and_.md b/release-content/0.15/migration-guides/15526_System_param_validation_for_observers_system_registry_and_.md new file mode 100644 index 0000000000..f1f18ee27a --- /dev/null +++ b/release-content/0.15/migration-guides/15526_System_param_validation_for_observers_system_registry_and_.md @@ -0,0 +1 @@ +- `RunSystemOnce::run_system_once` and `RunSystemOnce::run_system_once_with` now return a `Result` instead of just `Out` diff --git a/release-content/0.15/migration-guides/15546_Cleanup_unneeded_lifetimes_in_bevy_asset.md b/release-content/0.15/migration-guides/15546_Cleanup_unneeded_lifetimes_in_bevy_asset.md new file mode 100644 index 0000000000..8702eeacb9 --- /dev/null +++ b/release-content/0.15/migration-guides/15546_Cleanup_unneeded_lifetimes_in_bevy_asset.md @@ -0,0 +1 @@ +The traits `AssetLoader`, `AssetSaver` and `Process` traits from `bevy_asset` now use elided lifetimes. If you implement these then remove the named lifetime. diff --git a/release-content/0.15/migration-guides/15553_15540_Make_Worldflush_commands_private.md b/release-content/0.15/migration-guides/15553_15540_Make_Worldflush_commands_private.md new file mode 100644 index 0000000000..cf873b4c07 --- /dev/null +++ b/release-content/0.15/migration-guides/15553_15540_Make_Worldflush_commands_private.md @@ -0,0 +1 @@ + diff --git a/release-content/0.15/migration-guides/15554_Migrate_lights_to_required_components.md b/release-content/0.15/migration-guides/15554_Migrate_lights_to_required_components.md new file mode 100644 index 0000000000..8431da0889 --- /dev/null +++ b/release-content/0.15/migration-guides/15554_Migrate_lights_to_required_components.md @@ -0,0 +1 @@ +`PointLightBundle`, `SpotLightBundle`, and `DirectionalLightBundle` have been deprecated. Use the `PointLight`, `SpotLight`, and `DirectionalLight` components instead. Adding them will now insert the other components required by them automatically. diff --git a/release-content/0.15/migration-guides/15561_Overflow_clip_margin.md b/release-content/0.15/migration-guides/15561_Overflow_clip_margin.md new file mode 100644 index 0000000000..05d393ecfd --- /dev/null +++ b/release-content/0.15/migration-guides/15561_Overflow_clip_margin.md @@ -0,0 +1,11 @@ +Style has a new field `OverflowClipMargin`. It allows users to set the visible area for clipped content when using overflow-clip, -hidden, or -scroll and expand it with a margin. + +There are three associated constructor functions `content_box`, `padding_box` and `border_box`: + +- `content_box`: elements painted outside of the content box area (the innermost part of the node excluding the padding and border) of the node are clipped. This is the new default behaviour. +- `padding_box`: elements painted outside outside of the padding area of the node are clipped. +- `border_box`: elements painted outside of the bounds of the node are clipped. This matches the behaviour from Bevy 0.14. + +There is also a `with_margin` method that increases the size of the visible area by the given number in logical pixels, negative margin values are clamped to zero. + +`OverflowClipMargin` is ignored unless overflow-clip, -hidden or -scroll is also set on at least one axis of the UI node. diff --git a/release-content/0.15/migration-guides/15566_Fix_Mesh_allocator_bug_and_reduce_Mesh_data_copies_by_two.md b/release-content/0.15/migration-guides/15566_Fix_Mesh_allocator_bug_and_reduce_Mesh_data_copies_by_two.md new file mode 100644 index 0000000000..42f137a4b0 --- /dev/null +++ b/release-content/0.15/migration-guides/15566_Fix_Mesh_allocator_bug_and_reduce_Mesh_data_copies_by_two.md @@ -0,0 +1 @@ +- `Mesh::get_vertex_buffer_data` has been renamed `Mesh::create_packed_vertex_buffer_data` to reflect the fact that it copies data and allocates. diff --git a/release-content/0.15/migration-guides/15568_Migrate_fog_volumes_to_required_components.md b/release-content/0.15/migration-guides/15568_Migrate_fog_volumes_to_required_components.md new file mode 100644 index 0000000000..a8ce507b07 --- /dev/null +++ b/release-content/0.15/migration-guides/15568_Migrate_fog_volumes_to_required_components.md @@ -0,0 +1 @@ +Replace all insertions of `FogVolumeBundle` with the `Visibility` component. The other components required by it will now be inserted automatically. diff --git a/release-content/0.15/migration-guides/15572_Migrate_motion_blur_TAA_SSAO_and_SSR_to_required_component.md b/release-content/0.15/migration-guides/15572_Migrate_motion_blur_TAA_SSAO_and_SSR_to_required_component.md new file mode 100644 index 0000000000..6198edcb24 --- /dev/null +++ b/release-content/0.15/migration-guides/15572_Migrate_motion_blur_TAA_SSAO_and_SSR_to_required_component.md @@ -0,0 +1 @@ +`MotionBlurBundle`, `TemporalAntiAliasBundle`, `ScreenSpaceAmbientOcclusionBundle`, and `ScreenSpaceReflectionsBundle` have been deprecated in favor of the `MotionBlur`, `TemporalAntiAliasing`, `ScreenSpaceAmbientOcclusion`, and `ScreenSpaceReflections` components instead. Inserting them will now also insert the other components required by them automatically. diff --git a/release-content/0.15/migration-guides/15573_Migrate_audio_to_required_components.md b/release-content/0.15/migration-guides/15573_Migrate_audio_to_required_components.md new file mode 100644 index 0000000000..23fdd5c09d --- /dev/null +++ b/release-content/0.15/migration-guides/15573_Migrate_audio_to_required_components.md @@ -0,0 +1,7 @@ +Replace all insertions of `AudioSourceBundle`, `AudioBundle`, and `PitchBundle` with the `AudioPlayer` component. The other components required by it will now be inserted automatically. + +In cases where the generics cannot be inferred, you may need to specify them explicitly. For example: + +```rust +commands.spawn(AudioPlayer::(asset_server.load("sounds/sick_beats.ogg"))); +``` diff --git a/release-content/0.15/migration-guides/15579_Migrate_scenes_to_required_components.md b/release-content/0.15/migration-guides/15579_Migrate_scenes_to_required_components.md new file mode 100644 index 0000000000..10bfe15129 --- /dev/null +++ b/release-content/0.15/migration-guides/15579_Migrate_scenes_to_required_components.md @@ -0,0 +1,26 @@ +Asset handles for scenes and dynamic scenes must now be wrapped in the `SceneRoot` and `DynamicSceneRoot` components. Raw handles as components no longer spawn scenes. + +Additionally, `SceneBundle` and `DynamicSceneBundle` have been deprecated. Instead, use the scene components directly. + +Previously: + +```rust +let model_scene = asset_server.load(GltfAssetLabel::Scene(0).from_asset("model.gltf")); + +commands.spawn(SceneBundle { + scene: model_scene, + transform: Transform::from_xyz(-4.0, 0.0, -3.0), + ..default() +}); +``` + +Now: + +```rust +let model_scene = asset_server.load(GltfAssetLabel::Scene(0).from_asset("model.gltf")); + +commands.spawn(( + SceneRoot(model_scene), + Transform::from_xyz(-4.0, 0.0, -3.0), +)); +``` diff --git a/release-content/0.15/migration-guides/15582_Synchronize_removed_components_with_the_render_world.md b/release-content/0.15/migration-guides/15582_Synchronize_removed_components_with_the_render_world.md new file mode 100644 index 0000000000..4b9270614f --- /dev/null +++ b/release-content/0.15/migration-guides/15582_Synchronize_removed_components_with_the_render_world.md @@ -0,0 +1 @@ +The retained render world notes should be updated to explain this edge case and `SyncComponentPlugin` diff --git a/release-content/0.15/migration-guides/15583_Rename_BreakLineOn_to_LineBreak.md b/release-content/0.15/migration-guides/15583_Rename_BreakLineOn_to_LineBreak.md new file mode 100644 index 0000000000..ba45c65c27 --- /dev/null +++ b/release-content/0.15/migration-guides/15583_Rename_BreakLineOn_to_LineBreak.md @@ -0,0 +1 @@ +`BreakLineOn` was renamed to `LineBreak`, and parameters named `linebreak_behavior` were renamed to `linebreak`. diff --git a/release-content/0.15/migration-guides/15585_move_ANDROID_APP_to_bevy_window.md b/release-content/0.15/migration-guides/15585_move_ANDROID_APP_to_bevy_window.md new file mode 100644 index 0000000000..c80eee104d --- /dev/null +++ b/release-content/0.15/migration-guides/15585_move_ANDROID_APP_to_bevy_window.md @@ -0,0 +1 @@ +If you use the `android_activity` reexport from `bevy::winit::android_activity`, it is now in `bevy::window::android_activity`. Same for the `ANDROID_APP` static diff --git a/release-content/0.15/migration-guides/15586_Featuregate_all_image_formats.md b/release-content/0.15/migration-guides/15586_Featuregate_all_image_formats.md new file mode 100644 index 0000000000..a11b9a8436 --- /dev/null +++ b/release-content/0.15/migration-guides/15586_Featuregate_all_image_formats.md @@ -0,0 +1,14 @@ +Image formats that previously weren’t feature-gated are now feature-gated, meaning they will have to be enabled if you use them: + +- `avif` +- `ff` (Farbfeld) +- `gif` +- `ico` +- `tiff` + +Additionally, the `qoi` feature has been added to support loading QOI format images. + +Previously, these formats appeared in the enum by default, but weren’t actually enabled via the `image` crate, potentially resulting in weird bugs. Now, you should be able to add these features to your projects to support them properly. +--- + +If you were individually configuring the `bevy_render` crate, the feature flags for the general image formats were moved to `bevy_image` instead. For example, `bevy_render/png` no longer exists, and `bevy_image/png` is the new location for this. The texture formats are still available on `bevy_render`, e.g. `bevy_render/ktx2` is needed to fully enable `ktx2` support, and this will automatically enable `bevy_image/ktx2` for loading the textures. diff --git a/release-content/0.15/migration-guides/15589_Impose_a_more_sensible_ordering_for_animation_graph_evalua.md b/release-content/0.15/migration-guides/15589_Impose_a_more_sensible_ordering_for_animation_graph_evalua.md new file mode 100644 index 0000000000..1027a6c626 --- /dev/null +++ b/release-content/0.15/migration-guides/15589_Impose_a_more_sensible_ordering_for_animation_graph_evalua.md @@ -0,0 +1,7 @@ +> +This section is optional. If there are no breaking changes, you can delete this section. + + +- If this PR is a breaking change (relative to the last release of Bevy), describe how a user might need to migrate their code to support these changes +- Simply adding new functionality is not a breaking change. +- Fixing behavior that was definitely a bug, rather than a questionable design choice is not a breaking change. diff --git a/release-content/0.15/migration-guides/15591_Text_rework.md b/release-content/0.15/migration-guides/15591_Text_rework.md new file mode 100644 index 0000000000..1995cf7cdd --- /dev/null +++ b/release-content/0.15/migration-guides/15591_Text_rework.md @@ -0,0 +1,31 @@ +TODO: very breaking + +__Accessing text spans by index__ + +Text sections are now text sections on different entities in a hierarchy, Use the new `TextReader` and `TextWriter` system parameters to access spans by index. + +Before: + +```rust +fn refresh_text(mut query: Query<&mut Text, With>, time: Res