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

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

Introduction

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

Prototype

@Override
    public Vector2 sub(Vector2 v) 

Source Link

Usage

From source file:com.hajnar.GravityShip.GameWorld.java

License:Apache License

public void updateBlackHoles(float delta) {
    int len = blackHoles.size();
    for (int i = 0; i < len; i++) {
        blackHoles.get(i).update(delta);
        Vector2 playerPosition = player.getBody().getPosition();
        Vector2 holePosition = blackHoles.get(i).getBody().getPosition();
        Vector2 gravityVector = (holePosition.sub(playerPosition));
        float gravityForce = blackHoles.get(i).getStrength() / gravityVector.len2();
        gravityVector.nor();/*from  w  ww.  j a  v a  2  s . c o m*/
        gravityVector.mul(gravityForce);
        player.getBody().applyForceToCenter(gravityVector);
    }
}

From source file:com.jmolina.orb.elements.LinearMagnetic.java

License:Open Source License

/**
 * Indica si el punto se encuentra en la cara frontal del elemento. La cara frontal es la que
 * queda a la izquierda del vector segmento (Start-End).
 *
 * @param point Punto en coordenadas del mundo
 */// w ww  . j  a v  a 2  s  .  c o  m
private boolean atFrontSide(Vector2 point) {
    Vector2 vectorStartPoint = new Vector2(point);
    vectorStartPoint.sub(getStart());

    return getSegment().angle(vectorStartPoint) >= 0;
}

From source file:com.kotcrab.vis.runtime.system.physics.PhysicsBodyManager.java

License:Apache License

@Override
public void inserted(Entity entity) {
    PhysicsProperties physicsProperties = physicsPropCm.get(entity);
    VisPolygon polygon = polygonCm.get(entity);
    Transform transform = transformCm.get(entity);

    if (physicsProperties.adjustOrigin && originCm.has(entity))
        originCm.get(entity).setOrigin(0, 0);

    Vector2 worldPos = new Vector2(transform.getX(), transform.getY());

    BodyDef bodyDef = new BodyDef();
    bodyDef.position.set(worldPos);//from ww w. j  a va 2 s  .  c o m

    Body body = world.createBody(bodyDef);
    body.setType(physicsProperties.bodyType);
    body.setUserData(entity);

    body.setGravityScale(physicsProperties.gravityScale);
    body.setLinearDamping(physicsProperties.linearDamping);
    body.setAngularDamping(physicsProperties.angularDamping);

    body.setBullet(physicsProperties.bullet);
    body.setFixedRotation(physicsProperties.fixedRotation);
    body.setSleepingAllowed(physicsProperties.sleepingAllowed);
    body.setActive(physicsProperties.active);

    for (Vector2[] vs : polygon.faces) {
        for (Vector2 v : vs) { //polygon component stores data in world cords, we need to convert it to local cords
            v.sub(worldPos);
        }

        PolygonShape shape = new PolygonShape();
        shape.set(vs);

        FixtureDef fd = new FixtureDef();
        fd.density = physicsProperties.density;
        fd.friction = physicsProperties.friction;
        fd.restitution = physicsProperties.restitution;
        fd.isSensor = physicsProperties.sensor;
        fd.shape = shape;
        fd.filter.maskBits = physicsProperties.maskBits;
        fd.filter.categoryBits = physicsProperties.categoryBits;

        body.createFixture(fd);
        shape.dispose();
    }

    entity.edit().add(new PhysicsBody(body)).add(new OriginalRotation(transform.getRotation()));
}

From source file:com.me.myverilogTown.LevelScreen.java

License:Open Source License

private void zoom_limit_to_border() {
    /* keeps any move on a zoomed region to the limit of the map */
    float camX;/*from   w ww  .  j  av a  2 s  .c  o m*/
    float camY;

    camX = camera.position.x;
    camY = camera.position.y;

    Vector2 camMin = new Vector2(camera.viewportWidth, camera.viewportHeight);
    camMin.scl(camera.zoom / 2); // bring to center and scale by the zoom
    // level
    Vector2 camMax = new Vector2(LEVEL_WIDTH, LEVEL_HEIGHT + SCORE_BAR_HEIGHT);
    camMax.sub(camMin); // bring to center

    /* keep camera within borders */
    camX = Math.min(camMax.x, Math.max(camX, camMin.x));
    camY = Math.min(camMax.y - (1 - camera.zoom) * SCORE_BAR_HEIGHT, Math.max(camY, camMin.y));

    /* reset position */
    camera.position.set(camX, camY, camera.position.z);
}

