-
Notifications
You must be signed in to change notification settings - Fork 47
Open
Labels
enhancementNew feature or requestNew feature or request
Description
I don't know what is the best way to sort queries, so far I've used
fn system(
mut query: Query<(&Player), With<Rollback>>,
) {
let mut query = query.iter_mut().collect::<Vec<_>>();
query.sort_by(|(player_a, ..), (player_b, ..)| player_a.cmp(player_b));
}This solution is fine, but as opposed to the example below, Player has an handle to perform a stable sort ...
fn system(
mut query: Query<(&Rollback, &mut Transform, &mut PlatformController)>,
order: Res<RollbackOrdered>,
) {
let mut query = query.iter_mut().collect::<Vec<_>>();
query.sort_by(|(rollback_a, ..), (rollback_b, ..)| {
order
.order(**rollback_a)
.cmp(&order.order(**rollback_b)) // this is ugly :D
});
for (_, mut transform, mut controller) in query {
// do stuff
}
}... whereas here, neither Transform nor PlatformController has a stable sort discriminant
This looks like the best approach, but it is not documented nor used in examples, so I might be using it wrong
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request