From a41ec5faf339babd3ad022827b158328cc19dc41 Mon Sep 17 00:00:00 2001 From: ccetl <109693935+ccetl@users.noreply.github.com> Date: Thu, 20 Feb 2025 20:44:39 +0100 Subject: [PATCH] fix(LeastDifferencePreference): preferred spot --- .../aiming/preference/LeastDifferencePreference.kt | 10 ++++------ .../utils/aiming/preference/RotationPreference.kt | 2 +- .../liquidbounce/utils/aiming/utils/RotationFinding.kt | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/net/ccbluex/liquidbounce/utils/aiming/preference/LeastDifferencePreference.kt b/src/main/kotlin/net/ccbluex/liquidbounce/utils/aiming/preference/LeastDifferencePreference.kt index ab5921948a8..47199659a84 100644 --- a/src/main/kotlin/net/ccbluex/liquidbounce/utils/aiming/preference/LeastDifferencePreference.kt +++ b/src/main/kotlin/net/ccbluex/liquidbounce/utils/aiming/preference/LeastDifferencePreference.kt @@ -43,22 +43,20 @@ class LeastDifferencePreference( return eyesPos + baseRotation.directionVector * range } - override fun getPreferredSpotOnBox(box: Box, eyesPos: Vec3d, range: Double): Vec3d? { + override fun getPreferredSpotOnBox(box: Box, eyesPos: Vec3d, range: Double): Vec3d { if (basePoint != null) { return basePoint } - if (box.contains(eyesPos)) { - return eyesPos - } - val preferredSpot = getPreferredSpot(eyesPos, range) if (box.contains(preferredSpot)) { return preferredSpot } val look = Line(eyesPos, preferredSpot - eyesPos) - return look.getPointOnBoxInDirection(box)?.takeIf { it.squaredDistanceTo(eyesPos) <= range.sq() } + return look.getPointOnBoxInDirection(box) + ?.takeIf { it.squaredDistanceTo(eyesPos) <= range.sq() } + ?: preferredSpot } override fun compare(o1: Rotation, o2: Rotation): Int { diff --git a/src/main/kotlin/net/ccbluex/liquidbounce/utils/aiming/preference/RotationPreference.kt b/src/main/kotlin/net/ccbluex/liquidbounce/utils/aiming/preference/RotationPreference.kt index 144ec162a61..d9ea8835f0c 100644 --- a/src/main/kotlin/net/ccbluex/liquidbounce/utils/aiming/preference/RotationPreference.kt +++ b/src/main/kotlin/net/ccbluex/liquidbounce/utils/aiming/preference/RotationPreference.kt @@ -26,7 +26,7 @@ interface RotationPreference : Comparator { fun getPreferredSpot(eyesPos: Vec3d, range: Double, ): Vec3d - fun getPreferredSpotOnBox(box: Box, eyesPos: Vec3d, range: Double): Vec3d? { + fun getPreferredSpotOnBox(box: Box, eyesPos: Vec3d, range: Double): Vec3d { return getPreferredSpot(eyesPos, range) } diff --git a/src/main/kotlin/net/ccbluex/liquidbounce/utils/aiming/utils/RotationFinding.kt b/src/main/kotlin/net/ccbluex/liquidbounce/utils/aiming/utils/RotationFinding.kt index 3dc2e59503d..a33e5186bd6 100644 --- a/src/main/kotlin/net/ccbluex/liquidbounce/utils/aiming/utils/RotationFinding.kt +++ b/src/main/kotlin/net/ccbluex/liquidbounce/utils/aiming/utils/RotationFinding.kt @@ -307,7 +307,7 @@ fun raytraceBox( val rangeSquared = range * range val wallsRangeSquared = wallsRange * wallsRange - val preferredSpot = rotationPreference.getPreferredSpotOnBox(box, eyes, range) ?: return null + val preferredSpot = rotationPreference.getPreferredSpotOnBox(box, eyes, range) val preferredSpotOnBox = if (box.contains(eyes) && box.contains(preferredSpot)) { preferredSpot } else {