Split MixinEntityRenderer into multiple, more focused files

This commit is contained in:
Jonas Herzig
2021-02-27 20:45:19 +01:00
parent fad89626e5
commit 3ec81d5c35
10 changed files with 262 additions and 238 deletions

View File

@@ -1,66 +1,11 @@
package com.replaymod.render.mixin; package com.replaymod.render.mixin;
import com.replaymod.core.versions.MCVer;
import com.replaymod.render.capturer.StereoscopicOpenGlFrameCapturer;
import com.replaymod.render.hooks.EntityRendererHandler; import com.replaymod.render.hooks.EntityRendererHandler;
import net.minecraft.client.MinecraftClient;
import net.minecraft.entity.player.PlayerEntity;
import org.lwjgl.opengl.GL11;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//#if MC>=11500
import net.minecraft.client.util.math.MatrixStack;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
//#endif
//#if MC>=11400
import net.minecraft.client.render.Camera;
import net.minecraft.util.hit.HitResult;
//#endif
//#if MC>=11400
import net.minecraft.client.options.GameOptions;
import net.minecraft.client.render.GameRenderer; import net.minecraft.client.render.GameRenderer;
import net.minecraft.util.math.Matrix4f; import org.spongepowered.asm.mixin.Mixin;
import net.minecraft.client.render.WorldRenderer;
//#else
//$$ import com.replaymod.replay.camera.CameraEntity;
//$$ import net.minecraft.client.renderer.EntityRenderer;
//$$ import net.minecraft.client.renderer.RenderGlobal;
//$$ import net.minecraft.client.settings.GameSettings;
//$$ import net.minecraft.entity.Entity;
//$$ import org.lwjgl.util.glu.Project;
//#endif
//#if MC>=10904 @Mixin(GameRenderer.class)
import net.minecraft.world.RaycastContext;
//#else
//$$ import net.minecraft.util.MovingObjectPosition;
//#endif
//#if MC>=10800
import com.mojang.blaze3d.platform.GlStateManager;
//#else
//$$ import net.minecraft.entity.EntityLivingBase;
//$$ import com.replaymod.core.versions.MCVer.GlStateManager;
//#endif
import static com.replaymod.core.versions.MCVer.*;
//#if MC>=11400
@Mixin(value = GameRenderer.class)
//#else
//$$ @Mixin(value = EntityRenderer.class)
//#endif
public abstract class MixinEntityRenderer implements EntityRendererHandler.IEntityRenderer { public abstract class MixinEntityRenderer implements EntityRendererHandler.IEntityRenderer {
@Shadow
public MinecraftClient client;
private EntityRendererHandler replayModRender_handler; private EntityRendererHandler replayModRender_handler;
@Override @Override
@@ -72,185 +17,4 @@ public abstract class MixinEntityRenderer implements EntityRendererHandler.IEnti
public EntityRendererHandler replayModRender_getHandler() { public EntityRendererHandler replayModRender_getHandler() {
return replayModRender_handler; return replayModRender_handler;
} }
@Inject(method = "renderHand", at = @At("HEAD"), cancellable = true)
private void replayModRender_renderSpectatorHand(
//#if MC>=11500
MatrixStack matrixStack,
//#endif
//#if MC>=11400
Camera camera,
//#endif
float partialTicks,
//#if MC<11400
//$$ int renderPass,
//#endif
CallbackInfo ci
) {
if (replayModRender_handler != null) {
if (replayModRender_handler.omnidirectional) {
// No spectator hands during 360° view, we wouldn't even know where to put it
ci.cancel();
//#if MC>=11400
}
//#else
//$$ } else {
//$$ Entity currentEntity = this.mc.getRenderViewEntity();
//$$ if (currentEntity instanceof EntityPlayer && !(currentEntity instanceof CameraEntity)) {
//$$ if (renderPass == 2) { // Need to update render pass
//$$ renderPass = replayModRender_handler.data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE ? 1 : 0;
//$$ renderHand(partialTicks, renderPass);
//$$ ci.cancel();
//$$ } // else, render normally
//$$ }
//$$ }
//#endif
}
}
//#if MC<11400
//$$ @Shadow
//$$ public abstract void renderHand(float partialTicks, int renderPass);
//#endif
/*
* Stereoscopic Renderer
*/
//#if MC>=11500
@Inject(method = "method_22973", at = @At("RETURN"), cancellable = true)
private void replayModRender_setupStereoscopicProjection(CallbackInfoReturnable<Matrix4f> ci) {
if (replayModRender_getHandler() != null) {
Matrix4f offset;
if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
offset = Matrix4f.translate(0.07f, 0, 0);
} else if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.RIGHT_EYE) {
offset = Matrix4f.translate(-0.07f, 0, 0);
} else {
return;
}
offset.multiply(ci.getReturnValue());
ci.setReturnValue(offset);
}
}
//#else
//#if MC>=10800
//$$ @Inject(method = "applyCameraTransformations", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;loadIdentity()V", shift = At.Shift.AFTER, ordinal = 0))
//#else
//$$ @Inject(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glLoadIdentity()V", shift = At.Shift.AFTER, ordinal = 0, remap = false))
//#endif
//$$ private void replayModRender_setupStereoscopicProjection(
//$$ float partialTicks,
//#if MC<11400
//$$ int renderPass,
//#endif
//$$ CallbackInfo ci
//$$ ) {
//$$ if (replayModRender_getHandler() != null) {
//$$ if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
//$$ GL11.glTranslatef(0.07f, 0, 0);
//$$ } else if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.RIGHT_EYE) {
//$$ GL11.glTranslatef(-0.07f, 0, 0);
//$$ }
//$$ }
//$$ }
//#endif
//#if MC>=11500
@Inject(method = "renderWorld", at = @At("HEAD"))
private void replayModRender_setupStereoscopicProjection(float partialTicks, long frameStartNano, MatrixStack matrixStack, CallbackInfo ci) {
if (replayModRender_getHandler() != null) {
if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
matrixStack.translate(0.1, 0, 0);
} else if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.RIGHT_EYE) {
matrixStack.translate(-0.1, 0, 0);
}
}
}
//#else
//#if MC>=10800
//$$ @Inject(method = "applyCameraTransformations", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;loadIdentity()V", shift = At.Shift.AFTER, ordinal = 1))
//#else
//$$ @Inject(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glLoadIdentity()V", shift = At.Shift.AFTER, ordinal = 1, remap = false))
//#endif
//$$ private void replayModRender_setupStereoscopicModelView(
//$$ float partialTicks,
//#if MC<11400
//$$ int renderPass,
//#endif
//$$ CallbackInfo ci
//$$ ) {
//$$ if (replayModRender_getHandler() != null) {
//$$ if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
//$$ GL11.glTranslatef(0.1f, 0, 0);
//$$ } else if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.RIGHT_EYE) {
//$$ GL11.glTranslatef(-0.1f, 0, 0);
//$$ }
//$$ }
//$$ }
//#endif
/*
* Cubic Renderer
*/
//#if MC>=11400
@Redirect(method = "method_22973", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/Matrix4f;viewboxMatrix(DFFF)Lnet/minecraft/util/math/Matrix4f;"))
private Matrix4f replayModRender_perspective$0(double fovY, float aspect, float zNear, float zFar) {
return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
}
//#if MC<11500
//#if MC>=11400
//$$ @Redirect(method = "renderCenter", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;method_4929(DFFF)Lnet/minecraft/client/util/math/Matrix4f;"))
//#else
//$$ @Redirect(method = "updateCameraAndRender(FJ)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/Matrix4f;perspective(DFFF)Lnet/minecraft/client/renderer/Matrix4f;"))
//#endif
//$$ private Matrix4f replayModRender_perspective$1(double fovY, float aspect, float zNear, float zFar) {
//$$ return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
//$$ }
//$$
//$$ @Redirect(method = "renderAboveClouds", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;method_4929(DFFF)Lnet/minecraft/client/util/math/Matrix4f;"))
//$$ private Matrix4f replayModRender_perspective$2(double fovY, float aspect, float zNear, float zFar) {
//$$ return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
//$$ }
//#endif
private Matrix4f replayModRender_perspective(float fovY, float aspect, float zNear, float zFar) {
if (replayModRender_getHandler() != null && replayModRender_getHandler().omnidirectional) {
fovY = 90;
aspect = 1;
}
return Matrix4f.viewboxMatrix(fovY, aspect, zNear, zFar);
}
//#else
//$$ @Redirect(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/util/glu/Project;gluPerspective(FFFF)V", remap = false))
//$$ private void replayModRender_gluPerspective$0(float fovY, float aspect, float zNear, float zFar) {
//$$ replayModRender_gluPerspective(fovY, aspect, zNear, zFar);
//$$ }
//$$
//#if MC>=10800
//$$ @Redirect(method = "renderWorldPass", at = @At(value = "INVOKE", target = "Lorg/lwjgl/util/glu/Project;gluPerspective(FFFF)V", remap = false))
//#else
//$$ @Redirect(method = "renderHand", at = @At(value = "INVOKE", target = "Lorg/lwjgl/util/glu/Project;gluPerspective(FFFF)V", remap = false))
//#endif
//$$ private void replayModRender_gluPerspective$1(float fovY, float aspect, float zNear, float zFar) {
//$$ replayModRender_gluPerspective(fovY, aspect, zNear, zFar);
//$$ }
//$$
//#if MC>=10800
//$$ @Redirect(method = "renderCloudsCheck", at = @At(value = "INVOKE", target = "Lorg/lwjgl/util/glu/Project;gluPerspective(FFFF)V", remap = false))
//$$ private void replayModRender_gluPerspective$2(float fovY, float aspect, float zNear, float zFar) {
//$$ replayModRender_gluPerspective(fovY, aspect, zNear, zFar);
//$$ }
//#endif
//$$
//$$ private void replayModRender_gluPerspective(float fovY, float aspect, float zNear, float zFar) {
//$$ if (replayModRender_getHandler() != null && replayModRender_getHandler().omnidirectional) {
//$$ fovY = 90;
//$$ aspect = 1;
//$$ }
//$$ Project.gluPerspective(fovY, aspect, zNear, zFar);
//$$ }
//#endif
} }

