package org.codecranachan.asteroidpush.base.simulation.jbox2d; import org.codecranachan.asteroidpush.base.Balancing; import org.codecranachan.asteroidpush.base.simulation.PhysicsEngine; import org.codecranachan.asteroidpush.base.simulation.RigidBodyFactory; import org.jbox2d.common.Vec2; import org.jbox2d.dynamics.World; public class Box2dEngine implements PhysicsEngine { private World world; public Box2dEngine() { Vec2 gravity = new Vec2(0, -Balancing.getDefaultGravity()); this.world = new World(gravity); } public RigidBodyFactory getBodyFactory() { return new Box2dBodyFactory(world); } public void stepWorld() { final int velocityIterations = 8; final int positionIterations = 3; world.step(getTimeStep(), velocityIterations, positionIterations); } public float getTimeStep() { // A bit more than 60 frames per second return 0.0165f; } }