From fb9cdcbe5466a7c184287273930f2c655b33da76 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Mon, 29 May 2023 13:58:15 +0200 Subject: [PATCH 1/8] re_viewport setup --- Cargo.lock | 19 +++++++++++++++++++ Cargo.toml | 1 + crates/re_viewer/Cargo.toml | 1 + crates/re_viewport/Cargo.toml | 33 +++++++++++++++++++++++++++++++++ crates/re_viewport/README.md | 10 ++++++++++ crates/re_viewport/src/lib.rs | 3 +++ 6 files changed, 67 insertions(+) create mode 100644 crates/re_viewport/Cargo.toml create mode 100644 crates/re_viewport/README.md create mode 100644 crates/re_viewport/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index c1dd79967978..ab01112d7152 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4303,6 +4303,7 @@ dependencies = [ "re_time_panel", "re_ui", "re_viewer_context", + "re_viewport", "re_ws_comms", "rfd", "rmp-serde", @@ -4350,6 +4351,24 @@ dependencies = [ "wgpu", ] +[[package]] +name = "re_viewport" +version = "0.7.0-alpha.0" +dependencies = [ + "egui", + "itertools", + "puffin", + "re_arrow_store", + "re_data_store", + "re_data_ui", + "re_log_types", + "re_ui", + "re_viewer_context", + "serde", + "time", + "vec1", +] + [[package]] name = "re_web_viewer_server" version = "0.7.0-alpha.0" diff --git a/Cargo.toml b/Cargo.toml index 8c2588b95b29..7e2a19c7fc8f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,6 +49,7 @@ re_tuid = { path = "crates/re_tuid", version = "0.7.0-alpha.0", default-features re_ui = { path = "crates/re_ui", version = "0.7.0-alpha.0", default-features = false } re_viewer = { path = "crates/re_viewer", version = "0.7.0-alpha.0", default-features = false } re_viewer_context = { path = "crates/re_viewer_context", version = "0.7.0-alpha.0", default-features = false } +re_viewport = { path = "crates/re_viewport", version = "0.7.0-alpha.0", default-features = false } re_web_viewer_server = { path = "crates/re_web_viewer_server", version = "0.7.0-alpha.0", default-features = false } re_ws_comms = { path = "crates/re_ws_comms", version = "0.7.0-alpha.0", default-features = false } rerun = { path = "crates/rerun", version = "0.7.0-alpha.0", default-features = false } diff --git a/crates/re_viewer/Cargo.toml b/crates/re_viewer/Cargo.toml index 0397d4dff886..96637210b288 100644 --- a/crates/re_viewer/Cargo.toml +++ b/crates/re_viewer/Cargo.toml @@ -60,6 +60,7 @@ re_tensor_ops.workspace = true re_time_panel.workspace = true re_ui = { workspace = true, features = ["eframe"] } re_viewer_context.workspace = true +re_viewport.workspace = true re_ws_comms = { workspace = true, features = ["client"] } # Internal (optional): diff --git a/crates/re_viewport/Cargo.toml b/crates/re_viewport/Cargo.toml new file mode 100644 index 000000000000..be75a0ef7e7b --- /dev/null +++ b/crates/re_viewport/Cargo.toml @@ -0,0 +1,33 @@ +[package] +authors.workspace = true +description = "The central viewport panel of the Rerun viewer." +edition.workspace = true +homepage.workspace = true +license.workspace = true +name = "re_viewport" +publish = true +readme = "README.md" +repository.workspace = true +rust-version.workspace = true +version.workspace = true +include = ["../../LICENSE-APACHE", "../../LICENSE-MIT", "**/*.rs", "Cargo.toml"] + +[package.metadata.docs.rs] +all-features = true + +[dependencies] +re_arrow_store.workspace = true +re_data_store.workspace = true +re_data_ui.workspace = true +re_log_types.workspace = true +re_ui.workspace = true +re_viewer_context.workspace = true + +egui.workspace = true +itertools.workspace = true +serde = "1.0" +time.workspace = true +vec1 = "1.8" + +[target.'cfg(not(target_arch = "wasm32"))'.dependencies] +puffin.workspace = true diff --git a/crates/re_viewport/README.md b/crates/re_viewport/README.md new file mode 100644 index 000000000000..8bd5548bbb5e --- /dev/null +++ b/crates/re_viewport/README.md @@ -0,0 +1,10 @@ +# re_viewport + +Part of the [`rerun`](https://github.com/rerun-io/rerun) family of crates. + +[![Latest version](https://img.shields.io/crates/v/re_viewport.svg)](https://crates.io/crates/re_viewport) +[![Documentation](https://docs.rs/re_viewport/badge.svg)](https://docs.rs/re_viewport) +![MIT](https://img.shields.io/badge/license-MIT-blue.svg) +![Apache](https://img.shields.io/badge/license-Apache-blue.svg) + +The central viewport panel of the Rerun viewer. diff --git a/crates/re_viewport/src/lib.rs b/crates/re_viewport/src/lib.rs new file mode 100644 index 000000000000..64ff9bddd8f8 --- /dev/null +++ b/crates/re_viewport/src/lib.rs @@ -0,0 +1,3 @@ +//! Rerun Viewport Panel +//! +//! This crate provides the central panel that contains all space views. From 255b28acde62b94face7481bfc187049b7164e67 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Mon, 29 May 2023 15:27:00 +0200 Subject: [PATCH 2/8] Move out (almost) everything related to the viewport to re_viewport --- Cargo.lock | 31 ++++- crates/re_arrow_store/src/store_helpers.rs | 21 +++ crates/re_viewer/src/app.rs | 6 +- .../re_viewer/src/blueprint_components/mod.rs | 5 +- crates/re_viewer/src/lib.rs | 10 +- crates/re_viewer/src/math.rs | 124 ------------------ crates/re_viewer/src/misc/mod.rs | 19 --- crates/re_viewer/src/misc/queries.rs | 29 ---- crates/re_viewer/src/{misc => }/profiler.rs | 0 crates/re_viewer/src/ui/blueprint.rs | 4 +- crates/re_viewer/src/ui/blueprint_load.rs | 14 +- crates/re_viewer/src/ui/blueprint_sync.rs | 14 +- crates/re_viewer/src/ui/mod.rs | 20 --- crates/re_viewer/src/ui/selection_panel.rs | 18 +-- crates/re_viewport/Cargo.toml | 36 ++++- .../src/ui => re_viewport/src}/auto_layout.rs | 0 .../src/blueprint_components/mod.rs | 9 ++ .../src/blueprint_components/space_view.rs | 5 +- .../src/blueprint_components/viewport.rs | 2 +- .../ui => re_viewport/src}/data_blueprint.rs | 0 .../src}/instance_hash_conversions.rs | 0 crates/re_viewport/src/lib.rs | 92 +++++++++++++ .../misc => re_viewport/src}/mesh_cache.rs | 0 .../misc => re_viewport/src}/mesh_loader.rs | 0 .../misc => re_viewport/src}/space_info.rs | 2 +- .../src/ui => re_viewport/src}/space_view.rs | 53 ++------ .../src/space_view_controls.rs} | 0 .../src}/space_view_entity_picker.rs | 7 +- .../src}/space_view_heuristics.rs | 7 +- .../src}/space_view_highlights.rs | 2 +- .../src}/transform_cache.rs | 2 +- .../src}/view_bar_chart/mod.rs | 0 .../src}/view_bar_chart/scene.rs | 0 .../src}/view_bar_chart/ui.rs | 2 +- .../ui => re_viewport/src}/view_category.rs | 0 .../src}/view_spatial/eye.rs | 2 +- .../src}/view_spatial/mod.rs | 0 .../src}/view_spatial/scene/mod.rs | 5 +- .../src}/view_spatial/scene/picking.rs | 3 +- .../src}/view_spatial/scene/primitives.rs | 2 +- .../view_spatial/scene/scene_part/arrows3d.rs | 5 +- .../view_spatial/scene/scene_part/boxes2d.rs | 5 +- .../view_spatial/scene/scene_part/boxes3d.rs | 5 +- .../view_spatial/scene/scene_part/cameras.rs | 9 +- .../view_spatial/scene/scene_part/images.rs | 14 +- .../view_spatial/scene/scene_part/lines2d.rs | 5 +- .../view_spatial/scene/scene_part/lines3d.rs | 5 +- .../view_spatial/scene/scene_part/meshes.rs | 6 +- .../src}/view_spatial/scene/scene_part/mod.rs | 4 +- .../view_spatial/scene/scene_part/points2d.rs | 5 +- .../view_spatial/scene/scene_part/points3d.rs | 5 +- .../src}/view_spatial/space_camera_3d.rs | 0 .../ui => re_viewport/src}/view_spatial/ui.rs | 6 +- .../src}/view_spatial/ui_2d.rs | 14 +- .../src}/view_spatial/ui_3d.rs | 27 ++-- .../src}/view_spatial/ui_renderer_bridge.rs | 0 .../ui => re_viewport/src}/view_tensor/mod.rs | 0 .../src}/view_tensor/scene.rs | 0 .../view_tensor/tensor_dimension_mapper.rs | 0 .../src}/view_tensor/tensor_slice_to_gpu.rs | 0 .../ui => re_viewport/src}/view_tensor/ui.rs | 0 .../ui => re_viewport/src}/view_text/mod.rs | 0 .../ui => re_viewport/src}/view_text/scene.rs | 0 .../ui => re_viewport/src}/view_text/ui.rs | 0 .../src}/view_text_box/mod.rs | 0 .../src}/view_text_box/scene.rs | 0 .../src}/view_text_box/ui.rs | 0 .../src}/view_time_series/mod.rs | 0 .../src}/view_time_series/scene.rs | 0 .../src}/view_time_series/ui.rs | 4 +- .../src/ui => re_viewport/src}/viewport.rs | 46 +++---- rerun_py/Cargo.toml | 4 +- rerun_py/src/python_bridge.rs | 10 +- 73 files changed, 337 insertions(+), 388 deletions(-) delete mode 100644 crates/re_viewer/src/math.rs delete mode 100644 crates/re_viewer/src/misc/mod.rs delete mode 100644 crates/re_viewer/src/misc/queries.rs rename crates/re_viewer/src/{misc => }/profiler.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/auto_layout.rs (100%) create mode 100644 crates/re_viewport/src/blueprint_components/mod.rs rename crates/{re_viewer => re_viewport}/src/blueprint_components/space_view.rs (95%) rename crates/{re_viewer => re_viewport}/src/blueprint_components/viewport.rs (99%) rename crates/{re_viewer/src/ui => re_viewport/src}/data_blueprint.rs (100%) rename crates/{re_viewer/src/misc => re_viewport/src}/instance_hash_conversions.rs (100%) rename crates/{re_viewer/src/misc => re_viewport/src}/mesh_cache.rs (100%) rename crates/{re_viewer/src/misc => re_viewport/src}/mesh_loader.rs (100%) rename crates/{re_viewer/src/misc => re_viewport/src}/space_info.rs (99%) rename crates/{re_viewer/src/ui => re_viewport/src}/space_view.rs (90%) rename crates/{re_viewer/src/ui/spaceview_controls.rs => re_viewport/src/space_view_controls.rs} (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/space_view_entity_picker.rs (99%) rename crates/{re_viewer/src/ui => re_viewport/src}/space_view_heuristics.rs (98%) rename crates/{re_viewer/src/misc => re_viewport/src}/space_view_highlights.rs (99%) rename crates/{re_viewer/src/misc => re_viewport/src}/transform_cache.rs (99%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_bar_chart/mod.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_bar_chart/scene.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_bar_chart/ui.rs (99%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_category.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/eye.rs (99%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/mod.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/scene/mod.rs (98%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/scene/picking.rs (99%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/scene/primitives.rs (98%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/scene/scene_part/arrows3d.rs (96%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/scene/scene_part/boxes2d.rs (98%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/scene/scene_part/boxes3d.rs (96%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/scene/scene_part/cameras.rs (97%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/scene/scene_part/images.rs (97%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/scene/scene_part/lines2d.rs (96%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/scene/scene_part/lines3d.rs (95%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/scene/scene_part/meshes.rs (94%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/scene/scene_part/mod.rs (98%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/scene/scene_part/points2d.rs (97%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/scene/scene_part/points3d.rs (98%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/space_camera_3d.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/ui.rs (99%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/ui_2d.rs (98%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/ui_3d.rs (97%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_spatial/ui_renderer_bridge.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_tensor/mod.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_tensor/scene.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_tensor/tensor_dimension_mapper.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_tensor/tensor_slice_to_gpu.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_tensor/ui.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_text/mod.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_text/scene.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_text/ui.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_text_box/mod.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_text_box/scene.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_text_box/ui.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_time_series/mod.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_time_series/scene.rs (100%) rename crates/{re_viewer/src/ui => re_viewport/src}/view_time_series/ui.rs (99%) rename crates/{re_viewer/src/ui => re_viewport/src}/viewport.rs (95%) diff --git a/Cargo.lock b/Cargo.lock index ab01112d7152..a1deb44f79fc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4355,18 +4355,43 @@ dependencies = [ name = "re_viewport" version = "0.7.0-alpha.0" dependencies = [ + "ahash 0.8.3", + "anyhow", + "arrow2", + "arrow2_convert", + "bytemuck", + "eframe", "egui", + "egui_extras", + "egui_tiles", + "enumset", + "glam", + "half 2.2.1", + "image", "itertools", + "lazy_static", + "macaw", + "ndarray", + "nohash-hasher", "puffin", "re_arrow_store", "re_data_store", "re_data_ui", + "re_error", + "re_format", + "re_log", "re_log_types", + "re_query", + "re_renderer", + "re_tensor_ops", + "re_time_panel", "re_ui", "re_viewer_context", "serde", - "time", - "vec1", + "slotmap", + "smallvec", + "thiserror", + "wgpu", ] [[package]] @@ -4535,6 +4560,8 @@ dependencies = [ "re_log_types", "re_memory", "re_viewer", + "re_viewer_context", + "re_viewport", "re_web_viewer_server", "re_ws_comms", "rerun", diff --git a/crates/re_arrow_store/src/store_helpers.rs b/crates/re_arrow_store/src/store_helpers.rs index 1cf79b6ac05a..63961bec15a6 100644 --- a/crates/re_arrow_store/src/store_helpers.rs +++ b/crates/re_arrow_store/src/store_helpers.rs @@ -48,6 +48,27 @@ impl DataStore { component } + /// Call `query_latest_component` at the given path, walking up the hierarchy until an instance is found. + pub fn query_latest_component_at_closest_ancestor( + &self, + entity_path: &EntityPath, + query: &LatestAtQuery, + ) -> Option<(EntityPath, C)> + where + for<'b> &'b C::ArrayType: IntoIterator, + { + crate::profile_function!(); + + let mut cur_path = Some(entity_path.clone()); + while let Some(path) = cur_path { + if let Some(component) = self.query_latest_component::(&path, query) { + return Some((path, component)); + } + cur_path = path.parent(); + } + None + } + /// Get the latest value for a given [`re_log_types::Component`], assuming it is timeless. /// /// This assumes that the row we get from the store only contains a single instance for this diff --git a/crates/re_viewer/src/app.rs b/crates/re_viewer/src/app.rs index a13e6f748dca..2a21345203c9 100644 --- a/crates/re_viewer/src/app.rs +++ b/crates/re_viewer/src/app.rs @@ -5,6 +5,7 @@ use anyhow::Context; use egui::NumExt as _; use itertools::Itertools as _; use poll_promise::Promise; +use re_viewport::ViewportState; use web_time::Instant; use re_arrow_store::{DataStoreConfig, DataStoreStats}; @@ -18,10 +19,7 @@ use re_viewer_context::{ AppOptions, Caches, ComponentUiRegistry, PlayState, RecordingConfig, ViewerContext, }; -use crate::{ - ui::{Blueprint, ViewportState}, - viewer_analytics::ViewerAnalytics, -}; +use crate::{ui::Blueprint, viewer_analytics::ViewerAnalytics}; #[cfg(not(target_arch = "wasm32"))] use re_log_types::TimeRangeF; diff --git a/crates/re_viewer/src/blueprint_components/mod.rs b/crates/re_viewer/src/blueprint_components/mod.rs index 7cf5988e9112..51d8db096ca6 100644 --- a/crates/re_viewer/src/blueprint_components/mod.rs +++ b/crates/re_viewer/src/blueprint_components/mod.rs @@ -1,6 +1,3 @@ //! Potentially user-facing components to be used in blueprints. -// TODO(jleibs): These should live in their own crate so we don't need a -// viewer dep in order to make use of them. + pub mod panel; -pub mod space_view; -pub mod viewport; diff --git a/crates/re_viewer/src/lib.rs b/crates/re_viewer/src/lib.rs index 21661c7c7c10..7ba4a696ba5b 100644 --- a/crates/re_viewer/src/lib.rs +++ b/crates/re_viewer/src/lib.rs @@ -6,19 +6,15 @@ mod app; pub mod blueprint_components; pub mod env_vars; -pub mod math; -mod misc; +#[cfg(not(target_arch = "wasm32"))] +mod profiler; mod remote_viewer_app; mod ui; mod viewer_analytics; -pub(crate) use misc::mesh_loader; use re_log_types::PythonVersion; pub(crate) use ui::{memory_panel, selection_panel}; -// TODO(jleibs): Do we want to expose this -pub use ui::{SpaceViewBlueprint, ViewCategory}; - pub use app::{App, StartupOptions}; pub use remote_viewer_app::RemoteViewerApp; @@ -37,7 +33,7 @@ mod native; pub use native::{run_native_app, run_native_viewer_with_messages}; #[cfg(not(target_arch = "wasm32"))] -pub use misc::profiler::Profiler; +pub use profiler::Profiler; // ---------------------------------------------------------------------------- // When compiling for web: diff --git a/crates/re_viewer/src/math.rs b/crates/re_viewer/src/math.rs deleted file mode 100644 index 8dc020af35cf..000000000000 --- a/crates/re_viewer/src/math.rs +++ /dev/null @@ -1,124 +0,0 @@ -pub use egui::emath::{remap, remap_clamp, Rect}; - -pub use macaw::BoundingBox; - -pub fn line_segment_distance_sq_to_point_2d([a, b]: [glam::Vec2; 2], p: glam::Vec2) -> f32 { - let l2 = a.distance_squared(b); - if l2 == 0.0 { - a.distance_squared(p) - } else { - let t = ((p - a).dot(b - a) / l2).clamp(0.0, 1.0); - let projection = a + t * (b - a); - p.distance_squared(projection) - } -} - -pub fn line_segment_distance_sq_to_point_3d([a, b]: [glam::Vec3; 2], p: glam::Vec3) -> f32 { - let l2 = a.distance_squared(b); - if l2 == 0.0 { - a.distance_squared(p) - } else { - let t = ((p - a).dot(b - a) / l2).clamp(0.0, 1.0); - let projection = a + t * (b - a); - p.distance_squared(projection) - } -} - -pub fn line_segment_distance_to_point_3d([a, b]: [glam::Vec3; 2], p: glam::Vec3) -> f32 { - line_segment_distance_sq_to_point_3d([a, b], p).sqrt() -} - -/// Compute the distance between a ray and a line segment. -/// -/// Returns the ray offset at which the ray is closest to the line segment. -/// (i.e. the closest point then is at `ray.origin + ray.dir * ray_closest_t_line_segment(...)`) -pub fn ray_closest_t_line_segment(ray: &macaw::Ray3, [a, b]: [glam::Vec3; 2]) -> f32 { - let (t_ray, t_segment) = ray.closest_ts(&macaw::Ray3::from_origin_dir(a, b - a)); - if t_ray.is_nan() || t_segment < 0.0 { - ray.closest_t_to_point(a) - } else if t_segment > 1.0 { - ray.closest_t_to_point(b) - } else { - t_ray - } -} - -/// Returns the distance the ray traveled of the first intersection or `f32::INFINITY` on miss. -pub fn ray_bbox_intersect(ray: &macaw::Ray3, bbox: &macaw::BoundingBox) -> f32 { - // from https://gamedev.stackexchange.com/a/18459 - - let t1 = (bbox.min.x - ray.origin.x) / ray.dir.x; - let t2 = (bbox.max.x - ray.origin.x) / ray.dir.x; - let t3 = (bbox.min.y - ray.origin.y) / ray.dir.y; - let t4 = (bbox.max.y - ray.origin.y) / ray.dir.y; - let t5 = (bbox.min.z - ray.origin.z) / ray.dir.z; - let t6 = (bbox.max.z - ray.origin.z) / ray.dir.z; - - let tmin = max(max(min(t1, t2), min(t3, t4)), min(t5, t6)); - let tmax = min(min(max(t1, t2), max(t3, t4)), max(t5, t6)); - - if tmax < 0.0 || tmax < tmin { - f32::INFINITY - } else { - tmin - } -} - -fn min(a: f32, b: f32) -> f32 { - a.min(b) -} - -fn max(a: f32, b: f32) -> f32 { - a.max(b) -} - -pub fn ease_out(t: f32) -> f32 { - 1. - (1. - t) * (1. - t) -} - -#[cfg(test)] -mod tests { - use crate::math::ray_closest_t_line_segment; - use glam::vec3; - - #[test] - fn test_ray_closest_t_line_segment() { - let ray_x = macaw::Ray3::from_origin_dir(glam::Vec3::ZERO, glam::Vec3::X); - - // through origin. - assert_eq!( - ray_closest_t_line_segment(&ray_x, [vec3(0.0, 0.0, 1.0), vec3(0.0, 0.0, -1.0)]), - 0.0 - ); - - // behind origin, orthogonal to ray. - assert_eq!( - ray_closest_t_line_segment(&ray_x, [vec3(-1.0, 0.0, 1.0), vec3(-1.0, 0.0, -1.0)]), - -1.0 - ); - - // in front of origin, orthogonal to ray. - assert_eq!( - ray_closest_t_line_segment(&ray_x, [vec3(1.0, 0.0, 1.0), vec3(1.0, 0.0, -1.0)]), - 1.0 - ); - - // parallel to ray, half way in front - assert_eq!( - ray_closest_t_line_segment(&ray_x, [vec3(0.5, 1.0, 0.0), vec3(1.5, 1.0, 0.0)]), - 0.5 - ); - - // parallel to ray, half way behind - assert_eq!( - ray_closest_t_line_segment(&ray_x, [vec3(-0.5, 1.0, 0.0), vec3(-1.5, 1.0, 0.0)]), - -0.5 - ); - - // Degenerated line segment at origin. - assert_eq!( - ray_closest_t_line_segment(&ray_x, [vec3(0.0, 0.0, 0.0), vec3(0.0, 0.0, 0.0)]), - 0.0 - ); - } -} diff --git a/crates/re_viewer/src/misc/mod.rs b/crates/re_viewer/src/misc/mod.rs deleted file mode 100644 index 07ce1c97fedf..000000000000 --- a/crates/re_viewer/src/misc/mod.rs +++ /dev/null @@ -1,19 +0,0 @@ -mod mesh_cache; -pub(crate) mod mesh_loader; -pub mod queries; -pub(crate) mod space_info; -mod space_view_highlights; -mod transform_cache; - -pub mod instance_hash_conversions; - -#[cfg(not(target_arch = "wasm32"))] -pub(crate) mod profiler; - -pub use mesh_cache::MeshCache; -pub use transform_cache::{TransformCache, UnreachableTransform}; - -pub use space_view_highlights::{ - highlights_for_space_view, OptionalSpaceViewEntityHighlight, SpaceViewHighlights, - SpaceViewOutlineMasks, -}; diff --git a/crates/re_viewer/src/misc/queries.rs b/crates/re_viewer/src/misc/queries.rs deleted file mode 100644 index 94ead8e30466..000000000000 --- a/crates/re_viewer/src/misc/queries.rs +++ /dev/null @@ -1,29 +0,0 @@ -use re_arrow_store::LatestAtQuery; -use re_data_store::EntityPath; -use re_log_types::component_types::Pinhole; -use re_viewer_context::ViewerContext; - -/// Find closest entity with a pinhole transform. -pub fn closest_pinhole_transform( - ctx: &ViewerContext<'_>, - entity_path: &EntityPath, - query: &LatestAtQuery, -) -> Option { - crate::profile_function!(); - - let store = &ctx.log_db.entity_db.data_store; - - let mut pinhole_ent_path = None; - let mut cur_path = Some(entity_path.clone()); - while let Some(path) = cur_path { - if store - .query_latest_component::(&path, query) - .is_some() - { - pinhole_ent_path = Some(path); - break; - } - cur_path = path.parent(); - } - pinhole_ent_path -} diff --git a/crates/re_viewer/src/misc/profiler.rs b/crates/re_viewer/src/profiler.rs similarity index 100% rename from crates/re_viewer/src/misc/profiler.rs rename to crates/re_viewer/src/profiler.rs diff --git a/crates/re_viewer/src/ui/blueprint.rs b/crates/re_viewer/src/ui/blueprint.rs index 0adbad7186ff..e1d4cf706db3 100644 --- a/crates/re_viewer/src/ui/blueprint.rs +++ b/crates/re_viewer/src/ui/blueprint.rs @@ -1,9 +1,7 @@ use re_viewer_context::Item; -use crate::misc::space_info::SpaceInfoCollection; use re_viewer_context::ViewerContext; - -use super::{viewport::Viewport, ViewportState}; +use re_viewport::{SpaceInfoCollection, Viewport, ViewportState}; /// Defines the layout of the whole Viewer (or will, eventually). #[derive(Clone, Default, serde::Deserialize, serde::Serialize)] diff --git a/crates/re_viewer/src/ui/blueprint_load.rs b/crates/re_viewer/src/ui/blueprint_load.rs index 7ea188dde9de..1e4632590ac0 100644 --- a/crates/re_viewer/src/ui/blueprint_load.rs +++ b/crates/re_viewer/src/ui/blueprint_load.rs @@ -2,16 +2,16 @@ use ahash::HashMap; use re_data_store::{query_timeless_single, EntityPath}; use re_viewer_context::SpaceViewId; - -use crate::blueprint_components::{ - panel::PanelState, - space_view::SpaceViewComponent, - viewport::{ - AutoSpaceViews, SpaceViewMaximized, SpaceViewVisibility, ViewportLayout, VIEWPORT_PATH, +use re_viewport::{ + blueprint_components::{ + AutoSpaceViews, SpaceViewComponent, SpaceViewMaximized, SpaceViewVisibility, + ViewportLayout, VIEWPORT_PATH, }, + SpaceViewBlueprint, Viewport, }; -use super::{Blueprint, SpaceViewBlueprint, Viewport}; +use super::Blueprint; +use crate::blueprint_components::panel::PanelState; impl Blueprint { pub fn from_db(egui_ctx: &egui::Context, blueprint_db: &re_data_store::LogDb) -> Self { diff --git a/crates/re_viewer/src/ui/blueprint_sync.rs b/crates/re_viewer/src/ui/blueprint_sync.rs index f39b9a912250..41ea173f8497 100644 --- a/crates/re_viewer/src/ui/blueprint_sync.rs +++ b/crates/re_viewer/src/ui/blueprint_sync.rs @@ -2,16 +2,16 @@ use arrow2_convert::field::ArrowField; use re_data_store::store_one_component; use re_log_types::{Component, DataCell, DataRow, EntityPath, RowId, TimePoint}; use re_viewer_context::SpaceViewId; - -use crate::blueprint_components::{ - panel::PanelState, - space_view::SpaceViewComponent, - viewport::{ - AutoSpaceViews, SpaceViewMaximized, SpaceViewVisibility, ViewportLayout, VIEWPORT_PATH, +use re_viewport::{ + blueprint_components::{ + AutoSpaceViews, SpaceViewComponent, SpaceViewMaximized, SpaceViewVisibility, + ViewportLayout, VIEWPORT_PATH, }, + SpaceViewBlueprint, Viewport, }; -use super::{Blueprint, SpaceViewBlueprint, Viewport}; +use super::Blueprint; +use crate::blueprint_components::panel::PanelState; // Resolving and applying updates impl Blueprint { diff --git a/crates/re_viewer/src/ui/mod.rs b/crates/re_viewer/src/ui/mod.rs index 298afe075d0c..60dfdd50bd1a 100644 --- a/crates/re_viewer/src/ui/mod.rs +++ b/crates/re_viewer/src/ui/mod.rs @@ -1,31 +1,11 @@ -mod auto_layout; mod blueprint; mod blueprint_load; mod blueprint_sync; -mod data_blueprint; mod selection_history_ui; -mod space_view; -mod space_view_entity_picker; -mod space_view_heuristics; -mod spaceview_controls; -mod view_bar_chart; -mod view_category; -mod view_tensor; -mod view_text; -mod view_text_box; -mod view_time_series; -mod viewport; pub(crate) mod memory_panel; pub(crate) mod selection_panel; -pub mod view_spatial; - // ---- pub(crate) use self::blueprint::Blueprint; -// TODO(jleibs) should we avoid leaking this? -pub use self::space_view::{item_ui, SpaceViewBlueprint}; - -pub use self::view_category::ViewCategory; -pub use self::viewport::{Viewport, ViewportState, VisibilitySet}; diff --git a/crates/re_viewer/src/ui/selection_panel.rs b/crates/re_viewer/src/ui/selection_panel.rs index eb19ba6c9874..363f296a5db4 100644 --- a/crates/re_viewer/src/ui/selection_panel.rs +++ b/crates/re_viewer/src/ui/selection_panel.rs @@ -7,13 +7,11 @@ use re_log_types::{ TimeType, }; use re_viewer_context::{Item, SpaceViewId, UiVerbosity, ViewerContext}; +use re_viewport::{SpaceViewState, SpatialNavigationMode, Viewport, ViewportState}; use crate::ui::Blueprint; -use super::{ - selection_history_ui::SelectionHistoryUi, space_view::SpaceViewState, - view_spatial::SpatialNavigationMode, Viewport, ViewportState, -}; +use super::selection_history_ui::SelectionHistoryUi; // --- @@ -177,7 +175,7 @@ fn what_is_selected_ui( if let Some(space_view_id) = space_view_id { if let Some(space_view) = viewport.space_view_mut(space_view_id) { ui.label("in Space View:"); - super::item_ui::space_view_button(ctx, ui, space_view); + re_viewport::item_ui::space_view_button(ctx, ui, space_view); ui.end_row(); } } @@ -203,7 +201,7 @@ fn what_is_selected_ui( ui.end_row(); ui.label("in Space View:"); - super::item_ui::space_view_button_to( + re_viewport::item_ui::space_view_button_to( ctx, ui, space_view.display_name.clone(), @@ -490,8 +488,12 @@ fn depth_props_ui( if tensor.meaning != TensorDataMeaning::Depth { return Some(()); } - let pinhole_ent_path = - crate::misc::queries::closest_pinhole_transform(ctx, entity_path, &query)?; + let pinhole_ent_path = ctx + .log_db + .entity_db + .data_store + .query_latest_component_at_closest_ancestor::(entity_path, &query)? + .0; let mut backproject_depth = *entity_props.backproject_depth.get(); diff --git a/crates/re_viewport/Cargo.toml b/crates/re_viewport/Cargo.toml index be75a0ef7e7b..05bfa728eeca 100644 --- a/crates/re_viewport/Cargo.toml +++ b/crates/re_viewport/Cargo.toml @@ -17,17 +17,45 @@ all-features = true [dependencies] re_arrow_store.workspace = true -re_data_store.workspace = true +re_data_store = { workspace = true, features = ["serde"] } re_data_ui.workspace = true -re_log_types.workspace = true +re_error.workspace = true +re_format.workspace = true +re_log_types = { workspace = true, features = ["ecolor", "glam", "image"] } +re_log.workspace = true +re_query.workspace = true +re_renderer.workspace = true +re_tensor_ops.workspace = true +re_time_panel.workspace = true # TODO(andreas): Unfortunate dependency, caused by `next_grid_tick_magnitude_ns` re_ui.workspace = true re_viewer_context.workspace = true +ahash.workspace = true +anyhow.workspace = true +arrow2.workspace = true +arrow2_convert.workspace = true +bytemuck.workspace = true +eframe.workspace = true +egui_extras.workspace = true +egui_tiles.workspace = true egui.workspace = true +enumset.workspace = true +glam.workspace = true +half.workspace = true +image = { workspace = true, default-features = false, features = [ + "jpeg", + "png", +] } itertools.workspace = true +lazy_static.workspace = true +macaw.workspace = true +ndarray.workspace = true +nohash-hasher = "0.2" serde = "1.0" -time.workspace = true -vec1 = "1.8" +slotmap.workspace = true +smallvec.workspace = true +thiserror.workspace = true +wgpu.workspace = true [target.'cfg(not(target_arch = "wasm32"))'.dependencies] puffin.workspace = true diff --git a/crates/re_viewer/src/ui/auto_layout.rs b/crates/re_viewport/src/auto_layout.rs similarity index 100% rename from crates/re_viewer/src/ui/auto_layout.rs rename to crates/re_viewport/src/auto_layout.rs diff --git a/crates/re_viewport/src/blueprint_components/mod.rs b/crates/re_viewport/src/blueprint_components/mod.rs new file mode 100644 index 000000000000..f13f0f6e6601 --- /dev/null +++ b/crates/re_viewport/src/blueprint_components/mod.rs @@ -0,0 +1,9 @@ +//! Potentially user-facing components to be used in blueprints. + +mod space_view; +mod viewport; + +pub use space_view::SpaceViewComponent; +pub use viewport::{ + AutoSpaceViews, SpaceViewMaximized, SpaceViewVisibility, ViewportLayout, VIEWPORT_PATH, +}; diff --git a/crates/re_viewer/src/blueprint_components/space_view.rs b/crates/re_viewport/src/blueprint_components/space_view.rs similarity index 95% rename from crates/re_viewer/src/blueprint_components/space_view.rs rename to crates/re_viewport/src/blueprint_components/space_view.rs index ccd4fbda9db1..a12f0ca2791c 100644 --- a/crates/re_viewer/src/blueprint_components/space_view.rs +++ b/crates/re_viewport/src/blueprint_components/space_view.rs @@ -2,7 +2,7 @@ use arrow2_convert::{ArrowDeserialize, ArrowField, ArrowSerialize}; use re_data_store::ComponentName; use re_log_types::{serde_field::SerdeField, Component}; -use crate::ui::SpaceViewBlueprint; +use crate::space_view::SpaceViewBlueprint; /// A [`SpaceViewBlueprint`] /// @@ -44,8 +44,9 @@ impl std::fmt::Debug for SpaceViewComponent { #[test] fn test_spaceview() { - use crate::ui::ViewCategory; + use crate::view_category::ViewCategory; use arrow2_convert::{deserialize::TryIntoCollection, serialize::TryIntoArrow}; + let space_view = SpaceViewBlueprint::new(ViewCategory::Spatial, &"foo".into(), &["foo/bar".into()]); diff --git a/crates/re_viewer/src/blueprint_components/viewport.rs b/crates/re_viewport/src/blueprint_components/viewport.rs similarity index 99% rename from crates/re_viewer/src/blueprint_components/viewport.rs rename to crates/re_viewport/src/blueprint_components/viewport.rs index 85027b41508f..514c07d01fdc 100644 --- a/crates/re_viewer/src/blueprint_components/viewport.rs +++ b/crates/re_viewport/src/blueprint_components/viewport.rs @@ -5,7 +5,7 @@ use re_log_types::{serde_field::SerdeField, Component}; pub use re_viewer_context::SpaceViewId; -use crate::ui::VisibilitySet; +use crate::viewport::VisibilitySet; pub const VIEWPORT_PATH: &str = "viewport"; diff --git a/crates/re_viewer/src/ui/data_blueprint.rs b/crates/re_viewport/src/data_blueprint.rs similarity index 100% rename from crates/re_viewer/src/ui/data_blueprint.rs rename to crates/re_viewport/src/data_blueprint.rs diff --git a/crates/re_viewer/src/misc/instance_hash_conversions.rs b/crates/re_viewport/src/instance_hash_conversions.rs similarity index 100% rename from crates/re_viewer/src/misc/instance_hash_conversions.rs rename to crates/re_viewport/src/instance_hash_conversions.rs diff --git a/crates/re_viewport/src/lib.rs b/crates/re_viewport/src/lib.rs index 64ff9bddd8f8..e8583600af2e 100644 --- a/crates/re_viewport/src/lib.rs +++ b/crates/re_viewport/src/lib.rs @@ -1,3 +1,95 @@ //! Rerun Viewport Panel //! //! This crate provides the central panel that contains all space views. + +mod auto_layout; +mod data_blueprint; +mod instance_hash_conversions; +mod mesh_cache; +mod mesh_loader; +mod space_info; +mod space_view; +mod space_view_controls; +mod space_view_entity_picker; +mod space_view_heuristics; +mod space_view_highlights; +mod transform_cache; +mod view_bar_chart; +mod view_category; +mod view_spatial; +mod view_tensor; +mod view_text; +mod view_text_box; +mod view_time_series; +mod viewport; + +pub mod blueprint_components; + +pub use space_info::SpaceInfoCollection; +pub use space_view::{SpaceViewBlueprint, SpaceViewState}; +pub use view_category::ViewCategory; +pub use view_spatial::SpatialNavigationMode; // TODO(andreas): Remove, have two kinds of space views instead. +pub use viewport::{Viewport, ViewportState}; + +// --------------------------------------------------------------------------- + +// TODO(andreas): This should be part of re_data_ui::item_ui. +pub mod item_ui { + use re_data_ui::item_ui; + use re_viewer_context::{Item, SpaceViewId, ViewerContext}; + + use crate::{space_view::SpaceViewBlueprint, view_category::ViewCategory}; + + pub fn space_view_button( + ctx: &mut ViewerContext<'_>, + ui: &mut egui::Ui, + space_view: &SpaceViewBlueprint, + ) -> egui::Response { + space_view_button_to( + ctx, + ui, + space_view.display_name.clone(), + space_view.id, + space_view.category, + ) + } + + pub fn space_view_button_to( + ctx: &mut ViewerContext<'_>, + ui: &mut egui::Ui, + text: impl Into, + space_view_id: SpaceViewId, + space_view_category: ViewCategory, + ) -> egui::Response { + let item = Item::SpaceView(space_view_id); + let is_selected = ctx.selection().contains(&item); + + let response = ctx + .re_ui + .selectable_label_with_icon(ui, space_view_category.icon(), text, is_selected) + .on_hover_text("Space View"); + item_ui::cursor_interact_with_selectable(ctx.selection_state_mut(), response, item) + } +} + +// --------------------------------------------------------------------------- + +/// Profiling macro for feature "puffin" +#[doc(hidden)] +#[macro_export] +macro_rules! profile_function { + ($($arg: tt)*) => { + #[cfg(not(target_arch = "wasm32"))] + puffin::profile_function!($($arg)*); + }; +} + +/// Profiling macro for feature "puffin" +#[doc(hidden)] +#[macro_export] +macro_rules! profile_scope { + ($($arg: tt)*) => { + #[cfg(not(target_arch = "wasm32"))] + puffin::profile_scope!($($arg)*); + }; +} diff --git a/crates/re_viewer/src/misc/mesh_cache.rs b/crates/re_viewport/src/mesh_cache.rs similarity index 100% rename from crates/re_viewer/src/misc/mesh_cache.rs rename to crates/re_viewport/src/mesh_cache.rs diff --git a/crates/re_viewer/src/misc/mesh_loader.rs b/crates/re_viewport/src/mesh_loader.rs similarity index 100% rename from crates/re_viewer/src/misc/mesh_loader.rs rename to crates/re_viewport/src/mesh_loader.rs diff --git a/crates/re_viewer/src/misc/space_info.rs b/crates/re_viewport/src/space_info.rs similarity index 99% rename from crates/re_viewer/src/misc/space_info.rs rename to crates/re_viewport/src/space_info.rs index e279f3680af0..9b8d9fa0c0ae 100644 --- a/crates/re_viewer/src/misc/space_info.rs +++ b/crates/re_viewport/src/space_info.rs @@ -6,7 +6,7 @@ use re_arrow_store::{LatestAtQuery, TimeInt, Timeline}; use re_data_store::{log_db::EntityDb, EntityPath, EntityTree}; use re_log_types::component_types::{DisconnectedSpace, Pinhole, Transform3D}; -use super::UnreachableTransform; +use crate::transform_cache::UnreachableTransform; /// Transform connecting two space paths. #[derive(Clone, Debug)] diff --git a/crates/re_viewer/src/ui/space_view.rs b/crates/re_viewport/src/space_view.rs similarity index 90% rename from crates/re_viewer/src/ui/space_view.rs rename to crates/re_viewport/src/space_view.rs index 9295da3d75c1..03df907adac9 100644 --- a/crates/re_viewer/src/ui/space_view.rs +++ b/crates/re_viewport/src/space_view.rs @@ -4,14 +4,14 @@ use re_renderer::ScreenshotProcessor; use re_viewer_context::{SpaceViewId, ViewerContext}; use crate::{ - misc::{space_info::SpaceInfoCollection, SpaceViewHighlights, TransformCache}, - ui::view_category::categorize_entity_path, -}; - -use super::{ - data_blueprint::DataBlueprintTree, space_view_heuristics::default_queried_entities, - view_bar_chart, view_category::ViewCategory, view_spatial, view_tensor, view_text, - view_text_box, view_time_series, + data_blueprint::DataBlueprintTree, + space_info::SpaceInfoCollection, + space_view_heuristics::default_queried_entities, + space_view_highlights::SpaceViewHighlights, + transform_cache::TransformCache, + view_bar_chart, + view_category::{categorize_entity_path, ViewCategory}, + view_spatial, view_tensor, view_text, view_text_box, view_time_series, }; // ---------------------------------------------------------------------------- @@ -445,40 +445,3 @@ impl SpaceViewState { }); } } - -// TODO(andreas): This should be part of re_data_ui::item_ui. -pub mod item_ui { - use re_data_ui::item_ui; - use re_viewer_context::{Item, SpaceViewId, ViewerContext}; - - pub fn space_view_button( - ctx: &mut ViewerContext<'_>, - ui: &mut egui::Ui, - space_view: &crate::ui::SpaceViewBlueprint, - ) -> egui::Response { - space_view_button_to( - ctx, - ui, - space_view.display_name.clone(), - space_view.id, - space_view.category, - ) - } - - pub fn space_view_button_to( - ctx: &mut ViewerContext<'_>, - ui: &mut egui::Ui, - text: impl Into, - space_view_id: SpaceViewId, - space_view_category: crate::ui::ViewCategory, - ) -> egui::Response { - let item = Item::SpaceView(space_view_id); - let is_selected = ctx.selection().contains(&item); - - let response = ctx - .re_ui - .selectable_label_with_icon(ui, space_view_category.icon(), text, is_selected) - .on_hover_text("Space View"); - item_ui::cursor_interact_with_selectable(ctx.selection_state_mut(), response, item) - } -} diff --git a/crates/re_viewer/src/ui/spaceview_controls.rs b/crates/re_viewport/src/space_view_controls.rs similarity index 100% rename from crates/re_viewer/src/ui/spaceview_controls.rs rename to crates/re_viewport/src/space_view_controls.rs diff --git a/crates/re_viewer/src/ui/space_view_entity_picker.rs b/crates/re_viewport/src/space_view_entity_picker.rs similarity index 99% rename from crates/re_viewer/src/ui/space_view_entity_picker.rs rename to crates/re_viewport/src/space_view_entity_picker.rs index 6557dcc34057..c9831fce4d68 100644 --- a/crates/re_viewer/src/ui/space_view_entity_picker.rs +++ b/crates/re_viewport/src/space_view_entity_picker.rs @@ -5,11 +5,10 @@ use re_data_store::{EntityPath, EntityTree, InstancePath}; use re_data_ui::item_ui; use re_viewer_context::{SpaceViewId, ViewerContext}; -use crate::misc::space_info::SpaceInfoCollection; - -use super::{ +use crate::{ + space_info::SpaceInfoCollection, + space_view::SpaceViewBlueprint, view_category::{categorize_entity_path, ViewCategory}, - SpaceViewBlueprint, }; /// Window for adding/removing entities from a space view. diff --git a/crates/re_viewer/src/ui/space_view_heuristics.rs b/crates/re_viewport/src/space_view_heuristics.rs similarity index 98% rename from crates/re_viewer/src/ui/space_view_heuristics.rs rename to crates/re_viewport/src/space_view_heuristics.rs index 4a42933e639f..031525a1ca3b 100644 --- a/crates/re_viewer/src/ui/space_view_heuristics.rs +++ b/crates/re_viewport/src/space_view_heuristics.rs @@ -12,12 +12,11 @@ use re_log_types::{ use re_viewer_context::ViewerContext; use crate::{ - misc::space_info::SpaceInfoCollection, - ui::{view_category::categorize_entity_path, ViewCategory}, + space_info::SpaceInfoCollection, + space_view::SpaceViewBlueprint, + view_category::{categorize_entity_path, ViewCategory, ViewCategorySet}, }; -use super::{view_category::ViewCategorySet, SpaceViewBlueprint}; - /// List out all space views we allow the user to create. pub fn all_possible_space_views( ctx: &ViewerContext<'_>, diff --git a/crates/re_viewer/src/misc/space_view_highlights.rs b/crates/re_viewport/src/space_view_highlights.rs similarity index 99% rename from crates/re_viewer/src/misc/space_view_highlights.rs rename to crates/re_viewport/src/space_view_highlights.rs index 9342db046001..47dfc47c8bbd 100644 --- a/crates/re_viewer/src/misc/space_view_highlights.rs +++ b/crates/re_viewport/src/space_view_highlights.rs @@ -9,7 +9,7 @@ use re_viewer_context::{ HoverHighlight, InteractionHighlight, Item, SelectionHighlight, SelectionState, SpaceViewId, }; -use crate::ui::SpaceViewBlueprint; +use super::space_view::SpaceViewBlueprint; /// Highlights of a specific entity path in a specific space view. /// diff --git a/crates/re_viewer/src/misc/transform_cache.rs b/crates/re_viewport/src/transform_cache.rs similarity index 99% rename from crates/re_viewer/src/misc/transform_cache.rs rename to crates/re_viewport/src/transform_cache.rs index ad414a495c74..1ed7590df77d 100644 --- a/crates/re_viewer/src/misc/transform_cache.rs +++ b/crates/re_viewport/src/transform_cache.rs @@ -219,7 +219,7 @@ impl TransformCache { /// Retrieves the transform of on entity from its local system to the space of the reference. /// /// Returns None if the path is not reachable. - pub fn reference_from_entity(&self, ent_path: &EntityPath) -> Option { + pub fn reference_from_entity(&self, ent_path: &EntityPath) -> Option { self.transform_per_entity .get(ent_path) .map(|i| i.reference_from_entity) diff --git a/crates/re_viewer/src/ui/view_bar_chart/mod.rs b/crates/re_viewport/src/view_bar_chart/mod.rs similarity index 100% rename from crates/re_viewer/src/ui/view_bar_chart/mod.rs rename to crates/re_viewport/src/view_bar_chart/mod.rs diff --git a/crates/re_viewer/src/ui/view_bar_chart/scene.rs b/crates/re_viewport/src/view_bar_chart/scene.rs similarity index 100% rename from crates/re_viewer/src/ui/view_bar_chart/scene.rs rename to crates/re_viewport/src/view_bar_chart/scene.rs diff --git a/crates/re_viewer/src/ui/view_bar_chart/ui.rs b/crates/re_viewport/src/view_bar_chart/ui.rs similarity index 99% rename from crates/re_viewer/src/ui/view_bar_chart/ui.rs rename to crates/re_viewport/src/view_bar_chart/ui.rs index 2fe39f0539de..2e95062574ca 100644 --- a/crates/re_viewer/src/ui/view_bar_chart/ui.rs +++ b/crates/re_viewport/src/view_bar_chart/ui.rs @@ -7,7 +7,7 @@ use re_log::warn_once; use re_log_types::component_types; use re_viewer_context::{auto_color, ViewerContext}; -use crate::ui::spaceview_controls::{ +use crate::space_view_controls::{ HORIZONTAL_SCROLL_MODIFIER, SELECTION_RECT_ZOOM_BUTTON, ZOOM_SCROLL_MODIFIER, }; diff --git a/crates/re_viewer/src/ui/view_category.rs b/crates/re_viewport/src/view_category.rs similarity index 100% rename from crates/re_viewer/src/ui/view_category.rs rename to crates/re_viewport/src/view_category.rs diff --git a/crates/re_viewer/src/ui/view_spatial/eye.rs b/crates/re_viewport/src/view_spatial/eye.rs similarity index 99% rename from crates/re_viewer/src/ui/view_spatial/eye.rs rename to crates/re_viewport/src/view_spatial/eye.rs index 8fe00c8e0e31..70b80e2f912f 100644 --- a/crates/re_viewer/src/ui/view_spatial/eye.rs +++ b/crates/re_viewport/src/view_spatial/eye.rs @@ -2,7 +2,7 @@ use egui::{lerp, NumExt as _, Rect}; use glam::Affine3A; use macaw::{vec3, IsoTransform, Mat4, Quat, Vec3}; -use crate::ui::spaceview_controls::{ +use crate::space_view_controls::{ DRAG_PAN3D_BUTTON, ROLL_MOUSE, ROLL_MOUSE_ALT, ROLL_MOUSE_MODIFIER, ROTATE3D_BUTTON, SLOW_DOWN_3D_MODIFIER, SPEED_UP_3D_MODIFIER, }; diff --git a/crates/re_viewer/src/ui/view_spatial/mod.rs b/crates/re_viewport/src/view_spatial/mod.rs similarity index 100% rename from crates/re_viewer/src/ui/view_spatial/mod.rs rename to crates/re_viewport/src/view_spatial/mod.rs diff --git a/crates/re_viewer/src/ui/view_spatial/scene/mod.rs b/crates/re_viewport/src/view_spatial/scene/mod.rs similarity index 98% rename from crates/re_viewer/src/ui/view_spatial/scene/mod.rs rename to crates/re_viewport/src/view_spatial/scene/mod.rs index 4c0564b2d2a7..09c903c82268 100644 --- a/crates/re_viewer/src/ui/view_spatial/scene/mod.rs +++ b/crates/re_viewport/src/view_spatial/scene/mod.rs @@ -14,7 +14,10 @@ use re_log_types::{ use re_renderer::{renderer::TexturedRect, Color32, OutlineMaskPreference, Size}; use re_viewer_context::{auto_color, AnnotationMap, Annotations, SceneQuery, ViewerContext}; -use crate::misc::{mesh_loader::LoadedMesh, SpaceViewHighlights, TransformCache}; +use crate::{ + mesh_loader::LoadedMesh, space_view_highlights::SpaceViewHighlights, + transform_cache::TransformCache, +}; use super::{SpaceCamera3D, SpatialNavigationMode}; diff --git a/crates/re_viewer/src/ui/view_spatial/scene/picking.rs b/crates/re_viewport/src/view_spatial/scene/picking.rs similarity index 99% rename from crates/re_viewer/src/ui/view_spatial/scene/picking.rs rename to crates/re_viewport/src/view_spatial/scene/picking.rs index 2a2c867e5faa..7b760ded3d53 100644 --- a/crates/re_viewer/src/ui/view_spatial/scene/picking.rs +++ b/crates/re_viewport/src/view_spatial/scene/picking.rs @@ -7,8 +7,7 @@ use re_renderer::PickingLayerProcessor; use super::{Image, SceneSpatialPrimitives, SceneSpatialUiData}; use crate::{ - misc::instance_hash_conversions::instance_path_hash_from_picking_layer_id, - ui::view_spatial::eye::Eye, + instance_hash_conversions::instance_path_hash_from_picking_layer_id, view_spatial::eye::Eye, }; #[derive(Clone, PartialEq, Eq)] diff --git a/crates/re_viewer/src/ui/view_spatial/scene/primitives.rs b/crates/re_viewport/src/view_spatial/scene/primitives.rs similarity index 98% rename from crates/re_viewer/src/ui/view_spatial/scene/primitives.rs rename to crates/re_viewport/src/view_spatial/scene/primitives.rs index 2ee35047e5bd..88abec8180b4 100644 --- a/crates/re_viewer/src/ui/view_spatial/scene/primitives.rs +++ b/crates/re_viewport/src/view_spatial/scene/primitives.rs @@ -6,7 +6,7 @@ use re_renderer::{ LineStripSeriesBuilder, PointCloudBuilder, }; -use crate::misc::instance_hash_conversions::picking_layer_id_from_instance_path_hash; +use crate::instance_hash_conversions::picking_layer_id_from_instance_path_hash; use super::MeshSource; diff --git a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/arrows3d.rs b/crates/re_viewport/src/view_spatial/scene/scene_part/arrows3d.rs similarity index 96% rename from crates/re_viewer/src/ui/view_spatial/scene/scene_part/arrows3d.rs rename to crates/re_viewport/src/view_spatial/scene/scene_part/arrows3d.rs index c3420da2b1d6..e389b1b0dcf3 100644 --- a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/arrows3d.rs +++ b/crates/re_viewport/src/view_spatial/scene/scene_part/arrows3d.rs @@ -8,8 +8,9 @@ use re_renderer::{renderer::LineStripFlags, Size}; use re_viewer_context::{DefaultColor, SceneQuery, ViewerContext}; use crate::{ - misc::{SpaceViewHighlights, TransformCache}, - ui::view_spatial::{scene::EntityDepthOffsets, SceneSpatial}, + space_view_highlights::SpaceViewHighlights, + transform_cache::TransformCache, + view_spatial::{scene::EntityDepthOffsets, SceneSpatial}, }; use super::{instance_key_to_picking_id, ScenePart}; diff --git a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/boxes2d.rs b/crates/re_viewport/src/view_spatial/scene/scene_part/boxes2d.rs similarity index 98% rename from crates/re_viewer/src/ui/view_spatial/scene/scene_part/boxes2d.rs rename to crates/re_viewport/src/view_spatial/scene/scene_part/boxes2d.rs index 4ee1a879302e..0e6f5f11d23b 100644 --- a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/boxes2d.rs +++ b/crates/re_viewport/src/view_spatial/scene/scene_part/boxes2d.rs @@ -8,8 +8,9 @@ use re_renderer::Size; use re_viewer_context::{DefaultColor, SceneQuery, ViewerContext}; use crate::{ - misc::{SpaceViewHighlights, TransformCache}, - ui::view_spatial::{ + space_view_highlights::SpaceViewHighlights, + transform_cache::TransformCache, + view_spatial::{ scene::{scene_part::instance_path_hash_for_picking, EntityDepthOffsets}, SceneSpatial, UiLabel, UiLabelTarget, }, diff --git a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/boxes3d.rs b/crates/re_viewport/src/view_spatial/scene/scene_part/boxes3d.rs similarity index 96% rename from crates/re_viewer/src/ui/view_spatial/scene/scene_part/boxes3d.rs rename to crates/re_viewport/src/view_spatial/scene/scene_part/boxes3d.rs index a00a00ceddd4..f915baf85006 100644 --- a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/boxes3d.rs +++ b/crates/re_viewport/src/view_spatial/scene/scene_part/boxes3d.rs @@ -8,8 +8,9 @@ use re_renderer::Size; use re_viewer_context::{DefaultColor, SceneQuery, ViewerContext}; use crate::{ - misc::{SpaceViewHighlights, SpaceViewOutlineMasks, TransformCache}, - ui::view_spatial::{scene::EntityDepthOffsets, SceneSpatial, UiLabel, UiLabelTarget}, + space_view_highlights::{SpaceViewHighlights, SpaceViewOutlineMasks}, + transform_cache::TransformCache, + view_spatial::{scene::EntityDepthOffsets, SceneSpatial, UiLabel, UiLabelTarget}, }; use super::{instance_key_to_picking_id, instance_path_hash_for_picking, ScenePart}; diff --git a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/cameras.rs b/crates/re_viewport/src/view_spatial/scene/scene_part/cameras.rs similarity index 97% rename from crates/re_viewer/src/ui/view_spatial/scene/scene_part/cameras.rs rename to crates/re_viewport/src/view_spatial/scene/scene_part/cameras.rs index 258d7a636964..ed68f3cfc6c9 100644 --- a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/cameras.rs +++ b/crates/re_viewport/src/view_spatial/scene/scene_part/cameras.rs @@ -9,11 +9,10 @@ use re_viewer_context::TimeControl; use re_viewer_context::{SceneQuery, ViewerContext}; use crate::{ - misc::{ - instance_hash_conversions::picking_layer_id_from_instance_path_hash, SpaceViewHighlights, - SpaceViewOutlineMasks, TransformCache, - }, - ui::view_spatial::{scene::EntityDepthOffsets, SceneSpatial, SpaceCamera3D}, + instance_hash_conversions::picking_layer_id_from_instance_path_hash, + space_view_highlights::{SpaceViewHighlights, SpaceViewOutlineMasks}, + transform_cache::TransformCache, + view_spatial::{scene::EntityDepthOffsets, SceneSpatial, SpaceCamera3D}, }; use super::{instance_path_hash_for_picking, ScenePart}; diff --git a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/images.rs b/crates/re_viewport/src/view_spatial/scene/scene_part/images.rs similarity index 97% rename from crates/re_viewer/src/ui/view_spatial/scene/scene_part/images.rs rename to crates/re_viewport/src/view_spatial/scene/scene_part/images.rs index 4a83bc68985c..25a8eb3cd023 100644 --- a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/images.rs +++ b/crates/re_viewport/src/view_spatial/scene/scene_part/images.rs @@ -19,8 +19,9 @@ use re_viewer_context::{ }; use crate::{ - misc::{SpaceViewHighlights, SpaceViewOutlineMasks, TransformCache}, - ui::view_spatial::{scene::EntityDepthOffsets, Image, SceneSpatial}, + space_view_highlights::{SpaceViewHighlights, SpaceViewOutlineMasks}, + transform_cache::TransformCache, + view_spatial::{scene::EntityDepthOffsets, Image, SceneSpatial}, }; use super::ScenePart; @@ -190,10 +191,13 @@ impl ImagesPart { if *properties.backproject_depth.get() && tensor.meaning == TensorDataMeaning::Depth { let query = ctx.current_query(); - let pinhole_ent_path = - crate::misc::queries::closest_pinhole_transform(ctx, ent_path, &query); + let closet_pinhole = ctx + .log_db + .entity_db + .data_store + .query_latest_component_at_closest_ancestor::(ent_path, &query); - if let Some(pinhole_ent_path) = pinhole_ent_path { + if let Some((pinhole_ent_path, _)) = closet_pinhole { // NOTE: we don't pass in `world_from_obj` because this corresponds to the // transform of the projection plane, which is of no use to us here. // What we want are the extrinsics of the depth camera! diff --git a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/lines2d.rs b/crates/re_viewport/src/view_spatial/scene/scene_part/lines2d.rs similarity index 96% rename from crates/re_viewer/src/ui/view_spatial/scene/scene_part/lines2d.rs rename to crates/re_viewport/src/view_spatial/scene/scene_part/lines2d.rs index 563233cb85c7..1b3538afa7d3 100644 --- a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/lines2d.rs +++ b/crates/re_viewport/src/view_spatial/scene/scene_part/lines2d.rs @@ -8,8 +8,9 @@ use re_renderer::Size; use re_viewer_context::{DefaultColor, SceneQuery, ViewerContext}; use crate::{ - misc::{SpaceViewHighlights, SpaceViewOutlineMasks, TransformCache}, - ui::view_spatial::{scene::EntityDepthOffsets, SceneSpatial}, + space_view_highlights::{SpaceViewHighlights, SpaceViewOutlineMasks}, + transform_cache::TransformCache, + view_spatial::{scene::EntityDepthOffsets, SceneSpatial}, }; use super::{instance_key_to_picking_id, ScenePart}; diff --git a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/lines3d.rs b/crates/re_viewport/src/view_spatial/scene/scene_part/lines3d.rs similarity index 95% rename from crates/re_viewer/src/ui/view_spatial/scene/scene_part/lines3d.rs rename to crates/re_viewport/src/view_spatial/scene/scene_part/lines3d.rs index b11964fee85c..8f24c837a537 100644 --- a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/lines3d.rs +++ b/crates/re_viewport/src/view_spatial/scene/scene_part/lines3d.rs @@ -8,8 +8,9 @@ use re_renderer::Size; use re_viewer_context::{DefaultColor, SceneQuery, ViewerContext}; use crate::{ - misc::{SpaceViewHighlights, SpaceViewOutlineMasks, TransformCache}, - ui::view_spatial::{scene::EntityDepthOffsets, SceneSpatial}, + space_view_highlights::{SpaceViewHighlights, SpaceViewOutlineMasks}, + transform_cache::TransformCache, + view_spatial::{scene::EntityDepthOffsets, SceneSpatial}, }; use super::{instance_key_to_picking_id, ScenePart}; diff --git a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/meshes.rs b/crates/re_viewport/src/view_spatial/scene/scene_part/meshes.rs similarity index 94% rename from crates/re_viewer/src/ui/view_spatial/scene/scene_part/meshes.rs rename to crates/re_viewport/src/view_spatial/scene/scene_part/meshes.rs index 097a809c1439..5af49bf5d7e2 100644 --- a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/meshes.rs +++ b/crates/re_viewport/src/view_spatial/scene/scene_part/meshes.rs @@ -7,8 +7,10 @@ use re_query::{query_primary_with_history, EntityView, QueryError}; use re_viewer_context::{DefaultColor, SceneQuery, ViewerContext}; use crate::{ - misc::{MeshCache, SpaceViewHighlights, TransformCache}, - ui::view_spatial::{scene::EntityDepthOffsets, MeshSource, SceneSpatial}, + mesh_cache::MeshCache, + space_view_highlights::SpaceViewHighlights, + transform_cache::TransformCache, + view_spatial::{scene::EntityDepthOffsets, MeshSource, SceneSpatial}, }; use super::{instance_path_hash_for_picking, ScenePart}; diff --git a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/mod.rs b/crates/re_viewport/src/view_spatial/scene/scene_part/mod.rs similarity index 98% rename from crates/re_viewer/src/ui/view_spatial/scene/scene_part/mod.rs rename to crates/re_viewport/src/view_spatial/scene/scene_part/mod.rs index 24c620b665ec..2e715fb5898d 100644 --- a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/mod.rs +++ b/crates/re_viewport/src/view_spatial/scene/scene_part/mod.rs @@ -29,8 +29,8 @@ use re_log_types::component_types::{ClassId, ColorRGBA, KeypointId, Radius}; use super::{EntityDepthOffsets, SceneSpatial}; use crate::{ - misc::{SpaceViewHighlights, TransformCache}, - ui::view_spatial::scene::Keypoints, + space_view_highlights::SpaceViewHighlights, transform_cache::TransformCache, + view_spatial::scene::Keypoints, }; use re_data_store::{EntityPath, InstancePathHash}; use re_viewer_context::{ diff --git a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/points2d.rs b/crates/re_viewport/src/view_spatial/scene/scene_part/points2d.rs similarity index 97% rename from crates/re_viewer/src/ui/view_spatial/scene/scene_part/points2d.rs rename to crates/re_viewport/src/view_spatial/scene/scene_part/points2d.rs index a9a46c5208f5..8469190f93e4 100644 --- a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/points2d.rs +++ b/crates/re_viewport/src/view_spatial/scene/scene_part/points2d.rs @@ -7,8 +7,9 @@ use re_query::{query_primary_with_history, EntityView, QueryError}; use re_viewer_context::{ResolvedAnnotationInfo, SceneQuery, ViewerContext}; use crate::{ - misc::{SpaceViewHighlights, SpaceViewOutlineMasks, TransformCache}, - ui::view_spatial::{scene::EntityDepthOffsets, SceneSpatial, UiLabel, UiLabelTarget}, + space_view_highlights::{SpaceViewHighlights, SpaceViewOutlineMasks}, + transform_cache::TransformCache, + view_spatial::{scene::EntityDepthOffsets, SceneSpatial, UiLabel, UiLabelTarget}, }; use super::{ diff --git a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/points3d.rs b/crates/re_viewport/src/view_spatial/scene/scene_part/points3d.rs similarity index 98% rename from crates/re_viewer/src/ui/view_spatial/scene/scene_part/points3d.rs rename to crates/re_viewport/src/view_spatial/scene/scene_part/points3d.rs index 076210d1d9ef..67c24a09c024 100644 --- a/crates/re_viewer/src/ui/view_spatial/scene/scene_part/points3d.rs +++ b/crates/re_viewport/src/view_spatial/scene/scene_part/points3d.rs @@ -7,8 +7,9 @@ use re_query::{query_primary_with_history, EntityView, QueryError}; use re_viewer_context::{ResolvedAnnotationInfo, SceneQuery, ViewerContext}; use crate::{ - misc::{SpaceViewHighlights, SpaceViewOutlineMasks, TransformCache}, - ui::view_spatial::{ + space_view_highlights::{SpaceViewHighlights, SpaceViewOutlineMasks}, + transform_cache::TransformCache, + view_spatial::{ scene::{ scene_part::{ instance_key_to_picking_id, instance_path_hash_for_picking, diff --git a/crates/re_viewer/src/ui/view_spatial/space_camera_3d.rs b/crates/re_viewport/src/view_spatial/space_camera_3d.rs similarity index 100% rename from crates/re_viewer/src/ui/view_spatial/space_camera_3d.rs rename to crates/re_viewport/src/view_spatial/space_camera_3d.rs diff --git a/crates/re_viewer/src/ui/view_spatial/ui.rs b/crates/re_viewport/src/view_spatial/ui.rs similarity index 99% rename from crates/re_viewer/src/ui/view_spatial/ui.rs rename to crates/re_viewport/src/view_spatial/ui.rs index b404f46579ff..0fb2140db749 100644 --- a/crates/re_viewer/src/ui/view_spatial/ui.rs +++ b/crates/re_viewport/src/view_spatial/ui.rs @@ -13,11 +13,9 @@ use re_viewer_context::{ TensorStatsCache, UiVerbosity, ViewerContext, }; +use crate::space_view_highlights::SpaceViewHighlights; use crate::{ - misc::SpaceViewHighlights, - ui::{ - data_blueprint::DataBlueprintTree, space_view::ScreenshotMode, view_spatial::UiLabelTarget, - }, + data_blueprint::DataBlueprintTree, space_view::ScreenshotMode, view_spatial::UiLabelTarget, }; use super::{ diff --git a/crates/re_viewer/src/ui/view_spatial/ui_2d.rs b/crates/re_viewport/src/view_spatial/ui_2d.rs similarity index 98% rename from crates/re_viewer/src/ui/view_spatial/ui_2d.rs rename to crates/re_viewport/src/view_spatial/ui_2d.rs index 632ce2fa6c26..7531b8fdaa18 100644 --- a/crates/re_viewer/src/ui/view_spatial/ui_2d.rs +++ b/crates/re_viewport/src/view_spatial/ui_2d.rs @@ -12,14 +12,12 @@ use super::{ SpatialNavigationMode, ViewSpatialState, }; use crate::{ - misc::SpaceViewHighlights, - ui::{ - spaceview_controls::{DRAG_PAN2D_BUTTON, RESET_VIEW_BUTTON_TEXT, ZOOM_SCROLL_MODIFIER}, - view_spatial::{ - ui::outline_config, - ui_renderer_bridge::{fill_view_builder, ScreenBackground}, - SceneSpatial, - }, + space_view_controls::{DRAG_PAN2D_BUTTON, RESET_VIEW_BUTTON_TEXT, ZOOM_SCROLL_MODIFIER}, + space_view_highlights::SpaceViewHighlights, + view_spatial::{ + ui::outline_config, + ui_renderer_bridge::{fill_view_builder, ScreenBackground}, + SceneSpatial, }, }; diff --git a/crates/re_viewer/src/ui/view_spatial/ui_3d.rs b/crates/re_viewport/src/view_spatial/ui_3d.rs similarity index 97% rename from crates/re_viewer/src/ui/view_spatial/ui_3d.rs rename to crates/re_viewport/src/view_spatial/ui_3d.rs index d19ae53d2e61..fad14fc0e193 100644 --- a/crates/re_viewer/src/ui/view_spatial/ui_3d.rs +++ b/crates/re_viewport/src/view_spatial/ui_3d.rs @@ -12,18 +12,15 @@ use re_renderer::{ use re_viewer_context::{gpu_bridge, HoveredSpace, Item, SpaceViewId, ViewerContext}; use crate::{ - misc::SpaceViewHighlights, - ui::{ - spaceview_controls::{ - DRAG_PAN3D_BUTTON, RESET_VIEW_BUTTON_TEXT, ROLL_MOUSE, ROLL_MOUSE_ALT, - ROLL_MOUSE_MODIFIER, ROTATE3D_BUTTON, SLOW_DOWN_3D_MODIFIER, SPEED_UP_3D_MODIFIER, - TRACKED_CAMERA_RESTORE_KEY, - }, - view_spatial::{ - ui::{create_labels, outline_config, picking, screenshot_context_menu}, - ui_renderer_bridge::{fill_view_builder, ScreenBackground}, - SceneSpatial, SpaceCamera3D, SpatialNavigationMode, - }, + space_view_controls::{ + DRAG_PAN3D_BUTTON, RESET_VIEW_BUTTON_TEXT, ROLL_MOUSE, ROLL_MOUSE_ALT, ROLL_MOUSE_MODIFIER, + ROTATE3D_BUTTON, SLOW_DOWN_3D_MODIFIER, SPEED_UP_3D_MODIFIER, TRACKED_CAMERA_RESTORE_KEY, + }, + space_view_highlights::SpaceViewHighlights, + view_spatial::{ + ui::{create_labels, outline_config, picking, screenshot_context_menu}, + ui_renderer_bridge::{fill_view_builder, ScreenBackground}, + SceneSpatial, SpaceCamera3D, SpatialNavigationMode, }, }; @@ -80,6 +77,10 @@ impl Default for View3DState { } } +fn ease_out(t: f32) -> f32 { + 1. - (1. - t) * (1. - t) +} + impl View3DState { pub fn reset_camera(&mut self, scene_bbox_accum: &BoundingBox) { self.interpolate_to_orbit_eye(default_eye(scene_bbox_accum, &self.space_specs)); @@ -128,7 +129,7 @@ impl View3DState { let t = cam_interpolation.elapsed_time / cam_interpolation.target_time; let t = t.clamp(0.0, 1.0); - let t = crate::math::ease_out(t); + let t = ease_out(t); if t < 1.0 { response.ctx.request_repaint(); diff --git a/crates/re_viewer/src/ui/view_spatial/ui_renderer_bridge.rs b/crates/re_viewport/src/view_spatial/ui_renderer_bridge.rs similarity index 100% rename from crates/re_viewer/src/ui/view_spatial/ui_renderer_bridge.rs rename to crates/re_viewport/src/view_spatial/ui_renderer_bridge.rs diff --git a/crates/re_viewer/src/ui/view_tensor/mod.rs b/crates/re_viewport/src/view_tensor/mod.rs similarity index 100% rename from crates/re_viewer/src/ui/view_tensor/mod.rs rename to crates/re_viewport/src/view_tensor/mod.rs diff --git a/crates/re_viewer/src/ui/view_tensor/scene.rs b/crates/re_viewport/src/view_tensor/scene.rs similarity index 100% rename from crates/re_viewer/src/ui/view_tensor/scene.rs rename to crates/re_viewport/src/view_tensor/scene.rs diff --git a/crates/re_viewer/src/ui/view_tensor/tensor_dimension_mapper.rs b/crates/re_viewport/src/view_tensor/tensor_dimension_mapper.rs similarity index 100% rename from crates/re_viewer/src/ui/view_tensor/tensor_dimension_mapper.rs rename to crates/re_viewport/src/view_tensor/tensor_dimension_mapper.rs diff --git a/crates/re_viewer/src/ui/view_tensor/tensor_slice_to_gpu.rs b/crates/re_viewport/src/view_tensor/tensor_slice_to_gpu.rs similarity index 100% rename from crates/re_viewer/src/ui/view_tensor/tensor_slice_to_gpu.rs rename to crates/re_viewport/src/view_tensor/tensor_slice_to_gpu.rs diff --git a/crates/re_viewer/src/ui/view_tensor/ui.rs b/crates/re_viewport/src/view_tensor/ui.rs similarity index 100% rename from crates/re_viewer/src/ui/view_tensor/ui.rs rename to crates/re_viewport/src/view_tensor/ui.rs diff --git a/crates/re_viewer/src/ui/view_text/mod.rs b/crates/re_viewport/src/view_text/mod.rs similarity index 100% rename from crates/re_viewer/src/ui/view_text/mod.rs rename to crates/re_viewport/src/view_text/mod.rs diff --git a/crates/re_viewer/src/ui/view_text/scene.rs b/crates/re_viewport/src/view_text/scene.rs similarity index 100% rename from crates/re_viewer/src/ui/view_text/scene.rs rename to crates/re_viewport/src/view_text/scene.rs diff --git a/crates/re_viewer/src/ui/view_text/ui.rs b/crates/re_viewport/src/view_text/ui.rs similarity index 100% rename from crates/re_viewer/src/ui/view_text/ui.rs rename to crates/re_viewport/src/view_text/ui.rs diff --git a/crates/re_viewer/src/ui/view_text_box/mod.rs b/crates/re_viewport/src/view_text_box/mod.rs similarity index 100% rename from crates/re_viewer/src/ui/view_text_box/mod.rs rename to crates/re_viewport/src/view_text_box/mod.rs diff --git a/crates/re_viewer/src/ui/view_text_box/scene.rs b/crates/re_viewport/src/view_text_box/scene.rs similarity index 100% rename from crates/re_viewer/src/ui/view_text_box/scene.rs rename to crates/re_viewport/src/view_text_box/scene.rs diff --git a/crates/re_viewer/src/ui/view_text_box/ui.rs b/crates/re_viewport/src/view_text_box/ui.rs similarity index 100% rename from crates/re_viewer/src/ui/view_text_box/ui.rs rename to crates/re_viewport/src/view_text_box/ui.rs diff --git a/crates/re_viewer/src/ui/view_time_series/mod.rs b/crates/re_viewport/src/view_time_series/mod.rs similarity index 100% rename from crates/re_viewer/src/ui/view_time_series/mod.rs rename to crates/re_viewport/src/view_time_series/mod.rs diff --git a/crates/re_viewer/src/ui/view_time_series/scene.rs b/crates/re_viewport/src/view_time_series/scene.rs similarity index 100% rename from crates/re_viewer/src/ui/view_time_series/scene.rs rename to crates/re_viewport/src/view_time_series/scene.rs diff --git a/crates/re_viewer/src/ui/view_time_series/ui.rs b/crates/re_viewport/src/view_time_series/ui.rs similarity index 99% rename from crates/re_viewer/src/ui/view_time_series/ui.rs rename to crates/re_viewport/src/view_time_series/ui.rs index 0db2358de3f8..562583d9844a 100644 --- a/crates/re_viewer/src/ui/view_time_series/ui.rs +++ b/crates/re_viewport/src/view_time_series/ui.rs @@ -8,8 +8,8 @@ use re_time_panel::next_grid_tick_magnitude_ns; use re_viewer_context::ViewerContext; use super::SceneTimeSeries; -use crate::ui::{ - spaceview_controls::{ +use crate::{ + space_view_controls::{ HORIZONTAL_SCROLL_MODIFIER, MOVE_TIME_CURSOR_BUTTON, RESET_VIEW_BUTTON_TEXT, SELECTION_RECT_ZOOM_BUTTON, ZOOM_SCROLL_MODIFIER, }, diff --git a/crates/re_viewer/src/ui/viewport.rs b/crates/re_viewport/src/viewport.rs similarity index 95% rename from crates/re_viewer/src/ui/viewport.rs rename to crates/re_viewport/src/viewport.rs index ba7ec5bf7bb7..12a37565a188 100644 --- a/crates/re_viewer/src/ui/viewport.rs +++ b/crates/re_viewport/src/viewport.rs @@ -10,15 +10,15 @@ use re_data_ui::item_ui; use re_viewer_context::{DataBlueprintGroupHandle, Item, SpaceViewId, ViewerContext}; use crate::{ - misc::{highlights_for_space_view, space_info::SpaceInfoCollection, SpaceViewHighlights}, - ui::space_view_heuristics::default_created_space_views, -}; - -use super::{ - data_blueprint::DataBlueprintGroup, space_view::SpaceViewState, + data_blueprint::DataBlueprintGroup, + space_info::SpaceInfoCollection, + space_view::SpaceViewBlueprint, + space_view::SpaceViewState, space_view_entity_picker::SpaceViewEntityPicker, - space_view_heuristics::all_possible_space_views, view_category::ViewCategory, - SpaceViewBlueprint, + space_view_heuristics::all_possible_space_views, + space_view_heuristics::default_created_space_views, + space_view_highlights::{highlights_for_space_view, SpaceViewHighlights}, + view_category::ViewCategory, }; // ---------------------------------------------------------------------------- @@ -31,26 +31,26 @@ pub type VisibilitySet = std::collections::BTreeSet; #[serde(default)] pub struct Viewport { /// Where the space views are stored. - pub(crate) space_views: HashMap, + pub space_views: HashMap, /// Which views are visible. - pub(crate) visible: VisibilitySet, + pub visible: VisibilitySet, /// The layouts of all the space views. /// /// One for each combination of what views are visible. /// So if a user toggles the visibility of one SpaceView, we /// switch which layout we are using. This is somewhat hacky. - pub(crate) trees: HashMap>, + pub trees: HashMap>, /// Show one tab as maximized? - pub(crate) maximized: Option, + pub maximized: Option, /// Set to `true` the first time the user messes around with the viewport blueprint. - pub(crate) has_been_user_edited: bool, + pub has_been_user_edited: bool, /// Whether or not space views should be created automatically. - pub(crate) auto_space_views: bool, + pub auto_space_views: bool, } impl Viewport { @@ -65,15 +65,15 @@ impl Viewport { viewport } - pub(crate) fn space_view_ids(&self) -> impl Iterator + '_ { + pub fn space_view_ids(&self) -> impl Iterator + '_ { self.space_views.keys() } - pub(crate) fn space_view(&self, space_view: &SpaceViewId) -> Option<&SpaceViewBlueprint> { + pub fn space_view(&self, space_view: &SpaceViewId) -> Option<&SpaceViewBlueprint> { self.space_views.get(space_view) } - pub(crate) fn space_view_mut( + pub fn space_view_mut( &mut self, space_view_id: &SpaceViewId, ) -> Option<&mut SpaceViewBlueprint> { @@ -161,7 +161,7 @@ impl Viewport { true, is_space_view_visible, |ui| { - let response = crate::ui::item_ui::space_view_button(ctx, ui, space_view); + let response = crate::item_ui::space_view_button(ctx, ui, space_view); if response.clicked() { if let Some(tree) = self.trees.get_mut(&self.visible) { focus_tab(tree, space_view_id); @@ -331,11 +331,11 @@ impl Viewport { } } - pub(crate) fn mark_user_interaction(&mut self) { + pub fn mark_user_interaction(&mut self) { self.has_been_user_edited = true; } - pub(crate) fn add_space_view(&mut self, mut space_view: SpaceViewBlueprint) -> SpaceViewId { + pub fn add_space_view(&mut self, mut space_view: SpaceViewBlueprint) -> SpaceViewId { let id = space_view.id; // Find a unique name for the space view @@ -523,7 +523,7 @@ impl Viewport { #[derive(Clone, Default)] pub struct ViewportState { pub(crate) space_view_entity_window: Option, - pub(crate) space_view_states: HashMap, + pub space_view_states: HashMap, } impl ViewportState { @@ -789,8 +789,8 @@ fn help_text_ui( space_view_state: &SpaceViewState, ) { let help_text = match space_view_blueprint.category { - ViewCategory::TimeSeries => Some(crate::ui::view_time_series::help_text(re_ui)), - ViewCategory::BarChart => Some(crate::ui::view_bar_chart::help_text(re_ui)), + ViewCategory::TimeSeries => Some(crate::view_time_series::help_text(re_ui)), + ViewCategory::BarChart => Some(crate::view_bar_chart::help_text(re_ui)), ViewCategory::Spatial => Some(space_view_state.state_spatial.help_text(re_ui)), ViewCategory::TextBox | ViewCategory::Text | ViewCategory::Tensor => None, }; diff --git a/rerun_py/Cargo.toml b/rerun_py/Cargo.toml index 733ff4f19679..19b6a6dc7a00 100644 --- a/rerun_py/Cargo.toml +++ b/rerun_py/Cargo.toml @@ -49,7 +49,9 @@ re_web_viewer_server = { workspace = true, optional = true } re_ws_comms = { workspace = true, optional = true } # TODO(jleibs): This should go away as part of https://github.com/rerun-io/rerun/issues/2089 -re_viewer = { workspace = true } +re_viewer_context.workspace = true +re_viewer.workspace = true +re_viewport.workspace = true arrow2 = { workspace = true, features = ["io_ipc", "io_print"] } document-features = "0.2" diff --git a/rerun_py/src/python_bridge.rs b/rerun_py/src/python_bridge.rs index a790d0184a76..feb0a94f4fb2 100644 --- a/rerun_py/src/python_bridge.rs +++ b/rerun_py/src/python_bridge.rs @@ -11,12 +11,10 @@ use pyo3::{ types::{PyBytes, PyDict}, }; -use re_viewer::{ - blueprint_components::{ - panel::PanelState, - space_view::SpaceViewComponent, - viewport::{AutoSpaceViews, SpaceViewId, VIEWPORT_PATH}, - }, +use re_viewer::blueprint_components::panel::PanelState; +use re_viewer_context::SpaceViewId; +use re_viewport::{ + blueprint_components::{AutoSpaceViews, SpaceViewComponent, VIEWPORT_PATH}, SpaceViewBlueprint, ViewCategory, }; From 4c894437c89faa1e31ea124e8feedbf964ef62b1 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Mon, 29 May 2023 15:35:00 +0200 Subject: [PATCH 3/8] add missing entries to publish_crates --- scripts/publish_crates.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/publish_crates.sh b/scripts/publish_crates.sh index 1dd17b329857..edb351ad2a39 100755 --- a/scripts/publish_crates.sh +++ b/scripts/publish_crates.sh @@ -115,6 +115,8 @@ cargo publish $FLAGS -p re_build_web_viewer cargo publish $FLAGS -p re_web_viewer_server cargo publish $FLAGS -p re_viewer_context cargo publish $FLAGS -p re_data_ui +cargo publish $FLAGS -p re_time_panel +cargo publish $FLAGS -p re_viewport cargo publish $FLAGS -p re_viewer cargo publish $FLAGS -p re_sdk cargo publish $FLAGS -p rerun From 64621b0358779b7d15befc53438d09a80a8b603e Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Mon, 29 May 2023 15:51:35 +0200 Subject: [PATCH 4/8] merge use'ings --- crates/re_viewport/src/viewport.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/crates/re_viewport/src/viewport.rs b/crates/re_viewport/src/viewport.rs index 12a37565a188..b4d353059aea 100644 --- a/crates/re_viewport/src/viewport.rs +++ b/crates/re_viewport/src/viewport.rs @@ -12,11 +12,9 @@ use re_viewer_context::{DataBlueprintGroupHandle, Item, SpaceViewId, ViewerConte use crate::{ data_blueprint::DataBlueprintGroup, space_info::SpaceInfoCollection, - space_view::SpaceViewBlueprint, - space_view::SpaceViewState, + space_view::{SpaceViewBlueprint, SpaceViewState}, space_view_entity_picker::SpaceViewEntityPicker, - space_view_heuristics::all_possible_space_views, - space_view_heuristics::default_created_space_views, + space_view_heuristics::{all_possible_space_views, default_created_space_views}, space_view_highlights::{highlights_for_space_view, SpaceViewHighlights}, view_category::ViewCategory, }; From 346182bbafa3cde74cee5e4657a08f08a33d46a6 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Mon, 29 May 2023 16:17:52 +0200 Subject: [PATCH 5/8] fix doctests --- crates/re_viewport/Cargo.toml | 17 ++++++++++++----- .../src/blueprint_components/space_view.rs | 2 +- .../src/blueprint_components/viewport.rs | 8 ++++---- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/crates/re_viewport/Cargo.toml b/crates/re_viewport/Cargo.toml index 05bfa728eeca..063c134fea0d 100644 --- a/crates/re_viewport/Cargo.toml +++ b/crates/re_viewport/Cargo.toml @@ -24,9 +24,14 @@ re_format.workspace = true re_log_types = { workspace = true, features = ["ecolor", "glam", "image"] } re_log.workspace = true re_query.workspace = true -re_renderer.workspace = true +re_renderer = { workspace = true, default-features = false, features = [ + "arrow", + "import-gltf", + "import-obj", + "serde", +] } re_tensor_ops.workspace = true -re_time_panel.workspace = true # TODO(andreas): Unfortunate dependency, caused by `next_grid_tick_magnitude_ns` +re_time_panel.workspace = true # TODO(andreas): Unfortunate dependency, caused by `next_grid_tick_magnitude_ns` re_ui.workspace = true re_viewer_context.workspace = true @@ -35,7 +40,9 @@ anyhow.workspace = true arrow2.workspace = true arrow2_convert.workspace = true bytemuck.workspace = true -eframe.workspace = true +eframe = { workspace = true, default-features = false, features = [ + "persistence", +] } egui_extras.workspace = true egui_tiles.workspace = true egui.workspace = true @@ -48,12 +55,12 @@ image = { workspace = true, default-features = false, features = [ ] } itertools.workspace = true lazy_static.workspace = true -macaw.workspace = true +macaw = { workspace = true, features = ["with_serde"] } ndarray.workspace = true nohash-hasher = "0.2" serde = "1.0" slotmap.workspace = true -smallvec.workspace = true +smallvec = { workspace = true, features = ["serde"] } thiserror.workspace = true wgpu.workspace = true diff --git a/crates/re_viewport/src/blueprint_components/space_view.rs b/crates/re_viewport/src/blueprint_components/space_view.rs index a12f0ca2791c..eeeb411be12d 100644 --- a/crates/re_viewport/src/blueprint_components/space_view.rs +++ b/crates/re_viewport/src/blueprint_components/space_view.rs @@ -8,7 +8,7 @@ use crate::space_view::SpaceViewBlueprint; /// /// ## Example /// ``` -/// # use re_viewer::blueprint_components::space_view::SpaceViewComponent; +/// # use re_viewport::blueprint_components::SpaceViewComponent; /// # use arrow2_convert::field::ArrowField; /// # use arrow2::datatypes::{DataType, Field}; /// assert_eq!( diff --git a/crates/re_viewport/src/blueprint_components/viewport.rs b/crates/re_viewport/src/blueprint_components/viewport.rs index 514c07d01fdc..e3ed750223b9 100644 --- a/crates/re_viewport/src/blueprint_components/viewport.rs +++ b/crates/re_viewport/src/blueprint_components/viewport.rs @@ -13,7 +13,7 @@ pub const VIEWPORT_PATH: &str = "viewport"; /// /// ## Example /// ``` -/// # use re_viewer::blueprint_components::viewport::AutoSpaceViews; +/// # use re_viewport::blueprint_components::AutoSpaceViews; /// # use arrow2_convert::field::ArrowField; /// # use arrow2::datatypes::{DataType, Field}; /// assert_eq!( @@ -36,7 +36,7 @@ impl Component for AutoSpaceViews { /// /// ## Example /// ``` -/// # use re_viewer::blueprint_components::viewport::SpaceViewVisibility; +/// # use re_viewport::blueprint_components::SpaceViewVisibility; /// # use arrow2_convert::field::ArrowField; /// # use arrow2::datatypes::{DataType, Field}; /// assert_eq!( @@ -61,7 +61,7 @@ impl Component for SpaceViewVisibility { /// /// ## Example /// ``` -/// # use re_viewer::blueprint_components::viewport::SpaceViewMaximized; +/// # use re_viewport::blueprint_components::SpaceViewMaximized; /// # use arrow2_convert::field::ArrowField; /// # use arrow2::datatypes::{DataType, Field}; /// assert_eq!( @@ -86,7 +86,7 @@ impl Component for SpaceViewMaximized { /// /// ## Example /// ``` -/// # use re_viewer::blueprint_components::viewport::ViewportLayout; +/// # use re_viewport::blueprint_components::ViewportLayout; /// # use arrow2_convert::field::ArrowField; /// # use arrow2::datatypes::{DataType, Field}; /// assert_eq!( From f963fa6fe5f812b848b5ffb34f8eccdc0ef6bbe4 Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Mon, 29 May 2023 16:22:04 +0200 Subject: [PATCH 6/8] remove unused crate references --- Cargo.lock | 25 ------------------------- crates/re_viewer/Cargo.toml | 27 ++------------------------- rerun_py/Cargo.toml | 4 +--- 3 files changed, 3 insertions(+), 53 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a1deb44f79fc..4f1a7b54a9c0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1921,7 +1921,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "12f597d56c1bd55a811a1be189459e8fad2bbc272616375602443bdfb37fa774" dependencies = [ "bytemuck", - "mint", "serde", ] @@ -2792,12 +2791,6 @@ dependencies = [ "simd-adler32", ] -[[package]] -name = "mint" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e53debba6bda7a793e5f99b8dacf19e626084f525f7829104ba9898f367d85ff" - [[package]] name = "mio" version = "0.8.6" @@ -4263,23 +4256,13 @@ dependencies = [ "anyhow", "arrow2", "arrow2_convert", - "bytemuck", "cfg-if", "cocoa", "eframe", "egui", "egui-wgpu", - "egui_extras", - "egui_tiles", - "enumset", - "glam", - "half 2.2.1", "image", "itertools", - "lazy_static", - "macaw", - "ndarray", - "nohash-hasher", "objc", "poll-promise", "puffin", @@ -4296,21 +4279,15 @@ dependencies = [ "re_log_encoding", "re_log_types", "re_memory", - "re_query", "re_renderer", "re_smart_channel", - "re_tensor_ops", "re_time_panel", "re_ui", "re_viewer_context", "re_viewport", "re_ws_comms", "rfd", - "rmp-serde", "serde", - "slotmap", - "smallvec", - "thiserror", "time", "wasm-bindgen-futures", "web-sys", @@ -4542,10 +4519,8 @@ version = "0.7.0-alpha.0" dependencies = [ "arrow2", "document-features", - "glam", "image", "itertools", - "macaw", "mimalloc", "numpy", "once_cell", diff --git a/crates/re_viewer/Cargo.toml b/crates/re_viewer/Cargo.toml index 96637210b288..468b575118f2 100644 --- a/crates/re_viewer/Cargo.toml +++ b/crates/re_viewer/Cargo.toml @@ -45,18 +45,11 @@ re_data_ui.workspace = true re_error.workspace = true re_format.workspace = true re_log_encoding = { workspace = true, features = ["decoder", "encoder"] } -re_log_types = { workspace = true, features = ["ecolor", "glam", "image"] } +re_log_types = { workspace = true, features = ["ecolor", "image"] } re_log.workspace = true re_memory.workspace = true -re_query.workspace = true -re_renderer = { workspace = true, default-features = false, features = [ - "arrow", - "import-gltf", - "import-obj", - "serde", -] } +re_renderer = { workspace = true, default-features = false } re_smart_channel.workspace = true -re_tensor_ops.workspace = true re_time_panel.workspace = true re_ui = { workspace = true, features = ["eframe"] } re_viewer_context.workspace = true @@ -72,7 +65,6 @@ ahash.workspace = true anyhow.workspace = true arrow2.workspace = true arrow2_convert.workspace = true -bytemuck = { version = "1.11", features = ["extern_crate_alloc"] } cfg-if.workspace = true eframe = { workspace = true, default-features = false, features = [ "default_fonts", @@ -81,30 +73,15 @@ eframe = { workspace = true, default-features = false, features = [ "wgpu", ] } egui.workspace = true -egui_extras.workspace = true -egui_tiles.workspace = true egui-wgpu.workspace = true -enumset.workspace = true -glam = { workspace = true, features = [ - "mint", -] } # can't update glam until a new version of `macaw` is released -half.workspace = true image = { workspace = true, default-features = false, features = [ "jpeg", "png", ] } itertools = { workspace = true } -lazy_static.workspace = true -macaw = { workspace = true, features = ["with_serde"] } -ndarray = "0.15" -nohash-hasher = "0.2" poll-promise = "0.2" rfd.workspace = true -rmp-serde = { version = "1.1" } serde = { version = "1", features = ["derive"] } -slotmap.workspace = true -smallvec = { workspace = true, features = ["serde"] } -thiserror.workspace = true time = { workspace = true, features = ["formatting"] } web-time.workspace = true wgpu.workspace = true diff --git a/rerun_py/Cargo.toml b/rerun_py/Cargo.toml index 19b6a6dc7a00..cff203777dcf 100644 --- a/rerun_py/Cargo.toml +++ b/rerun_py/Cargo.toml @@ -42,7 +42,7 @@ web_viewer = ["rerun/web_viewer", "dep:re_web_viewer_server", "dep:re_ws_comms"] re_build_info.workspace = true re_error.workspace = true re_log.workspace = true -re_log_types = { workspace = true, features = ["glam", "image"] } +re_log_types = { workspace = true, features = ["image"] } re_memory.workspace = true rerun = { workspace = true, features = ["analytics", "server", "sdk"] } re_web_viewer_server = { workspace = true, optional = true } @@ -55,13 +55,11 @@ re_viewport.workspace = true arrow2 = { workspace = true, features = ["io_ipc", "io_print"] } document-features = "0.2" -glam.workspace = true image = { workspace = true, default-features = false, features = [ "jpeg", "png", ] } itertools = { workspace = true } -macaw.workspace = true mimalloc = { workspace = true, features = ["local_dynamic_tls"] } numpy = { version = "0.18.0", features = ["half"] } once_cell = "1.12" From 4c5c9a32de14fe322100cd1ffa1e7dd6177881bd Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Mon, 29 May 2023 17:45:24 +0200 Subject: [PATCH 7/8] Fix doc comment issues --- crates/re_viewport/src/space_info.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/re_viewport/src/space_info.rs b/crates/re_viewport/src/space_info.rs index 9b8d9fa0c0ae..5bc14b715d6d 100644 --- a/crates/re_viewport/src/space_info.rs +++ b/crates/re_viewport/src/space_info.rs @@ -224,7 +224,7 @@ impl SpaceInfoCollection { /// Answers if an entity path (`from`) is reachable via a transform from some reference space (at `to_reference`) /// - /// For how, you need to check [`crate::misc::TransformCache`]! + /// For how, you need to check `TransformCache`! /// Note that in any individual frame, entities may or may not be reachable. pub fn is_reachable_by_transform( &self, From d49eeee55440b5f533494913d54ab53ae147adcc Mon Sep 17 00:00:00 2001 From: Andreas Reich Date: Mon, 29 May 2023 17:49:57 +0200 Subject: [PATCH 8/8] remove unused space camera field from View3DState --- crates/re_viewport/src/view_spatial/ui_3d.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/crates/re_viewport/src/view_spatial/ui_3d.rs b/crates/re_viewport/src/view_spatial/ui_3d.rs index fad14fc0e193..86a20df372c7 100644 --- a/crates/re_viewport/src/view_spatial/ui_3d.rs +++ b/crates/re_viewport/src/view_spatial/ui_3d.rs @@ -56,7 +56,6 @@ pub struct View3DState { /// Filled in at the start of each frame pub(crate) space_specs: SpaceSpecs, - space_camera: Vec, // TODO(andreas): remove this once camera meshes are gone } impl Default for View3DState { @@ -72,7 +71,6 @@ impl Default for View3DState { show_bbox: false, last_eye_interact_time: f64::NEG_INFINITY, space_specs: Default::default(), - space_camera: Default::default(), } } } @@ -298,8 +296,6 @@ pub fn view_3d( ) { crate::profile_function!(); - state.state_3d.space_camera = scene.space_cameras.clone(); - let (rect, mut response) = ui.allocate_at_least(ui.available_size(), egui::Sense::click_and_drag());