From 40e90b51b551fdaae291be53d4654cedd156e01d Mon Sep 17 00:00:00 2001 From: ira Date: Fri, 24 Feb 2023 16:59:19 +0000 Subject: [PATCH] Avoid using `SystemTypeSet` for transform systems ambiguity (#7808) Alternative to #7804 Allows other instances of the `sync_simple_transforms` and `propagate_transforms` systems to be added. Co-authored-by: devil-ira --- crates/bevy_transform/src/lib.rs | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) 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), + ); } }