From source file:com.me.myverilogTown.LevelScreen.java

License:Open Source License

private void zoom_limit_to_border() {
    /* keeps any move on a zoomed region to the limit of the map */
    float camX;//from w w  w .j  av  a 2 s  . c o m
    float camY;

    camX = camera.position.x;
    camY = camera.position.y;

    Vector2 camMin = new Vector2(camera.viewportWidth, camera.viewportHeight);
    camMin.scl(camera.zoom / 2); // bring to center and scale by the zoom
    // level
    Vector2 camMax = new Vector2(LEVEL_WIDTH, LEVEL_HEIGHT + SCORE_BAR_HEIGHT);
    camMax.sub(camMin); // bring to center

    /* keep camera within borders */
    camX = Math.min(camMax.x, Math.max(camX, camMin.x));
    camY = Math.min(camMax.y - (1 - camera.zoom) * 100, Math.max(camY, camMin.y));

    /* reset position */
    camera.position.set(camX, camY, camera.position.z);
}

From source file:com.mygdx.game.systems.PlayerSystem.java

License:Apache License

@Override
public void processEntity(Entity entity, float deltaTime) {
    TransformComponent t = tm.get(entity);
    StateComponent state = sm.get(entity);
    MovementComponent mov = mm.get(entity);
    PlayerComponent bob = bm.get(entity);
    if (state.get() != PlayerComponent.STATE_HEADBUTT) {
        if (Gdx.input.isKeyPressed(Keys.A)) {
            accelX = -200f;//from w  w w . j a  v a  2  s .  c o  m
        } else if (Gdx.input.isKeyPressed(Keys.D)) {
            accelX = 200f;
        } else {
            accelX = 0;
        }
        if (Gdx.input.isKeyPressed(Keys.S)) {
            accelY = -200f;
        } else if (Gdx.input.isKeyPressed(Keys.W)) {
            accelY = 200f;
        } else {
            accelY = 0;
        }
        if (accelY == 0 && accelX == 0) {
            state.set(PlayerComponent.STATE_IDLE);
        } else {
            state.set(PlayerComponent.STATE_WALKING);
        }
        if (Gdx.input.isButtonPressed(Buttons.LEFT)) {
            state.set(PlayerComponent.STATE_HEADBUTT);
            Sound headbut = world.game.assetManager.get("Sound/headbut.mp3.mp3");
            headbut.play();
        }

        Vector2 playerPos = BossSystem.getDeepCopyCentralPos(entity);
        Vector3 mousePos = world.game.camera.unproject(new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0));
        Vector2 mousePos2 = new Vector2(mousePos.x, mousePos.y);
        t.rotation = mousePos2.sub(playerPos).angle();
    } else {
        // t.rotation needs to be locked
        Vector2 newVelocity = new Vector2(300, 0).rotate(t.rotation);
        this.accelX = newVelocity.x;
        this.accelY = newVelocity.y;
        headButtCooldown += deltaTime;
        if (headButtCooldown >= PlayerComponent.ATTACK_DURATION) {
            headButtCooldown = 0;
            state.set(PlayerComponent.STATE_IDLE);
        }

    }

    mov.velocity.set(accelX, accelY);
}

From source file:com.o2d.pkayjava.editor.controller.commands.PasteItemsCommand.java

License:Apache License

