diff options
Diffstat (limited to 'ecs/src/component.rs')
-rw-r--r-- | ecs/src/component.rs | 23 |
1 files changed, 16 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::<Comp~I::Component>() { - 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<dyn Component>> +{ + entity_component + .component + .write_nonblock() + .unwrap_or_else(|_| { + panic!( + "Failed to acquire read-write lock to component {}", + entity_component.name + ); + }) +} |