Files
ReplayModCinematic/src/main/java/com/replaymod/render/hooks/EntityRendererHandler.java
CrushedPixel e5eb982b98 Add Optifine compatibility to rendering by disabling their separate chunk loading queue
Add compatibility to shaders that utilize the Shadow Map by manually setting displayListEntitiesDirty to false
Call Shaders.beginRender in an Event Handler to avoid calling all of EntityRenderer#renderWorld
2016-11-09 21:11:28 +01:00

68 lines
2.0 KiB
Java

package com.replaymod.render.hooks;
import com.replaymod.render.RenderSettings;
import com.replaymod.render.capturer.CaptureData;
import com.replaymod.render.capturer.WorldRenderer;
import lombok.Getter;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraftforge.fml.common.FMLCommonHandler;
import java.io.IOException;
public class EntityRendererHandler implements WorldRenderer {
public final Minecraft mc = Minecraft.getMinecraft();
@Getter
protected final RenderSettings settings;
public CaptureData data;
public boolean omnidirectional;
public EntityRendererHandler(RenderSettings settings) {
this.settings = settings;
((IEntityRenderer) mc.entityRenderer).replayModRender_setHandler(this);
}
@Override
public void renderWorld(final float partialTicks, CaptureData data) {
this.data = data;
renderWorld(partialTicks, 0);
}
public void renderWorld(float partialTicks, long finishTimeNano) {
FMLCommonHandler.instance().onRenderTickStart(partialTicks);
mc.entityRenderer.updateLightmap(partialTicks);
GlStateManager.enableDepth();
GlStateManager.enableAlpha();
GlStateManager.alphaFunc(516, 0.5F);
mc.entityRenderer.renderWorldPass(2, partialTicks, finishTimeNano);
FMLCommonHandler.instance().onRenderTickEnd(partialTicks);
}
@Override
public void close() throws IOException {
((IEntityRenderer) mc.entityRenderer).replayModRender_setHandler(null);
}
@Override
public void setOmnidirectional(boolean omnidirectional) {
this.omnidirectional = omnidirectional;
}
public interface GluPerspective {
void replayModRender_gluPerspective(float fovY, float aspect, float zNear, float zFar);
}
public interface IEntityRenderer {
void replayModRender_setHandler(EntityRendererHandler handler);
EntityRendererHandler replayModRender_getHandler();
}
}