summaryrefslogtreecommitdiff
path: root/ecs/src/component/storage
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2025-04-08 16:28:46 +0200
committerHampusM <hampus@hampusmat.com>2025-04-08 16:28:46 +0200
commite4818dd4f0a57a2c9af8859253f570607f64bb12 (patch)
tree981e6e927b086882ebc2eb9399ee41fe4755d887 /ecs/src/component/storage
parent89036adeeec7de82203c819c77950a7728cfe7f9 (diff)
refactor(ecs): store components as dyn Any
Diffstat (limited to 'ecs/src/component/storage')
-rw-r--r--ecs/src/component/storage/archetype.rs16
1 files changed, 5 insertions, 11 deletions
diff --git a/ecs/src/component/storage/archetype.rs b/ecs/src/component/storage/archetype.rs
index 8d48e13..58facc9 100644
--- a/ecs/src/component/storage/archetype.rs
+++ b/ecs/src/component/storage/archetype.rs
@@ -1,9 +1,10 @@
+use std::any::Any;
use std::hash::{DefaultHasher, Hash, Hasher};
use std::slice::Iter as SliceIter;
use hashbrown::HashMap;
-use crate::component::{Component, Metadata as ComponentMetadata};
+use crate::component::Metadata as ComponentMetadata;
use crate::lock::Lock;
use crate::uid::{Kind as UidKind, Uid};
use crate::util::HashMapExt;
@@ -209,26 +210,19 @@ impl Entity
#[derive(Debug)]
pub struct EntityComponent
{
- name: &'static str,
- component: Lock<Box<dyn Component>>,
+ component: Lock<Box<dyn Any>>,
}
impl EntityComponent
{
- pub fn new(component: Box<dyn Component>, component_name: &'static str) -> Self
+ pub fn new(component: Box<dyn Any>, component_name: &'static str) -> Self
{
Self {
- name: component_name,
component: Lock::new(component, component_name),
}
}
- pub fn name(&self) -> &str
- {
- self.name
- }
-
- pub fn component(&self) -> &Lock<Box<dyn Component>>
+ pub fn component(&self) -> &Lock<Box<dyn Any>>
{
&self.component
}