Skip to content

Commit 490fc63

Browse files
authored
Keep global registry of all visualizers & context systems instead of isolating per space view class (#4540)
### What * Refactor towards #4490 This will allow us to store additional state with each registry entry: This will be used to register a `VisualizerEntitySubscriber` and store a handle to it for every visualizer. All the "interesting" changes are in `crates/re_viewer_context/src/space_view/space_view_class_registry.rs`, everything else is just ripples. Note that this pr sneakily starts the renaming of `ViewPart(System)` to just `Visualizer` ### 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 the web demo (if applicable): * Full build: [app.rerun.io](https://app.rerun.io/pr/4540/index.html) * Partial build: [app.rerun.io](https://app.rerun.io/pr/4540/index.html?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json) - Useful for quick testing when changes do not affect examples in any way * [x] The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG - [PR Build Summary](https://build.rerun.io/pr/4540) - [Docs preview](https://rerun.io/preview/13e2dbf32f0dd151e7ce18c2b98af9f1f929eb63/docs) <!--DOCS-PREVIEW--> - [Examples preview](https://rerun.io/preview/13e2dbf32f0dd151e7ce18c2b98af9f1f929eb63/examples) <!--EXAMPLES-PREVIEW--> - [Recent benchmark results](https://build.rerun.io/graphs/crates.html) - [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)
1 parent 5a93347 commit 490fc63

File tree

23 files changed

+243
-201
lines changed

23 files changed

+243
-201
lines changed

crates/re_space_view_bar_chart/src/space_view_class.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ impl SpaceViewClass for BarChartSpaceView {
5050

5151
fn on_register(
5252
&self,
53-
system_registry: &mut re_viewer_context::SpaceViewSystemRegistry,
53+
system_registry: &mut re_viewer_context::SpaceViewSystemRegistrator<'_>,
5454
) -> Result<(), SpaceViewClassRegistryError> {
55-
system_registry.register_part_system::<BarChartViewPartSystem>()
55+
system_registry.register_visualizer::<BarChartViewPartSystem>()
5656
}
5757

5858
fn preferred_tile_aspect_ratio(&self, _state: &Self::State) -> Option<f32> {

crates/re_space_view_dataframe/src/space_view_class.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ impl SpaceViewClass for DataframeSpaceView {
4040

4141
fn on_register(
4242
&self,
43-
system_registry: &mut re_viewer_context::SpaceViewSystemRegistry,
43+
system_registry: &mut re_viewer_context::SpaceViewSystemRegistrator<'_>,
4444
) -> Result<(), SpaceViewClassRegistryError> {
45-
system_registry.register_part_system::<EmptySystem>()
45+
system_registry.register_visualizer::<EmptySystem>()
4646
}
4747

4848
fn preferred_tile_aspect_ratio(&self, _state: &Self::State) -> Option<f32> {

crates/re_space_view_spatial/src/contexts/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ impl ViewContextSystem for PrimitiveCounter {
6060
}
6161

6262
pub fn register_spatial_contexts(
63-
system_registry: &mut re_viewer_context::SpaceViewSystemRegistry,
63+
system_registry: &mut re_viewer_context::SpaceViewSystemRegistrator<'_>,
6464
) -> Result<(), SpaceViewClassRegistryError> {
6565
system_registry.register_context_system::<TransformContext>()?;
6666
system_registry.register_context_system::<EntityDepthOffsets>()?;

crates/re_space_view_spatial/src/heuristics.rs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use crate::{
2222
};
2323

2424
pub fn auto_spawn_heuristic(
25-
class: &SpaceViewClassIdentifier,
25+
class: SpaceViewClassIdentifier,
2626
ctx: &ViewerContext<'_>,
2727
per_system_entities: &PerSystemEntities,
2828
view_kind: SpatialSpaceViewKind,
@@ -31,10 +31,7 @@ pub fn auto_spawn_heuristic(
3131

3232
let mut score = 0.0;
3333

34-
let parts = ctx
35-
.space_view_class_registry
36-
.get_system_registry_or_log_error(class)
37-
.new_part_collection();
34+
let parts = ctx.space_view_class_registry.new_part_collection(class);
3835

3936
// Gather all systems that advertise a "preferred view kind" matching the passed in kind.
4037
let system_names_with_matching_view_kind = parts

crates/re_space_view_spatial/src/parts/mod.rs

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ use re_types::datatypes::{KeypointId, KeypointPair};
3333
use re_types::Archetype;
3434
use re_viewer_context::SpaceViewClassRegistryError;
3535
use re_viewer_context::{
36-
auto_color, Annotations, DefaultColor, ResolvedAnnotationInfos, SpaceViewSystemRegistry,
36+
auto_color, Annotations, DefaultColor, ResolvedAnnotationInfos, SpaceViewSystemRegistrator,
3737
ViewPartCollection, ViewQuery,
3838
};
3939

@@ -46,39 +46,39 @@ pub const SIZE_BOOST_IN_POINTS_FOR_LINE_OUTLINES: f32 = 1.5;
4646
pub const SIZE_BOOST_IN_POINTS_FOR_POINT_OUTLINES: f32 = 2.5;
4747

4848
pub fn register_2d_spatial_parts(
49-
system_registry: &mut SpaceViewSystemRegistry,
49+
system_registry: &mut SpaceViewSystemRegistrator<'_>,
5050
) -> Result<(), SpaceViewClassRegistryError> {
5151
// Note: 2D spatial systems don't include cameras as this
5252
// part only shows a 2D projection WITHIN a 3D view.
53-
system_registry.register_part_system::<arrows3d::Arrows3DPart>()?;
54-
system_registry.register_part_system::<assets3d::Asset3DPart>()?;
55-
system_registry.register_part_system::<boxes2d::Boxes2DPart>()?;
56-
system_registry.register_part_system::<boxes3d::Boxes3DPart>()?;
57-
system_registry.register_part_system::<images::ImagesPart>()?;
58-
system_registry.register_part_system::<lines2d::Lines2DPart>()?;
59-
system_registry.register_part_system::<lines3d::Lines3DPart>()?;
60-
system_registry.register_part_system::<meshes::Mesh3DPart>()?;
61-
system_registry.register_part_system::<points2d::Points2DPart>()?;
62-
system_registry.register_part_system::<points3d::Points3DPart>()?;
63-
system_registry.register_part_system::<transform3d_arrows::Transform3DArrowsPart>()?;
53+
system_registry.register_visualizer::<arrows3d::Arrows3DPart>()?;
54+
system_registry.register_visualizer::<assets3d::Asset3DPart>()?;
55+
system_registry.register_visualizer::<boxes2d::Boxes2DPart>()?;
56+
system_registry.register_visualizer::<boxes3d::Boxes3DPart>()?;
57+
system_registry.register_visualizer::<images::ImagesPart>()?;
58+
system_registry.register_visualizer::<lines2d::Lines2DPart>()?;
59+
system_registry.register_visualizer::<lines3d::Lines3DPart>()?;
60+
system_registry.register_visualizer::<meshes::Mesh3DPart>()?;
61+
system_registry.register_visualizer::<points2d::Points2DPart>()?;
62+
system_registry.register_visualizer::<points3d::Points3DPart>()?;
63+
system_registry.register_visualizer::<transform3d_arrows::Transform3DArrowsPart>()?;
6464
Ok(())
6565
}
6666

6767
pub fn register_3d_spatial_parts(
68-
system_registry: &mut SpaceViewSystemRegistry,
68+
system_registry: &mut SpaceViewSystemRegistrator<'_>,
6969
) -> Result<(), SpaceViewClassRegistryError> {
70-
system_registry.register_part_system::<arrows3d::Arrows3DPart>()?;
71-
system_registry.register_part_system::<assets3d::Asset3DPart>()?;
72-
system_registry.register_part_system::<boxes2d::Boxes2DPart>()?;
73-
system_registry.register_part_system::<boxes3d::Boxes3DPart>()?;
74-
system_registry.register_part_system::<cameras::CamerasPart>()?;
75-
system_registry.register_part_system::<images::ImagesPart>()?;
76-
system_registry.register_part_system::<lines2d::Lines2DPart>()?;
77-
system_registry.register_part_system::<lines3d::Lines3DPart>()?;
78-
system_registry.register_part_system::<meshes::Mesh3DPart>()?;
79-
system_registry.register_part_system::<points2d::Points2DPart>()?;
80-
system_registry.register_part_system::<points3d::Points3DPart>()?;
81-
system_registry.register_part_system::<transform3d_arrows::Transform3DArrowsPart>()?;
70+
system_registry.register_visualizer::<arrows3d::Arrows3DPart>()?;
71+
system_registry.register_visualizer::<assets3d::Asset3DPart>()?;
72+
system_registry.register_visualizer::<boxes2d::Boxes2DPart>()?;
73+
system_registry.register_visualizer::<boxes3d::Boxes3DPart>()?;
74+
system_registry.register_visualizer::<cameras::CamerasPart>()?;
75+
system_registry.register_visualizer::<images::ImagesPart>()?;
76+
system_registry.register_visualizer::<lines2d::Lines2DPart>()?;
77+
system_registry.register_visualizer::<lines3d::Lines3DPart>()?;
78+
system_registry.register_visualizer::<meshes::Mesh3DPart>()?;
79+
system_registry.register_visualizer::<points2d::Points2DPart>()?;
80+
system_registry.register_visualizer::<points3d::Points3DPart>()?;
81+
system_registry.register_visualizer::<transform3d_arrows::Transform3DArrowsPart>()?;
8282
Ok(())
8383
}
8484

crates/re_space_view_spatial/src/space_view_2d.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ impl SpaceViewClass for SpatialSpaceView2D {
3232

3333
fn on_register(
3434
&self,
35-
system_registry: &mut re_viewer_context::SpaceViewSystemRegistry,
35+
system_registry: &mut re_viewer_context::SpaceViewSystemRegistrator<'_>,
3636
) -> Result<(), SpaceViewClassRegistryError> {
3737
register_spatial_contexts(system_registry)?;
3838
register_2d_spatial_parts(system_registry)?;
@@ -72,7 +72,7 @@ impl SpaceViewClass for SpatialSpaceView2D {
7272
per_system_entities: &PerSystemEntities,
7373
) -> AutoSpawnHeuristic {
7474
let mut score = auto_spawn_heuristic(
75-
&self.identifier(),
75+
self.identifier(),
7676
ctx,
7777
per_system_entities,
7878
SpatialSpaceViewKind::TwoD,
@@ -92,8 +92,7 @@ impl SpaceViewClass for SpatialSpaceView2D {
9292
if space_origin.is_root() {
9393
let parts = ctx
9494
.space_view_class_registry
95-
.get_system_registry_or_log_error(&self.identifier())
96-
.new_part_collection();
95+
.new_part_collection(self.identifier());
9796

9897
for part in per_system_entities.keys() {
9998
if let Ok(part) = parts.get_by_identifier(*part) {

crates/re_space_view_spatial/src/space_view_3d.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ impl SpaceViewClass for SpatialSpaceView3D {
3333

3434
fn on_register(
3535
&self,
36-
system_registry: &mut re_viewer_context::SpaceViewSystemRegistry,
36+
system_registry: &mut re_viewer_context::SpaceViewSystemRegistrator<'_>,
3737
) -> Result<(), SpaceViewClassRegistryError> {
3838
register_spatial_contexts(system_registry)?;
3939
register_3d_spatial_parts(system_registry)?;
@@ -56,7 +56,7 @@ impl SpaceViewClass for SpatialSpaceView3D {
5656
per_system_entities: &PerSystemEntities,
5757
) -> AutoSpawnHeuristic {
5858
let score = auto_spawn_heuristic(
59-
&self.identifier(),
59+
self.identifier(),
6060
ctx,
6161
per_system_entities,
6262
SpatialSpaceViewKind::ThreeD,

crates/re_space_view_tensor/src/space_view_class.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,9 @@ impl SpaceViewClass for TensorSpaceView {
149149

150150
fn on_register(
151151
&self,
152-
system_registry: &mut re_viewer_context::SpaceViewSystemRegistry,
152+
system_registry: &mut re_viewer_context::SpaceViewSystemRegistrator<'_>,
153153
) -> Result<(), SpaceViewClassRegistryError> {
154-
system_registry.register_part_system::<TensorSystem>()
154+
system_registry.register_visualizer::<TensorSystem>()
155155
}
156156

157157
fn preferred_tile_aspect_ratio(&self, _state: &Self::State) -> Option<f32> {

crates/re_space_view_text_document/src/space_view_class.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ impl SpaceViewClass for TextDocumentSpaceView {
6161

6262
fn on_register(
6363
&self,
64-
system_registry: &mut re_viewer_context::SpaceViewSystemRegistry,
64+
system_registry: &mut re_viewer_context::SpaceViewSystemRegistrator<'_>,
6565
) -> Result<(), SpaceViewClassRegistryError> {
66-
system_registry.register_part_system::<TextDocumentSystem>()
66+
system_registry.register_visualizer::<TextDocumentSystem>()
6767
}
6868

6969
fn layout_priority(&self) -> re_viewer_context::SpaceViewClassLayoutPriority {

crates/re_space_view_text_log/src/space_view_class.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ impl SpaceViewClass for TextSpaceView {
5555

5656
fn on_register(
5757
&self,
58-
system_registry: &mut re_viewer_context::SpaceViewSystemRegistry,
58+
system_registry: &mut re_viewer_context::SpaceViewSystemRegistrator<'_>,
5959
) -> Result<(), SpaceViewClassRegistryError> {
60-
system_registry.register_part_system::<TextLogSystem>()
60+
system_registry.register_visualizer::<TextLogSystem>()
6161
}
6262

6363
fn preferred_tile_aspect_ratio(&self, _state: &Self::State) -> Option<f32> {

crates/re_space_view_time_series/src/space_view_class.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,9 @@ impl SpaceViewClass for TimeSeriesSpaceView {
8080

8181
fn on_register(
8282
&self,
83-
system_registry: &mut re_viewer_context::SpaceViewSystemRegistry,
83+
system_registry: &mut re_viewer_context::SpaceViewSystemRegistrator<'_>,
8484
) -> Result<(), SpaceViewClassRegistryError> {
85-
system_registry.register_part_system::<TimeSeriesSystem>()
85+
system_registry.register_visualizer::<TimeSeriesSystem>()
8686
}
8787

8888
fn preferred_tile_aspect_ratio(&self, _state: &Self::State) -> Option<f32> {

crates/re_viewer_context/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ pub use space_view::{
4545
HeuristicFilterContext, IdentifiedViewSystem, PerSystemDataResults, PerSystemEntities,
4646
SpaceViewClass, SpaceViewClassIdentifier, SpaceViewClassLayoutPriority, SpaceViewClassRegistry,
4747
SpaceViewClassRegistryError, SpaceViewEntityHighlight, SpaceViewHighlights,
48-
SpaceViewOutlineMasks, SpaceViewState, SpaceViewSystemExecutionError, SpaceViewSystemRegistry,
49-
SystemExecutionOutput, ViewContextCollection, ViewContextSystem, ViewPartCollection,
50-
ViewPartSystem, ViewQuery, ViewSystemIdentifier,
48+
SpaceViewOutlineMasks, SpaceViewState, SpaceViewSystemExecutionError,
49+
SpaceViewSystemRegistrator, SystemExecutionOutput, ViewContextCollection, ViewContextSystem,
50+
ViewPartCollection, ViewPartSystem, ViewQuery, ViewSystemIdentifier,
5151
};
5252
pub use store_context::StoreContext;
5353
pub use tensor::{TensorDecodeCache, TensorStats, TensorStatsCache};

crates/re_viewer_context/src/space_view/dyn_space_view_class.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use re_types::ComponentName;
44

55
use crate::{
66
AutoSpawnHeuristic, PerSystemEntities, SpaceViewClassRegistryError, SpaceViewId,
7-
SpaceViewSystemRegistry, SystemExecutionOutput, ViewQuery, ViewerContext,
7+
SpaceViewSystemRegistrator, SystemExecutionOutput, ViewQuery, ViewerContext,
88
};
99

1010
re_string_interner::declare_new_type!(
@@ -71,7 +71,7 @@ pub trait DynSpaceViewClass: Send + Sync {
7171
/// This can be used to register all built-in [`crate::ViewContextSystem`] and [`crate::ViewPartSystem`].
7272
fn on_register(
7373
&self,
74-
system_registry: &mut SpaceViewSystemRegistry,
74+
system_registry: &mut SpaceViewSystemRegistrator<'_>,
7575
) -> Result<(), SpaceViewClassRegistryError>;
7676

7777
/// Called once for every new space view instance of this class.

crates/re_viewer_context/src/space_view/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ pub use highlights::{SpaceViewEntityHighlight, SpaceViewHighlights, SpaceViewOut
2424
pub use named_system::{IdentifiedViewSystem, PerSystemEntities, ViewSystemIdentifier};
2525
pub use space_view_class::SpaceViewClass;
2626
pub use space_view_class_registry::{
27-
SpaceViewClassRegistry, SpaceViewClassRegistryError, SpaceViewSystemRegistry,
27+
SpaceViewClassRegistry, SpaceViewClassRegistryError, SpaceViewSystemRegistrator,
2828
};
2929
pub use system_execution_output::SystemExecutionOutput;
3030
pub use view_context_system::{ViewContextCollection, ViewContextSystem};

crates/re_viewer_context/src/space_view/space_view_class.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use re_types::ComponentName;
55
use crate::{
66
AutoSpawnHeuristic, DynSpaceViewClass, PerSystemEntities, SpaceViewClassIdentifier,
77
SpaceViewClassRegistryError, SpaceViewId, SpaceViewState, SpaceViewSystemExecutionError,
8-
SpaceViewSystemRegistry, SystemExecutionOutput, ViewQuery, ViewerContext,
8+
SpaceViewSystemRegistrator, SystemExecutionOutput, ViewQuery, ViewerContext,
99
};
1010

1111
/// Defines a class of space view.
@@ -50,7 +50,7 @@ pub trait SpaceViewClass: std::marker::Sized + Send + Sync {
5050
/// This can be used to register all built-in [`crate::ViewContextSystem`] and [`crate::ViewPartSystem`].
5151
fn on_register(
5252
&self,
53-
system_registry: &mut SpaceViewSystemRegistry,
53+
system_registry: &mut SpaceViewSystemRegistrator<'_>,
5454
) -> Result<(), SpaceViewClassRegistryError>;
5555

5656
/// Preferred aspect ratio for the ui tiles of this space view.
@@ -159,7 +159,7 @@ impl<T: SpaceViewClass + 'static> DynSpaceViewClass for T {
159159

160160
fn on_register(
161161
&self,
162-
system_registry: &mut SpaceViewSystemRegistry,
162+
system_registry: &mut SpaceViewSystemRegistrator<'_>,
163163
) -> Result<(), SpaceViewClassRegistryError> {
164164
self.on_register(system_registry)
165165
}

crates/re_viewer_context/src/space_view/space_view_class_placeholder.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::{
22
SpaceViewClass, SpaceViewClassRegistryError, SpaceViewSystemExecutionError,
3-
SpaceViewSystemRegistry, SystemExecutionOutput, ViewQuery, ViewerContext,
3+
SpaceViewSystemRegistrator, SystemExecutionOutput, ViewQuery, ViewerContext,
44
};
55
use re_data_store::EntityProperties;
66

@@ -24,7 +24,7 @@ impl SpaceViewClass for SpaceViewClassPlaceholder {
2424

2525
fn on_register(
2626
&self,
27-
_system_registry: &mut SpaceViewSystemRegistry,
27+
_system_registry: &mut SpaceViewSystemRegistrator<'_>,
2828
) -> Result<(), SpaceViewClassRegistryError> {
2929
Ok(())
3030
}

0 commit comments

Comments
 (0)