diff options
Diffstat (limited to 'core/src/main/java/coffee/liz/ecs')
| -rw-r--r-- | core/src/main/java/coffee/liz/ecs/DAGWorld.java | 9 | ||||
| -rw-r--r-- | core/src/main/java/coffee/liz/ecs/model/System.java | 5 | ||||
| -rw-r--r-- | core/src/main/java/coffee/liz/ecs/model/World.java | 2 |
3 files changed, 14 insertions, 2 deletions
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<T> implements World<T> { return Collections.unmodifiableList(result); } + + @Override + public void close() throws Exception { + for (final System<T> 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 <T> * is the state of the stuff outside the {@link World}. */ -public interface System<T> { +public interface System<T> extends AutoCloseable { /** * {@link System} clazzes that must run before this system. * @@ -26,4 +26,7 @@ public interface System<T> { * Is the timestep. */ void update(final World<T> 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 <T> * is the state of the stuff outside the world. */ -public interface World<T> { +public interface World<T> extends AutoCloseable { /** * Create unique {@link Entity} in the {@link World}. * |
