From 685b6e59be0e4d27543f167929897f73fff24b5e Mon Sep 17 00:00:00 2001 From: Jakob Hellermann Date: Sun, 20 Mar 2022 21:54:11 +0000 Subject: [PATCH] register `Camera{2,3}d` components for reflection (#4269) # Objective When loading a gltf scene with a camera, bevy will panic at ``thread 'main' panicked at 'scene contains the unregistered type `bevy_render::camera::bundle::Camera3d`. consider registering the type using `app.register_type::()`', /home/jakob/dev/rust/contrib/bevy/bevy/crates/bevy_scene/src/scene_spawner.rs:332:35``. ## Solution Register the camera types to fix the panic. --- crates/bevy_render/src/camera/bundle.rs | 11 +++++++---- crates/bevy_render/src/camera/mod.rs | 2 ++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/crates/bevy_render/src/camera/bundle.rs b/crates/bevy_render/src/camera/bundle.rs index f32aad826c..cc185d788c 100644 --- a/crates/bevy_render/src/camera/bundle.rs +++ b/crates/bevy_render/src/camera/bundle.rs @@ -1,18 +1,21 @@ +use super::{CameraProjection, ScalingMode}; use crate::{ camera::{Camera, DepthCalculation, OrthographicProjection, PerspectiveProjection}, primitives::Frustum, view::VisibleEntities, }; +use bevy_ecs::reflect::ReflectComponent; use bevy_ecs::{bundle::Bundle, prelude::Component}; use bevy_math::Vec3; +use bevy_reflect::Reflect; use bevy_transform::components::{GlobalTransform, Transform}; -use super::{CameraProjection, ScalingMode}; - -#[derive(Component, Default)] +#[derive(Component, Default, Reflect)] +#[reflect(Component)] pub struct Camera3d; -#[derive(Component, Default)] +#[derive(Component, Default, Reflect)] +#[reflect(Component)] pub struct Camera2d; /// Component bundle for camera entities with perspective projection diff --git a/crates/bevy_render/src/camera/mod.rs b/crates/bevy_render/src/camera/mod.rs index 7ebdf2c20c..c58835929a 100644 --- a/crates/bevy_render/src/camera/mod.rs +++ b/crates/bevy_render/src/camera/mod.rs @@ -28,6 +28,8 @@ impl Plugin for CameraPlugin { .register_type::() .register_type::() .register_type::() + .register_type::() + .register_type::() .add_system_to_stage( CoreStage::PostUpdate, crate::camera::camera_system::,