From 3c45ca9de83771cfe9233c30e9284512c07227c4 Mon Sep 17 00:00:00 2001 From: Brychan Dempsey Date: Sat, 12 Jun 2021 15:56:13 +1200 Subject: [PATCH] Fixed exceptions due to the renderer not being ready --- demo1/src/main/java/nz/ac/massey/javaecs/examples/App.java | 6 +++++- .../nz/ac/massey/javaecs/examples/Systems/RenderSystem.java | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/demo1/src/main/java/nz/ac/massey/javaecs/examples/App.java b/demo1/src/main/java/nz/ac/massey/javaecs/examples/App.java index 9cb547d..d712bd9 100644 --- a/demo1/src/main/java/nz/ac/massey/javaecs/examples/App.java +++ b/demo1/src/main/java/nz/ac/massey/javaecs/examples/App.java @@ -1,6 +1,7 @@ package nz.ac.massey.javaecs.examples; import java.util.Random; +import java.util.concurrent.Semaphore; import javafx.scene.paint.Color; import nz.ac.massey.javaecs.*; @@ -14,6 +15,8 @@ public final class App { private App() { } + public static Semaphore rendererReadySemaphore = new Semaphore(0); + /** * Simple physics simulation. * @param args The arguments of the program. @@ -127,10 +130,11 @@ public final class App { /************************************ ** Run init() on the systems ** *************************************/ + renderSystem.init(); + rendererReadySemaphore.acquire(); physicsSystem.init(); collisionSystem.init(); logUpdateSystem.init(); - renderSystem.init(); existenceSystem.init(); reportSystem.init(); diff --git a/demo1/src/main/java/nz/ac/massey/javaecs/examples/Systems/RenderSystem.java b/demo1/src/main/java/nz/ac/massey/javaecs/examples/Systems/RenderSystem.java index 5467827..0329934 100644 --- a/demo1/src/main/java/nz/ac/massey/javaecs/examples/Systems/RenderSystem.java +++ b/demo1/src/main/java/nz/ac/massey/javaecs/examples/Systems/RenderSystem.java @@ -14,6 +14,7 @@ import javafx.stage.Stage; import nz.ac.massey.javaecs.ECSSystem; import nz.ac.massey.javaecs.Engine; import nz.ac.massey.javaecs.Entity; +import nz.ac.massey.javaecs.examples.App; import nz.ac.massey.javaecs.examples.Components.BoxRender; import nz.ac.massey.javaecs.examples.Components.Render; import nz.ac.massey.javaecs.examples.Components.TextRender; @@ -102,6 +103,8 @@ public class RenderSystem extends ECSSystem{ Scene scene = new Scene(root, 1024, 1024, Color.BLACK); primaryStage.setScene(scene); primaryStage.show(); + // Signal the renderer is ready + App.rendererReadySemaphore.release(); } public static void run(){