Compare commits

..

No commits in common. '9b821f26eb9d26094d8fc470924f91e2c5b7add8' and '5343355a46beee699cb187e5cc6cd29980963475' have entirely different histories.

  1. 39
      src/ecs/archetype.rs

@ -32,52 +32,13 @@ impl Archetype {
pub fn has(&self, component: impl Into<Component>) -> bool {
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
where
T: Into<Component>,
{
#[inline]
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self {
Self::new(iter)
}
}
impl IntoIterator for Archetype {
type Item = Component;
type IntoIter = std::vec::IntoIter<Self::Item>;
#[inline]
fn into_iter(self) -> Self::IntoIter {
self.components.into_iter()
}
}

Loading…
Cancel
Save