1use 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
13pub 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 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 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 PointLight, SpotLight,
63 ];
64 }
65 #[cfg(feature = "register_sprite")] {
66 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 CalculatedSize,
105 FocusPolicy,
106 Interaction,
107 Label,
108 Node,
109 Style,
111 UiImage,
112 ];
114 }
115 #[cfg(feature = "register_text")] {
116 use bevy::text::{Text, Text2dBounds};
117 register_reflect_query![app, Text];
118 }
119}