From c06d59ffa09e22a98647f5104944e1c13b161963 Mon Sep 17 00:00:00 2001 From: HampusM Date: Wed, 5 Feb 2025 15:57:15 +0100 Subject: refactor(ecs): replace component::IsOptional enum with bool --- ecs/src/archetype.rs | 7 ++----- ecs/src/component.rs | 41 ++++++++++------------------------------- ecs/src/component/storage.rs | 18 +++++------------- ecs/src/lib.rs | 6 +----- 4 files changed, 18 insertions(+), 54 deletions(-) (limited to 'ecs/src') diff --git a/ecs/src/archetype.rs b/ecs/src/archetype.rs index 354d206..846e231 100644 --- a/ecs/src/archetype.rs +++ b/ecs/src/archetype.rs @@ -1,9 +1,6 @@ use std::hash::{DefaultHasher, Hash, Hasher}; -use crate::component::{ - IsOptional as ComponentIsOptional, - Metadata as ComponentMetadata, -}; +use crate::component::Metadata as ComponentMetadata; /// Archetype ID. #[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, PartialOrd, Ord)] @@ -34,7 +31,7 @@ impl Id .as_ref() .iter() .filter_map(|component_metadata| { - if component_metadata.is_optional == ComponentIsOptional::Yes { + if component_metadata.is_optional { return None; } diff --git a/ecs/src/component.rs b/ecs/src/component.rs index b0423c5..f5aa0d1 100644 --- a/ecs/src/component.rs +++ b/ecs/src/component.rs @@ -51,20 +51,19 @@ pub trait Component: SystemInput + Any + TypeName #[doc(hidden)] fn as_any(&self) -> &dyn Any; - /// Whether the component `self` is optional. Returns the same value as - /// [`Component::is_optional`]. - fn self_is_optional(&self) -> IsOptional + /// Returns whether the component `self` is optional. + fn self_is_optional(&self) -> bool { - IsOptional::No + false } /// Returns whether this component is optional. #[must_use] - fn is_optional() -> IsOptional + fn is_optional() -> bool where Self: Sized, { - IsOptional::No + false } } @@ -139,14 +138,14 @@ where self } - fn self_is_optional(&self) -> IsOptional + fn self_is_optional(&self) -> bool { - Self::is_optional() + true } - fn is_optional() -> IsOptional + fn is_optional() -> bool { - IsOptional::Yes + true } } @@ -222,7 +221,7 @@ where pub struct Metadata { pub id: Uid, - pub is_optional: IsOptional, + pub is_optional: bool, } impl Metadata @@ -244,26 +243,6 @@ impl Metadata } } -/// Whether or not a `Component` is optional. -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum IsOptional -{ - Yes, - No, -} - -impl From for IsOptional -{ - fn from(is_optional: bool) -> Self - { - if is_optional { - return IsOptional::Yes; - } - - IsOptional::No - } -} - pub trait FromOptionalMut<'comp> { fn from_optional_mut_component( diff --git a/ecs/src/component/storage.rs b/ecs/src/component/storage.rs index dd9e383..0475bf1 100644 --- a/ecs/src/component/storage.rs +++ b/ecs/src/component/storage.rs @@ -7,11 +7,7 @@ use std::vec::IntoIter as OwnedVecIter; use hashbrown::{HashMap, HashSet}; use crate::archetype::Id as ArchetypeId; -use crate::component::{ - Component, - IsOptional as ComponentIsOptional, - Metadata as ComponentMetadata, -}; +use crate::component::{Component, Metadata as ComponentMetadata}; use crate::type_name::TypeName; use crate::uid::Uid; use crate::EntityComponent; @@ -548,7 +544,7 @@ where .filter_map(|item| { let component_metadata = item.borrow(); - if component_metadata.is_optional == ComponentIsOptional::Yes { + if component_metadata.is_optional { return None; } @@ -565,11 +561,7 @@ mod tests use super::Storage; use crate::archetype::Id as ArchetypeId; - use crate::component::{ - Component, - IsOptional as ComponentIsOptional, - Metadata as ComponentMetadata, - }; + use crate::component::{Component, Metadata as ComponentMetadata}; use crate::uid::{Kind as UidKind, Uid}; #[derive(Debug, Component)] @@ -638,11 +630,11 @@ mod tests let mut components_metadata = [ ComponentMetadata { id: HealthPotion::id(), - is_optional: ComponentIsOptional::No, + is_optional: false, }, ComponentMetadata { id: Hookshot::id(), - is_optional: ComponentIsOptional::No, + is_optional: false, }, ]; diff --git a/ecs/src/lib.rs b/ecs/src/lib.rs index 5d9df9a..ae3e191 100644 --- a/ecs/src/lib.rs +++ b/ecs/src/lib.rs @@ -13,7 +13,6 @@ use crate::actions::Action; use crate::component::storage::Storage as ComponentStorage; use crate::component::{ Component, - IsOptional as ComponentIsOptional, Metadata as ComponentMetadata, RefSequence as ComponentRefSequence, Sequence as ComponentSequence, @@ -441,10 +440,7 @@ impl World { let query = self.flexible_query([ ComponentMetadata::of::(), - ComponentMetadata { - id: event_id, - is_optional: ComponentIsOptional::No, - }, + ComponentMetadata { id: event_id, is_optional: false }, ]); for (system,) in query -- cgit v1.2.3-18-g5258