@@ -228,31 +228,22 @@ impl ViewContextSystem for TransformTreeContext {
228228 tree_transforms_per_frame
229229 . into_iter ( )
230230 . filter_map ( |( transform_frame_id_hash, tree_transform) | {
231- self . entity_transform_id_mapping
231+ let entity_paths_for_frame = self
232+ . entity_transform_id_mapping
232233 . transform_frame_id_to_entity_path
233- . get ( & transform_frame_id_hash)
234- . map ( |entity_paths| {
235- entity_paths. iter ( ) . map ( move |entity_path_hash| {
236- let transform_info = tree_transform
237- . as_ref ( )
238- . map ( |tree_transform| {
239- let poses = transforms
240- . pose_transforms ( * entity_path_hash)
241- . map ( |pose_transforms| {
242- pose_transforms. latest_at_instance_poses (
243- ctx. recording ( ) ,
244- latest_at_query,
245- )
246- } )
247- . unwrap_or_default ( ) ;
248-
249- TransformInfo :: new ( tree_transform, poses)
250- } )
251- . map_err ( |err| err. clone ( ) ) ;
252-
253- ( * entity_path_hash, transform_info)
254- } )
255- } )
234+ . get ( & transform_frame_id_hash) ?;
235+ let transform_infos = entity_paths. iter ( ) . map ( move |entity_path_hash| {
236+ let transform_info = map_tree_transform_to_transform_info (
237+ ctx,
238+ tree_transform,
239+ transforms,
240+ latest_at_query,
241+ entity_path_hash,
242+ ) ;
243+ ( * entity_path_hash, transform_info)
244+ } ) ;
245+
246+ Some ( transform_infos)
256247 } )
257248 . flatten ( )
258249 . collect ( )
@@ -273,6 +264,24 @@ impl ViewContextSystem for TransformTreeContext {
273264 }
274265}
275266
267+ fn map_tree_transform_to_transform_info (
268+ ctx : & ViewContext < ' _ > ,
269+ tree_transform : Result < TreeTransform , re_tf:: TransformFromToError > ,
270+ transforms : & re_tf:: CachedTransformsForTimeline ,
271+ latest_at_query : & LatestAtQuery ,
272+ entity_path_hash : & EntityPathHash ,
273+ ) -> Result < TransformInfo , re_tf:: TransformFromToError > {
274+ let tree_transform = tree_transform. as_ref ( ) . map_err ( |err| err. clone ( ) ) ?;
275+ let poses = transforms
276+ . pose_transforms ( * entity_path_hash)
277+ . map ( |pose_transforms| {
278+ pose_transforms. latest_at_instance_poses ( ctx. recording ( ) , latest_at_query)
279+ } )
280+ . unwrap_or_default ( ) ;
281+
282+ Ok ( TransformInfo :: new ( tree_transform, poses) )
283+ }
284+
276285impl TransformTreeContext {
277286 /// Returns a transform info describing how to get to the view's target frame for the given entity.
278287 #[ inline]
0 commit comments