bevy_transform/
plugins.rs1use crate::systems::{mark_dirty_trees, propagate_parent_transforms, sync_simple_transforms};
2use bevy_app::{App, Plugin, PostStartup, PostUpdate};
3use bevy_ecs::schedule::{IntoScheduleConfigs, SystemSet};
4
5#[derive(Debug, Hash, PartialEq, Eq, Clone, SystemSet)]
7pub enum TransformSystem {
8 TransformPropagate,
10}
11
12#[derive(Default)]
14pub struct TransformPlugin;
15
16impl Plugin for TransformPlugin {
17 fn build(&self, app: &mut App) {
18 #[cfg(feature = "bevy_reflect")]
19 app.register_type::<crate::components::Transform>()
20 .register_type::<crate::components::TransformTreeChanged>()
21 .register_type::<crate::components::GlobalTransform>();
22
23 app
24 .add_systems(
26 PostStartup,
27 (
28 mark_dirty_trees,
29 propagate_parent_transforms,
30 sync_simple_transforms,
31 )
32 .chain()
33 .in_set(TransformSystem::TransformPropagate),
34 )
35 .add_systems(
36 PostUpdate,
37 (
38 mark_dirty_trees,
39 propagate_parent_transforms,
40 sync_simple_transforms,
42 )
43 .chain()
44 .in_set(TransformSystem::TransformPropagate),
45 );
46 }
47}