From 9faa8b8f530f3640e1a604a4888cc3fa7beafd5f Mon Sep 17 00:00:00 2001 From: HampusM Date: Mon, 7 Apr 2025 19:19:31 +0200 Subject: refactor(ecs): remove TypeName trait --- ecs/src/lib.rs | 54 +++++++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 25 deletions(-) (limited to 'ecs/src/lib.rs') diff --git a/ecs/src/lib.rs b/ecs/src/lib.rs index 32d82bc..2c653ee 100644 --- a/ecs/src/lib.rs +++ b/ecs/src/lib.rs @@ -31,7 +31,6 @@ use crate::relationship::{ChildOf, DependsOn, Relationship}; use crate::sole::Sole; use crate::stats::Stats; use crate::system::{System, SystemComponent}; -use crate::type_name::TypeName; use crate::uid::{Kind as UidKind, Uid}; pub mod actions; @@ -47,7 +46,6 @@ pub mod sole; pub mod stats; pub mod system; pub mod tuple; -pub mod type_name; pub mod uid; pub mod util; @@ -511,9 +509,10 @@ impl World ) { for (component_id, component) in components { - if let Err(err) = component_storage - .add_entity_component(entity_uid, (component_id, component)) - { + if let Err(err) = component_storage.add_entity_component( + entity_uid, + (component_id, component.name(), component), + ) { tracing::error!("Failed to add component to entity: {err}"); } } @@ -588,7 +587,7 @@ pub enum StepResult Stop, } -#[derive(Debug, Default)] +#[derive(Debug)] pub struct WorldData { component_storage: Arc>, @@ -596,6 +595,21 @@ pub struct WorldData action_queue: Arc, } +impl Default for WorldData +{ + fn default() -> Self + { + Self { + component_storage: Arc::new(Lock::new( + ComponentStorage::default(), + type_name::(), + )), + sole_storage: SoleStorage::default(), + action_queue: Arc::new(ActionQueue::default()), + } + } +} + #[derive(Debug)] pub struct EntityComponentRef<'a> { @@ -623,7 +637,7 @@ enum ActiveActionQueue B, } -#[derive(Debug, Default)] +#[derive(Debug)] struct ActionQueue { queue_a: Lock>, @@ -650,11 +664,15 @@ impl ActionQueue } } -impl TypeName for ActionQueue +impl Default for ActionQueue { - fn type_name(&self) -> &'static str + fn default() -> Self { - type_name::() + Self { + queue_a: Lock::new(Vec::new(), type_name::>()), + queue_b: Lock::new(Vec::new(), type_name::>()), + active_queue: RefCell::new(ActiveActionQueue::default()), + } } } @@ -699,7 +717,7 @@ impl SoleStorage self.storage.insert( sole_type_id, ManuallyDrop::new(StoredSole { - sole: Arc::new(Lock::new(Box::new(sole))), + sole: Arc::new(Lock::new(Box::new(sole), type_name::())), drop_last, }), ); @@ -716,18 +734,9 @@ impl Drop for SoleStorage for sole in self.storage.values_mut() { if sole.drop_last { - tracing::trace!( - "Sole {} pushed to dropping last queue", - sole.sole.read_nonblock().unwrap().type_name() - ); - soles_to_drop_last.push(sole); continue; } - tracing::trace!( - "Dropping sole {}", - sole.sole.read_nonblock().unwrap().type_name() - ); unsafe { ManuallyDrop::drop(sole); @@ -735,11 +744,6 @@ impl Drop for SoleStorage } for sole in &mut soles_to_drop_last { - tracing::trace!( - "Dropping sole {} last", - sole.sole.read_nonblock().unwrap().type_name() - ); - unsafe { ManuallyDrop::drop(sole); } -- cgit v1.2.3-18-g5258