diff --git a/src/main/java/cam72cam/immersiverailroading/model/part/TrackFollower.java b/src/main/java/cam72cam/immersiverailroading/model/part/TrackFollower.java index fa538d61a..a76df776b 100644 --- a/src/main/java/cam72cam/immersiverailroading/model/part/TrackFollower.java +++ b/src/main/java/cam72cam/immersiverailroading/model/part/TrackFollower.java @@ -8,6 +8,7 @@ import cam72cam.immersiverailroading.thirdparty.trackapi.ITrack; import cam72cam.immersiverailroading.util.VecUtil; import cam72cam.mod.math.Vec3d; +import cam72cam.mod.util.DegreeFuncs; import cam72cam.mod.world.World; import util.Matrix4; @@ -84,6 +85,17 @@ public Matrix4 getMatrix() { yawReadout = toPointYaw + atPointYaw; + float min = this.min; + // TODO This implies the code above is broken, but works around some of the weirder edge cases. + if (DegreeFuncs.delta(0, toPointYaw) > 90) { + min = -min; + toPointYaw = toPointYaw - 180; + } + if (DegreeFuncs.delta(0, atPointYaw) > 90) { + atPointYaw -= 180; + min = -min; + } + matrix.setIdentity(); matrix.rotate(Math.toRadians(toPointYaw), 0, 1, 0); matrix.rotate(Math.toRadians(toPointPitch), 0, 0, 1);