Skip to content

Commit 7783393

Browse files
committed
Expose transform propagate systems (#7145)
# Objective - I tried to create a fork of bevy_rapier to track latest bevy main branch. But bevy_rapier depends on bevy internal `propagate_transforms` system (see https://github.com/dimforge/bevy_rapier/blob/master/src/plugin/plugin.rs#L64). - `propagate_transforms` system was changed to private in #4775. I don't know if it's reasonable that making `propagate_transforms` public. I also created an issue to bevy_rapier dimforge/bevy_rapier#307 to see how offical team will solve this issue. ## Solution - make `propagate_transforms` system public.
1 parent aa3dd14 commit 7783393

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

crates/bevy_transform/src/components/global_transform.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ use bevy_reflect::{std_traits::ReflectDefault, FromReflect, Reflect};
2828
/// update the [`Transform`] of an entity in this stage or after, you will notice a 1 frame lag
2929
/// before the [`GlobalTransform`] is updated.
3030
///
31+
/// Third party plugins should use [`transform_propagate_system_set`](crate::transform_propagate_system_set)
32+
/// to control when transforms are propagated from parents to children.
33+
///
3134
/// # Examples
3235
///
3336
/// - [`transform`]

crates/bevy_transform/src/lib.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,13 @@ pub enum TransformSystem {
7979
TransformPropagate,
8080
}
8181

82+
/// Transform propagation system set for third party plugins use
83+
pub fn transform_propagate_system_set() -> SystemSet {
84+
SystemSet::new()
85+
.with_system(systems::sync_simple_transforms)
86+
.with_system(systems::propagate_transforms)
87+
}
88+
8289
/// The base plugin for handling [`Transform`] components
8390
#[derive(Default)]
8491
pub struct TransformPlugin;

crates/bevy_transform/src/systems.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ use bevy_ecs::prelude::{Changed, Entity, Query, With, Without};
33
use bevy_hierarchy::{Children, Parent};
44

55
/// Update [`GlobalTransform`] component of entities that aren't in the hierarchy
6+
///
7+
/// Third party plugins should use [`transform_propagate_system_set`](crate::transform_propagate_system_set)
8+
/// to propagate transforms correctly.
69
pub fn sync_simple_transforms(
710
mut query: Query<
811
(&Transform, &mut GlobalTransform),
@@ -16,6 +19,9 @@ pub fn sync_simple_transforms(
1619

1720
/// Update [`GlobalTransform`] component of entities based on entity hierarchy and
1821
/// [`Transform`] component.
22+
///
23+
/// Third party plugins should use [`transform_propagate_system_set`](crate::transform_propagate_system_set)
24+
/// to propagate transforms correctly.
1925
pub fn propagate_transforms(
2026
mut root_query: Query<
2127
(

0 commit comments

Comments
 (0)