From 8af5413b0fd2b06f71098c1230f79b3e6beb037d Mon Sep 17 00:00:00 2001 From: HampusM Date: Fri, 24 May 2024 19:15:23 +0200 Subject: feat(ecs): add component name to component locking panic message --- ecs/src/component.rs | 23 ++++++++++++++++------- ecs/src/lib.rs | 3 +++ 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/ecs/src/component.rs b/ecs/src/component.rs index 9310995..3399183 100644 --- a/ecs/src/component.rs +++ b/ecs/src/component.rs @@ -191,13 +191,7 @@ macro_rules! inner { for comp in components { #( if comp.id == TypeId::of::() { - let comp_ref = comp.component - .write_nonblock() - .expect( - "Failed to acquire read-write component lock" - ); - - comp_~I = Some(comp_ref); + comp_~I = Some(lock_component(comp)); continue; } )* @@ -215,3 +209,18 @@ macro_rules! inner { seq!(C in 0..=64 { inner!(C); }); + +fn lock_component( + entity_component: &EntityComponent, +) -> WriteGuard<'_, Box> +{ + entity_component + .component + .write_nonblock() + .unwrap_or_else(|_| { + panic!( + "Failed to acquire read-write lock to component {}", + entity_component.name + ); + }) +} diff --git a/ecs/src/lib.rs b/ecs/src/lib.rs index fbcc451..0bc7aa6 100644 --- a/ecs/src/lib.rs +++ b/ecs/src/lib.rs @@ -48,6 +48,7 @@ struct Entity pub struct EntityComponent { pub id: TypeId, + pub name: &'static str, pub component: Lock>, pub drop_last: bool, } @@ -90,6 +91,7 @@ impl World ManuallyDrop::new(EntityComponent { id: (*component).type_id(), + name: component.type_name(), component: Lock::new(component), drop_last, }) @@ -187,6 +189,7 @@ impl World ManuallyDrop::new(EntityComponent { id: (*component).type_id(), + name: component.type_name(), component: Lock::new(component), drop_last, }) -- cgit v1.2.3-18-g5258