package com.gdxjam.systems;
import com.badlogic.ashley.core.Engine;
import com.badlogic.ashley.core.EntitySystem;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Body;
import com.badlogic.gdx.physics.box2d.BodyDef;
import com.badlogic.gdx.physics.box2d.World;
import com.badlogic.gdx.utils.Disposable;
import com.gdxjam.GameManager;
public class PhysicsSystem extends EntitySystem implements Disposable {
public static final float TIME_STEP = 1.0f / 60.f;
public static final int VELOCITY_ITERATIONS = 8;
public static final int POSITION_ITERATIONS = 8;
private World world;
public PhysicsSystem() {
world = new World(new Vector2(0, 0), true);
world.setContactListener(new GameContactListener());
}
@Override
public void addedToEngine(Engine engine) {
super.addedToEngine(engine);
}
@Override
public void update(float deltaTime) {
super.update(deltaTime);
world.step(TIME_STEP, VELOCITY_ITERATIONS, POSITION_ITERATIONS);
}
public Body createBody(BodyDef def) {
return world.createBody(def);
}
public void destroyBody(Body body) {
world.destroyBody(body);
}
public World getWorld() {
return world;
}
@Override
public void dispose() {
world.dispose();
}
@Override
public boolean checkProcessing() {
return !GameManager.isPaused();
}
}