Always use custom entity renderer for improved performance and consistency

This commit is contained in:
johni0702
2015-05-26 10:52:34 +02:00
parent bca8aad98b
commit c44a1dfc14

View File

@@ -1,6 +1,5 @@
package eu.crushedpixel.replaymod.video.frame; package eu.crushedpixel.replaymod.video.frame;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.Runnables; import com.google.common.util.concurrent.Runnables;
import eu.crushedpixel.replaymod.gui.GuiVideoRenderer; import eu.crushedpixel.replaymod.gui.GuiVideoRenderer;
@@ -20,6 +19,7 @@ import java.awt.image.DataBufferInt;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.Arrays; import java.util.Arrays;
import static com.google.common.base.Preconditions.checkNotNull;
import static net.minecraft.client.renderer.GlStateManager.*; import static net.minecraft.client.renderer.GlStateManager.*;
import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT; import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT; import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
@@ -29,7 +29,7 @@ public abstract class FrameRenderer {
protected final Minecraft mc = Minecraft.getMinecraft(); protected final Minecraft mc = Minecraft.getMinecraft();
private final int videoWidth; private final int videoWidth;
private final int videoHeight; private final int videoHeight;
private Optional<CustomEntityRenderer> customEntityRenderer; private CustomEntityRenderer customEntityRenderer;
private DynamicTexture previewTexture; private DynamicTexture previewTexture;
private Runnable renderPreviewCallback; private Runnable renderPreviewCallback;
private boolean previewActive = false; private boolean previewActive = false;
@@ -39,14 +39,14 @@ public abstract class FrameRenderer {
this.videoWidth = videoWidth; this.videoWidth = videoWidth;
this.videoHeight = videoHeight; this.videoHeight = videoHeight;
this.buffer = BufferUtils.createByteBuffer(mc.displayWidth * mc.displayHeight * 3); this.buffer = BufferUtils.createByteBuffer(mc.displayWidth * mc.displayHeight * 3);
this.customEntityRenderer = Optional.absent(); this.customEntityRenderer = new CustomEntityRenderer() {};
} }
public FrameRenderer(int videoWidth, int videoHeight, int bufferSize) { public FrameRenderer(int videoWidth, int videoHeight, int bufferSize) {
this.videoWidth = videoWidth; this.videoWidth = videoWidth;
this.videoHeight = videoHeight; this.videoHeight = videoHeight;
this.buffer = BufferUtils.createByteBuffer(bufferSize); this.buffer = BufferUtils.createByteBuffer(bufferSize);
this.customEntityRenderer = Optional.absent(); this.customEntityRenderer = new CustomEntityRenderer() {};
} }
public final int getVideoWidth() { public final int getVideoWidth() {
@@ -80,7 +80,7 @@ public abstract class FrameRenderer {
} }
public void setCustomEntityRenderer(CustomEntityRenderer customEntityRenderer) { public void setCustomEntityRenderer(CustomEntityRenderer customEntityRenderer) {
this.customEntityRenderer = Optional.fromNullable(customEntityRenderer); this.customEntityRenderer = checkNotNull(customEntityRenderer);
} }
public abstract BufferedImage captureFrame(Timer timer); public abstract BufferedImage captureFrame(Timer timer);
@@ -145,11 +145,7 @@ public abstract class FrameRenderer {
enableTexture2D(); enableTexture2D();
if (customEntityRenderer.isPresent()) { customEntityRenderer.updateCameraAndRender(timer.renderPartialTicks);
customEntityRenderer.get().updateCameraAndRender(timer.renderPartialTicks);
} else {
mc.entityRenderer.updateCameraAndRender(timer.renderPartialTicks);
}
mc.getFramebuffer().unbindFramebuffer(); mc.getFramebuffer().unbindFramebuffer();
popMatrix(); popMatrix();