From 2c7e3b1cacc8252cb01780b10dfe99a03129184a Mon Sep 17 00:00:00 2001 From: Adrien GIVRY Date: Tue, 29 Apr 2025 14:24:49 -0400 Subject: [PATCH] Improved focus distance to be less close to the object --- editor/src/camera/mod.rs | 6 +++++- editor/src/scene/mod.rs | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/editor/src/camera/mod.rs b/editor/src/camera/mod.rs index 8e2ee390c..b49ef4414 100644 --- a/editor/src/camera/mod.rs +++ b/editor/src/camera/mod.rs @@ -241,7 +241,7 @@ impl CameraController { world_space_position } - pub fn fit_object(&mut self, scene: &mut Scene, handle: Handle) { + pub fn fit_object(&mut self, scene: &mut Scene, handle: Handle, scale: Option) { // Combine AABBs from the descendants. let mut aabb = AxisAlignedBoundingBox::default(); for (_, descendant) in scene.graph.traverse_iter(handle) { @@ -256,6 +256,10 @@ impl CameraController { aabb = AxisAlignedBoundingBox::from_point(scene.graph[handle].global_position()); } + if scale.is_some() { + aabb = aabb.transform(&Matrix4::identity().scale(scale.unwrap())); + } + let fit_parameters = scene.graph[self.camera].as_camera().fit( &aabb, scene diff --git a/editor/src/scene/mod.rs b/editor/src/scene/mod.rs index f58f20212..2c678e055 100644 --- a/editor/src/scene/mod.rs +++ b/editor/src/scene/mod.rs @@ -990,7 +990,7 @@ impl SceneController for GameScene { } Message::FocusObject(handle) => { let scene = &mut engine.scenes[self.scene]; - self.camera_controller.fit_object(scene, *handle); + self.camera_controller.fit_object(scene, *handle, Some(2.0)); false } Message::SyncNodeHandleName { view, handle } => {