Properly render spectator hand in all custom rendering modes

Fix hand clipping with nearby blocks
Immediately show hand/item if a different player is spectated
This commit is contained in:
johni0702
2015-05-31 17:24:37 +02:00
parent 39fe6dec4e
commit 779d0841d6
4 changed files with 55 additions and 4 deletions

View File

@@ -106,4 +106,9 @@ public class CubicEntityRenderer extends CustomEntityRenderer {
GlStateManager.translate(0.0F, 0.0F, 0.1F);
super.orientCamera(partialTicks);
}
@Override
protected void renderSpectatorHand(float partialTicks, int renderPass) {
// No spectator hands during 360° view
}
}

View File

@@ -1,6 +1,6 @@
package eu.crushedpixel.replaymod.video.entity;
import eu.crushedpixel.replaymod.ReplayMod;
import eu.crushedpixel.replaymod.renderer.SpectatorRenderer;
import eu.crushedpixel.replaymod.replay.ReplayHandler;
import net.minecraft.client.Minecraft;
import net.minecraft.client.particle.EffectRenderer;
@@ -21,6 +21,12 @@ import static org.lwjgl.opengl.GL11.*;
public abstract class CustomEntityRenderer {
protected final Minecraft mc = Minecraft.getMinecraft();
protected final EntityRenderer proxied = mc.entityRenderer;
protected final SpectatorRenderer spectatorRenderer = new SpectatorRenderer(){
@Override
protected void gluPerspective(float fovY, float aspect, float zNear, float zFar) {
CustomEntityRenderer.this.gluPerspective(fovY, aspect, zNear, zFar);
}
};
protected int frameCount;
protected void gluPerspective(float fovY, float aspect, float zNear, float zFar) {
@@ -176,8 +182,14 @@ public abstract class CustomEntityRenderer {
net.minecraftforge.client.ForgeHooksClient.dispatchRenderLast(renderglobal, partialTicks);
if(!ReplayHandler.isCamera() && ReplayHandler.getCurrentEntity() instanceof EntityPlayer)
ReplayMod.spectatorRenderer.renderSpectatorHand((EntityPlayer)ReplayHandler.getCurrentEntity(), partialTicks, renderPass);
renderSpectatorHand(partialTicks, renderPass);
}
protected void renderSpectatorHand(float partialTicks, int renderPass) {
Entity currentEntity = ReplayHandler.getCurrentEntity();
if(!ReplayHandler.isCamera() && currentEntity instanceof EntityPlayer) {
spectatorRenderer.renderSpectatorHand((EntityPlayer) currentEntity, partialTicks, renderPass);
}
}
protected void setupCameraTransform(float partialTicks) {

View File

@@ -16,6 +16,14 @@ public class StereoscopicEntityRenderer extends CustomEntityRenderer {
this.leftEye = leftEye;
}
@Override
public void updateCameraAndRender(float renderPartialTicks) {
boolean wasAnaglyph = mc.gameSettings.anaglyph;
mc.gameSettings.anaglyph = true;
super.updateCameraAndRender(renderPartialTicks);
mc.gameSettings.anaglyph = wasAnaglyph;
}
protected void translateStereoscopic() {
GlStateManager.translate(leftEye ? 0.07 : -0.07, 0, 0);
}
@@ -36,4 +44,9 @@ public class StereoscopicEntityRenderer extends CustomEntityRenderer {
orientCamera(partialTicks);
}
@Override
protected void renderSpectatorHand(float partialTicks, int renderPass) {
super.renderSpectatorHand(partialTicks, leftEye ? 1 : 0);
}
}