Automatically disable and re-enable Optifine's Fast Render setting before rendering a video
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
package com.replaymod.render.events;
|
||||
|
||||
import com.replaymod.render.rendering.VideoRenderer;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import net.minecraftforge.fml.common.eventhandler.Event;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public abstract class ReplayRenderEvent extends Event {
|
||||
@Getter
|
||||
private final VideoRenderer videoRenderer;
|
||||
|
||||
public static class Pre extends ReplayRenderEvent {
|
||||
public Pre(VideoRenderer videoRenderer) {
|
||||
super(videoRenderer);
|
||||
}
|
||||
}
|
||||
|
||||
public static class Post extends ReplayRenderEvent {
|
||||
public Post(VideoRenderer videoRenderer) {
|
||||
super(videoRenderer);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import com.replaymod.render.RenderSettings;
|
||||
import com.replaymod.render.ReplayModRender;
|
||||
import com.replaymod.render.VideoWriter;
|
||||
import com.replaymod.render.capturer.RenderInfo;
|
||||
import com.replaymod.render.events.ReplayRenderEvent;
|
||||
import com.replaymod.render.frame.RGBFrame;
|
||||
import com.replaymod.render.gui.GuiRenderingDone;
|
||||
import com.replaymod.render.gui.GuiVideoRenderer;
|
||||
@@ -22,6 +23,7 @@ import net.minecraft.client.gui.ScaledResolution;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.shader.Framebuffer;
|
||||
import net.minecraft.util.Timer;
|
||||
import net.minecraftforge.fml.common.FMLCommonHandler;
|
||||
import org.lwjgl.input.Mouse;
|
||||
import org.lwjgl.opengl.Display;
|
||||
import org.lwjgl.util.Dimension;
|
||||
@@ -86,6 +88,8 @@ public class VideoRenderer implements RenderInfo {
|
||||
* @return {@code true} if rendering was successful, {@code false} if the user aborted rendering (or the window was closed)
|
||||
*/
|
||||
public boolean renderVideo() {
|
||||
FMLCommonHandler.instance().bus().post(new ReplayRenderEvent.Pre(this));
|
||||
|
||||
setup();
|
||||
|
||||
// Because this might take some time to prepare we'll render the GUI at least once to not confuse the user
|
||||
@@ -129,6 +133,9 @@ public class VideoRenderer implements RenderInfo {
|
||||
}
|
||||
|
||||
finish();
|
||||
|
||||
FMLCommonHandler.instance().bus().post(new ReplayRenderEvent.Post(this));
|
||||
|
||||
return !cancelled;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user