diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..74ca3a0 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,21 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "java", + "name": "Launch Current File", + "request": "launch", + "mainClass": "${file}" + }, + { + "type": "java", + "name": "Launch App", + "request": "launch", + "mainClass": "nz.ac.massey.programming_project_159333_s1_2021.App", + "projectName": "javaecs" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e0f15db --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic" +} \ No newline at end of file diff --git a/README.md b/README.md index 74a4892..3b4f6c4 100644 --- a/README.md +++ b/README.md @@ -1 +1,4 @@ # JavaECS +An implementation of an Entity-Component-System in Java. Based on the C++ implementation by [Austin Morlan](https://code.austinmorlan.com/austin/ecs). + +See the [documentation](https://git.software.kauripeak.co.nz/BrychanD/JavaECS-Docs/wiki) for implmentation details diff --git a/javaecs/pom.xml b/javaecs/pom.xml index 2c2569e..2f22186 100644 --- a/javaecs/pom.xml +++ b/javaecs/pom.xml @@ -2,7 +2,7 @@ 4.0.0 nz.ac.massey.programming_project_159333_s1_2021 javaecs - 1.0-SNAPSHOT + 1.1-SNAPSHOT 1.8 1.8 @@ -38,6 +38,28 @@ + + org.apache.maven.plugins + maven-assembly-plugin + 3.1.1 + + + + jar-with-dependencies + + + + + + make-assembly + package + + single + + + + + org.apache.maven.plugins maven-enforcer-plugin @@ -58,7 +80,7 @@ - + org.apache.maven.plugins maven-surefire-plugin @@ -112,7 +134,7 @@ report - + diff --git a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/App.java b/javaecs/src/main/java/nz/ac/massey/javaecs/App.java similarity index 93% rename from javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/App.java rename to javaecs/src/main/java/nz/ac/massey/javaecs/App.java index 1f496e1..bfde703 100644 --- a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/App.java +++ b/javaecs/src/main/java/nz/ac/massey/javaecs/App.java @@ -1,4 +1,4 @@ -package nz.ac.massey.programming_project_159333_s1_2021; +package nz.ac.massey.javaecs; import java.util.BitSet; @@ -65,25 +65,27 @@ public final class App { boolean quit = false; long loopStart = System.currentTimeMillis(); + long startTime = System.nanoTime(); + // One potential way to do this while (!quit){ // Get the time between frames for accurate time-based calculations (i.e. physics systems etc) - long startTime = System.nanoTime(); - frameRateSystem.update(dt, idleTime); physicsSystem.update(dt); logVec2DSystem.update(dt); dt = (System.nanoTime() - startTime) / 1e9; // convert nanoseconds to seconds - + startTime = System.nanoTime(); // Limit frame rate (approximately) to minimum of 16 ms if (dt < frameRate){ idleTime = frameRate-dt; Thread.sleep((int)((frameRate-dt)*1000)); dt = (System.nanoTime() - startTime) / 1e9; + startTime = System.nanoTime(); } if (System.currentTimeMillis() - loopStart >= 1000){ loopStart = System.currentTimeMillis(); System.out.println("Second Elapsed"); } + } } } diff --git a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/ComponentArray.java b/javaecs/src/main/java/nz/ac/massey/javaecs/ComponentArray.java similarity index 98% rename from javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/ComponentArray.java rename to javaecs/src/main/java/nz/ac/massey/javaecs/ComponentArray.java index d0938ca..6fae0d9 100644 --- a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/ComponentArray.java +++ b/javaecs/src/main/java/nz/ac/massey/javaecs/ComponentArray.java @@ -1,4 +1,4 @@ -package nz.ac.massey.programming_project_159333_s1_2021; +package nz.ac.massey.javaecs; /** * Component Array * Defines the data structure that component data is stored under. diff --git a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/ComponentManager.java b/javaecs/src/main/java/nz/ac/massey/javaecs/ComponentManager.java similarity index 97% rename from javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/ComponentManager.java rename to javaecs/src/main/java/nz/ac/massey/javaecs/ComponentManager.java index f116629..b9d879d 100644 --- a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/ComponentManager.java +++ b/javaecs/src/main/java/nz/ac/massey/javaecs/ComponentManager.java @@ -1,4 +1,4 @@ -package nz.ac.massey.programming_project_159333_s1_2021; +package nz.ac.massey.javaecs; /** * Component Manager * This class manages component registrations, and adding, diff --git a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/ECS.java b/javaecs/src/main/java/nz/ac/massey/javaecs/ECS.java similarity index 98% rename from javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/ECS.java rename to javaecs/src/main/java/nz/ac/massey/javaecs/ECS.java index b0061e0..38f73e8 100644 --- a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/ECS.java +++ b/javaecs/src/main/java/nz/ac/massey/javaecs/ECS.java @@ -1,4 +1,4 @@ -package nz.ac.massey.programming_project_159333_s1_2021; +package nz.ac.massey.javaecs; /** * ECS manager class. * Call this class and its functions to interact correctly with the ECS system. diff --git a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/ECSSystem.java b/javaecs/src/main/java/nz/ac/massey/javaecs/ECSSystem.java similarity index 86% rename from javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/ECSSystem.java rename to javaecs/src/main/java/nz/ac/massey/javaecs/ECSSystem.java index 93fa7c8..ac4a9b6 100644 --- a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/ECSSystem.java +++ b/javaecs/src/main/java/nz/ac/massey/javaecs/ECSSystem.java @@ -1,4 +1,4 @@ -package nz.ac.massey.programming_project_159333_s1_2021; +package nz.ac.massey.javaecs; /** * ECS System class * This class stores entity-system registrations. These are diff --git a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/EntityManager.java b/javaecs/src/main/java/nz/ac/massey/javaecs/EntityManager.java similarity index 98% rename from javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/EntityManager.java rename to javaecs/src/main/java/nz/ac/massey/javaecs/EntityManager.java index 50999b6..26dc8ef 100644 --- a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/EntityManager.java +++ b/javaecs/src/main/java/nz/ac/massey/javaecs/EntityManager.java @@ -1,4 +1,4 @@ -package nz.ac.massey.programming_project_159333_s1_2021; +package nz.ac.massey.javaecs; /** * Entity Manager * This class manages entity allocations; keeping a list diff --git a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/FrameRateSystem.java b/javaecs/src/main/java/nz/ac/massey/javaecs/FrameRateSystem.java similarity index 77% rename from javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/FrameRateSystem.java rename to javaecs/src/main/java/nz/ac/massey/javaecs/FrameRateSystem.java index 5ceac97..0e766ec 100644 --- a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/FrameRateSystem.java +++ b/javaecs/src/main/java/nz/ac/massey/javaecs/FrameRateSystem.java @@ -1,4 +1,4 @@ -package nz.ac.massey.programming_project_159333_s1_2021; +package nz.ac.massey.javaecs; public class FrameRateSystem extends ECSSystem{ void init() {} diff --git a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/Gravity.java b/javaecs/src/main/java/nz/ac/massey/javaecs/Gravity.java similarity index 72% rename from javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/Gravity.java rename to javaecs/src/main/java/nz/ac/massey/javaecs/Gravity.java index d09503c..33622fc 100644 --- a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/Gravity.java +++ b/javaecs/src/main/java/nz/ac/massey/javaecs/Gravity.java @@ -1,9 +1,9 @@ -package nz.ac.massey.programming_project_159333_s1_2021; +package nz.ac.massey.javaecs; public class Gravity { public Gravity(){ - } + public Gravity(double x, double y){ this.x = x; this.y = y; @@ -15,7 +15,7 @@ public class Gravity { this.terminalY = terminalY; } double x = 0.0; - double y = -9.80665; + double y = -9.80665; // Force of gravity (from https://www.bipm.org/en/publications/si-brochure - 9th edition - p159 - Bureau International des Poids et Mesures - CC BY 4.0) // Gravity won't be considered if the velocity exceeds this (absolute value). Negative values are ignored (not limited) double terminalX = -1.0; double terminalY = -1.0; diff --git a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/LogVec2DSystem.java b/javaecs/src/main/java/nz/ac/massey/javaecs/LogVec2DSystem.java similarity index 88% rename from javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/LogVec2DSystem.java rename to javaecs/src/main/java/nz/ac/massey/javaecs/LogVec2DSystem.java index b6d9df0..16f2a98 100644 --- a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/LogVec2DSystem.java +++ b/javaecs/src/main/java/nz/ac/massey/javaecs/LogVec2DSystem.java @@ -1,4 +1,4 @@ -package nz.ac.massey.programming_project_159333_s1_2021; +package nz.ac.massey.javaecs; public class LogVec2DSystem extends ECSSystem{ ECS gameEngine; diff --git a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/PhysicsSystem.java b/javaecs/src/main/java/nz/ac/massey/javaecs/PhysicsSystem.java similarity index 95% rename from javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/PhysicsSystem.java rename to javaecs/src/main/java/nz/ac/massey/javaecs/PhysicsSystem.java index 4337d64..7efeb8b 100644 --- a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/PhysicsSystem.java +++ b/javaecs/src/main/java/nz/ac/massey/javaecs/PhysicsSystem.java @@ -1,4 +1,4 @@ -package nz.ac.massey.programming_project_159333_s1_2021; +package nz.ac.massey.javaecs; public class PhysicsSystem extends ECSSystem{ ECS gameEngine; diff --git a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/RidgidBody.java b/javaecs/src/main/java/nz/ac/massey/javaecs/RidgidBody.java similarity index 86% rename from javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/RidgidBody.java rename to javaecs/src/main/java/nz/ac/massey/javaecs/RidgidBody.java index 10fb1f4..57c6c8d 100644 --- a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/RidgidBody.java +++ b/javaecs/src/main/java/nz/ac/massey/javaecs/RidgidBody.java @@ -1,4 +1,4 @@ -package nz.ac.massey.programming_project_159333_s1_2021; +package nz.ac.massey.javaecs; public class RidgidBody { public RidgidBody(){} diff --git a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/SystemManager.java b/javaecs/src/main/java/nz/ac/massey/javaecs/SystemManager.java similarity index 97% rename from javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/SystemManager.java rename to javaecs/src/main/java/nz/ac/massey/javaecs/SystemManager.java index edd948d..d6a1f6b 100644 --- a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/SystemManager.java +++ b/javaecs/src/main/java/nz/ac/massey/javaecs/SystemManager.java @@ -1,4 +1,4 @@ -package nz.ac.massey.programming_project_159333_s1_2021; +package nz.ac.massey.javaecs; /** * System Manager * This class manages systems registrations, and keeps a current list diff --git a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/Vec2D.java b/javaecs/src/main/java/nz/ac/massey/javaecs/Vec2D.java similarity index 78% rename from javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/Vec2D.java rename to javaecs/src/main/java/nz/ac/massey/javaecs/Vec2D.java index 518f746..11561ce 100644 --- a/javaecs/src/main/java/nz/ac/massey/programming_project_159333_s1_2021/Vec2D.java +++ b/javaecs/src/main/java/nz/ac/massey/javaecs/Vec2D.java @@ -1,4 +1,4 @@ -package nz.ac.massey.programming_project_159333_s1_2021; +package nz.ac.massey.javaecs; public class Vec2D { public Vec2D(){} diff --git a/javaecs/src/test/java/nz/ac/massey/programming_project_159333_s1_2021/AppTest.java b/javaecs/src/test/java/nz/ac/massey/javaecs/AppTest.java similarity index 98% rename from javaecs/src/test/java/nz/ac/massey/programming_project_159333_s1_2021/AppTest.java rename to javaecs/src/test/java/nz/ac/massey/javaecs/AppTest.java index e52124e..30da758 100644 --- a/javaecs/src/test/java/nz/ac/massey/programming_project_159333_s1_2021/AppTest.java +++ b/javaecs/src/test/java/nz/ac/massey/javaecs/AppTest.java @@ -1,7 +1,8 @@ -package nz.ac.massey.programming_project_159333_s1_2021; +package nz.ac.massey.javaecs; import org.junit.jupiter.api.Test; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; @@ -9,7 +10,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import java.util.BitSet; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; /**