From d5478df76e5022bf4fe8b1122b82d21331ab2f99 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Sat, 25 Apr 2026 16:53:55 +0200 Subject: [PATCH] Implement vertical look assistance calculation in navigation controller --- .../third-person-navigation-controller.ts | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/runtime-three/third-person-navigation-controller.ts b/src/runtime-three/third-person-navigation-controller.ts index 2b87c87b..abbf788d 100644 --- a/src/runtime-three/third-person-navigation-controller.ts +++ b/src/runtime-three/third-person-navigation-controller.ts @@ -417,7 +417,37 @@ export class ThirdPersonNavigationController implements NavigationController { TARGET_ASSIST_YAW_SPEED * targetAssist.strength, dt ); + const eyeHeight = getFirstPersonPlayerEyeHeight(this.activePlayerShape); + const pivotY = + this.smoothedFeetY + eyeHeight * CAMERA_PIVOT_EYE_HEIGHT_FACTOR; + const targetLookOffsetY = Math.max( + -TARGET_ASSIST_VERTICAL_LOOK_LIMIT, + Math.min( + TARGET_ASSIST_VERTICAL_LOOK_LIMIT, + targetAssist.targetPosition.y - pivotY + ) + ); + this.targetAssistLookOffsetY = dampScalar( + this.targetAssistLookOffsetY, + targetLookOffsetY, + TARGET_ASSIST_VERTICAL_LOOK_SPEED * targetAssist.strength, + dt + ); + } else { + this.targetAssistLookOffsetY = dampScalar( + this.targetAssistLookOffsetY, + 0, + TARGET_ASSIST_VERTICAL_LOOK_SPEED, + dt + ); } + } else { + this.targetAssistLookOffsetY = dampScalar( + this.targetAssistLookOffsetY, + 0, + TARGET_ASSIST_VERTICAL_LOOK_SPEED, + dt + ); } const movementYawRadians =