From 8a887022b00267fc01a9f10942afbb3ac0f2a0ee Mon Sep 17 00:00:00 2001 From: Light_Quanta Date: Sun, 26 Jan 2025 09:34:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96Bmp2Model=E5=8A=A8=E7=94=BB?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/entity/Bmp2Model.java | 176 +++++------------- 1 file changed, 48 insertions(+), 128 deletions(-) diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/Bmp2Model.java b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/Bmp2Model.java index e714de203..18c6753b8 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/Bmp2Model.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/Bmp2Model.java @@ -50,137 +50,57 @@ public class Bmp2Model extends GeoModel { CoreGeoBone trackR = getAnimationProcessor().getBone("trackR" + i); CoreGeoBone trackRRot = getAnimationProcessor().getBone("trackRRot" + i); - float t = animatable.getEntityData().get(TRACK_L) + 2 * i; + float t1 = animatable.getEntityData().get(TRACK_L) + 2 * i % 100; + setTrackPos(trackL, trackLRot, t1); - if (t >= 100) { - t -= 100; - } + float t2 = animatable.getEntityData().get(TRACK_R) + 2 * i % 100; + setTrackPos(trackR, trackRRot, t2); + } + } - if (t < 37.5) { - trackL.setPosY(0); - trackL.setPosZ(3 * t); - trackLRot.setRotX(0); - } + private static void setTrackPos(CoreGeoBone track, CoreGeoBone trackRot, float t) { + if (track == null || trackRot == null) return; - if (t >= 37.5 && t < 39.5) { - trackL.setPosY(-(t - 37.5f) * 3 * 0.7071f); - trackL.setPosZ(3 * 37.5f + (t - 37.5f) * 3 * 0.7071f); - trackLRot.setRotX(45 * Mth.DEG_TO_RAD); - } - - if (t >= 39.5 && t < 41.5) { - trackL.setPosY(-5.3f - (t - 39.5f) * 3); - trackL.setPosZ(116); - trackLRot.setRotX(90 * Mth.DEG_TO_RAD); - } - - if (t >= 41.5 && t < 43) { - trackL.setPosY(-11.6f - (t - 41.5f) * 3 * 0.7071f); - trackL.setPosZ(115 - (t - 41.5f) * 3 * 0.7071f); - trackLRot.setRotX(135 * Mth.DEG_TO_RAD); - } - - if (t >= 43 && t < 49.5) { - trackL.setPosY(-15.6f - (t - 43f) * 3 * 0.45f); - trackL.setPosZ(109.5f - (t - 43f) * 3 * 0.75f); - trackLRot.setRotX(150 * Mth.DEG_TO_RAD); - } - - if (t >= 49.5 && t < 76.5) { - trackL.setPosY(-23.5f); - trackL.setPosZ(95f - (t - 49.5f) * 3); - trackLRot.setRotX(180 * Mth.DEG_TO_RAD); - } - - if (t >= 76.5 && t < 83.5) { - trackL.setPosY(-23.5f + (t - 76.5f) * 3 * 0.45f); - trackL.setPosZ(13.5f - (t - 76.5f) * 3 * 0.75f); - trackLRot.setRotX(210 * Mth.DEG_TO_RAD); - } - - if (t >= 83.5 && t < 85.5) { - trackL.setPosY(-12.7f + (t - 83.5f) * 3 * 0.7071f); - trackL.setPosZ(-3.5f - (t - 83.5f) * 3 * 0.7071f); - trackLRot.setRotX(225 * Mth.DEG_TO_RAD); - } - - if (t >= 85.5 && t < 87) { - trackL.setPosY(-9.2f + (t - 85.5f) * 3); - trackL.setPosZ(-6.9f); - trackLRot.setRotX(270 * Mth.DEG_TO_RAD); - } - - if (t >= 87 && t < 89) { - trackL.setPosY(-4.3f + (t - 87f) * 3 * 0.7071f); - trackL.setPosZ(-6.9f + (t - 87f) * 3 * 0.7071f); - trackLRot.setRotX(315 * Mth.DEG_TO_RAD); - } - - float t2 = animatable.getEntityData().get(TRACK_R) + 2 * i; - - if (t2 >= 100) { - t2 -= 100; - } - - if (t2 < 37.5) { - trackR.setPosY(0); - trackR.setPosZ(3 * t2); - trackRRot.setRotX(0); - } - - if (t2>= 37.5 && t2< 39.5) { - trackR.setPosY(-(t2- 37.5f) * 3 * 0.7071f); - trackR.setPosZ(3 * 37.5f + (t2- 37.5f) * 3 * 0.7071f); - trackRRot.setRotX(45 * Mth.DEG_TO_RAD); - } - - if (t2>= 39.5 && t2< 41.5) { - trackR.setPosY(-5.3f - (t2- 39.5f) * 3); - trackR.setPosZ(116); - trackRRot.setRotX(90 * Mth.DEG_TO_RAD); - } - - if (t2>= 41.5 && t2< 43) { - trackR.setPosY(-11.6f - (t2- 41.5f) * 3 * 0.7071f); - trackR.setPosZ(115 - (t2- 41.5f) * 3 * 0.7071f); - trackRRot.setRotX(135 * Mth.DEG_TO_RAD); - } - - if (t2>= 43 && t2< 49.5) { - trackR.setPosY(-15.6f - (t2- 43f) * 3 * 0.45f); - trackR.setPosZ(109.5f - (t2- 43f) * 3 * 0.75f); - trackRRot.setRotX(150 * Mth.DEG_TO_RAD); - } - - if (t2>= 49.5 && t2< 76.5) { - trackR.setPosY(-23.5f); - trackR.setPosZ(95f - (t2- 49.5f) * 3); - trackRRot.setRotX(180 * Mth.DEG_TO_RAD); - } - - if (t2>= 76.5 && t2< 83.5) { - trackR.setPosY(-23.5f + (t2- 76.5f) * 3 * 0.45f); - trackR.setPosZ(13.5f - (t2- 76.5f) * 3 * 0.75f); - trackRRot.setRotX(210 * Mth.DEG_TO_RAD); - } - - if (t2>= 83.5 && t2< 85.5) { - trackR.setPosY(-12.7f + (t2- 83.5f) * 3 * 0.7071f); - trackR.setPosZ(-3.5f - (t2- 83.5f) * 3 * 0.7071f); - trackRRot.setRotX(225 * Mth.DEG_TO_RAD); - } - - if (t2>= 85.5 && t2< 87) { - trackR.setPosY(-9.2f + (t2- 85.5f) * 3); - trackR.setPosZ(-6.9f); - trackRRot.setRotX(270 * Mth.DEG_TO_RAD); - } - - if (t2>= 87 && t2< 89) { - trackR.setPosY(-4.3f + (t2- 87f) * 3 * 0.7071f); - trackR.setPosZ(-6.9f + (t2- 87f) * 3 * 0.7071f); - trackRRot.setRotX(315 * Mth.DEG_TO_RAD); - } + if (t < 37.5) { + track.setPosY(0); + track.setPosZ(3 * t); + trackRot.setRotX(0); + } else if (t < 39.5) { + track.setPosY(-(t - 37.5f) * 3 * 0.7071f); + track.setPosZ(3 * 37.5f + (t - 37.5f) * 3 * 0.7071f); + trackRot.setRotX(45 * Mth.DEG_TO_RAD); + } else if (t < 41.5) { + track.setPosY(-5.3f - (t - 39.5f) * 3); + track.setPosZ(116); + trackRot.setRotX(90 * Mth.DEG_TO_RAD); + } else if (t < 43) { + track.setPosY(-11.6f - (t - 41.5f) * 3 * 0.7071f); + track.setPosZ(115 - (t - 41.5f) * 3 * 0.7071f); + trackRot.setRotX(135 * Mth.DEG_TO_RAD); + } else if (t < 49.5) { + track.setPosY(-15.6f - (t - 43f) * 3 * 0.45f); + track.setPosZ(109.5f - (t - 43f) * 3 * 0.75f); + trackRot.setRotX(150 * Mth.DEG_TO_RAD); + } else if (t < 76.5) { + track.setPosY(-23.5f); + track.setPosZ(95f - (t - 49.5f) * 3); + trackRot.setRotX(180 * Mth.DEG_TO_RAD); + } else if (t < 83.5) { + track.setPosY(-23.5f + (t - 76.5f) * 3 * 0.45f); + track.setPosZ(13.5f - (t - 76.5f) * 3 * 0.75f); + trackRot.setRotX(210 * Mth.DEG_TO_RAD); + } else if (t < 85.5) { + track.setPosY(-12.7f + (t - 83.5f) * 3 * 0.7071f); + track.setPosZ(-3.5f - (t - 83.5f) * 3 * 0.7071f); + trackRot.setRotX(225 * Mth.DEG_TO_RAD); + } else if (t < 87) { + track.setPosY(-9.2f + (t - 85.5f) * 3); + track.setPosZ(-6.9f); + trackRot.setRotX(270 * Mth.DEG_TO_RAD); + } else if (t < 89) { + track.setPosY(-4.3f + (t - 87f) * 3 * 0.7071f); + track.setPosZ(-6.9f + (t - 87f) * 3 * 0.7071f); + trackRot.setRotX(315 * Mth.DEG_TO_RAD); } } }