Brychan Dempsey b1efb9802d Removed implementation classes
Leaves only the framework in the compiled clause.
Find the removed files in ../examples/misc/
2021-06-08 14:47:10 +12:00

92 lines
3.3 KiB
Java

package nz.ac.massey.javaecs;
import java.util.BitSet;
/**
* Hello world!
*/
public final class App {
private App() {
}
/**
* Says hello to the world.
* @param args The arguments of the program.
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
ECS gameEngine = new ECS();
System.out.println("Hello World!");
gameEngine.registerComponent(Vec2D.class);
gameEngine.registerComponent(RidgidBody.class);
gameEngine.registerComponent(Gravity.class);
PhysicsSystem physicsSystem = new PhysicsSystem(gameEngine);
gameEngine.registerSystem(PhysicsSystem.class, physicsSystem);
{
BitSet signature = new BitSet();
signature.set(gameEngine.getComponentIndex(Gravity.class));
signature.set(gameEngine.getComponentIndex(Vec2D.class));
signature.set(gameEngine.getComponentIndex(RidgidBody.class));
gameEngine.setSystemSignature(PhysicsSystem.class, signature);
}
physicsSystem.init();
LogVec2DSystem logVec2DSystem = new LogVec2DSystem(gameEngine);
gameEngine.registerSystem(LogVec2DSystem.class, logVec2DSystem);
{
BitSet signature = new BitSet();
signature.set(gameEngine.getComponentIndex(Gravity.class));
signature.set(gameEngine.getComponentIndex(Vec2D.class));
signature.set(gameEngine.getComponentIndex(RidgidBody.class));
gameEngine.setSystemSignature(LogVec2DSystem.class, signature);
}
logVec2DSystem.init();
FrameRateSystem frameRateSystem = new FrameRateSystem();
gameEngine.registerSystem(FrameRateSystem.class, frameRateSystem);
// Create components:
int entity = gameEngine.createEntity();
gameEngine.addComponent(entity, Gravity.class, new Gravity(0.0, -9.80665, -1.0, 100.0));
gameEngine.addComponent(entity, Vec2D.class, new Vec2D(1.5, 0.0, 1));
gameEngine.addComponent(entity, RidgidBody.class, new RidgidBody());
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();
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)
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");
}
}
}
}