From 8e9b403fbf02aa8310e64f2230591ae788b10d93 Mon Sep 17 00:00:00 2001 From: RainWarrior Date: Thu, 10 Mar 2016 04:48:13 +0300 Subject: [PATCH] Fixed (hopefully) perspective transformations for custom models too. --- .../minecraftforge/client/ForgeHooksClient.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java index 7fc12267d1..dac0b718b3 100644 --- a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java +++ b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java @@ -382,20 +382,34 @@ public class ForgeHooksClient return m; } + private static final Matrix4f flipX; + static { + flipX = new Matrix4f(); + flipX.setIdentity(); + flipX.m00 = -1; + } + @SuppressWarnings("deprecation") public static IBakedModel handleCameraTransforms(IBakedModel model, ItemCameraTransforms.TransformType cameraTransformType, boolean leftHandHackery) { if(model instanceof IPerspectiveAwareModel) { - // FIXME: left hand hackery Pair pair = ((IPerspectiveAwareModel)model).handlePerspective(cameraTransformType); + Matrix4f matrix = new Matrix4f(pair.getRight()); + if(leftHandHackery) + { + matrix.mul(flipX, matrix); + matrix.mul(matrix, flipX); + } if(pair.getRight() != null) multiplyCurrentGlMatrix(pair.getRight()); return pair.getLeft(); } else { + //if(leftHandHackery) GlStateManager.scale(-1, 1, 1); ItemCameraTransforms.func_188034_a(model.getItemCameraTransforms().getTransform(cameraTransformType), leftHandHackery); + //if(leftHandHackery) GlStateManager.scale(-1, 1, 1); } return model; }