List of usage examples for com.badlogic.gdx.math Vector2 Vector2
public Vector2(Vector2 v)
From source file:com.dongbat.game.util.WorldQueryUtil.java
/** * Find any entity in radius/*from w ww. j av a2s.co 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//from w w w.j av a 2 s . c om * @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 w w . ja va2 s . 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 ww w . ja v a 2 s .c o m * @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 nearest entity in list from a location * * @param world artemis world/*from w w w. ja va 2s. co m*/ * @param location location * @param entityList entity list that you want to find * @return one entity */ public static Entity findNearestEntityInList(com.artemis.World world, Vector2 location, Array<Entity> entityList) { Entity nearest = null; float closestDistanceSq = Float.MAX_VALUE; for (Entity e : entityList) { Vector2 position = getPosition(world, e); float distanceSq = new Vector2(position).sub(location).len2(); if (distanceSq < closestDistanceSq) { nearest = e; closestDistanceSq = distanceSq; } } return nearest; }
From source file:com.dongbat.game.util.WorldQueryUtil.java
/** * Find player in radius from a location * * @param world artemis world//from w ww. ja v a2 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 .j ava2 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//w w w . j a va 2 s .com 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 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/*from ww w . jav a 2s.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.bullet.types.HomingSplitStunBullet.java
@Override public void update(Entity bullet) { if (PhysicsUtil.isGoingOutOfBound(bullet) != PhysicsUtil.OutOfBound.NONE) { BulletUtil.destroy(bullet);//from w ww .j a v a2 s. c o m } long gameTimeSince = TimeUtil.getGameTimeSince(startTime); if (splitDisable && gameTimeSince > Constants.BULLET.SPLIT_DELAY) { splitDisable = false; } if (isHoming) { if (homingDisable && gameTimeSince > Constants.BULLET.HOMING_DELAY) { homingDisable = false; } if (!homingDisable) { if (target == null || !target.isActive()) { target = PhysicsUtil.findNearestEnemy(PhysicsUtil.getPosition(bullet)); } if (target != null && target.isActive()) { MovementUtil.chase(bullet, target); } } } if (splitDisable) { return; } Collision collision = EntityUtil.getComponent(bullet, Collision.class); if (collision.collidedList.size == 0) { return; } Entity enemy = collision.collidedList.get(0); if (!EntityUtil.isEnemy(enemy)) { return; } DamageUtil.damageSingle(enemy, Constants.BULLET.DEFAULT_DAMAGE); BuffUtil.addBuff(bullet, enemy, "stun", duration); if (level > 0) { float enemyRadius = PhysicsUtil.getRadius(enemy); for (int i = 0; i < Constants.BULLET.DEFAULT_NUMBER_SUBBULLET; i++) { float angle = (float) (Math.random() * 340 + 20); Vector2 enemyPosition = new Vector2(PhysicsUtil.getPosition(enemy)); Vector2 v = new Vector2(enemyRadius + 10, 0); Vector2 vRotation = v.rotate(angle); Vector2 fireVector = new Vector2(vRotation).add(enemyPosition); Entity subBullet = BulletRegistry.createBullet("homingSplitStun", fireVector); HomingSplitStunBullet type = (HomingSplitStunBullet) EntityUtil .getComponent(subBullet, Bullet.class).getType(); PhysicsUtil.applyImpulse(subBullet, new Vector2(vRotation).scl(10)); type.level = level - 1; type.splitDisable = true; type.homingDisable = true; type.isHoming = true; } } BulletUtil.destroy(bullet); }