Leaves only the framework in the compiled clause. Find the removed files in ../examples/misc/
38 lines
1.3 KiB
Java
38 lines
1.3 KiB
Java
package nz.ac.massey.javaecs;
|
|
|
|
public class PhysicsSystem extends ECSSystem{
|
|
ECS gameEngine;
|
|
public PhysicsSystem(ECS gameEngine){
|
|
this.gameEngine = gameEngine;
|
|
}
|
|
|
|
@Override
|
|
void init() {}
|
|
|
|
@Override
|
|
void update() {}
|
|
|
|
void update(Double dt){
|
|
for (Integer entity : entities) {
|
|
Vec2D pos = (Vec2D)gameEngine.getComponentData(entity, Vec2D.class);
|
|
RidgidBody ridgidBody = (RidgidBody)gameEngine.getComponentData(entity, RidgidBody.class);
|
|
Gravity gravity = (Gravity)gameEngine.getComponentData(entity, Gravity.class);
|
|
// Firstly, add the result of the accelerative forces to the ridgidbody
|
|
ridgidBody.xdot += ridgidBody.xAcc * dt;
|
|
ridgidBody.ydot += ridgidBody.yAcc * dt;
|
|
|
|
// Special case of gravity
|
|
if (gravity.terminalX < 0 || Math.abs(ridgidBody.xdot) < gravity.terminalX){
|
|
ridgidBody.xdot += gravity.x * dt;
|
|
}
|
|
if (gravity.terminalY < 0 || Math.abs(ridgidBody.ydot) < gravity.terminalY){
|
|
ridgidBody.ydot += gravity.y * dt;
|
|
}
|
|
|
|
// Finally, move the vec2d by the new velocity
|
|
pos.x += ridgidBody.xdot * dt;
|
|
pos.y += ridgidBody.ydot * dt;
|
|
}
|
|
}
|
|
}
|