Skip to content

Commit 3827316

Browse files
committed
bevy_reflect: Register missing reflected types for bevy_render (#6725)
# Objective Many types in `bevy_render` implemented `Reflect` but were not registered. ## Solution Register all types in `bevy_render` that impl `Reflect`. This also registers additional dependent types (i.e. field types). > Note: Adding these dependent types would not be needed using something like #5781 😉 --- ## Changelog - Register missing `bevy_render` types in the `TypeRegistry`: - `camera::RenderTarget` - `globals::GlobalsUniform` - `texture::Image` - `view::ComputedVisibility` - `view::Visibility` - `view::VisibleEntities` - Register additional dependent types: - `view::ComputedVisibilityFlags` - `Vec<Entity>`
1 parent 8eb8ad5 commit 3827316

File tree

7 files changed

+22
-24
lines changed

7 files changed

+22
-24
lines changed

crates/bevy_render/src/camera/mod.rs

+2-11
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,7 @@ pub use camera::*;
77
pub use camera_driver_node::*;
88
pub use projection::*;
99

10-
use crate::{
11-
primitives::Aabb,
12-
render_graph::RenderGraph,
13-
view::{ComputedVisibility, RenderLayers, Visibility, VisibleEntities},
14-
RenderApp, RenderStage,
15-
};
10+
use crate::{render_graph::RenderGraph, RenderApp, RenderStage};
1611
use bevy_app::{App, Plugin};
1712

1813
#[derive(Default)]
@@ -23,14 +18,10 @@ impl Plugin for CameraPlugin {
2318
app.register_type::<Camera>()
2419
.register_type::<Viewport>()
2520
.register_type::<Option<Viewport>>()
26-
.register_type::<Visibility>()
27-
.register_type::<ComputedVisibility>()
28-
.register_type::<VisibleEntities>()
2921
.register_type::<WindowOrigin>()
3022
.register_type::<ScalingMode>()
31-
.register_type::<Aabb>()
3223
.register_type::<CameraRenderGraph>()
33-
.register_type::<RenderLayers>()
24+
.register_type::<RenderTarget>()
3425
.add_plugin(CameraProjectionPlugin::<Projection>::default())
3526
.add_plugin(CameraProjectionPlugin::<OrthographicProjection>::default())
3627
.add_plugin(CameraProjectionPlugin::<PerspectiveProjection>::default());

crates/bevy_render/src/globals.rs

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ pub struct GlobalsPlugin;
1414

1515
impl Plugin for GlobalsPlugin {
1616
fn build(&self, app: &mut App) {
17+
app.register_type::<GlobalsUniform>();
1718
if let Ok(render_app) = app.get_sub_app_mut(RenderApp) {
1819
render_app
1920
.init_resource::<GlobalsBuffer>()

crates/bevy_render/src/lib.rs

+9-11
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,10 @@ pub mod prelude {
3737

3838
use globals::GlobalsPlugin;
3939
pub use once_cell;
40-
use prelude::ComputedVisibility;
4140

4241
use crate::{
4342
camera::CameraPlugin,
44-
color::Color,
4543
mesh::MeshPlugin,
46-
primitives::{CubemapFrusta, Frustum},
47-
render_graph::RenderGraph,
4844
render_resource::{PipelineCache, Shader, ShaderLoader},
4945
renderer::{render_system, RenderInstance},
5046
view::{ViewPlugin, WindowRenderPlugin},
@@ -137,8 +133,7 @@ impl Plugin for RenderPlugin {
137133
app.add_asset::<Shader>()
138134
.add_debug_asset::<Shader>()
139135
.init_asset_loader::<ShaderLoader>()
140-
.init_debug_asset_loader::<ShaderLoader>()
141-
.register_type::<Color>();
136+
.init_debug_asset_loader::<ShaderLoader>();
142137

143138
if let Some(backends) = options.backends {
144139
let windows = app.world.resource_mut::<bevy_window::Windows>();
@@ -166,9 +161,7 @@ impl Plugin for RenderPlugin {
166161
.insert_resource(queue.clone())
167162
.insert_resource(adapter_info.clone())
168163
.insert_resource(render_adapter.clone())
169-
.init_resource::<ScratchMainWorld>()
170-
.register_type::<Frustum>()
171-
.register_type::<CubemapFrusta>();
164+
.init_resource::<ScratchMainWorld>();
172165

173166
let pipeline_cache = PipelineCache::new(device.clone());
174167
let asset_server = app.world.resource::<AssetServer>().clone();
@@ -203,7 +196,7 @@ impl Plugin for RenderPlugin {
203196
.with_system(render_system.at_end()),
204197
)
205198
.add_stage(RenderStage::Cleanup, SystemStage::parallel())
206-
.init_resource::<RenderGraph>()
199+
.init_resource::<render_graph::RenderGraph>()
207200
.insert_resource(RenderInstance(instance))
208201
.insert_resource(device)
209202
.insert_resource(queue)
@@ -327,12 +320,17 @@ impl Plugin for RenderPlugin {
327320
});
328321
}
329322

330-
app.add_plugin(ValidParentCheckPlugin::<ComputedVisibility>::default())
323+
app.add_plugin(ValidParentCheckPlugin::<view::ComputedVisibility>::default())
331324
.add_plugin(WindowRenderPlugin)
332325
.add_plugin(CameraPlugin)
333326
.add_plugin(ViewPlugin)
334327
.add_plugin(MeshPlugin)
335328
.add_plugin(GlobalsPlugin);
329+
330+
app.register_type::<color::Color>()
331+
.register_type::<primitives::Aabb>()
332+
.register_type::<primitives::CubemapFrusta>()
333+
.register_type::<primitives::Frustum>();
336334
}
337335
}
338336

crates/bevy_render/src/mesh/mod.rs

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ pub use mesh::*;
88
use crate::render_asset::RenderAssetPlugin;
99
use bevy_app::{App, Plugin};
1010
use bevy_asset::AddAsset;
11+
use bevy_ecs::entity::Entity;
1112

1213
/// Adds the [`Mesh`] as an asset and makes sure that they are extracted and prepared for the GPU.
1314
pub struct MeshPlugin;
@@ -17,6 +18,7 @@ impl Plugin for MeshPlugin {
1718
app.add_asset::<Mesh>()
1819
.add_asset::<skinning::SkinnedMeshInverseBindposes>()
1920
.register_type::<skinning::SkinnedMesh>()
21+
.register_type::<Vec<Entity>>()
2022
.add_plugin(RenderAssetPlugin::<Mesh>::default());
2123
}
2224
}

crates/bevy_render/src/texture/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ impl Plugin for ImagePlugin {
8686
app.add_plugin(RenderAssetPlugin::<Image>::with_prepare_asset_label(
8787
PrepareAssetLabel::PreAssetPrepare,
8888
))
89+
.register_type::<Image>()
8990
.add_asset::<Image>()
9091
.register_asset_reflect::<Image>();
9192
app.world

crates/bevy_render/src/view/mod.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,12 @@ pub struct ViewPlugin;
3131

3232
impl Plugin for ViewPlugin {
3333
fn build(&self, app: &mut App) {
34-
app.register_type::<Msaa>()
34+
app.register_type::<ComputedVisibility>()
35+
.register_type::<ComputedVisibilityFlags>()
36+
.register_type::<Msaa>()
37+
.register_type::<RenderLayers>()
38+
.register_type::<Visibility>()
39+
.register_type::<VisibleEntities>()
3540
.init_resource::<Msaa>()
3641
// NOTE: windows.is_changed() handles cases where a window was resized
3742
.add_plugin(ExtractResourcePlugin::<Msaa>::default())

crates/bevy_render/src/view/visibility/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ impl Visibility {
5656

5757
bitflags::bitflags! {
5858
#[derive(Reflect)]
59-
struct ComputedVisibilityFlags: u8 {
59+
pub(super) struct ComputedVisibilityFlags: u8 {
6060
const VISIBLE_IN_VIEW = 1 << 0;
6161
const VISIBLE_IN_HIERARCHY = 1 << 1;
6262
}

0 commit comments

Comments
 (0)