Successfully implmented physics system
This commit is contained in:
parent
5aeb91d28f
commit
5121b193b9
@ -61,6 +61,7 @@ public final class App {
|
||||
double dt = 0.0;
|
||||
|
||||
double frameRate = 1.0 / 20; // 1 second divided by target number of frames
|
||||
double idleTime = 0.0; // the amount of time spent sleeping
|
||||
|
||||
boolean quit = false;
|
||||
long loopStart = System.currentTimeMillis();
|
||||
@ -68,13 +69,14 @@ public final class App {
|
||||
// Get the time between frames for accurate time-based calculations (i.e. physics systems etc)
|
||||
long startTime = System.nanoTime();
|
||||
|
||||
frameRateSystem.update(dt);
|
||||
frameRateSystem.update(dt, idleTime);
|
||||
physicsSystem.update(dt);
|
||||
logVec2DSystem.update(dt);
|
||||
dt = (System.nanoTime() - startTime) / 1e9; // convert nanoseconds to seconds
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ package nz.ac.massey.programming_project_159333_s1_2021;
|
||||
public class FrameRateSystem extends ECSSystem{
|
||||
void init() {}
|
||||
|
||||
void update(double dt){
|
||||
System.out.print("dt: " + dt + " ");
|
||||
void update(double dt, double idleTime){
|
||||
System.out.print(String.format("dt: %.3g (%.3g idle) ", dt, idleTime));
|
||||
}
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ public class LogVec2DSystem extends ECSSystem{
|
||||
void update(double dt){
|
||||
for (Integer entity : entities) {
|
||||
Vec2D pos = (Vec2D)gameEngine.getComponentData(entity, Vec2D.class.getName());
|
||||
System.out.println("X: " + pos.x + ", Y:" + pos.y);
|
||||
System.out.println(String.format("X: %.6g, Y: %.6g", pos.x, pos.y));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -26,13 +26,13 @@ class SystemManager{
|
||||
// instance.
|
||||
// I.e., create an object that represents the system class; then store that class in the system
|
||||
// table.
|
||||
public boolean registerSystem(String system, ECSSystem action){
|
||||
if (systems.containsKey(system)){
|
||||
public boolean registerSystem(String systemName, ECSSystem system){
|
||||
if (systems.containsKey(systemName)){
|
||||
System.err.println("System already registered");
|
||||
return false;
|
||||
}
|
||||
systems.put(system, action);
|
||||
signatures.put(system, new BitSet());
|
||||
systems.put(systemName, system);
|
||||
signatures.put(systemName, new BitSet());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user