summaryrefslogtreecommitdiff
path: root/ecs/src/component.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ecs/src/component.rs')
-rw-r--r--ecs/src/component.rs23
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
+ );
+ })
+}