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;
/**