protected Body[] getBodyAB(World world){ Body[] bodies = new Body[2]; Array<Body> bodyArray = new Array<>(world.getBodyCount()); world.getBodies(bodyArray); for(Body body : bodyArray){ if(this.bodyA.equals(body.getUserData())) bodies[0] = body; else if(this.bodyB.equals(body.getUserData())) bodies[1] = body; } return bodies; }
HashMap<String, Object> usedBodyNames = new HashMap<>(); HashMap<String, String> reverseBodyNames = new HashMap<>(); Array<Body> bodyArray = new Array<>(world.getBodyCount()); world.getBodies(bodyArray); for(Body body : bodyArray)
@Override public Body getPhysicsObject(String name) { Array<Body> bodyArray = new Array<>(world.getBodyCount()); world.getBodies(bodyArray); for (Body body : bodyArray) if (name != null && name.equals(body)) return body; return null; }
/** * @return closest body to the given x,y in world coordinates */ public static Body closestBody(World world, float x, float y){ Body body = null; float closestDistance = Float.MAX_VALUE; Array<Body> bodyArray = new Array<>(world.getBodyCount()); world.getBodies(bodyArray); for(Body worldBody : bodyArray){ float distance = worldBody.getPosition().dst2(x,y); if(body == null || closestDistance > distance){ body = worldBody; closestDistance = distance; } } return body; } }
@Override public void act(float delta) { super.act(delta); Array<Body> bodies = new Array<Body>(world.getBodyCount()); world.getBodies(bodies); for (Body body : bodies) { update(body); } // Fixed timestep accumulator += delta; while (accumulator >= delta) { world.step(TIME_STEP, 6, 2); accumulator -= TIME_STEP; } //TODO: Implement interpolation }
@Override public Body getPhysicsObject(String name) { Array<Body> bodyArray = new Array<>(world.getBodyCount()); world.getBodies(bodyArray); for (Body body : bodyArray) if (name != null && name.equals(body.getUserData())) return body; return null; }
@Override public boolean isNear(String origin, String target, float distance) { Body originBody = null, targetBody = null; Array<Body> bodyArray = new Array<>(world.getBodyCount()); world.getBodies(bodyArray); for (Body body : bodyArray) { if (origin != null && origin.equals(body.getUserData())) originBody = body; if (target != null && target.equals(body.getUserData())) targetBody = body; } return originBody.getPosition().dst(targetBody.getPosition()) < distance; }