cuicui_reflect_query/
predefined.rs

1//! Add `ReflectQueryable` to the app for all pre-existing bevy components.
2
3use bevy::prelude::{App, Plugin};
4
5use crate::ReflectQueryable;
6
7macro_rules! register_reflect_query {
8    ($registry:expr, $( $to_register:ty ),* $(,)?) => {
9        $( $registry.register_type_data::<$to_register, ReflectQueryable>() );*
10    };
11}
12
13/// Add [`ReflectQueryable`] registration for all base bevy components. _All_.
14pub struct QueryablePlugin;
15impl Plugin for QueryablePlugin {
16    fn build(&self, app: &mut App) {
17        add_all_reflect_query(app);
18    }
19}
20
21#[rustfmt::skip]
22#[allow(unused)]
23fn add_all_reflect_query(app: &mut App) {
24    {
25        use bevy::prelude::{Children, GlobalTransform, Name, Parent, Transform, Window};
26        use bevy::window::PrimaryWindow;
27        register_reflect_query![ app,
28            Children,
29            GlobalTransform,
30            Name,
31            Parent,
32            // PrimaryWindow,
33            Transform,
34            Window,
35        ];
36    }
37    #[cfg(feature = "register_core_pipeline")] {
38        use bevy::core_pipeline::{
39            bloom::BloomSettings, core_2d::Camera2d, core_3d::Camera3d, fxaa::Fxaa,
40            prepass::DepthPrepass, prepass::NormalPrepass, tonemapping::DebandDither,
41            tonemapping::Tonemapping,
42        };
43        register_reflect_query![ app,
44            BloomSettings,
45            Camera2d, Camera3d,
46            DebandDither,
47            DepthPrepass,
48            // Fxaa,
49            NormalPrepass,
50            Tonemapping
51        ];
52    }
53    #[cfg(feature = "register_pbr")] {
54        use bevy::pbr::{wireframe::Wireframe, *};
55        register_reflect_query![ app,
56            Cascades, CascadeShadowConfig, CascadesVisibleEntities, ClusterConfig,
57            CubemapVisibleEntities,
58            DirectionalLight, EnvironmentMapLight,
59            // FogSettings,
60            // NotShadowCaster,
61            // NotShadowReceiver,
62            PointLight, SpotLight,
63        ];
64    }
65    #[cfg(feature = "register_sprite")] {
66        // TODO: TextureAtlasSprite
67        use bevy::sprite::{Anchor, Mesh2dHandle, Sprite, TextureAtlasSprite};
68        register_reflect_query![app, Anchor, Mesh2dHandle, Sprite];
69    }
70     #[cfg(feature = "register_render")] {
71        use bevy::render::{
72            camera::CameraRenderGraph,
73            mesh::skinning::SkinnedMesh,
74            prelude::{
75                Camera, ComputedVisibility, OrthographicProjection, PerspectiveProjection,
76                Projection, Visibility,
77            },
78            primitives::{Aabb, CascadesFrusta, CubemapFrusta, Frustum},
79            view::{ColorGrading, RenderLayers, VisibleEntities},
80        };
81        register_reflect_query![ app,
82            Aabb,
83            Camera, CameraRenderGraph,
84            CascadesFrusta,
85            ColorGrading,
86            ComputedVisibility,
87            CubemapFrusta,
88            Frustum,
89            OrthographicProjection, PerspectiveProjection, Projection,
90            RenderLayers,
91            SkinnedMesh,
92            Visibility, VisibleEntities,
93        ];
94    }
95     #[cfg(feature = "register_ui")] {
96        use bevy::ui::{
97            prelude::{Button, CalculatedClip, CalculatedSize, Label, Node, Style, UiImage},
98            BackgroundColor, FocusPolicy, Interaction, RelativeCursorPosition, ZIndex,
99        };
100        register_reflect_query![ app,
101            BackgroundColor,
102            Button,
103            // CalculatedClip,
104            CalculatedSize,
105            FocusPolicy,
106            Interaction,
107            Label,
108            Node,
109            // RelativeCursorPosition,
110            Style,
111            UiImage,
112            // ZIndex
113        ];
114    }
115     #[cfg(feature = "register_text")] {
116        use bevy::text::{Text, Text2dBounds};
117        register_reflect_query![app, /*Text2dBounds,*/ Text];
118    }
119}