package fr.wisper.entities; import com.badlogic.gdx.graphics.g2d.Batch; import com.badlogic.gdx.physics.box2d.*; import fr.wisper.utils.Config; public class BulletBox2d extends AbstractBox2dWrapper { // Wisper private Bullet bullet; public BulletBox2d(int particleId, World world) { switch (particleId) { case Bullet.BLACK_BULLET: bullet = new Bullet("particles/black-bullet-small-noadditive.p"); break; case Bullet.BLUE_BULLET: bullet = new Bullet("particles/blue-bullet-small-noadditive.p"); break; case Bullet.RED_BULLET: bullet = new Bullet("particles/red-bullet-small-noadditive.p"); break; default: break; } body = createBulletBody(world); body.setBullet(true); } @Override public void draw(Batch batch, float delta) { bullet.setPosition(body.getPosition().x - bullet.getOffset() / 2, body.getPosition().y); bullet.draw(batch, delta); } private Body createBulletBody(World world) { CircleShape shape = new CircleShape(); shape.setRadius(1f); // Meters BodyDef wisperBodyDef = new BodyDef(); wisperBodyDef.type = BodyDef.BodyType.DynamicBody; wisperBodyDef.position.set(Config.APP_WIDTH / 2, Config.APP_HEIGHT / 2); FixtureDef fixtureDef = new FixtureDef(); fixtureDef.shape = shape; fixtureDef.density = 3f; // kg fixtureDef.friction = 1f; // [0 - 1] fixtureDef.restitution = 0f; // velocity loose Body body = world.createBody(wisperBodyDef); body.createFixture(fixtureDef); body.setFixedRotation(true); shape.dispose(); body.setUserData(this); return body; } @Override public void dispose() { bullet.dispose(); } @Override public boolean isComplete() { return bullet.isComplete(); } }