Skip to content

Commit 7b33dce

Browse files
committed
separate yaw and pitch in the rotation manager
1 parent adf47d9 commit 7b33dce

File tree

22 files changed

+319
-162
lines changed

22 files changed

+319
-162
lines changed

src/main/java/com/lambda/mixin/entity/EntityMixin.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
import com.lambda.event.events.EntityEvent;
2323
import com.lambda.event.events.PlayerEvent;
2424
import com.lambda.interaction.managers.rotating.RotationManager;
25-
import com.lambda.interaction.managers.rotating.RotationMode;
26-
import com.lambda.module.modules.player.RotationLock;
2725
import com.lambda.module.modules.render.NoRender;
2826
import com.lambda.util.math.Vec2d;
2927
import com.llamalad7.mixinextras.injector.ModifyExpressionValue;
@@ -149,17 +147,11 @@ private boolean modifyGetFlagGlowing(boolean original) {
149147

150148
@WrapWithCondition(method = "changeLookDirection", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;setYaw(F)V"))
151149
private boolean wrapSetYaw(Entity instance, float yaw) {
152-
return (instance != Lambda.getMc().player ||
153-
RotationLock.INSTANCE.isDisabled() ||
154-
RotationLock.INSTANCE.getRotationConfig().getRotationMode() != RotationMode.Lock ||
155-
RotationLock.getYawMode() == RotationLock.Mode.None);
150+
return RotationManager.getLockYaw() == null;
156151
}
157152

158153
@WrapWithCondition(method = "changeLookDirection", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;setPitch(F)V"))
159154
private boolean wrapSetPitch(Entity instance, float yaw) {
160-
return (instance != Lambda.getMc().player ||
161-
RotationLock.INSTANCE.isDisabled() ||
162-
RotationLock.INSTANCE.getRotationConfig().getRotationMode() != RotationMode.Lock ||
163-
RotationLock.getPitchMode() == RotationLock.Mode.None);
155+
return RotationManager.getLockPitch() == null;
164156
}
165157
}

src/main/kotlin/com/lambda/interaction/construction/simulation/checks/BreakSim.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ import com.lambda.interaction.construction.simulation.result.results.BreakResult
2929
import com.lambda.interaction.construction.simulation.result.results.GenericResult
3030
import com.lambda.interaction.construction.verify.TargetState
3131
import com.lambda.interaction.managers.hotbar.HotbarManager
32+
import com.lambda.interaction.managers.rotating.IRotationRequest.Companion.rotationRequest
3233
import com.lambda.interaction.managers.rotating.RotationManager
33-
import com.lambda.interaction.managers.rotating.RotationRequest
3434
import com.lambda.interaction.managers.rotating.visibilty.lookAtBlock
3535
import com.lambda.interaction.material.ContainerSelection.Companion.selectContainer
3636
import com.lambda.interaction.material.StackSelection
@@ -108,7 +108,7 @@ class BreakSim private constructor(simInfo: SimInfo)
108108
if (shape.boundingBoxes.map { it.offset(pos) }.any { it.contains(pov) }) {
109109
val currentCast = RotationManager.activeRotation.rayCast(buildConfig.blockReach, pov)
110110
currentCast?.blockResult?.let { blockHit ->
111-
val rotationRequest = RotationRequest(lookAtBlock(pos)?.rotation ?: return, this)
111+
val rotationRequest = lookAtBlock(pos)?.rotation?.let { rotationRequest { rotation(it) } } ?: return
112112
val breakContext = BreakContext(
113113
blockHit,
114114
rotationRequest,
@@ -127,7 +127,7 @@ class BreakSim private constructor(simInfo: SimInfo)
127127
val validHits = scanShape(pov, shape, pos, Direction.entries.toSet(), null) ?: return
128128

129129
val bestHit = buildConfig.pointSelection.select(validHits) ?: return
130-
val rotationRequest = RotationRequest(bestHit.rotation, this)
130+
val rotationRequest = rotationRequest { rotation(bestHit.rotation) }
131131

132132
val breakContext = BreakContext(
133133
bestHit.hit.blockResult ?: return,

src/main/kotlin/com/lambda/interaction/construction/simulation/checks/InteractSim.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ import com.lambda.interaction.construction.simulation.result.BuildResult
2727
import com.lambda.interaction.construction.simulation.result.results.GenericResult
2828
import com.lambda.interaction.construction.simulation.result.results.InteractResult
2929
import com.lambda.interaction.construction.verify.TargetState
30+
import com.lambda.interaction.managers.rotating.IRotationRequest.Companion.rotationRequest
3031
import com.lambda.interaction.managers.rotating.Rotation
3132
import com.lambda.interaction.managers.rotating.Rotation.Companion.rotation
3233
import com.lambda.interaction.managers.rotating.RotationManager
33-
import com.lambda.interaction.managers.rotating.RotationRequest
3434
import com.lambda.interaction.managers.rotating.visibilty.PlaceDirection
3535
import com.lambda.interaction.managers.rotating.visibilty.VisibilityChecker.CheckedHit
3636
import com.lambda.interaction.managers.rotating.visibilty.lookInDirection
@@ -137,7 +137,7 @@ class InteractSim private constructor(simInfo: InteractSimInfo)
137137

138138
val interactContext = InteractContext(
139139
hitResult,
140-
RotationRequest(checkedHit.rotation, this@InteractSim),
140+
rotationRequest { rotation(checkedHit.rotation) },
141141
swapStack.inventoryIndex,
142142
pos,
143143
state,
@@ -197,7 +197,7 @@ class InteractSim private constructor(simInfo: InteractSimInfo)
197197

198198
val interactContext = InteractContext(
199199
hitResult,
200-
RotationRequest(rotationRequest, this@InteractSim),
200+
rotationRequest { rotation(rotationRequest) },
201201
swapStack.inventoryIndex,
202202
pos,
203203
state,

src/main/kotlin/com/lambda/interaction/construction/simulation/context/BreakContext.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,18 @@
1818
package com.lambda.interaction.construction.simulation.context
1919

2020
import com.lambda.context.Automated
21-
import com.lambda.graphics.esp.ShapeScope
2221
import com.lambda.graphics.mc.TransientRegionESP
23-
import com.lambda.interaction.material.StackSelection
2422
import com.lambda.interaction.managers.LogContext
2523
import com.lambda.interaction.managers.LogContext.Companion.LogContextBuilder
2624
import com.lambda.interaction.managers.LogContext.Companion.getLogContextBuilder
2725
import com.lambda.interaction.managers.rotating.RotationRequest
26+
import com.lambda.interaction.material.StackSelection
2827
import com.lambda.threading.runSafe
2928
import com.lambda.util.BlockUtils.emptyState
3029
import net.minecraft.block.BlockState
3130
import net.minecraft.block.FallingBlock
3231
import net.minecraft.util.hit.BlockHitResult
3332
import net.minecraft.util.math.BlockPos
34-
import net.minecraft.util.math.Box
3533
import java.awt.Color
3634
import kotlin.math.sqrt
3735

@@ -74,7 +72,6 @@ data class BreakContext(
7472
group("Break Context") {
7573
text(blockPos.getLogContextBuilder())
7674
text(hitResult.getLogContextBuilder())
77-
text(rotationRequest.getLogContextBuilder())
7875
value("Hotbar Index", hotbarIndex)
7976
value("Instant Break", instantBreak)
8077
value("Cached State", cachedState)

src/main/kotlin/com/lambda/interaction/construction/simulation/context/InteractContext.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ data class InteractContext(
7272
group("Place Context") {
7373
text(blockPos.getLogContextBuilder())
7474
text(hitResult.getLogContextBuilder())
75-
text(rotationRequest.getLogContextBuilder())
7675
value("Hotbar Index", hotbarIndex)
7776
value("Cached State", cachedState)
7877
value("Expected State", expectedState)

src/main/kotlin/com/lambda/interaction/construction/simulation/result/Contextual.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import com.lambda.interaction.construction.simulation.context.BreakContext
2222
import com.lambda.interaction.construction.simulation.context.BuildContext
2323
import com.lambda.interaction.construction.simulation.context.InteractContext
2424
import com.lambda.interaction.managers.hotbar.HotbarManager
25-
import com.lambda.interaction.managers.rotating.Rotation.Companion.dist
2625
import com.lambda.interaction.managers.rotating.RotationManager
2726
import com.lambda.threading.runSafe
2827
import com.lambda.util.BlockUtils
@@ -51,7 +50,7 @@ interface Contextual : ComparableResult<Rank> {
5150
ActionConfig.SortMode.Tool,
5251
ActionConfig.SortMode.Closest -> it.sortDistance
5352
ActionConfig.SortMode.Farthest -> -it.sortDistance
54-
ActionConfig.SortMode.Rotation -> it.rotationRequest.rotation.value?.dist(RotationManager.activeRotation)
53+
ActionConfig.SortMode.Rotation -> it.rotationRequest dist RotationManager.activeRotation
5554
ActionConfig.SortMode.Random -> it.random
5655
}
5756
}.thenByDescending {

src/main/kotlin/com/lambda/interaction/managers/breaking/BreakManager.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,11 @@ package com.lambda.interaction.managers.breaking
1919

2020
import com.lambda.context.AutomatedSafeContext
2121
import com.lambda.context.SafeContext
22-
import com.lambda.event.Event
23-
import com.lambda.event.EventFlow.post
2422
import com.lambda.event.events.ConnectionEvent
2523
import com.lambda.event.events.EntityEvent
2624
import com.lambda.event.events.TickEvent
2725
import com.lambda.event.events.WorldEvent
2826
import com.lambda.event.events.onDynamicRender
29-
import com.lambda.graphics.esp.ShapeScope
30-
3127
import com.lambda.event.listener.SafeListener.Companion.listen
3228
import com.lambda.event.listener.UnsafeListener.Companion.listenUnsafe
3329
import com.lambda.graphics.renderer.esp.DynamicAABB
@@ -147,7 +143,6 @@ object BreakManager : Manager<BreakRequest>(
147143
}?.context?.itemSelection
148144
?: StackSelection.EVERYTHING.select()
149145

150-
private val pendingBreakCount get() = activeInfos.count() + pendingActions.size
151146
override val blockedPositions
152147
get() = activeInfos.map { it.context.blockPos } + pendingActions.map { it.context.blockPos }
153148

@@ -450,7 +445,6 @@ object BreakManager : Manager<BreakRequest>(
450445
info.breakConfig.rotate
451446
}?.let { info ->
452447
val rotation = info.context.rotationRequest
453-
logger.debug("Requesting rotation", rotation)
454448
rotation.submit(false)
455449
}
456450

src/main/kotlin/com/lambda/interaction/managers/hotbar/HotbarManager.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ object HotbarManager : Manager<HotbarRequest>(
5555
},
5656
onClose = { checkResetSwap() }
5757
), Logger {
58-
var activeRequest: HotbarRequest? = null
58+
private var activeRequest: HotbarRequest? = null
5959
@JvmStatic var activeSlot: Int = -1
6060

6161
val serverSlot get() = runSafe {

src/main/kotlin/com/lambda/interaction/managers/rotating/Rotation.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,16 @@ data class Rotation(val yaw: Double, val pitch: Double) {
115115
return Rotation(yaw, pitch)
116116
}
117117

118+
fun Rotation.slerpYaw(targetYaw: Double, speed: Double): Double {
119+
val yawDiff = wrap(targetYaw - yaw)
120+
return yaw + yawDiff.coerceIn(-speed, speed)
121+
}
122+
123+
fun Rotation.slerpPitch(targetPitch: Double, speed: Double): Double {
124+
val pitchDiff = targetPitch - pitch
125+
return (pitch + pitchDiff.coerceIn(-speed, speed)).coerceIn(-90.0, 90.0)
126+
}
127+
118128
fun Rotation.slerp(other: Rotation, speed: Double): Rotation {
119129
val yawDiff = wrap(other.yaw - yaw)
120130
val pitchDiff = other.pitch - pitch

0 commit comments

Comments
 (0)