Conversation
…nent won't do it alone anymore)
df90c70 to
7af18e4
Compare
…pace-view-heuristics
…pace-view-heuristics
And fix broken autogen warning.
…into account for 3d space views
Size changes
|
…pace-view-heuristics
jleibs
left a comment
There was a problem hiding this comment.
Nice work! I find this so much easier to reason about than the old implementation.
Most of my complaints aren't with this change, so much as the fact that it's now easier to see and discuss what I think are flawed heuristics in and of themselves. For merge-sanity I'm totally happy to defer any of those other changes to future-work now that we have this much cleaner framework for discussing the behavior in a per-space-view context.
| return Default::default(); | ||
| }; | ||
|
|
||
| let visualizer = TVisualizer::default(); |
There was a problem hiding this comment.
The need to instantiate this feels weird to me but I'm guessing the self in the signature stems from some context where we need to dynamically dispatch across a set of visualizers instead of being templated on <TVisualizer>?
There was a problem hiding this comment.
yeah all these self-passings are about object safety really. We'd like this to be static but Rust makes this messy
…es_per_visualizer
…pace-view-heuristics
What
What space views get spawned is no longer determined by a centralized heuristic, but instead by one distributed to each space view class. Each of those heuristics can make much better use of existing information provided by store subscribers.
Significant speedup for scenes with many entities (100+):
opf --no-framesbefore:
App::update39.0ms, of whichdefault_created_space_views10.4msafter:
App::update27.4ms, of whichdefault_created_space_views0.17mspython/tests/many_entities (1000 individual points)before:
App:::update151ms, of whichdefault_created_space_views124msafter:
App::update22.6ms, of whichdefault_created_space_views0.06ms(still pretty bad, but less so and for different reasons now!)
(numbers from my macbook on a release build. Actual numbers might differ by now, these are from last week. )
Checklist
mainbuild: app.rerun.ionightlybuild: app.rerun.io