From 3d676743f1b3b17f65b3771600c95c6db753af14 Mon Sep 17 00:00:00 2001 From: Christian Mesh Date: Sat, 9 Dec 2023 09:39:12 -0500 Subject: [PATCH] Fix bug with some oddly setup locomotives Example: Shaded's Coggers --- .../model/part/TrackFollower.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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);