diff --git a/crates/bevy_transform/src/lib.rs b/crates/bevy_transform/src/lib.rs index 34a21276f4..4ebbc43f0c 100644 --- a/crates/bevy_transform/src/lib.rs +++ b/crates/bevy_transform/src/lib.rs @@ -90,6 +90,11 @@ pub struct TransformPlugin; impl Plugin for TransformPlugin { fn build(&self, app: &mut App) { + // A set for `propagate_transforms` to mark it as ambiguous with `sync_simple_transforms`. + // Used instead of the `SystemTypeSet` as that would not allow multiple instances of the system. + #[derive(Debug, Hash, PartialEq, Eq, Clone, SystemSet)] + struct PropagateTransformsSet; + app.register_type::() .register_type::() .add_plugin(ValidParentCheckPlugin::::default()) @@ -106,14 +111,22 @@ impl Plugin for TransformPlugin { .add_startup_system( sync_simple_transforms .in_set(TransformSystem::TransformPropagate) - .ambiguous_with(propagate_transforms), + .ambiguous_with(PropagateTransformsSet), + ) + .add_startup_system( + propagate_transforms + .in_set(TransformSystem::TransformPropagate) + .in_set(PropagateTransformsSet), ) - .add_startup_system(propagate_transforms.in_set(TransformSystem::TransformPropagate)) .add_system( sync_simple_transforms .in_set(TransformSystem::TransformPropagate) - .ambiguous_with(propagate_transforms), + .ambiguous_with(PropagateTransformsSet), ) - .add_system(propagate_transforms.in_set(TransformSystem::TransformPropagate)); + .add_system( + propagate_transforms + .in_set(TransformSystem::TransformPropagate) + .in_set(PropagateTransformsSet), + ); } }