Compare commits

..

2 Commits

Author SHA1 Message Date
andriyDev
c9229c6884
Merge 930033354b into 06403153c3 2024-05-26 02:27:26 +00:00
andriyDev
930033354b Switch to using the SceneInstance component to determine the nearest Gltf. 2024-05-25 19:26:55 -07:00
2 changed files with 9 additions and 24 deletions

View File

@ -14,12 +14,8 @@ license = "MIT OR Apache-2.0"
workspace = true workspace = true
[dependencies] [dependencies]
bevy = { version = "0.13", default-features = false, features = [ bevy = { version = "0.13", default-features = false, features = ["bevy_scene"] }
"bevy_asset",
"bevy_scene",
] }
bevy_gltf_components = { version = "0.5", path = "../bevy_gltf_components" } bevy_gltf_components = { version = "0.5", path = "../bevy_gltf_components" }
bevy_gltf_blueprints = { version = "0.10", path = "../bevy_gltf_blueprints", optional = true }
[dev-dependencies] [dev-dependencies]
bevy = { version = "0.13", default-features = false, features = [ bevy = { version = "0.13", default-features = false, features = [

View File

@ -1,10 +1,9 @@
use bevy::{ use bevy::{
app::{App, Plugin}, app::{App, Plugin},
asset::Handle,
ecs::{ ecs::{
component::Component, component::Component,
entity::Entity, entity::Entity,
query::{Or, With}, query::With,
reflect::ReflectComponent, reflect::ReflectComponent,
schedule::{IntoSystemConfigs, IntoSystemSetConfigs, SystemSet}, schedule::{IntoSystemConfigs, IntoSystemSetConfigs, SystemSet},
system::{Commands, Query, Res, ResMut, Resource, SystemParam}, system::{Commands, Query, Res, ResMut, Resource, SystemParam},
@ -13,15 +12,12 @@ use bevy::{
log::warn, log::warn,
prelude::Update, prelude::Update,
reflect::{Reflect, TypePath}, reflect::{Reflect, TypePath},
scene::Scene, scene::SceneInstance,
utils::HashMap, utils::HashMap,
}; };
use bevy_gltf_components::GltfComponentsSet; use bevy_gltf_components::GltfComponentsSet;
use std::marker::PhantomData; use std::marker::PhantomData;
#[cfg(feature = "bevy_gltf_blueprints")]
use bevy_gltf_blueprints::{BlueprintName, GltfBlueprintsSet};
/// Plugin for keeping the GltfRefMap in sync. /// Plugin for keeping the GltfRefMap in sync.
pub struct GltfRefMapPlugin; pub struct GltfRefMapPlugin;
@ -29,16 +25,12 @@ impl Plugin for GltfRefMapPlugin {
fn build(&self, app: &mut App) { fn build(&self, app: &mut App) {
app.register_type::<GltfRefTarget>() app.register_type::<GltfRefTarget>()
.init_resource::<GltfRefMap>() .init_resource::<GltfRefMap>()
.configure_sets(Update, { .configure_sets(
let set = (GltfRefsSet::CreateRefMap, GltfRefsSet::ResolveRefs) Update,
(GltfRefsSet::CreateRefMap, GltfRefsSet::ResolveRefs)
.chain() .chain()
.after(GltfComponentsSet::Injection); .after(GltfComponentsSet::Injection),
)
#[cfg(feature = "bevy_gltf_blueprints")]
let set = set.after(GltfBlueprintsSet::Spawn);
set
})
.add_systems( .add_systems(
Update, Update,
GltfRefMap::create_ref_map.in_set(GltfRefsSet::CreateRefMap), GltfRefMap::create_ref_map.in_set(GltfRefsSet::CreateRefMap),
@ -164,10 +156,7 @@ impl<T: Component + FromGltfRef> Default for GltfRefPlugin<T> {
/// SystemParam to find the Gltf that an entity belongs to. /// SystemParam to find the Gltf that an entity belongs to.
#[derive(SystemParam)] #[derive(SystemParam)]
pub struct GltfForEntity<'w, 's> { pub struct GltfForEntity<'w, 's> {
#[cfg(not(feature = "bevy_gltf_blueprints"))] gltfs: Query<'w, 's, (), With<SceneInstance>>,
gltfs: Query<'w, 's, (), With<Handle<Scene>>>,
#[cfg(feature = "bevy_gltf_blueprints")]
gltfs: Query<'w, 's, (), Or<(With<Handle<Scene>>, With<BlueprintName>)>>,
hierarchy: Query<'w, 's, &'static Parent>, hierarchy: Query<'w, 's, &'static Parent>,
} }