From 06686d20a628b26946dc7ff72cb1dabdc097ca1b Mon Sep 17 00:00:00 2001 From: CrushedPixel Date: Sun, 12 Jul 2015 18:59:19 +0200 Subject: [PATCH] Added static reference to current VideoRenderer instance to allow CustomObjectRenderer to correctly interpolate Object Transformations while rendering --- .../replaymod/renderer/CustomObjectRenderer.java | 5 ++++- .../eu/crushedpixel/replaymod/replay/ReplayProcess.java | 6 +++++- .../java/eu/crushedpixel/replaymod/video/VideoRenderer.java | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/crushedpixel/replaymod/renderer/CustomObjectRenderer.java b/src/main/java/eu/crushedpixel/replaymod/renderer/CustomObjectRenderer.java index e50e03ae..e66b63f8 100644 --- a/src/main/java/eu/crushedpixel/replaymod/renderer/CustomObjectRenderer.java +++ b/src/main/java/eu/crushedpixel/replaymod/renderer/CustomObjectRenderer.java @@ -5,6 +5,7 @@ import eu.crushedpixel.replaymod.gui.GuiObjectManager; import eu.crushedpixel.replaymod.holders.Position; import eu.crushedpixel.replaymod.holders.Transformation; import eu.crushedpixel.replaymod.replay.ReplayHandler; +import eu.crushedpixel.replaymod.replay.ReplayProcess; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.Tessellator; @@ -71,7 +72,9 @@ public class CustomObjectRenderer { int renderTimestamp; if(mc.currentScreen instanceof GuiObjectManager) { - renderTimestamp = ((GuiObjectManager)mc.currentScreen).getObjectKeyframeTimeline().cursorPosition; + renderTimestamp = ((GuiObjectManager) mc.currentScreen).getObjectKeyframeTimeline().cursorPosition; + } else if(ReplayProcess.isVideoRecording()) { + renderTimestamp = ReplayProcess.getVideoRenderer().getVideoTime(); } else { renderTimestamp = ReplayHandler.getRealTimelineCursor(); } diff --git a/src/main/java/eu/crushedpixel/replaymod/replay/ReplayProcess.java b/src/main/java/eu/crushedpixel/replaymod/replay/ReplayProcess.java index 0239c455..636ec22f 100755 --- a/src/main/java/eu/crushedpixel/replaymod/replay/ReplayProcess.java +++ b/src/main/java/eu/crushedpixel/replaymod/replay/ReplayProcess.java @@ -11,6 +11,7 @@ import eu.crushedpixel.replaymod.settings.RenderOptions; import eu.crushedpixel.replaymod.timer.EnchantmentTimer; import eu.crushedpixel.replaymod.timer.ReplayTimer; import eu.crushedpixel.replaymod.video.VideoRenderer; +import lombok.Getter; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiErrorScreen; import net.minecraft.client.resources.I18n; @@ -34,6 +35,9 @@ public class ReplayProcess { private static boolean calculated = false; + @Getter + private static VideoRenderer videoRenderer = null; + private static boolean isVideoRecording = false; private static boolean blocked = false; private static boolean deepBlock = false; @@ -100,7 +104,7 @@ public class ReplayProcess { boolean success = false; try { isVideoRecording = true; - VideoRenderer videoRenderer = new VideoRenderer(renderOptions); + videoRenderer = new VideoRenderer(renderOptions); success = videoRenderer.renderVideo(); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/eu/crushedpixel/replaymod/video/VideoRenderer.java b/src/main/java/eu/crushedpixel/replaymod/video/VideoRenderer.java index 6ae61b9d..fdfd4b54 100644 --- a/src/main/java/eu/crushedpixel/replaymod/video/VideoRenderer.java +++ b/src/main/java/eu/crushedpixel/replaymod/video/VideoRenderer.java @@ -422,6 +422,8 @@ public class VideoRenderer { return totalFrames; } + public int getVideoTime() { return framesDone * 1000 / fps; } + public FrameRenderer getFrameRenderer() { return frameRenderer; }