bevy_transform/
plugins.rs1use crate::{
2 prelude::GlobalTransform,
3 systems::{
4 mark_dirty_trees, propagate_parent_transforms, sync_simple_transforms,
5 StaticTransformOptimizations,
6 },
7};
8use bevy_app::{App, Plugin, PostStartup, PostUpdate, ValidateParentHasComponentPlugin};
9use bevy_ecs::schedule::{IntoScheduleConfigs, SystemSet};
10
11#[derive(Debug, Hash, PartialEq, Eq, Clone, SystemSet)]
13pub enum TransformSystems {
14 Propagate,
16}
17
18#[derive(Default)]
20pub struct TransformPlugin;
21
22impl Plugin for TransformPlugin {
23 fn build(&self, app: &mut App) {
24 app.add_plugins(ValidateParentHasComponentPlugin::<GlobalTransform>::default())
25 .init_resource::<StaticTransformOptimizations>()
26 .add_systems(
28 PostStartup,
29 (
30 mark_dirty_trees,
31 propagate_parent_transforms,
32 sync_simple_transforms,
33 )
34 .chain()
35 .in_set(TransformSystems::Propagate),
36 )
37 .add_systems(
38 PostUpdate,
39 (
40 mark_dirty_trees,
41 propagate_parent_transforms,
42 sync_simple_transforms,
44 )
45 .chain()
46 .in_set(TransformSystems::Propagate),
47 );
48 }
49}