Add Archetype::add, remove, with and without

main
copygirl 1 month ago
parent 6d4921dbbe
commit 9b821f26eb
  1. 28
      src/ecs/archetype.rs

@ -32,6 +32,34 @@ impl Archetype {
pub fn has(&self, component: impl Into<Component>) -> bool { pub fn has(&self, component: impl Into<Component>) -> bool {
self.components.binary_search(&component.into()).is_ok() self.components.binary_search(&component.into()).is_ok()
} }
pub fn add(&mut self, component: impl Into<Component>) {
let component = component.into();
if let Err(index) = self.components.binary_search(&component) {
self.components.insert(index, component)
}
}
pub fn remove(&mut self, component: impl Into<Component>) {
let component = component.into();
if let Ok(index) = self.components.binary_search(&component) {
self.components.remove(index);
}
}
#[inline]
#[must_use]
pub fn with(mut self, component: impl Into<Component>) -> Self {
self.add(component);
self
}
#[inline]
#[must_use]
pub fn without(mut self, component: impl Into<Component>) -> Self {
self.remove(component);
self
}
} }
impl<T> FromIterator<T> for Archetype impl<T> FromIterator<T> for Archetype

Loading…
Cancel
Save