diff options
| author | HampusM <hampus@hampusmat.com> | 2026-05-21 17:55:20 +0200 |
|---|---|---|
| committer | HampusM <hampus@hampusmat.com> | 2026-05-21 17:55:20 +0200 |
| commit | 8022e8998290b067b8aa0cb9cba8ba410826bdab (patch) | |
| tree | 7171e79ce530e03079046ee8fd12167160c45480 /ecs/src/event/component.rs | |
| parent | 412cee02c252f91bcf0b70a3f5cc5fca6d2b4c62 (diff) | |
chore: rename ecs* crates to engine-ecs*
Diffstat (limited to 'ecs/src/event/component.rs')
| -rw-r--r-- | ecs/src/event/component.rs | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/ecs/src/event/component.rs b/ecs/src/event/component.rs deleted file mode 100644 index 70ea3e5..0000000 --- a/ecs/src/event/component.rs +++ /dev/null @@ -1,103 +0,0 @@ -//! Component events. - -use std::convert::Infallible; - -use crate::Component; -use crate::component::{Handle as ComponentHandle, HandleMut as ComponentHandleMut}; -use crate::entity::Handle as EntityHandle; -use crate::pair::Pair; -use crate::system::observer::{EventMatch, Observed}; - -/// Implemented by the relations of component event pairs -pub trait EventRelation: Component {} - -/// Pair relation for events emitted when: -/// a) A entity with the target component is spawned. -/// b) The target component is added to a entity. -#[derive(Debug, Component)] -pub struct Added(Infallible); - -impl EventRelation for Added {} - -/// Pair relation for events emitted **before**: -/// a) The target component is removed from a entity. -/// b) A entity with the target component is despawned. -#[derive(Debug, Component)] -pub struct Removed(Infallible); - -impl EventRelation for Removed {} - -#[derive(Debug, Component)] -pub struct Changed(Infallible); - -impl EventRelation for Changed {} - -/// [`EventMatch`] extension trait for component event matches. -pub trait EventMatchExt<Target>: sealed::Sealed -{ - #[must_use] - fn get_entity(&self) -> EntityHandle<'_>; - - #[must_use] - fn get_ent_target_comp(&self) -> ComponentHandle<'_, Target> - where - Target: Component; - - #[must_use] - fn get_ent_target_comp_mut(&self) -> ComponentHandleMut<'_, Target> - where - Target: Component; -} - -impl<ComponentEventRelation: EventRelation, Target> EventMatchExt<Target> - for EventMatch<'_, Pair<ComponentEventRelation, Target>> -where - Pair<ComponentEventRelation, Target>: Observed, -{ - fn get_entity(&self) -> EntityHandle<'_> - { - let Some(ent) = self.try_get_entity() else { - unreachable!(); - }; - - ent - } - - fn get_ent_target_comp(&self) -> ComponentHandle<'_, Target> - where - Target: Component, - { - let ent = self.get_entity(); - - let Some(comp) = ent.get::<Target>() else { - unreachable!(); - }; - - comp - } - - fn get_ent_target_comp_mut(&self) -> ComponentHandleMut<'_, Target> - where - Target: Component, - { - let ent = self.get_entity(); - - let Some(comp) = ent.get_mut::<Target>() else { - unreachable!(); - }; - - comp - } -} - -impl<ComponentEventRelation: EventRelation, Target> sealed::Sealed - for EventMatch<'_, Pair<ComponentEventRelation, Target>> -where - Pair<ComponentEventRelation, Target>: Observed, -{ -} - -mod sealed -{ - pub trait Sealed {} -} |
