Happy Monday! Time for another #bevymergetrain
If this is your first time here, this is where I go over the changes from the community that are ready to merge (they have two approvals from literally anyone and no outstanding controversy) for the #opensource #rust #gamedev engine #bevy.
There's 7 PRs ready today (work has been focused on the 0.11 release): let's take a look!
1. https://github.com/bevyengine/bevy/pull/4462
Better logging on iOS. The author got busy, and this PR needs rebasing and testing.
I don't have the devices and expertise to validate this myself, so I'm cutting it from the Ready-For-Final-Review set and the milestone :(
If any of y'all want to muck around with this it would be much appreciated.
2. https://github.com/bevyengine/bevy/pull/7112
Bah, screwy CI PR again :( Rerunning all the jobs (via the Details clickthrough on the CI results), and enabling debugging logging. If that passes we're good to merge.
3. https://github.com/bevyengine/bevy/pull/8882
UI keyboard navigation! A very nice piece of functionality, but remarkably tricky. It's challenging to get the behavior we need, ensure that it's able to be integrated with AccessKit for visually-impaired users, and plays nice with mouse interactions.
Francois brings up good points in the latest comments (I largely agree with them), so this gets the Controversial label. I'm eager to appointment some UI Subject Matter Experts to unblock controversial work!
4. https://github.com/bevyengine/bevy/pull/8947
Text wrapping: first it doesn't work at all, then it works *too* good?!
Turns out, you *do* need to be able to opt out of text-wrapping sometimes. Very nice implementation: another enum variant is exactly what I want. Critical to fix; which is why it's in the milestone.
And it's even in the example to demo this, which is good for both learning and manual testing!
Merging :D
5. https://github.com/bevyengine/bevy/pull/8951
Useful error messages?! In *my* bevy_ecs panics?! More likely than you think.
This is a particularly frustrating problem, that's personally made me waste a ton of time. Apparently the lovely `track_caller` annotation doesn't play nice with closures. And we need a closure (rather than just a `expect` + `format!`) because otherwise this is misoptimized. Swapping to a function plus `#[inline(never)]` should do the trick.
Benching now: I'll merge based on that.
6. https://github.com/bevyengine/bevy/pull/8954
A fix for `Quat`, our friendly neighborhood quaternion type (used to model rotations without gimbal lock). As the PR description says, this used to have private fields, but no longer does! As a result, we can use a simpler / better reflection strategy.
This will break existing scenes (in a find-and-replace fixable way), but it *is* a clear improvement. I think that we should try and reduce the breakage before merging: stable type paths are here.
Requesting changes.
7. https://github.com/bevyengine/bevy/pull/8960
A PR from an hour ago! `bevy_gizmos` is a powerful debug graphics API, and by default it varies the color based on the `Entity` identifier.
Unfortunately we were being lazy about how that was generated: just taking a modulus. As shown by the graph(!) in the PR's comments, this results in nasty clumping, which isn't helpful for distinguishing entities.
By using a hash instead, we can get much more uniform distribution.
Merging!
Alright, benchmark results from https://github.com/bevyengine/bevy/pull/8951 are in: they're basically a wash?
That's good (and expected), but the benches were super noisy for me, even with all other applications closed. Bah. I want to merge it but we'll see what James says; he's one of our resident performance expert.
I'm going to fight for this change, but I won't act unilaterally with this much uncertainty.
Alright, that's all for this week! Thanks for following along: may your benchmarks be consistent and your error messages good.
If you want to see what still needs to be done for #bevy 0.11 (and help by reviewing PRs?) take a look at the 25 PRs still in the milestone!