From b6524e90e1ea4be5801e7a52ba6310eeaa613f6b Mon Sep 17 00:00:00 2001 From: Schmarni Date: Tue, 2 Sep 2025 22:47:00 +0200 Subject: [PATCH] fix(spatial): fix model nodes not despawning properly Signed-off-by: Schmarni --- src/nodes/drawable/model.rs | 1 + src/nodes/spatial/mod.rs | 22 ++-------------------- 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/src/nodes/drawable/model.rs b/src/nodes/drawable/model.rs index 7028abc..8c3986a 100644 --- a/src/nodes/drawable/model.rs +++ b/src/nodes/drawable/model.rs @@ -261,6 +261,7 @@ fn gen_model_parts( ); } _ = model.parts.set(parts); + model.spatial.set_entity(model.bevy_scene_entity.get().unwrap().0); } } diff --git a/src/nodes/spatial/mod.rs b/src/nodes/spatial/mod.rs index 6b9b435..ededbbc 100644 --- a/src/nodes/spatial/mod.rs +++ b/src/nodes/spatial/mod.rs @@ -30,8 +30,8 @@ impl Plugin for SpatialNodePlugin { PostUpdate, ( spawn_spatial_nodes, - despawn_unneeded_spatial_nodes, update_spatial_node_parenting, + despawn_unneeded_spatial_nodes, update_spatial_nodes, ) .chain() @@ -72,7 +72,6 @@ fn update_spatial_node_parenting( if parent.map(|v| v.0) == parent_entity { continue; } - info!("changing bevy parent: {:?} to {:?}", parent.map(|v| v.0), parent_entity); match parent_entity { Some(e) => cmds.entity(entity).insert(ChildOf(e)), None => cmds.entity(entity).remove::(), @@ -83,7 +82,6 @@ fn update_spatial_node_parenting( fn despawn_unneeded_spatial_nodes(query: Query<(Entity, &SpatialNode)>, cmds: ParallelCommands) { query.par_iter().for_each(|(entity, spatial_node)| { if spatial_node.0.upgrade().is_none() { - info!("despawn {entity}"); cmds.command_scope(|mut cmds| cmds.entity(entity).despawn()); } }); @@ -93,14 +91,12 @@ fn update_spatial_nodes( mut query: Query<( &mut BevyTransform, &SpatialNode, - Option<&ChildOf>, &mut Visibility, )>, - parent_query: Query<&GlobalTransform>, ) { query .par_iter_mut() - .for_each(|(mut transform, spatial_node, child_of, mut vis)| { + .for_each(|(mut transform, spatial_node, mut vis)| { let _span = debug_span!("updating spatial node").entered(); let Some(spatial) = spatial_node.0.upgrade() else { return; @@ -127,19 +123,6 @@ fn update_spatial_nodes( _ => {} } *transform = BevyTransform::from_matrix(spatial.local_transform()); - // match child_of { - // Some(child_of) => { - // let Ok(parent) = parent_query.get(child_of.0) else { - // warn!("SpatialNode bevy Parent doesn't have global transform"); - // return; - // }; - // *transform = - // BevyTransform::from_matrix(parent.compute_matrix().inverse() * mat4); - // } - // None => { - // *transform = BevyTransform::from_matrix(mat4); - // } - // } }); } @@ -336,7 +319,6 @@ impl Spatial { self.parent.lock().clone() } fn set_parent(self: &Arc, new_parent: &Arc) { - info!("setting parent for {:?}", self.node().map(|v| v.id)); if let Some(parent) = self.get_parent() { parent.children.remove(self); }