Skip to content

Commit

Permalink
Merge branch 'main' into antoine/dnd-multi-select-content
Browse files Browse the repository at this point in the history
  • Loading branch information
abey79 committed Dec 11, 2024
2 parents b6753cd + 388c8aa commit c1b0aca
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 43 deletions.
4 changes: 1 addition & 3 deletions crates/store/re_query/src/latest_at.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ impl QueryCache {
entity_path: &EntityPath,
component_descrs: impl IntoIterator<Item = impl Into<Cow<'d, ComponentDescriptor>>>,
) -> LatestAtResults {
re_tracing::profile_function!(entity_path.to_string());
// This is called very frequently, don't put a profile scope here.

let store = self.store.read();

Expand Down Expand Up @@ -87,8 +87,6 @@ impl QueryCache {
// the data.
let mut max_clear_index = (TimeInt::MIN, RowId::ZERO);
{
re_tracing::profile_scope!("clears");

let potential_clears = self.might_require_clearing.read();

let mut clear_entity_path = entity_path.clone();
Expand Down
67 changes: 35 additions & 32 deletions crates/viewer/re_ui/src/zoom_pan_area.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
//! * `view`-space: The space where the pan-and-zoom area is drawn.
//! * `scene`-space: The space where the actual content is drawn.
use egui::{emath::TSTransform, Rect, Response, Ui, UiBuilder};
use egui::{emath::TSTransform, Area, Rect, Response, Ui, UiKind};

/// Helper function to handle pan and zoom interactions on a response.
fn register_pan_and_zoom(ui: &Ui, resp: &Response, ui_from_scene: &mut TSTransform) {
Expand Down Expand Up @@ -58,42 +58,45 @@ pub fn fit_to_rect_in_scene(rect_in_ui: Rect, rect_in_scene: Rect) -> TSTransfor

/// Provides a zoom-pan area for a given view.
pub fn zoom_pan_area(
ui: &mut Ui,
ui: &Ui,
view_bounds_in_ui: Rect,
ui_from_scene: &mut TSTransform,
draw_contents: impl FnOnce(&mut Ui),
) -> Response {
let zoom_pan_layer_id = egui::LayerId::new(ui.layer_id().order, ui.id().with("zoom_pan_area"));

// Put the layer directly on-top of the main layer of the ui:
ui.ctx().set_sublayer(ui.layer_id(), zoom_pan_layer_id);

let mut ui = ui.new_child(
UiBuilder::new()
.layer_id(zoom_pan_layer_id)
.max_rect(view_bounds_in_ui)
.sense(egui::Sense::click_and_drag()),
);

// Transform to the scene space:
let visible_rect_in_scene = ui_from_scene.inverse() * view_bounds_in_ui;

// set proper clip-rect so we can interact with the background:
ui.set_clip_rect(visible_rect_in_scene);

let pan_response = ui.response();

// Update the transform based on the interactions:
register_pan_and_zoom(&ui, &pan_response, ui_from_scene);

// Update the clip-rect with the new transform, to avoid frame-delays
ui.set_clip_rect(ui_from_scene.inverse() * view_bounds_in_ui);

// Add the actual contents to the area:
draw_contents(&mut ui);
let area_resp = Area::new(ui.id().with("zoom_pan_area"))
.constrain_to(view_bounds_in_ui)
.order(ui.layer_id().order)
.kind(UiKind::GenericArea)
.show(ui.ctx(), |ui| {
// Transform to the scene space:
let visible_rect_in_scene = ui_from_scene.inverse() * view_bounds_in_ui;

// set proper clip-rect so we can interact with the background.
ui.set_clip_rect(visible_rect_in_scene);

// A Ui for sensing drag-to-pan, scroll-to-zoom, etc
let mut drag_sense_ui = ui.new_child(
egui::UiBuilder::new()
.sense(egui::Sense::click_and_drag())
.max_rect(visible_rect_in_scene),
);

drag_sense_ui.set_min_size(visible_rect_in_scene.size());
let pan_response = drag_sense_ui.response();

// Update the transform based on the interactions:
register_pan_and_zoom(ui, &pan_response, ui_from_scene);

// Update the clip-rect with the new transform, to avoid frame-delays
ui.set_clip_rect(ui_from_scene.inverse() * view_bounds_in_ui);

// Add the actual contents to the area:
draw_contents(ui);
pan_response
});

ui.ctx()
.set_transform_layer(zoom_pan_layer_id, *ui_from_scene);
.set_transform_layer(area_resp.response.layer_id, *ui_from_scene);

pan_response
area_resp.inner
}
2 changes: 1 addition & 1 deletion crates/viewer/re_view/src/query.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ pub fn latest_at_with_blueprint_resolved_data<'a>(
component_names: impl IntoIterator<Item = ComponentName>,
query_shadowed_defaults: bool,
) -> HybridLatestAtResults<'a> {
re_tracing::profile_function!(data_result.entity_path.to_string());
// This is called very frequently, don't put a profile scope here.

let mut component_set = component_names.into_iter().collect::<IntSet<_>>();

Expand Down
2 changes: 1 addition & 1 deletion crates/viewer/re_view/src/results_ext.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ pub enum HybridResults<'a> {

impl HybridResults<'_> {
pub fn query_result_hash(&self) -> Hash64 {
re_tracing::profile_function!();
// This is called very frequently, don't put a profile scope here.
// TODO(andreas): We should be able to do better than this and determine hashes for queries on the fly.

match self {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -734,7 +734,7 @@ fn transforms_at(
pinhole_image_plane_distance: impl Fn(&EntityPath) -> f32,
encountered_pinhole: &mut Option<EntityPath>,
) -> Result<TransformsAtEntity, UnreachableTransformReason> {
re_tracing::profile_function!();
// This is called very frequently, don't put a profile scope here.

let potential_transform_components =
TransformComponentTrackerStoreSubscriber::access(&entity_db.store_id(), |tracker| {
Expand Down
2 changes: 0 additions & 2 deletions crates/viewer/re_view_spatial/src/mesh_cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,6 @@ impl MeshCache {
mesh: AnyMesh<'_>,
render_ctx: &RenderContext,
) -> Option<Arc<LoadedMesh>> {
re_tracing::profile_function!();

self.0
.entry(key.versioned_instance_path_hash.row_id)
.or_default()
Expand Down
4 changes: 1 addition & 3 deletions crates/viewer/re_viewport_blueprint/src/view_contents.rs
Original file line number Diff line number Diff line change
Expand Up @@ -393,8 +393,6 @@ impl DataQueryPropertyResolver<'_> {

// Update visualizers from overrides.
if !node.data_result.visualizers.is_empty() {
re_tracing::profile_scope!("Update visualizers from overrides");

// If the user has overridden the visualizers, update which visualizers are used.
if let Some(viz_override) = blueprint
.latest_at_component::<VisualizerOverrides>(
Expand Down Expand Up @@ -524,7 +522,7 @@ impl DataQueryPropertyResolver<'_> {
query_result: &mut DataQueryResult,
view_states: &mut ViewStates,
) {
re_tracing::profile_function!();
// This is called very frequently, don't put a profile scope here.

if let Some(root) = query_result.tree.root_handle() {
let recursive_property_overrides = Default::default();
Expand Down

0 comments on commit c1b0aca

Please sign in to comment.