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.
This commit is contained in:
parent
2a7000a738
commit
30b29deaa9
@ -3,7 +3,7 @@ use bevy_asset::{
|
|||||||
AssetIoError, AssetLoader, AssetPath, BoxedFuture, Handle, LoadContext, LoadedAsset,
|
AssetIoError, AssetLoader, AssetPath, BoxedFuture, Handle, LoadContext, LoadedAsset,
|
||||||
};
|
};
|
||||||
use bevy_core::Name;
|
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_ecs::{entity::Entity, prelude::FromWorld, world::World};
|
||||||
use bevy_hierarchy::{BuildWorldChildren, WorldChildBuilder};
|
use bevy_hierarchy::{BuildWorldChildren, WorldChildBuilder};
|
||||||
use bevy_log::warn;
|
use bevy_log::warn;
|
||||||
@ -13,21 +13,17 @@ use bevy_pbr::{
|
|||||||
SpotLight, SpotLightBundle, StandardMaterial,
|
SpotLight, SpotLightBundle, StandardMaterial,
|
||||||
};
|
};
|
||||||
use bevy_render::{
|
use bevy_render::{
|
||||||
camera::{
|
camera::{Camera, OrthographicProjection, PerspectiveProjection, Projection, ScalingMode},
|
||||||
Camera, CameraRenderGraph, OrthographicProjection, PerspectiveProjection, Projection,
|
|
||||||
ScalingMode,
|
|
||||||
},
|
|
||||||
color::Color,
|
color::Color,
|
||||||
mesh::{
|
mesh::{
|
||||||
skinning::{SkinnedMesh, SkinnedMeshInverseBindposes},
|
skinning::{SkinnedMesh, SkinnedMeshInverseBindposes},
|
||||||
Indices, Mesh, VertexAttributeValues,
|
Indices, Mesh, VertexAttributeValues,
|
||||||
},
|
},
|
||||||
prelude::SpatialBundle,
|
prelude::SpatialBundle,
|
||||||
primitives::{Aabb, Frustum},
|
primitives::Aabb,
|
||||||
render_resource::{AddressMode, Face, FilterMode, PrimitiveTopology, SamplerDescriptor},
|
render_resource::{AddressMode, Face, FilterMode, PrimitiveTopology, SamplerDescriptor},
|
||||||
renderer::RenderDevice,
|
renderer::RenderDevice,
|
||||||
texture::{CompressedImageFormats, Image, ImageSampler, ImageType, TextureError},
|
texture::{CompressedImageFormats, Image, ImageSampler, ImageType, TextureError},
|
||||||
view::VisibleEntities,
|
|
||||||
};
|
};
|
||||||
use bevy_scene::Scene;
|
use bevy_scene::Scene;
|
||||||
#[cfg(not(target_arch = "wasm32"))]
|
#[cfg(not(target_arch = "wasm32"))]
|
||||||
@ -714,9 +710,8 @@ fn load_node(
|
|||||||
) -> Result<(), GltfError> {
|
) -> Result<(), GltfError> {
|
||||||
let transform = gltf_node.transform();
|
let transform = gltf_node.transform();
|
||||||
let mut gltf_error = None;
|
let mut gltf_error = None;
|
||||||
let mut node = world_builder.spawn(SpatialBundle::from(Transform::from_matrix(
|
let transform = Transform::from_matrix(Mat4::from_cols_array_2d(&transform.matrix()));
|
||||||
Mat4::from_cols_array_2d(&transform.matrix()),
|
let mut node = world_builder.spawn(SpatialBundle::from(transform));
|
||||||
)));
|
|
||||||
|
|
||||||
node.insert(node_name(gltf_node));
|
node.insert(node_name(gltf_node));
|
||||||
|
|
||||||
@ -756,18 +751,15 @@ fn load_node(
|
|||||||
Projection::Perspective(perspective_projection)
|
Projection::Perspective(perspective_projection)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
node.insert(Camera3dBundle {
|
||||||
node.insert((
|
|
||||||
projection,
|
projection,
|
||||||
Camera {
|
transform,
|
||||||
|
camera: Camera {
|
||||||
is_active: !*active_camera_found,
|
is_active: !*active_camera_found,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
VisibleEntities::default(),
|
..Default::default()
|
||||||
Frustum::default(),
|
});
|
||||||
Camera3d::default(),
|
|
||||||
CameraRenderGraph::new(bevy_core_pipeline::core_3d::graph::NAME),
|
|
||||||
));
|
|
||||||
|
|
||||||
*active_camera_found = true;
|
*active_camera_found = true;
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,7 @@ impl Plugin for ViewPlugin {
|
|||||||
.register_type::<RenderLayers>()
|
.register_type::<RenderLayers>()
|
||||||
.register_type::<Visibility>()
|
.register_type::<Visibility>()
|
||||||
.register_type::<VisibleEntities>()
|
.register_type::<VisibleEntities>()
|
||||||
|
.register_type::<ColorGrading>()
|
||||||
.init_resource::<Msaa>()
|
.init_resource::<Msaa>()
|
||||||
// NOTE: windows.is_changed() handles cases where a window was resized
|
// NOTE: windows.is_changed() handles cases where a window was resized
|
||||||
.add_plugin(ExtractResourcePlugin::<Msaa>::default())
|
.add_plugin(ExtractResourcePlugin::<Msaa>::default())
|
||||||
|
Loading…
Reference in New Issue
Block a user