Hey there, I've started making a game in Rust using Bevy. I'm trying to create a function that would essentially create a query for all entities with a Component type, passed as a parameter, and then recursively despawn all of those entities. Basically, it would be a generic cleanup function.
I've been Googling and I read that generic data types can help accomplish this, but I'm stuck on how to actually create the query, since this would not be a system, this would be a normal function that other systems can call.
This isn't necessary for my app, I'm just getting sort of tired of copying and pasting the same code. It would be nice to just call cleanup_components(), or something.
Any help is appreciated ^-^
Wait, by typing this I realized I could just pass the query as a parameter in the function calling it... Let me try that. If it works I'll leave this up in case anyone is looking for the same solution, but I think I figured it out on my own, lol
Okay, I got it working :3
My final solution was the method cleanup_state:
fn cleanup_state<T>(query: QueryIter<Entity, With<T>>, commands: &mut Commands) where T: Component {
for item in query {
commands.entity(item).despawn_recursive();
}
}
And in the code calling it, I created a system parameter called self_query that queried the components it needed to clean up. Then I just called it when necessary and passed self_query.iter().