@Override
public void doAction() {
    Object[] payload = (Object[]) Sandbox.getInstance().retrieveFromClipboard();

    if (payload == null) {
        cancel();/*w  w  w.j  a  v a  2s.  c  o m*/
        return;
    }

    Vector2 cameraPrevPosition = (Vector2) payload[0];
    Vector2 cameraCurrPosition = new Vector2(Sandbox.getInstance().getCamera().position.x,
            Sandbox.getInstance().getCamera().position.y);

    Vector2 diff = cameraCurrPosition.sub(cameraPrevPosition);

    Json json = new Json();
    CompositeVO compositeVO = json.fromJson(CompositeVO.class, (String) payload[1]);
    forceIdChange(compositeVO);
    Set<Entity> newEntitiesList = createEntitiesFromVO(compositeVO);
    for (Entity entity : newEntitiesList) {
        TransformComponent transformComponent = ComponentRetriever.get(entity, TransformComponent.class);
        transformComponent.setX(transformComponent.getX() + diff.x);
        transformComponent.setY(transformComponent.getY() + diff.y);
        ZIndexComponent zIndexComponent = ComponentRetriever.get(entity, ZIndexComponent.class);
        UILayerBoxMediator layerBoxMediator = facade.retrieveMediator(UILayerBoxMediator.NAME);
        zIndexComponent.layerName = layerBoxMediator.getCurrentSelectedLayerName();
        Overlap2DFacade.getInstance().sendNotification(ItemFactory.NEW_ITEM_ADDED, entity);
        pastedEntityIds.add(EntityUtils.getEntityId(entity));
    }
    sandbox.getSelector().setSelections(newEntitiesList, true);
}

From source file:com.o2d.pkayjava.editor.view.stage.tools.TransformTool.java

License:Apache License

@Override
public void anchorDown(NormalSelectionFollower follower, int anchor, float x, float y) {
    Sandbox sandbox = Sandbox.getInstance();

    commandBuilder.begin(follower.getEntity());

    TransformComponent transformComponent = ComponentRetriever.get(follower.getEntity(),
            TransformComponent.class);
    DimensionsComponent dimensionsComponent = ComponentRetriever.get(follower.getEntity(),
            DimensionsComponent.class);
    if (anchor == NormalSelectionFollower.ROTATION_LT || anchor == NormalSelectionFollower.ROTATION_RT
            || anchor == NormalSelectionFollower.ROTATION_RB || anchor == NormalSelectionFollower.ROTATION_LB) {

        // get mouse stage coordinates

        Vector2 mousePoint = sandbox.screenToWorld(x, y);
        Vector2 originPoint = new Vector2(transformComponent.getX() + transformComponent.getOriginX(),
                transformComponent.getY() + transformComponent.getOriginY());
        mousePoint.sub(originPoint);

        lastTransformAngle = mousePoint.angle();
        lastEntityAngle = transformComponent.getRotation();

    }//from  w ww . j  a v a 2s .  c o m

}

From source file:com.o2d.pkayjava.editor.view.stage.tools.TransformTool.java

License:Apache License

