summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHampusM <hampus@hampusmat.com>2025-02-05 15:57:15 +0100
committerHampusM <hampus@hampusmat.com>2025-02-05 15:57:15 +0100
commitc06d59ffa09e22a98647f5104944e1c13b161963 (patch)
tree66a551242367f95c5e107d4ad0725cc7b33bf221
parenta735f352f789a440508cf9dd1c554b4d1db6cbb7 (diff)
refactor(ecs): replace component::IsOptional enum with bool
-rw-r--r--ecs/src/archetype.rs7
-rw-r--r--ecs/src/component.rs41
-rw-r--r--ecs/src/component/storage.rs18
-rw-r--r--ecs/src/lib.rs6
4 files changed, 18 insertions, 54 deletions
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<bool> 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::<SystemComponent>(),
- ComponentMetadata {
- id: event_id,
- is_optional: ComponentIsOptional::No,
- },
+ ComponentMetadata { id: event_id, is_optional: false },
]);
for (system,) in query