diff --git a/crates/bevy_ecs/src/reflect/component.rs b/crates/bevy_ecs/src/reflect/component.rs index d1b99ca2ed..b3422208d1 100644 --- a/crates/bevy_ecs/src/reflect/component.rs +++ b/crates/bevy_ecs/src/reflect/component.rs @@ -293,24 +293,15 @@ impl FromType for ReflectComponent { }, reflect: |entity| entity.get::().map(|c| c as &dyn Reflect), reflect_mut: |entity| { - entity.into_mut::().map(|c| Mut { - value: c.value as &mut dyn Reflect, - ticks: c.ticks, - #[cfg(feature = "track_change_detection")] - changed_by: c.changed_by, - }) + entity + .into_mut::() + .map(|c| c.map_unchanged(|value| value as &mut dyn Reflect)) }, reflect_unchecked_mut: |entity| { // SAFETY: reflect_unchecked_mut is an unsafe function pointer used by // `reflect_unchecked_mut` which must be called with an UnsafeEntityCell with access to the component `C` on the `entity` - unsafe { - entity.get_mut::().map(|c| Mut { - value: c.value as &mut dyn Reflect, - ticks: c.ticks, - #[cfg(feature = "track_change_detection")] - changed_by: c.changed_by, - }) - } + let c = unsafe { entity.get_mut::() }; + c.map(|c| c.map_unchanged(|value| value as &mut dyn Reflect)) }, }) } diff --git a/crates/bevy_ecs/src/reflect/resource.rs b/crates/bevy_ecs/src/reflect/resource.rs index 9a14cb88c7..e55ffb964a 100644 --- a/crates/bevy_ecs/src/reflect/resource.rs +++ b/crates/bevy_ecs/src/reflect/resource.rs @@ -208,14 +208,8 @@ impl FromType for ReflectResource { reflect_unchecked_mut: |world| { // SAFETY: all usages of `reflect_unchecked_mut` guarantee that there is either a single mutable // reference or multiple immutable ones alive at any given point - unsafe { - world.get_resource_mut::().map(|res| Mut { - value: res.value as &mut dyn Reflect, - ticks: res.ticks, - #[cfg(feature = "track_change_detection")] - changed_by: res.changed_by, - }) - } + let res = unsafe { world.get_resource_mut::() }; + res.map(|res| res.map_unchanged(|value| value as &mut dyn Reflect)) }, copy: |source_world, destination_world, registry| { let source_resource = source_world.resource::();