private void init() {
    Gdx.app.log("GameScreen", "Initializing");
    isInitialized = true;

    world = new World(new Vector2(0f, -9.8f), true);
    // Add Texture Component
    engine = new PooledEngine();

    RenderingSystem renderingSystem = new RenderingSystem(batch);
    engine.addSystem(new AnimationSystem());
    engine.addSystem(renderingSystem);
    engine.addSystem(new PhysicsSystem(world));

    engine.addSystem(new PhysicsDebugSystem(world, renderingSystem.getCamera()));
    engine.addSystem(new UselessStateSwapSystem());

    Entity e = buildPuffin(world);
    engine.addEntity(e);
    engine.addEntity(buildFloorEntity(world));

    isInitialized = true;
  }
  private Entity buildFloorEntity(World world) {

    Entity e = engine.createEntity();
    Vector2 screenMeters = RenderingSystem.getScreenSizeInMeters();
    Gdx.app.log("Splash Screen", "Screen Meters:" + screenMeters.x + " x " + screenMeters.y);
    Vector2 screenPixels = RenderingSystem.getScreenSizeInPixesl();
    Gdx.app.log("Splash Screen", "Screen Pixels:" + screenPixels.x + " x " + screenPixels.y);
    // Create our body definition
    BodyDef groundBodyDef = new BodyDef();
    groundBodyDef.type = BodyDef.BodyType.StaticBody;

    // Set its world position
    groundBodyDef.position.set(new Vector2(6f, 1f));
    groundBodyDef.angle = 45f;

    BodyComponent bc = new BodyComponent();
    // Create a body from the defintion and add it to the world
    bc.body = world.createBody(groundBodyDef);

    // Create a polygon shape
    PolygonShape groundBox = new PolygonShape();
    // Set the polygon shape as a box which is twice the size of our view port and 20 high
    // (setAsBox takes half-width and half-height as arguments)

    groundBox.setAsBox(5f, 1f);

    // Create a fixture from our polygon shape and add it to our ground body
    bc.body.createFixture(groundBox, 0.0f);

    // Clean up after ourselves
    groundBox.dispose();

    e.add(bc);

    return e;
  }