From caa57922bf33ae7c34d044e4f8d37bbee45db3ba Mon Sep 17 00:00:00 2001 From: Rendo Date: Wed, 5 Aug 2026 19:10:31 +0500 Subject: [PATCH] fix: Incorrect camera minimum distance and start distance --- src/camera.rs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/camera.rs b/src/camera.rs index e19e67d..f676d14 100644 --- a/src/camera.rs +++ b/src/camera.rs @@ -2,6 +2,8 @@ use bevy::{input::mouse::{AccumulatedMouseMotion, AccumulatedMouseScroll}, prelu use crate::grid::Grid; use std::{f32::consts::FRAC_PI_2,ops::Range}; +const MIN_DISTANCE: f32 = 1.; + pub struct GameCameraPlugin; impl Plugin for GameCameraPlugin { @@ -57,7 +59,18 @@ pub fn camera() -> impl Scene { center.z + grid.size.z as f32 * 1.2).looking_at(center, Vec3::Y)) } ) - CameraOrbit + template( + |ctx| { + let grid = ctx.resource::(); + let center = grid.size.as_vec3() * 0.5; + Ok(CameraOrbit { + distance: vec3( + center.x + grid.size.x as f32 * 1.2, + grid.size.y as f32 * 1.2, + center.z + grid.size.z as f32 * 1.2).length(), + ..default() + }) + }) } } @@ -97,12 +110,8 @@ pub fn orbit( } let center = grid.size.as_vec3() * 0.5; - let min_distance = vec3( - center.x + grid.size.x as f32 * 1.2, - grid.size.y as f32 * 1.2, - center.z + grid.size.z as f32 * 1.2).length(); - orbit.distance = (orbit.distance-mouse_scroll.delta.y).max(min_distance); + orbit.distance = (orbit.distance-mouse_scroll.delta.y).max(MIN_DISTANCE); transform.translation = center + orbit.center_offset -transform.forward() * orbit.distance; }