From ff475f1775481f5600a3d93c915375dd93f39851 Mon Sep 17 00:00:00 2001 From: lisk77 Date: Wed, 7 May 2025 01:00:08 +0200 Subject: [PATCH] fix: changed the input type of the query functions from `ComponentSet` to `Vec` --- crates/comet_app/src/app.rs | 9 ++++----- crates/comet_ecs/src/scene.rs | 13 +++++++------ crates/comet_renderer/src/renderer2d.rs | 8 ++++---- src/lib.rs | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/crates/comet_app/src/app.rs b/crates/comet_app/src/app.rs index 7b60bd6..df89111 100644 --- a/crates/comet_app/src/app.rs +++ b/crates/comet_app/src/app.rs @@ -1,7 +1,6 @@ -use std::any::{type_name, Any}; +use std::any::{type_name, Any, TypeId}; use std::sync::Arc; use comet_ecs::{Camera2D, Color, Component, Entity, Render2D, Scene, Text, Transform2D, Transform3D}; - use winit::{ event::*, event_loop::EventLoop, @@ -174,11 +173,11 @@ impl App { self.scene.get_component_mut::(entity_id) } - pub fn get_entities_with(&self, components: ComponentSet) -> Vec { + pub fn get_entities_with(&self, components: Vec) -> Vec { self.scene.get_entities_with(components) } - pub fn delete_entities_with(&mut self, components: ComponentSet) { + pub fn delete_entities_with(&mut self, components: Vec) { self.scene.delete_entities_with(components) } @@ -283,4 +282,4 @@ impl App { info!("Shutting down {}!", self.title); } -} \ No newline at end of file +} diff --git a/crates/comet_ecs/src/scene.rs b/crates/comet_ecs/src/scene.rs index 4094b59..fd417c7 100644 --- a/crates/comet_ecs/src/scene.rs +++ b/crates/comet_ecs/src/scene.rs @@ -220,16 +220,17 @@ impl Scene { } /// Returns a list of entities that have the given components. - pub fn get_entities_with(&self, components: ComponentSet) -> Vec { - if self.archetypes.contains_archetype(&components) { - return self.archetypes.get_archetype(&components).unwrap().clone().iter().map(|x| *x as usize).collect(); + pub fn get_entities_with(&self, components: Vec) -> Vec { + let component_set = ComponentSet::from_ids(components); + if self.archetypes.contains_archetype(&component_set) { + return self.archetypes.get_archetype(&component_set).unwrap().clone().iter().map(|x| *x as usize).collect(); } Vec::new() } /// Deletes all entities that have the given components. - pub fn delete_entities_with(&mut self, components: ComponentSet) { - let entities = self.get_entities_with(components); + pub fn delete_entities_with(&mut self, components: Vec) { + let entities = self.get_entities_with(components); for entity in entities { self.delete_entity(entity); } @@ -237,7 +238,7 @@ impl Scene { /// Iterates over all entities that have the given components and calls the given function. pub fn foreach(&mut self, func: fn(&mut C,&mut K)) { - let entities = self.get_entities_with(ComponentSet::from_ids(vec![C::type_id(), K::type_id()])); + let entities = self.get_entities_with(vec![C::type_id(), K::type_id()]); for entity in entities { let c_ptr = self.get_component_mut::(entity).unwrap() as *mut C; let k_ptr = self.get_component_mut::(entity).unwrap() as *mut K; diff --git a/crates/comet_renderer/src/renderer2d.rs b/crates/comet_renderer/src/renderer2d.rs index 91d6ab3..8656e71 100644 --- a/crates/comet_renderer/src/renderer2d.rs +++ b/crates/comet_renderer/src/renderer2d.rs @@ -553,14 +553,14 @@ impl<'a> Renderer2D<'a> { /// A function to automatically render all the entities of the `Scene` struct. /// The entities must have the `Render2D` and `Transform2D` components to be rendered as well as set visible. pub fn render_scene_2d(&mut self, scene: &Scene) { - let cameras = scene.get_entities_with(ComponentSet::from_ids(vec![Transform2D::type_id(), Camera2D::type_id()])); + let cameras = scene.get_entities_with(vec![Transform2D::type_id(), Camera2D::type_id()]); if cameras.is_empty() { return; } - let entities = scene.get_entities_with(ComponentSet::from_ids(vec![Transform2D::type_id(), Render2D::type_id()])); - let texts = scene.get_entities_with(ComponentSet::from_ids(vec![Transform2D::type_id(), comet_ecs::Text::type_id()])); + let entities = scene.get_entities_with(vec![Transform2D::type_id(), Render2D::type_id()]); + let texts = scene.get_entities_with(vec![Transform2D::type_id(), comet_ecs::Text::type_id()]); self.setup_camera(cameras, scene); @@ -703,4 +703,4 @@ impl<'a> Renderer for Renderer2D<'a> { fn render(&mut self) -> Result<(), wgpu::SurfaceError> { self.render() } -} \ No newline at end of file +} diff --git a/src/lib.rs b/src/lib.rs index f475694..3cb41f4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -30,4 +30,4 @@ pub mod prelude { }; pub use comet_ecs::*; pub use comet_math::*; -} \ No newline at end of file +}