diff --git a/crates/bevy_gltf/src/assets.rs b/crates/bevy_gltf/src/assets.rs index 382275d0f7de5..e8a7788168009 100644 --- a/crates/bevy_gltf/src/assets.rs +++ b/crates/bevy_gltf/src/assets.rs @@ -269,6 +269,14 @@ pub struct GltfExtras { pub value: String, } +impl From<&serde_json::value::RawValue> for GltfExtras { + fn from(value: &serde_json::value::RawValue) -> Self { + GltfExtras { + value: value.get().to_string(), + } + } +} + /// Additional untyped data that can be present on most glTF types at the scene level. /// /// See [the relevant glTF specification section](https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#reference-extras). diff --git a/crates/bevy_gltf/src/loader/gltf_ext/extras.rs b/crates/bevy_gltf/src/loader/gltf_ext/extras.rs deleted file mode 100644 index 6d5f5be34dc15..0000000000000 --- a/crates/bevy_gltf/src/loader/gltf_ext/extras.rs +++ /dev/null @@ -1,9 +0,0 @@ -use gltf::json::Extras; - -use crate::GltfExtras; - -pub(crate) fn as_gltf_extras(extras: &Extras) -> Option { - extras.as_ref().map(|extras| GltfExtras { - value: extras.get().to_string(), - }) -} diff --git a/crates/bevy_gltf/src/loader/gltf_ext/mod.rs b/crates/bevy_gltf/src/loader/gltf_ext/mod.rs index a280fc4985129..558ed645dd9f2 100644 --- a/crates/bevy_gltf/src/loader/gltf_ext/mod.rs +++ b/crates/bevy_gltf/src/loader/gltf_ext/mod.rs @@ -1,6 +1,5 @@ //! Methods to access information from [`gltf`] types -pub mod extras; pub mod material; pub mod mesh; pub mod scene; diff --git a/crates/bevy_gltf/src/loader/mod.rs b/crates/bevy_gltf/src/loader/mod.rs index 2dd91dbc41ec6..9d400e44bc0cb 100644 --- a/crates/bevy_gltf/src/loader/mod.rs +++ b/crates/bevy_gltf/src/loader/mod.rs @@ -69,9 +69,7 @@ use crate::{ use self::{ extensions::{AnisotropyExtension, ClearcoatExtension, SpecularExtension}, gltf_ext::{ - check_for_cycles, - extras::as_gltf_extras, - get_linear_textures, + check_for_cycles, get_linear_textures, material::{ alpha_mode, material_label, needs_tangents, uv_channel, warn_on_differing_texture_transforms, @@ -710,12 +708,20 @@ async fn load_gltf<'a, 'b, 'c>( .material() .index() .and_then(|i| materials.get(i).cloned()), - as_gltf_extras(primitive.extras()), - as_gltf_extras(primitive.material().extras()), + primitive.extras().as_deref().map(GltfExtras::from), + primitive + .material() + .extras() + .as_deref() + .map(GltfExtras::from), )); } - let mesh = super::GltfMesh::new(&gltf_mesh, primitives, as_gltf_extras(gltf_mesh.extras())); + let mesh = super::GltfMesh::new( + &gltf_mesh, + primitives, + gltf_mesh.extras().as_deref().map(GltfExtras::from), + ); let handle = load_context .add_labeled_asset(mesh.asset_label().to_string(), mesh) @@ -786,7 +792,7 @@ async fn load_gltf<'a, 'b, 'c>( &skin, joints, skinned_mesh_inverse_bindposes[skin.index()].clone(), - as_gltf_extras(skin.extras()), + skin.extras().as_deref().map(GltfExtras::from), ); let handle = load_context @@ -818,7 +824,7 @@ async fn load_gltf<'a, 'b, 'c>( mesh, node_transform(&node), skin, - as_gltf_extras(node.extras()), + node.extras().as_deref().map(GltfExtras::from), ); #[cfg(feature = "bevy_animation")]