From 518149db6fc7f3726a4f638e0ef90c1cdbbdcb5a Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Sat, 31 Jan 2026 15:47:29 -0800 Subject: Making world closing more intuitive --- core/src/main/java/coffee/liz/ecs/DAGWorld.java | 9 +++++++++ core/src/main/java/coffee/liz/ecs/model/System.java | 5 ++++- core/src/main/java/coffee/liz/ecs/model/World.java | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) (limited to 'core/src/main/java/coffee/liz/ecs') diff --git a/core/src/main/java/coffee/liz/ecs/DAGWorld.java b/core/src/main/java/coffee/liz/ecs/DAGWorld.java index f3ad30b..dea83ef 100644 --- a/core/src/main/java/coffee/liz/ecs/DAGWorld.java +++ b/core/src/main/java/coffee/liz/ecs/DAGWorld.java @@ -153,4 +153,13 @@ public class DAGWorld implements World { return Collections.unmodifiableList(result); } + + @Override + public void close() throws Exception { + for (final System system : systemExecutionOrder) { + system.close(); + } + componentCache.clear(); + entities.clear(); + } } diff --git a/core/src/main/java/coffee/liz/ecs/model/System.java b/core/src/main/java/coffee/liz/ecs/model/System.java index 220b917..cc46f39 100644 --- a/core/src/main/java/coffee/liz/ecs/model/System.java +++ b/core/src/main/java/coffee/liz/ecs/model/System.java @@ -9,7 +9,7 @@ import java.util.Collection; * @param * is the state of the stuff outside the {@link World}. */ -public interface System { +public interface System extends AutoCloseable { /** * {@link System} clazzes that must run before this system. * @@ -26,4 +26,7 @@ public interface System { * Is the timestep. */ void update(final World world, final T state, final Duration dt); + + @Override + default void close() {} } diff --git a/core/src/main/java/coffee/liz/ecs/model/World.java b/core/src/main/java/coffee/liz/ecs/model/World.java index 96c7a74..05363e8 100644 --- a/core/src/main/java/coffee/liz/ecs/model/World.java +++ b/core/src/main/java/coffee/liz/ecs/model/World.java @@ -10,7 +10,7 @@ import java.util.Set; * @param * is the state of the stuff outside the world. */ -public interface World { +public interface World extends AutoCloseable { /** * Create unique {@link Entity} in the {@link World}. * -- cgit v1.2.3-70-g09d2