View File

@@ -0,0 +1,24 @@
package com.replaymod.render.mixin;
import com.replaymod.render.hooks.EntityRendererHandler;
import net.minecraft.client.render.GameRenderer;
import net.minecraft.util.math.Matrix4f;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin(GameRenderer.class)
public abstract class Mixin_Omnidirectional_Camera implements EntityRendererHandler.IEntityRenderer {
@Redirect(method = "method_22973", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/math/Matrix4f;viewboxMatrix(DFFF)Lnet/minecraft/util/math/Matrix4f;"))
private Matrix4f replayModRender_perspective$0(double fovY, float aspect, float zNear, float zFar) {
return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
}
private Matrix4f replayModRender_perspective(float fovY, float aspect, float zNear, float zFar) {
if (replayModRender_getHandler() != null && replayModRender_getHandler().omnidirectional) {
fovY = 90;
aspect = 1;
}
return Matrix4f.viewboxMatrix(fovY, aspect, zNear, zFar);
}
}

View File

@@ -0,0 +1,34 @@
package com.replaymod.render.mixin;
import com.replaymod.render.hooks.EntityRendererHandler;
import net.minecraft.client.render.Camera;
import net.minecraft.client.render.GameRenderer;
import net.minecraft.client.util.math.MatrixStack;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(GameRenderer.class)
public abstract class Mixin_Omnidirectional_SkipHand implements EntityRendererHandler.IEntityRenderer {
@Inject(method = "renderHand", at = @At("HEAD"), cancellable = true)
private void replayModRender_renderSpectatorHand(
//#if MC>=11500
MatrixStack matrixStack,
//#endif
//#if MC>=11400
Camera camera,
//#endif
float partialTicks,
//#if MC<11400
//$$ int renderPass,
//#endif
CallbackInfo ci
) {
EntityRendererHandler handler = replayModRender_getHandler();
if (handler != null && handler.omnidirectional) {
// No spectator hands during 360° view, we wouldn't even know where to put it
ci.cancel();
}
}
}

View File

@@ -0,0 +1,42 @@
package com.replaymod.render.mixin;
import com.replaymod.render.capturer.StereoscopicOpenGlFrameCapturer;
import com.replaymod.render.hooks.EntityRendererHandler;
import net.minecraft.client.render.GameRenderer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.math.Matrix4f;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(GameRenderer.class)
public abstract class Mixin_Stereoscopic_Camera implements EntityRendererHandler.IEntityRenderer {
@Inject(method = "method_22973", at = @At("RETURN"), cancellable = true)
private void replayModRender_setupStereoscopicProjection(CallbackInfoReturnable<Matrix4f> ci) {
if (replayModRender_getHandler() != null) {
Matrix4f offset;
if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
offset = Matrix4f.translate(0.07f, 0, 0);
} else if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.RIGHT_EYE) {
offset = Matrix4f.translate(-0.07f, 0, 0);
} else {
return;
}
offset.multiply(ci.getReturnValue());
ci.setReturnValue(offset);
}
}
@Inject(method = "renderWorld", at = @At("HEAD"))
private void replayModRender_setupStereoscopicProjection(float partialTicks, long frameStartNano, MatrixStack matrixStack, CallbackInfo ci) {
if (replayModRender_getHandler() != null) {
if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
matrixStack.translate(0.1, 0, 0);
} else if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.RIGHT_EYE) {
matrixStack.translate(-0.1, 0, 0);
}
}
}
}

