From 41f56d3b4ff02519b3bae0535b23831332ba8dcd Mon Sep 17 00:00:00 2001 From: Edgar Geier Date: Sat, 4 Mar 2023 12:05:27 +0000 Subject: [PATCH] Change the glTF loader to use `Camera3dBundle` (#7890) # Objective - Fixes #7889. ## Solution - Change the glTF loader to insert a `Camera3dBundle` instead of a manually constructed bundle. This might prevent future issues when new components are required for a 3D Camera to work correctly. - Register the `ColorGrading` type because `bevy_scene` was complaining about it. --- crates/bevy_gltf/src/loader.rs | 28 ++++++++++------------------ crates/bevy_render/src/view/mod.rs | 1 + 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/crates/bevy_gltf/src/loader.rs b/crates/bevy_gltf/src/loader.rs index 616f26451e35c2..cc55af11c4132e 100644 --- a/crates/bevy_gltf/src/loader.rs +++ b/crates/bevy_gltf/src/loader.rs @@ -3,7 +3,7 @@ use bevy_asset::{ AssetIoError, AssetLoader, AssetPath, BoxedFuture, Handle, LoadContext, LoadedAsset, }; use bevy_core::Name; -use bevy_core_pipeline::prelude::Camera3d; +use bevy_core_pipeline::prelude::Camera3dBundle; use bevy_ecs::{entity::Entity, prelude::FromWorld, world::World}; use bevy_hierarchy::{BuildWorldChildren, WorldChildBuilder}; use bevy_log::warn; @@ -13,21 +13,17 @@ use bevy_pbr::{ SpotLight, SpotLightBundle, StandardMaterial, }; use bevy_render::{ - camera::{ - Camera, CameraRenderGraph, OrthographicProjection, PerspectiveProjection, Projection, - ScalingMode, - }, + camera::{Camera, OrthographicProjection, PerspectiveProjection, Projection, ScalingMode}, color::Color, mesh::{ skinning::{SkinnedMesh, SkinnedMeshInverseBindposes}, Indices, Mesh, VertexAttributeValues, }, prelude::SpatialBundle, - primitives::{Aabb, Frustum}, + primitives::Aabb, render_resource::{AddressMode, Face, FilterMode, PrimitiveTopology, SamplerDescriptor}, renderer::RenderDevice, texture::{CompressedImageFormats, Image, ImageSampler, ImageType, TextureError}, - view::VisibleEntities, }; use bevy_scene::Scene; #[cfg(not(target_arch = "wasm32"))] @@ -714,9 +710,8 @@ fn load_node( ) -> Result<(), GltfError> { let transform = gltf_node.transform(); let mut gltf_error = None; - let mut node = world_builder.spawn(SpatialBundle::from(Transform::from_matrix( - Mat4::from_cols_array_2d(&transform.matrix()), - ))); + let transform = Transform::from_matrix(Mat4::from_cols_array_2d(&transform.matrix())); + let mut node = world_builder.spawn(SpatialBundle::from(transform)); node.insert(node_name(gltf_node)); @@ -756,18 +751,15 @@ fn load_node( Projection::Perspective(perspective_projection) } }; - - node.insert(( + node.insert(Camera3dBundle { projection, - Camera { + transform, + camera: Camera { is_active: !*active_camera_found, ..Default::default() }, - VisibleEntities::default(), - Frustum::default(), - Camera3d::default(), - CameraRenderGraph::new(bevy_core_pipeline::core_3d::graph::NAME), - )); + ..Default::default() + }); *active_camera_found = true; } diff --git a/crates/bevy_render/src/view/mod.rs b/crates/bevy_render/src/view/mod.rs index 008c8aae3a8549..2a15363fdaf317 100644 --- a/crates/bevy_render/src/view/mod.rs +++ b/crates/bevy_render/src/view/mod.rs @@ -46,6 +46,7 @@ impl Plugin for ViewPlugin { .register_type::() .register_type::() .register_type::() + .register_type::() .init_resource::() // NOTE: windows.is_changed() handles cases where a window was resized .add_plugin(ExtractResourcePlugin::::default())