Example usage for com.badlogic.gdx.math Vector2 Vector2

List of usage examples for com.badlogic.gdx.math Vector2 Vector2

Introduction

In this page you can find the example usage for com.badlogic.gdx.math Vector2 Vector2.

Prototype

public Vector2(Vector2 v) 

Source Link

Document

Constructs a vector from the given vector

Usage

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);
}