memoize the signals

This commit is contained in:
Evan Carroll 2026-01-26 23:50:19 -06:00
parent a4cf8d3df4
commit e8ca7c9a12
2 changed files with 10 additions and 8 deletions

View file

@ -444,16 +444,17 @@ pub fn RealmSceneViewer(
let text_em_size = Signal::derive(move || settings.get().text_em_size);
// Compute SceneTransform once for all avatars and props
let scene_transform = Signal::derive(move || SceneTransform {
// Compute SceneTransform once for all avatars and props (memoized)
let scene_transform: Signal<SceneTransform> = Memo::new(move |_| SceneTransform {
scale_x: scale_x.get(),
scale_y: scale_y.get(),
offset_x: offset_x.get(),
offset_y: offset_y.get(),
});
})
.into();
// Compute ScreenBounds once for all avatars (for clamping)
let screen_bounds = Signal::derive(move || {
// Compute ScreenBounds once for all avatars (memoized for clamping)
let screen_bounds: Signal<ScreenBounds> = Memo::new(move |_| {
let t = scene_transform.get();
ScreenBounds::from_transform(
scene_width_f,
@ -463,7 +464,8 @@ pub fn RealmSceneViewer(
t.offset_x,
t.offset_y,
)
});
})
.into();
let members_by_key = Signal::derive(move || {
sorted_members.get().into_iter().enumerate()