View File

@@ -0,0 +1,10 @@
package com.replaymod.render.mixin;
import net.minecraft.client.render.GameRenderer;
import org.spongepowered.asm.mixin.Mixin;
@Mixin(GameRenderer.class)
public abstract class Mixin_Stereoscopic_HandRenderPass {
// MC's builtin stereoscopic 3D feature was dropped
// 1.12.2 and before
}

View File

@@ -9,7 +9,11 @@
"Mixin_ChromaKeyForceSky", "Mixin_ChromaKeyForceSky",
"Mixin_CubicRotation", "Mixin_CubicRotation",
"Mixin_ForceChunkLoading", "Mixin_ForceChunkLoading",
"Mixin_Omnidirectional_Camera",
"Mixin_Omnidirectional_SkipHand",
"Mixin_SkipBlockOutlinesDuringRender", "Mixin_SkipBlockOutlinesDuringRender",
"Mixin_Stereoscopic_Camera",
"Mixin_Stereoscopic_HandRenderPass",
//#if MC>=10800 //#if MC>=10800
//#if MC>=11500 //#if MC>=11500
"Mixin_BlockOnChunkRebuilds", "Mixin_BlockOnChunkRebuilds",

View File

@@ -0,0 +1,40 @@
package com.replaymod.render.mixin;
import com.replaymod.render.hooks.EntityRendererHandler;
import net.minecraft.client.renderer.EntityRenderer;
import org.lwjgl.util.glu.Project;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin(EntityRenderer.class)
public abstract class Mixin_Omnidirectional_Camera implements EntityRendererHandler.IEntityRenderer {
@Redirect(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/util/glu/Project;gluPerspective(FFFF)V", remap = false))
private void replayModRender_gluPerspective$0(float fovY, float aspect, float zNear, float zFar) {
replayModRender_gluPerspective(fovY, aspect, zNear, zFar);
}
//#if MC>=10800
@Redirect(method = "renderWorldPass", at = @At(value = "INVOKE", target = "Lorg/lwjgl/util/glu/Project;gluPerspective(FFFF)V", remap = false))
//#else
//$$ @Redirect(method = "renderHand", at = @At(value = "INVOKE", target = "Lorg/lwjgl/util/glu/Project;gluPerspective(FFFF)V", remap = false))
//#endif
private void replayModRender_gluPerspective$1(float fovY, float aspect, float zNear, float zFar) {
replayModRender_gluPerspective(fovY, aspect, zNear, zFar);
}
//#if MC>=10800
@Redirect(method = "renderCloudsCheck", at = @At(value = "INVOKE", target = "Lorg/lwjgl/util/glu/Project;gluPerspective(FFFF)V", remap = false))
private void replayModRender_gluPerspective$2(float fovY, float aspect, float zNear, float zFar) {
replayModRender_gluPerspective(fovY, aspect, zNear, zFar);
}
//#endif
private void replayModRender_gluPerspective(float fovY, float aspect, float zNear, float zFar) {
if (replayModRender_getHandler() != null && replayModRender_getHandler().omnidirectional) {
fovY = 90;
aspect = 1;
}
Project.gluPerspective(fovY, aspect, zNear, zFar);
}
}

View File

@@ -0,0 +1,29 @@
package com.replaymod.render.mixin;
import com.replaymod.render.capturer.StereoscopicOpenGlFrameCapturer;
import com.replaymod.render.hooks.EntityRendererHandler;
import com.replaymod.replay.camera.CameraEntity;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.EntityRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
@Mixin(EntityRenderer.class)
public abstract class Mixin_Stereoscopic_HandRenderPass implements EntityRendererHandler.IEntityRenderer {
@ModifyVariable(method = "renderHand", at = @At("HEAD"), argsOnly = true)
private int replayModRender_renderSpectatorHand(int renderPass) {
EntityRendererHandler handler = replayModRender_getHandler();
if (handler != null) {
Entity currentEntity = Minecraft.getMinecraft().getRenderViewEntity();
if (currentEntity instanceof EntityPlayer && !(currentEntity instanceof CameraEntity)) {
if (renderPass == 2) { // Need to update render pass
renderPass = handler.data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE ? 1 : 0;
}
}
}
return renderPass;
}
}

View File

@@ -0,0 +1,34 @@
package com.replaymod.render.mixin;
import com.replaymod.render.hooks.EntityRendererHandler;
import net.minecraft.client.render.GameRenderer;
import net.minecraft.client.util.math.Matrix4f;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin(GameRenderer.class)
public abstract class Mixin_Omnidirectional_Camera implements EntityRendererHandler.IEntityRenderer {
@Redirect(method = "applyCameraTransformations", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;method_4929(DFFF)Lnet/minecraft/client/util/math/Matrix4f;"))
private Matrix4f replayModRender_perspective$0(double fovY, float aspect, float zNear, float zFar) {
return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
}
@Redirect(method = "renderCenter", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;method_4929(DFFF)Lnet/minecraft/client/util/math/Matrix4f;"))
private Matrix4f replayModRender_perspective$1(double fovY, float aspect, float zNear, float zFar) {
return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
}
@Redirect(method = "renderAboveClouds", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/util/math/Matrix4f;method_4929(DFFF)Lnet/minecraft/client/util/math/Matrix4f;"))
private Matrix4f replayModRender_perspective$2(double fovY, float aspect, float zNear, float zFar) {
return replayModRender_perspective((float) fovY, aspect, zNear, zFar);
}
private Matrix4f replayModRender_perspective(float fovY, float aspect, float zNear, float zFar) {
if (replayModRender_getHandler() != null && replayModRender_getHandler().omnidirectional) {
fovY = 90;
aspect = 1;
}
return Matrix4f.method_4929(fovY, aspect, zNear, zFar);
}
}

View File

@@ -0,0 +1,43 @@
package com.replaymod.render.mixin;
import com.replaymod.render.capturer.StereoscopicOpenGlFrameCapturer;
import com.replaymod.render.hooks.EntityRendererHandler;
import net.minecraft.client.render.GameRenderer;
import org.lwjgl.opengl.GL11;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(GameRenderer.class)
public abstract class Mixin_Stereoscopic_Camera implements EntityRendererHandler.IEntityRenderer {
//#if MC>=10800
@Inject(method = "applyCameraTransformations", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;loadIdentity()V", shift = At.Shift.AFTER, ordinal = 0))
//#else
//$$ @Inject(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glLoadIdentity()V", shift = At.Shift.AFTER, ordinal = 0, remap = false))
//#endif
private void replayModRender_setupStereoscopicProjection(CallbackInfo ci) {
if (replayModRender_getHandler() != null) {
if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
GL11.glTranslatef(0.07f, 0, 0);
} else if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.RIGHT_EYE) {
GL11.glTranslatef(-0.07f, 0, 0);
}
}
}
//#if MC>=10800
@Inject(method = "applyCameraTransformations", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/platform/GlStateManager;loadIdentity()V", shift = At.Shift.AFTER, ordinal = 1))
//#else
//$$ @Inject(method = "setupCameraTransform", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/GL11;glLoadIdentity()V", shift = At.Shift.AFTER, ordinal = 1, remap = false))
//#endif
private void replayModRender_setupStereoscopicModelView(CallbackInfo ci) {
if (replayModRender_getHandler() != null) {
if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.LEFT_EYE) {
GL11.glTranslatef(0.1f, 0, 0);
} else if (replayModRender_getHandler().data == StereoscopicOpenGlFrameCapturer.Data.RIGHT_EYE) {
GL11.glTranslatef(-0.1f, 0, 0);
}
}
}
}