From fbb7e1db8c0716a01ee6355269b169eb2ea5ecf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Mockers?= Date: Thu, 13 May 2021 01:26:36 +0200 Subject: [PATCH] expose extras from gltf nodes --- crates/bevy_gltf/Cargo.toml | 2 +- crates/bevy_gltf/src/lib.rs | 10 +++++++++- crates/bevy_gltf/src/loader.rs | 6 ++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/crates/bevy_gltf/Cargo.toml b/crates/bevy_gltf/Cargo.toml index 1fa7db10f97bfc..c0f9099c057528 100644 --- a/crates/bevy_gltf/Cargo.toml +++ b/crates/bevy_gltf/Cargo.toml @@ -27,7 +27,7 @@ bevy_scene = { path = "../bevy_scene", version = "0.5.0" } bevy_log = { path = "../bevy_log", version = "0.5.0" } # other -gltf = { version = "0.16.0", default-features = false, features = ["utils", "names", "KHR_materials_unlit"] } +gltf = { version = "0.16.0", default-features = false, features = ["utils", "names", "KHR_materials_unlit", "extras"] } thiserror = "1.0" anyhow = "1.0" base64 = "0.13.0" diff --git a/crates/bevy_gltf/src/lib.rs b/crates/bevy_gltf/src/lib.rs index 591d6c07013561..5f9eb6ac3ffa30 100644 --- a/crates/bevy_gltf/src/lib.rs +++ b/crates/bevy_gltf/src/lib.rs @@ -5,8 +5,9 @@ pub use loader::*; use bevy_app::prelude::*; use bevy_asset::{AddAsset, Handle}; +use bevy_ecs::reflect::ReflectComponent; use bevy_pbr::prelude::StandardMaterial; -use bevy_reflect::TypeUuid; +use bevy_reflect::{Reflect, TypeUuid}; use bevy_render::mesh::Mesh; use bevy_scene::Scene; @@ -17,6 +18,7 @@ pub struct GltfPlugin; impl Plugin for GltfPlugin { fn build(&self, app: &mut AppBuilder) { app.init_asset_loader::() + .register_type::() .add_asset::() .add_asset::() .add_asset::() @@ -58,3 +60,9 @@ pub struct GltfPrimitive { pub mesh: Handle, pub material: Option>, } + +#[derive(Debug, Reflect, Default)] +#[reflect(Component)] +pub struct GltfExtras { + pub value: String, +} diff --git a/crates/bevy_gltf/src/loader.rs b/crates/bevy_gltf/src/loader.rs index 75e76077a58502..d43a6ded673570 100644 --- a/crates/bevy_gltf/src/loader.rs +++ b/crates/bevy_gltf/src/loader.rs @@ -453,6 +453,12 @@ fn load_node( node.insert(Name::new(name.to_string())); } + if let Some(extras) = gltf_node.extras() { + node.insert(super::GltfExtras { + value: extras.get().to_string(), + }); + } + // create camera node if let Some(camera) = gltf_node.camera() { node.insert(VisibleEntities {