commit cf79607af7408347eab219b098a59cbe69dfb695
parent a413ca96cae61141446b17cec529f394669ed5ec
Author: Oshgnacknak <osh@oshgnacknak.de>
Date: Fri, 16 Apr 2021 18:44:49 +0200
Fix scaling
Diffstat:
3 files changed, 51 insertions(+), 47 deletions(-)
diff --git a/src/main/java/de/oshgnacknak/create_ponder_wonder/PonderRenderScheduler.java b/src/main/java/de/oshgnacknak/create_ponder_wonder/PonderRenderScheduler.java
@@ -2,16 +2,12 @@ package de.oshgnacknak.create_ponder_wonder;
import com.simibubi.create.foundation.ponder.PonderRegistry;
import com.simibubi.create.foundation.ponder.PonderScene;
-import io.netty.util.concurrent.GlobalEventExecutor;
-import io.netty.util.concurrent.Promise;
-import net.minecraft.client.Minecraft;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
-import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
@@ -53,29 +49,20 @@ public class PonderRenderScheduler {
}
private void saveFrames(PonderScene ponder, String basePath) {
- Promise<?> promise = GlobalEventExecutor.INSTANCE.newPromise();
- Minecraft.getInstance().field_213275_aU.add(() -> {
- try {
- Path path = getOutPath(ponder, basePath);
-
- for (PonderRenderer.RenderResult result : new PonderRenderer(ponder)) {
- Path out = path.resolve(String.format("%06d.png", result.frame));
- result.image.write(out);
- if (result.frame % GC_INTERVAL == 0)
- System.gc();
- }
- System.gc();
- promise.setSuccess(null);
-
- CreatePonderWonder.chat("Finished rendering Ponder: " + path);
- CreatePonderWonder.LOGGER.info("Finished rendering Ponder: {}", path);
- } catch (Exception e) {
- promise.setFailure(e);
- }
- });
try {
- promise.get();
- } catch (InterruptedException | ExecutionException e) {
+ Path path = getOutPath(ponder, basePath);
+
+ for (PonderRenderer.RenderResult result : new PonderRenderer(ponder)) {
+ Path out = path.resolve(String.format("%06d.png", result.frame));
+ result.image.write(out);
+ if (result.frame % GC_INTERVAL == 0)
+ System.gc();
+ }
+ System.gc();
+
+ CreatePonderWonder.chat("Finished rendering Ponder: " + path);
+ CreatePonderWonder.LOGGER.info("Finished rendering Ponder: {}", path);
+ } catch (Exception e) {
CreatePonderWonder.chat("Error: " + e.getMessage());
CreatePonderWonder.LOGGER.error("Could not save image", e);
e.printStackTrace();
diff --git a/src/main/java/de/oshgnacknak/create_ponder_wonder/PonderRenderer.java b/src/main/java/de/oshgnacknak/create_ponder_wonder/PonderRenderer.java
@@ -2,19 +2,25 @@ package de.oshgnacknak.create_ponder_wonder;
import com.simibubi.create.foundation.ponder.PonderScene;
import com.simibubi.create.foundation.ponder.PonderWonderUI;
+import io.netty.util.concurrent.GlobalEventExecutor;
+import io.netty.util.concurrent.Promise;
+import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.NativeImage;
import java.util.Iterator;
+import java.util.concurrent.ExecutionException;
public class PonderRenderer implements Iterable<PonderRenderer.RenderResult>, Iterator<PonderRenderer.RenderResult> {
private static final int FPS = 60;
- private static final int MAX_FRAMES = Integer.MAX_VALUE; // FPS*3;
+ private static final int MAX_FRAMES = Integer.MAX_VALUE;
+
private final PonderWonderUI ponder;
private int frame;
+
public PonderRenderer(PonderScene ponder) {
this.ponder = new PonderWonderUI(ponder);
- this.frame = -1;
+ this.frame = 0;
}
@Override
@@ -29,16 +35,29 @@ public class PonderRenderer implements Iterable<PonderRenderer.RenderResult>, It
@Override
public RenderResult next() {
- float pt = (frame % PonderRenderer.FPS) / (PonderRenderer.FPS / 3.0f);
- NativeImage img = RenderUtils.render(ms ->
- ponder.ponderWonderRenderWindow(ms, pt));
+ Promise<RenderResult> promise = GlobalEventExecutor.INSTANCE.newPromise();
- if (frame % 3 == 2) {
- ponder.tick();
- }
- frame++;
+ Minecraft.getInstance().field_213275_aU.add(() -> {
+ try {
+ float pt = (frame % PonderRenderer.FPS) / (PonderRenderer.FPS / 3.0f);
+ NativeImage img = RenderUtils.render(ms ->
+ ponder.ponderWonderRenderWindow(ms, pt));
+ promise.setSuccess(new RenderResult(img, frame));
- return new RenderResult(img, frame);
+ if (frame % 3 == 2) {
+ ponder.tick();
+ }
+ frame++;
+ } catch (Throwable e) {
+ promise.setFailure(e);
+ }
+ });
+
+ try {
+ return promise.get();
+ } catch (InterruptedException | ExecutionException e) {
+ throw new RuntimeException(e);
+ }
}
public static class RenderResult {
diff --git a/src/main/java/de/oshgnacknak/create_ponder_wonder/RenderUtils.java b/src/main/java/de/oshgnacknak/create_ponder_wonder/RenderUtils.java
@@ -13,10 +13,10 @@ import java.util.function.Consumer;
public class RenderUtils {
- private static final double SCALE = 5;
- private static final int WIDTH = 1920;
- private static final int HEIGHT = 1080;
- private static final double Z_DISTANCE = 1400;
+ public static final double SCALE = 5;
+ public static final int WIDTH = 1920;
+ public static final int HEIGHT = 1080;
+ public static final double Z_DISTANCE = 1400;
private RenderUtils() {}
@@ -36,19 +36,17 @@ public class RenderUtils {
RenderSystem.matrixMode(GL11.GL_PROJECTION);
RenderSystem.loadIdentity();
- RenderSystem.ortho(0.0d,
- WIDTH / SCALE,
- HEIGHT / SCALE,
+ RenderSystem.ortho(
+ 0.0d,
+ WIDTH,
+ HEIGHT,
0.0d, 0,
3000.0d);
RenderSystem.matrixMode(GL11.GL_MODELVIEW);
RenderSystem.loadIdentity();
MatrixStack matrixStack = new MatrixStack();
- matrixStack.translate(
- WIDTH / (SCALE * 2.0),
- HEIGHT / (SCALE * 2.0),
- -Z_DISTANCE);
+ matrixStack.translate(0, 0, -Z_DISTANCE);
net.minecraft.client.renderer.RenderHelper.enableGuiDepthLighting();
RenderSystem.defaultAlphaFunc();