List of usage examples for com.badlogic.gdx.physics.box2d QueryCallback QueryCallback
QueryCallback
From source file:com.dongbat.game.util.WorldQueryUtil.java
/** * Find any entity in radius/*from w w w . j ava 2 s .c o m*/ * * @param world artemis world * @param location location to find * @param radius radius to find * @return Array of nearest Entity in radius */ public static Array<Entity> findAnyInRadius(final com.artemis.World world, final Vector2 location, final float radius) { final Array<Entity> entities = new Array<Entity>(); QueryCallback callback = new QueryCallback() { @Override public boolean reportFixture(Fixture fixture) { Body body = fixture.getBody(); Entity entity = UuidUtil.getEntityByUuid(world, (UUID) body.getUserData()); float distanceSq = new Vector2(body.getPosition()).sub(location).len2(); if (distanceSq <= radius * radius) { entities.add(entity); } return true; } }; Vector2 lowerLeft = new Vector2(location).sub(radius, radius); Vector2 upperRight = new Vector2(location).add(radius, radius); PhysicsUtil.getPhysicsWorld(world).QueryAABB(callback, lowerLeft.x, lowerLeft.y, upperRight.x, upperRight.y); return entities; }
From source file:com.dongbat.game.util.WorldQueryUtil.java
/** * Find food in radius, centre is an point on map * * @param world artemis world//w w w.ja v a 2 s. com * @param location centre of circle * @param radius radius to find * @return Food entity list */ public static Array<Entity> findFoodInRadius(final com.artemis.World world, final Vector2 location, final float radius) { final Array<Entity> food = new Array<Entity>(); QueryCallback callback = new QueryCallback() { @Override public boolean reportFixture(Fixture fixture) { Body body = fixture.getBody(); Entity entity = UuidUtil.getEntityByUuid(world, (UUID) body.getUserData()); if (entity != null) { if (isFood(world, entity.getId())) { float distanceSq = new Vector2(body.getPosition()).sub(location).len2(); if (distanceSq <= radius * radius) { food.add(entity); } } } return true; } }; Vector2 lowerLeft = new Vector2(location).sub(radius, radius); Vector2 upperRight = new Vector2(location).add(radius, radius); getPhysicsWorld(world).QueryAABB(callback, lowerLeft.x, lowerLeft.y, upperRight.x, upperRight.y); return food; }
From source file:com.dongbat.game.util.WorldQueryUtil.java
public static Array<Entity> findColdFoodInRadius(final com.artemis.World world, final Vector2 location, final float radius) { final Array<Entity> food = new Array<Entity>(); QueryCallback callback = new QueryCallback() { @Override/*w ww . ja v a 2s . c o m*/ public boolean reportFixture(Fixture fixture) { Body body = fixture.getBody(); Entity entity = UuidUtil.getEntityByUuid(world, (UUID) body.getUserData()); if (entity != null) { if (isFood(world, entity.getId())) { float distanceSq = new Vector2(body.getPosition()).sub(location).len2(); if (distanceSq <= radius * radius) { Food f = EntityUtil.getComponent(world, entity, Food.class); if (!f.isToxic()) { food.add(entity); } } } } return true; } }; Vector2 lowerLeft = new Vector2(location).sub(radius, radius); Vector2 upperRight = new Vector2(location).add(radius, radius); getPhysicsWorld(world).QueryAABB(callback, lowerLeft.x, lowerLeft.y, upperRight.x, upperRight.y); return food; }
From source file:com.dongbat.game.util.WorldQueryUtil.java
/** * Find enemy in radius, centre is an point on map * * @param world artemis world//from www .j a v a 2 s .c om * @param location centre of circle * @param radius radius to find * @return Enemy entity list */ public static Array<Entity> findEnemyInRadius(final com.artemis.World world, final Vector2 location, final float radius) { // TODO: to be fixed final Array<Entity> enemy = new Array<Entity>(); QueryCallback callback = new QueryCallback() { @Override public boolean reportFixture(Fixture fixture) { Body body = fixture.getBody(); Entity entity = UuidUtil.getEntityByUuid(world, (UUID) body.getUserData()); boolean isEnemy = false; if (isEnemy) { float distanceSq = new Vector2(body.getPosition()).sub(location).len2(); if (distanceSq <= radius * radius) { enemy.add(entity); } } return true; } }; Vector2 lowerLeft = new Vector2(location).sub(radius, radius); Vector2 upperRight = new Vector2(location).add(radius, radius); getPhysicsWorld(world).QueryAABB(callback, lowerLeft.x, lowerLeft.y, upperRight.x, upperRight.y); return enemy; }
From source file:com.dongbat.game.util.WorldQueryUtil.java
/** * Find player in radius from a location * * @param world artemis world/*from w ww . j a v a 2 s . co m*/ * @param location location that you want to find * @param radius radius to find * @return Player entity list */ public static Array<Entity> findPlayerNonAiInRadius(final com.artemis.World world, final Vector2 location, final float radius) { final Array<Entity> playerAndAIList = new Array<Entity>(); QueryCallback callback = new QueryCallback() { @Override public boolean reportFixture(Fixture fixture) { Body body = fixture.getBody(); Entity entity = UuidUtil.getEntityByUuid(world, (UUID) body.getUserData()); if (isPlayerNonAiUnit(world, entity.getId())) { float distanceSq = new Vector2(body.getPosition()).sub(location).len2(); if (distanceSq <= radius * radius) { playerAndAIList.add(entity); } } return true; } }; Vector2 lowerLeft = new Vector2(location).sub(radius, radius); Vector2 upperRight = new Vector2(location).add(radius, radius); getPhysicsWorld(world).QueryAABB(callback, lowerLeft.x, lowerLeft.y, upperRight.x, upperRight.y); return playerAndAIList; }
From source file:com.dongbat.game.util.WorldQueryUtil.java
public static Array<Entity> findQueenInRadius(final com.artemis.World world, final Vector2 location, final float radius) { final Array<Entity> queenList = new Array<Entity>(); QueryCallback callback = new QueryCallback() { @Override//from w w w .ja v a 2 s. c o m public boolean reportFixture(Fixture fixture) { Body body = fixture.getBody(); Entity entity = UuidUtil.getEntityByUuid(world, (UUID) body.getUserData()); if (isQueen(world, entity.getId())) { float distanceSq = new Vector2(body.getPosition()).sub(location).len2(); if (distanceSq <= radius * radius) { queenList.add(entity); } return false; } return true; } }; Vector2 lowerLeft = new Vector2(location).sub(radius, radius); Vector2 upperRight = new Vector2(location).add(radius, radius); getPhysicsWorld(world).QueryAABB(callback, lowerLeft.x, lowerLeft.y, upperRight.x, upperRight.y); return queenList; }
From source file:com.dongbat.game.util.WorldQueryUtil.java
public static Array<Entity> findPlayerWithAiInRadius(final com.artemis.World world, final Entity e, final Vector2 location, final float radius) { final Array<Entity> entities = new Array<Entity>(); QueryCallback callback = new QueryCallback() { @Override//from w w w. j ava 2s.c o m public boolean reportFixture(Fixture fixture) { Body body = fixture.getBody(); Entity entity = UuidUtil.getEntityByUuid(world, (UUID) body.getUserData()); if (EntityUtil.getComponent(world, e, SubUnit.class) != null || isPlayer(world, entity.getId()) && !e.equals(entity)) { float distanceSq = new Vector2(body.getPosition()).sub(location).len2(); if (distanceSq <= radius * radius) { entities.add(entity); } } return true; } }; Vector2 lowerLeft = new Vector2(location).sub(radius, radius); Vector2 upperRight = new Vector2(location).add(radius, radius); PhysicsUtil.getPhysicsWorld(world).QueryAABB(callback, lowerLeft.x, lowerLeft.y, upperRight.x, upperRight.y); return entities; }
From source file:com.dongbat.game.util.WorldQueryUtil.java
public static Vector2 getQueenPosition(final com.artemis.World world) { final Vector2 queenPosition = null; QueryCallback callback = new QueryCallback() { @Override// w w w.j av a2 s. c o m public boolean reportFixture(Fixture fixture) { Body body = fixture.getBody(); Entity entity = UuidUtil.getEntityByUuid(world, (UUID) body.getUserData()); if (isQueen(world, entity.getId())) { queenPosition.x = body.getPosition().x; queenPosition.y = body.getPosition().y; return false; } return true; } }; PhysicsUtil.getPhysicsWorld(world).QueryAABB(callback, -scaleX, -scaleY, scaleX, scaleY); return queenPosition; }
From source file:com.dongbat.game.util.WorldQueryUtil.java
public static Array<Entity> findFood(final com.artemis.World world, final Vector2 location, final float radius) { final Array<Entity> entities = new Array<Entity>(); QueryCallback callback = new QueryCallback() { @Override//ww w. j a v a 2 s . c o m public boolean reportFixture(Fixture fixture) { Body body = fixture.getBody(); Entity entity = UuidUtil.getEntityByUuid(world, (UUID) body.getUserData()); if (isFood(world, entity.getId())) { float distanceSq = new Vector2(body.getPosition()).sub(location).len2(); if (distanceSq <= radius * radius) { entities.add(entity); } } return true; } }; Vector2 lowerLeft = new Vector2(location).sub(radius, radius); Vector2 upperRight = new Vector2(location).add(radius, radius); PhysicsUtil.getPhysicsWorld(world).QueryAABB(callback, lowerLeft.x, lowerLeft.y, upperRight.x, upperRight.y); return entities; }
From source file:com.dongbat.invasion.util.PhysicsUtil.java
public static Array<Entity> findEnemiesInRadius(final Vector2 location, final float radius) { final Array<Entity> enemies = new Array<Entity>(); QueryCallback callback = new QueryCallback() { @Override/*from w w w . jav a 2 s.co m*/ public boolean reportFixture(Fixture fixture) { Body body = fixture.getBody(); Entity entity = (Entity) body.getUserData(); if (EntityUtil.isEnemy(entity)) { float distanceSq = new Vector2(body.getPosition()).sub(location).len2(); if (distanceSq <= radius * radius) { enemies.add(entity); } } return true; } }; Vector2 lowerLeft = new Vector2(location).sub(radius, radius); Vector2 upperRight = new Vector2(location).add(radius, radius); getWorld().QueryAABB(callback, lowerLeft.x, lowerLeft.y, upperRight.x, upperRight.y); return enemies; }