Skip to content

Commit d1af08a

Browse files
committed
Include jojojet feedback
1 parent 3985aaf commit d1af08a

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

crates/bevy_transform/src/systems.rs

+13-8
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use bevy_ecs::{
33
change_detection::Ref,
44
prelude::{Changed, DetectChanges, Entity, Query, With, Without},
55
removal_detection::RemovedComponents,
6-
system::ParamSet,
6+
system::{Local, ParamSet},
77
};
88
use bevy_hierarchy::{Children, Parent};
99

@@ -48,12 +48,14 @@ pub fn propagate_transforms(
4848
mut orphaned: RemovedComponents<Parent>,
4949
transform_query: Query<(Ref<Transform>, &mut GlobalTransform, Option<&Children>), With<Parent>>,
5050
parent_query: Query<(Entity, Ref<Parent>)>,
51+
mut orphaned_entities: Local<Vec<Entity>>,
5152
) {
52-
let mut orphaned = orphaned.iter().collect::<Vec<_>>();
53-
orphaned.sort_unstable();
53+
orphaned_entities.clear();
54+
orphaned_entities.extend(orphaned.iter());
55+
orphaned_entities.sort_unstable();
5456
root_query.par_iter_mut().for_each_mut(
5557
|(entity, children, transform, mut global_transform)| {
56-
let changed = transform.is_changed() || orphaned.binary_search(&entity).is_ok();
58+
let changed = transform.is_changed() || orphaned_entities.binary_search(&entity).is_ok();
5759
if changed {
5860
*global_transform = GlobalTransform::from(*transform);
5961
}
@@ -205,9 +207,10 @@ mod test {
205207
command_queue.apply(&mut world);
206208
schedule.run(&mut world);
207209

208-
assert_ne!(
210+
assert_eq!(
209211
world.get::<GlobalTransform>(parent).unwrap(),
210-
&GlobalTransform::from(Transform::IDENTITY)
212+
&offset_global_transform(4.4 + 3.3),
213+
"The transform systems didn't run, ie: `GlobalTransform` wasn't updated",
211214
);
212215

213216
// Remove parent of `parent`
@@ -219,7 +222,8 @@ mod test {
219222

220223
assert_eq!(
221224
world.get::<GlobalTransform>(parent).unwrap(),
222-
&offset_global_transform(4.4)
225+
&offset_global_transform(4.4),
226+
"The global transform of an orphaned entity wasn't updated properly",
223227
);
224228

225229
// Remove parent of `child`
@@ -231,7 +235,8 @@ mod test {
231235

232236
assert_eq!(
233237
world.get::<GlobalTransform>(child).unwrap(),
234-
&offset_global_transform(5.5)
238+
&offset_global_transform(5.5),
239+
"The global transform of an orphaned entity wasn't updated properly",
235240
);
236241
}
237242

0 commit comments

Comments
 (0)