private void defaultAnchorDraggedLogic(Vector2 mousePointStage, int anchor, Entity entity) {
    TransformComponent transformComponent = ComponentRetriever.get(entity, TransformComponent.class);
    DimensionsComponent dimensionsComponent = ComponentRetriever.get(entity, DimensionsComponent.class);

    float newX = transformComponent.getX();
    float newY = transformComponent.getY();
    float newWidth = dimensionsComponent.width * transformComponent.getScaleX();
    float newHeight = dimensionsComponent.height * transformComponent.getScaleY();

    float tmpAdjustmentX = transformComponent.getOriginX() * (transformComponent.getScaleX() - 1);
    float tmpAdjustmentY = transformComponent.getOriginY() * (transformComponent.getScaleY() - 1);

    final float cos = MathUtils.cosDeg(transformComponent.getRotation());
    final float sin = MathUtils.sinDeg(transformComponent.getRotation());

    float difX = (transformComponent.getX() - mousePointStage.x);
    float difY = (transformComponent.getY() - mousePointStage.y);

    difX = (difX * cos + difY * sin);//  ww  w.  ja v a2s .c o  m
    difY = (difX * -sin + difY * cos);

    switch (anchor) {
    case NormalSelectionFollower.L:
        newWidth = dimensionsComponent.width + difX * 2;
        break;
    case NormalSelectionFollower.R:
        newWidth = tmpAdjustmentX - difX;
        break;
    case NormalSelectionFollower.B:
        newHeight = dimensionsComponent.height + difY * 2;
        break;
    case NormalSelectionFollower.T:
        newHeight = tmpAdjustmentY - difY;
        break;
    case NormalSelectionFollower.LT:
        newWidth = dimensionsComponent.width + difX * 2;
        newHeight = tmpAdjustmentY - difY;
        break;
    case NormalSelectionFollower.RT:
        newWidth = tmpAdjustmentX - difX;
        newHeight = tmpAdjustmentY - difY;
        break;
    case NormalSelectionFollower.RB:
        newWidth = tmpAdjustmentX - difX;
        newHeight = dimensionsComponent.height + difY * 2;
        break;
    case NormalSelectionFollower.LB:
        newWidth = dimensionsComponent.width + difX * 2;
        newHeight = dimensionsComponent.height + difY * 2;
        break;
    }

    // This was making sure for proportional sizing
    if (Gdx.input.isKeyPressed(Input.Keys.SHIFT_LEFT)) {
        float enclosingRectSize = Math.max(newWidth, newHeight);
        if (dimensionsComponent.width >= dimensionsComponent.height) {
            newWidth = enclosingRectSize;
            newHeight = (newWidth / dimensionsComponent.width) * dimensionsComponent.height;
        }
        if (dimensionsComponent.height > dimensionsComponent.width) {
            newHeight = enclosingRectSize;
            newWidth = (newHeight / dimensionsComponent.height) * dimensionsComponent.width;
        }

    }

    // Rotating
    if (anchor >= NormalSelectionFollower.ROTATION_LT && anchor <= NormalSelectionFollower.ROTATION_LB) {
        Vector2 originPoint = new Vector2(transformComponent.getX() + transformComponent.getOriginX(),
                transformComponent.getY() + transformComponent.getOriginY());
        mousePointStage.sub(originPoint);
        float currentAngle = mousePointStage.angle();
        float angleDiff = currentAngle - lastTransformAngle;
        float newRotation = lastEntityAngle + angleDiff;
        transformComponent.setRotation(newRotation);

        commandBuilder.setRotation(newRotation);
    }

    float newScaleX = newWidth / dimensionsComponent.width;
    float newScaleY = newHeight / dimensionsComponent.height;

    commandBuilder.setScale(newScaleX, newScaleY);
    commandBuilder.setPos(newX, newY);

    transformComponent.setScaleX(newScaleX);
    transformComponent.setScaleY(newScaleY);
    transformComponent.setX(newX);
    transformComponent.setY(newY);
}

From source file:com.punchables.rainbowdad.entity.Enemy.java

public void steerTo(Coord target, int radius, boolean avoidTiles) {
    //System.out.println(new Vector2(pos.x - getPos().x, pos.y - getPos().y));
    //setAccel(new Vector2(pos.x - getPos().x, pos.y - getPos().y).scl(200));

    boolean withinRadius = abs(target.x - getPos().x) <= radius && abs(target.y - getPos().y) <= radius;

    if (!withinRadius) {
        Vector2 desiredVel = new Vector2(target.x - getPos().x, target.y - getPos().y).nor().scl(getMaxVel());
        Vector2 steeringVel = desiredVel.sub(getVel());
        //System.out.println(desiredVel + " " + steeringVel);

        if (avoidTiles) {
            int maxAvoidForce = 64;
            ArrayList<MapTile> collidableTiles = refreshCollidableTiles(128);
            MapTile closestTile = null;//from   w  w w.j  a  v  a2 s  .c  o m
            int closestTileDist = Coord.getDistanceSquared(new Coord(getPos()),
                    collidableTiles.get(0).getPos());
            for (MapTile tile : collidableTiles) {
                //float[] collideArray = Collider.checkCollision(new Circle(ahead, 1), tile, GameScreen.tileSize, true);
                int distSquared = Coord.getDistanceSquared(new Coord(getPos()), tile.getPos());
                if (distSquared < closestTileDist) {
                    closestTileDist = distSquared;
                    closestTile = tile;
                }
            }

            Vector2 avoidanceVelocity = new Vector2();
            if (closestTile != null) {
                avoidanceVelocity = new Vector2(closestTile.getPos().x - getPos().x,
                        closestTile.getPos().y - getPos().y).nor();
                avoidanceVelocity.scl(maxAvoidForce);
            } else {
                avoidanceVelocity = new Vector2();
                System.out.println("no close tiles");
            }

            steeringVel.add(avoidanceVelocity.scl(-1));

        }

        getVel().add(steeringVel);
    }

}