bevy/crates
Jakub Łabor caa662272c
bevy_ecs: add untyped methods for inserting components and bundles (#7204)
This MR is a rebased and alternative proposal to
https://github.com/bevyengine/bevy/pull/5602

# Objective

- https://github.com/bevyengine/bevy/pull/4447 implemented untyped
(using component ids instead of generics and TypeId) APIs for
inserting/accessing resources and accessing components, but left
inserting components for another PR (this one)

## Solution

- add `EntityMut::insert_by_id`

- split `Bundle` into `DynamicBundle` with `get_components` and `Bundle:
DynamicBundle`. This allows the `BundleInserter` machinery to be reused
for bundles that can only be written, not read, and have no statically
available `ComponentIds`

- Compared to the original MR this approach exposes unsafe endpoints and
requires the user to manage instantiated `BundleIds`. This is quite easy
for the end user to do and does not incur the performance penalty of
checking whether component input is correctly provided for the
`BundleId`.

- This MR does ensure that constructing `BundleId` itself is safe

---

## Changelog

- add methods for inserting bundles and components to:
`world.entity_mut(entity).insert_by_id`
2023-03-21 00:33:11 +00:00
..
bevy_a11y chore: Release (#7920) 2023-03-06 05:13:36 +00:00
bevy_animation Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
bevy_app Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
bevy_asset Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
bevy_audio Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
bevy_core Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
bevy_core_pipeline Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
bevy_derive chore: Release (#7920) 2023-03-06 05:13:36 +00:00
bevy_diagnostic Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
bevy_dylib chore: Release (#7920) 2023-03-06 05:13:36 +00:00
bevy_dynamic_plugin chore: Release (#7920) 2023-03-06 05:13:36 +00:00
bevy_ecs bevy_ecs: add untyped methods for inserting components and bundles (#7204) 2023-03-21 00:33:11 +00:00
bevy_ecs_compile_fail_tests Update trybuild tests for Rust 1.68 (#8002) 2023-03-09 15:46:06 +00:00
bevy_encase_derive chore: Release (#7920) 2023-03-06 05:13:36 +00:00
bevy_gilrs Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
bevy_gizmos Immediate Mode Line/Gizmo Drawing (#6529) 2023-03-20 20:57:54 +00:00
bevy_gltf chore: Release (#7920) 2023-03-06 05:13:36 +00:00
bevy_hierarchy Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
bevy_input Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
bevy_internal Immediate Mode Line/Gizmo Drawing (#6529) 2023-03-20 20:57:54 +00:00
bevy_log chore: Release (#7920) 2023-03-06 05:13:36 +00:00
bevy_macro_utils chore: Release (#7920) 2023-03-06 05:13:36 +00:00
bevy_math chore: Release (#7920) 2023-03-06 05:13:36 +00:00
bevy_mikktspace chore: Release (#7920) 2023-03-06 05:13:36 +00:00
bevy_pbr Left-handed y-up cubemap coordinates (#8122) 2023-03-18 23:06:53 +00:00
bevy_ptr chore: Release (#7920) 2023-03-06 05:13:36 +00:00
bevy_reflect Fix typo in utility.rs (#7997) 2023-03-09 09:20:45 +00:00
bevy_reflect_compile_fail_tests Update trybuild tests for Rust 1.68 (#8002) 2023-03-09 15:46:06 +00:00
bevy_render Allow SPIR-V shaders to process when shader defs are present (#7772) 2023-03-19 09:26:26 +00:00
bevy_scene (De) serialize resources in scenes (#6846) 2023-03-20 21:17:02 +00:00
bevy_sprite Derive Copy and Clone for Collision (#8121) 2023-03-18 04:55:31 +00:00
bevy_tasks chore: Release (#7920) 2023-03-06 05:13:36 +00:00
bevy_text Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
bevy_time Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
bevy_transform Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
bevy_ui Improve the 'Val` doc comments (#8134) 2023-03-20 22:51:24 +00:00
bevy_utils chore: Release (#7920) 2023-03-06 05:13:36 +00:00
bevy_window Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00
bevy_winit Schedule-First: the new and improved add_systems (#8079) 2023-03-18 01:45:34 +00:00