Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Distinguish 2D and 3D space view types, remove navigation mode #2649

Closed
Wumpf opened this issue Jul 10, 2023 · 0 comments · Fixed by #2716
Closed

Distinguish 2D and 3D space view types, remove navigation mode #2649

Wumpf opened this issue Jul 10, 2023 · 0 comments · Fixed by #2716
Assignees
Labels
📺 re_viewer affects re_viewer itself

Comments

@Wumpf
Copy link
Member

Wumpf commented Jul 10, 2023

This should be less confusing in particularly in respect to heuristics and upcoming blueprint apis that set up the type of a space view.

Related among others:

@Wumpf Wumpf added the 📺 re_viewer affects re_viewer itself label Jul 10, 2023
Wumpf added a commit that referenced this issue Jul 14, 2023
(Replaces  #2522)
Part of 
* #2649

For in-depth overview of how space views work now see #2533

Replaces custom user types for context and parts with typemap style
collections. These are filled every frame from a set of registered parts
& contexts. Registration happens on the `SpaceViewRegistry` where we
already register space view classes themselves.

Other rippling changes in overview:
* space view parts and context no longer have access to the space view's
state struct, this fully decouples them from any concrete space view
* space view part's data object is no longer strongly typed, but an
`&Any` instead, fullfills otherwise the same purpose
* `Scene`/`TypedScene` is gone now
* most of what was previously the scene buildup is now part of
`SpaceViewClass::ui`

For reviewing it's recommended to start with everything in the
`re_viewer_context` crate.


Overview of major trait entry points - see also #2533
<img width="1120" alt="image"
src="https://github.com/rerun-io/rerun/assets/1220815/ffdb1cdf-7efe-47a0-ac38-30262d770e69">




### What

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested [demo.rerun.io](https://demo.rerun.io/pr/2688) (if
applicable)

- [PR Build Summary](https://build.rerun.io/pr/2688)
- [Docs
preview](https://rerun.io/preview/pr%3Aandreas%2Fregistered-space-view-systems/docs)
- [Examples
preview](https://rerun.io/preview/pr%3Aandreas%2Fregistered-space-view-systems/examples)
@Wumpf Wumpf self-assigned this Jul 18, 2023
Wumpf added a commit that referenced this issue Jul 20, 2023
…ViewClass` driven spawn heuristics (#2716)

### What

Fixes  #2649
*  #2649

Separates the 2D & 3D space views into separate classes, leading to
removal of the "navigation mode".
Naturally, this means that heuristics that previously defined the
navigation mode move to space view creation.
Space view creation in turn was previously defined via the outdated
`ViewCategory` concept (which assigned each space view class an enum
value). Since we wanted to remove it for a while, I went through with
that, causing heuristics to spread out further into the Space View Class
framework itself.

Default space view spawning & populating is now goverend by:
* remaining hardcoded heuristics in `space_view_heuristics.rs` (to be
phased out!)
* `ViewPartSystem::queries_any_components_of` determines which entities
a `ViewPartSystem` queries. The default implementation works for
everything except `Tensor` (if this case disappears in the future we may
consider removing this method again)
* `SpaceViewClass::auto_spawn_heuristic` drives whether a Space View
Class is spawned for a given root and set of entities. This is fairly
basic at the moment and should eventually take over almost everything in
`space_view_heuristics`. Interestingly, this already allows to express
relatively complex rules like "if there is any log text, default spawn a
single text view at the root and don't affect spawning of other space
views at all"

Noticed that some other space view class icons were wrong and fixed that
up as well.
<img width="164" alt="image"
src="https://github.com/rerun-io/rerun/assets/1220815/9317bbf8-4397-41d0-aa2e-489f24e448cb">


### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested [demo.rerun.io](https://demo.rerun.io/pr/2716) (if
applicable)

- [PR Build Summary](https://build.rerun.io/pr/2716)
- [Docs
preview](https://rerun.io/preview/pr%3Aandreas%2Fseparate-2d-3d-spaceviews/docs)
- [Examples
preview](https://rerun.io/preview/pr%3Aandreas%2Fseparate-2d-3d-spaceviews/examples)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
📺 re_viewer affects re_viewer itself
Projects
None yet
1 participant