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

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

Introduction

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

Prototype

@Override
    public Vector2 add(Vector2 v) 

Source Link

Usage

From source file:es.eucm.ead.engine.utils.EngineUtils.java

License:Open Source License

/**
 * Calculate the bounds of the given actors as a group
 * // w ww.java2 s . c  o  m
 * @param actors
 *            the actors
 * @param resultOrigin
 *            result origin of the bounds
 * @param resultSize
 *            result size of the bounds
 */
public static void calculateBounds(Array<Actor> actors, Vector2 resultOrigin, Vector2 resultSize) {
    resultOrigin.set(0, 0);
    resultSize.set(0, 0);
    if (actors.size == 0) {
        return;
    }

    Vector2 origin = Pools.obtain(Vector2.class);
    Vector2 size = Pools.obtain(Vector2.class);
    Vector2 leftTop = Pools.obtain(Vector2.class);
    Vector2 rightBottom = Pools.obtain(Vector2.class);
    float minX = Float.POSITIVE_INFINITY;
    float minY = Float.POSITIVE_INFINITY;
    float maxX = Float.NEGATIVE_INFINITY;
    float maxY = Float.NEGATIVE_INFINITY;
    for (Actor actor : actors) {
        calculateBounds(actor, origin, size);
        size.add(origin);
        leftTop.set(origin.x, size.y);
        rightBottom.set(size.x, origin.y);
        actor.localToParentCoordinates(origin);
        actor.localToParentCoordinates(size);
        actor.localToParentCoordinates(leftTop);
        actor.localToParentCoordinates(rightBottom);

        minX = Math.min(minX, Math.min(origin.x, Math.min(size.x, Math.min(leftTop.x, rightBottom.x))));
        minY = Math.min(minY, Math.min(origin.y, Math.min(size.y, Math.min(leftTop.y, rightBottom.y))));
        maxX = Math.max(maxX, Math.max(origin.x, Math.max(size.x, Math.max(leftTop.x, rightBottom.x))));
        maxY = Math.max(maxY, Math.max(origin.y, Math.max(size.y, Math.max(leftTop.y, rightBottom.y))));
    }
    Pools.free(origin);
    Pools.free(size);
    Pools.free(leftTop);
    Pools.free(rightBottom);
    resultOrigin.set(minX, minY);
    resultSize.set(maxX - minX, maxY - minY);
}

From source file:fr.plnech.igem.game.BinGame.java

License:Open Source License

@Override
public List<HUDElement> getHudElements() {
    if (elements.isEmpty()) {
        final ITiledTextureRegion textureScore = activity.getTexture(ResMan.HUD_SCORE);
        final ITiledTextureRegion textureLives = activity.getTexture(ResMan.HUD_LIVES);

        final float scale = 0.120f;

        Vector2 posS = new Vector2(5, 0); //activity.spritePosition(textureScore, 0.1f, 0.05f, HUDElement.SCALE_DEFAULT);
        Vector2 posL = new Vector2(155, 0); //activity.spritePosition(textureLives, 0.6f, 0.05f, HUDElement.SCALE_DEFAULT);

        Vector2 offS = new Vector2(120, 45);
        Vector2 offL = new Vector2(170, 45);

        IFont fontRoboto = activity.getFont(FontAsset.name(ResMan.F_HUD_BIN, ResMan.F_HUD_BIN_SIZE,
                ResMan.F_HUD_BIN_COLOR, ResMan.F_HUD_BIN_ANTI));

        final VertexBufferObjectManager vbom = activity.getVBOM();

        HUDScore = new HUDElement().buildSprite(posS, textureScore, vbom, scale).buildText("", "31337".length(),
                posS.add(offS), fontRoboto, vbom);
        HUDLives = new HUDElement().buildSprite(posL, textureLives, vbom, scale).buildText("", "999".length(),
                posL.add(offL), fontRoboto, vbom);

        elements.add(HUDScore);/*  w  w w .  ja  va  2  s  .c  o m*/
        elements.add(HUDLives);
    }

    return elements;
}

From source file:fr.plnech.igem.game.GutGame.java

License:Open Source License

@Override
public List<HUDElement> getHudElements() {
    if (elements.isEmpty()) {
        final ITiledTextureRegion textureScore = activity.getTexture(ResMan.HUD_SCORE);
        final ITiledTextureRegion textureLives = activity.getTexture(ResMan.HUD_LIVES);

        final float scale = 0.08f;

        Vector2 posS = new Vector2(5, 0);
        Vector2 posL = new Vector2(350, 0);

        Vector2 offS = new Vector2(75, 30);
        Vector2 offL = new Vector2(340, 27.5f);

        IFont fontRoboto = activity.getFont(FontAsset.name(ResMan.F_HUD_GUT, ResMan.F_HUD_GUT_SIZE,
                ResMan.F_HUD_BIN_COLOR, ResMan.F_HUD_BIN_ANTI));
        Log.d(TAG, "getHudElements - sprites: " + posS + ", " + posL + " - text:" + offS.add(posS) + ", "
                + offL.add(posL));// w w w. j  a  va 2 s. c o  m

        final VertexBufferObjectManager vbom = activity.getVBOM();

        HUDScore = new HUDElement().buildSprite(posS, textureScore, vbom, scale).buildText("", "31337".length(),
                offS, fontRoboto, vbom);
        HUDLives = new HUDElement().buildSprite(posL, textureLives, vbom, scale).buildText("", "999".length(),
                offL, fontRoboto, vbom);

        elements.add(HUDScore);
        elements.add(HUDLives);
    }

    return elements;
}

From source file:fr.plnech.igem.game.PianoGame.java

License:Open Source License

@Override
public List<HUDElement> getHudElements() {
    if (elements.isEmpty()) {
        final ITiledTextureRegion textureScore = activity.getTexture(ResMan.HUD_SCORE);
        final ITiledTextureRegion textureTime = activity.getTexture(ResMan.HUD_TIME);

        final float scale = 0.08f;

        Vector2 posS = new Vector2(5, 0);
        Vector2 offS = new Vector2(65, 23);
        Vector2 posT = new Vector2(350, 0);
        Vector2 offT = new Vector2(345, 21);

        IFont fontRoboto = activity.getFont(FontAsset.name(ResMan.F_HUD_BIN, ResMan.F_HUD_BIN_SIZE,
                ResMan.F_HUD_BIN_COLOR, ResMan.F_HUD_BIN_ANTI));
        Log.d(TAG, "getHudElements - Score: sprite: " + posS + " - text:" + offS.add(posS));
        Log.d(TAG, "getHudElements - Time:  sprite: " + posT + " - text:" + offT.add(posT));

        final VertexBufferObjectManager vbom = activity.getVBOM();

        HUDScore = new HUDElement().buildSprite(posS, textureScore, vbom, scale).buildText("", "31337".length(),
                offS, fontRoboto, vbom);
        HUDTime = new HUDElement().buildSprite(posT, textureTime, vbom, scale)
                .buildText("", 8, offT, fontRoboto, vbom).setUrgent(false);

        elements.add(HUDScore);//from   w  w w. j  a v a  2  s . co m
        elements.add(HUDTime);
    }

    return elements;
}

From source file:fr.plnech.igem.game.PictoGame.java

License:Open Source License

@Override
public List<HUDElement> getHudElements() {
    final ITiledTextureRegion textureScore = activity.getTexture(ResMan.HUD_SCORE);
    final ITiledTextureRegion textureTime = activity.getTexture(ResMan.HUD_TIME);

    final float scale = 0.120f;

    Vector2 posS = new Vector2(5, 0); //activity.spritePosition(textureScore, 0.1f, 0.05f, HUDElement.SCALE_DEFAULT);
    Vector2 posT = new Vector2(155, 0); //activity.spritePosition(textureTime, 0.6f, 0.05f, HUDElement.SCALE_DEFAULT);

    Vector2 offS = new Vector2(90, 45);
    Vector2 offT = new Vector2(185, 45);

    IFont fontRoboto = activity.getFont(FontAsset.name(ResMan.F_HUD_BIN, ResMan.F_HUD_BIN_SIZE,
            ResMan.F_HUD_PICTO_COLOR, ResMan.F_HUD_BIN_ANTI));

    final VertexBufferObjectManager vbom = activity.getVBOM();

    HUDScore = new HUDElement().buildSprite(posS, textureScore, vbom, scale)
            .buildText("", 8, posS.add(offS), fontRoboto, vbom).setUrgent(false);
    HUDTime = new HUDElement().buildSprite(posT, textureTime, vbom, scale)
            .buildText("", 8, posT.add(offT), fontRoboto, vbom).setUrgent(false);

    elements.add(HUDScore);//from  w ww. j  av  a  2  s  .  co m
    elements.add(HUDTime);

    return elements;
}

From source file:headmade.arttag.Guard.java

License:Apache License

public void update(ArtTagScreen artTag, float delta) {
    if (body == null) {
        return;/*from ww w  .ja v a2  s. c  om*/
    }
    isRunning = isAlert || isCautious;
    moveSpeed = isRunning ? maxMoveSpeed * runFactor
            : isSuspicious ? maxMoveSpeed * 0.75f : isHeardPlayer ? 0.5f : maxMoveSpeed;
    final Vector2 oldMoveVec = targetMoveVec.cpy();

    Vector2 targetPoint = null;
    Float distanceToPlayer = null;
    if (isLightOn) {
        for (final Fixture fixture : playerInView) {
            targetPoint = fixture.getBody().getWorldCenter().cpy();
            final Vector2 diffVec = body.getWorldCenter().cpy().sub(targetPoint);
            boolean seesPlayer = false;
            distanceToPlayer = diffVec.len();
            if (distanceToPlayer < 1f) {
                seesPlayer = true;
            } else {
                final Vector2 outOfBodyVec = diffVec.scl(fixture.getShape().getRadius() * 1.01f);
                targetPoint.add(outOfBodyVec);
                seesPlayer = light.contains(targetPoint.x, targetPoint.y);
            }
            // Gdx.app.log(TAG, light.contains(targetPoint.x, targetPoint.y) + " diffVec.length " + diffVec.len());
            if (seesPlayer) {
                // Gdx.app.log(TAG, "Guard sees player");
                playerLastSeenVec = fixture.getBody().getWorldCenter().cpy();
                if (!isAlert) {
                    Assets.instance.playSound(AssetSounds.whosThere);
                }
                isAlert = true;
                Player.instance.isSpotted = true;
                reactionTime = 0f;
            } else {
                if (isAlert) {
                    Assets.instance.playSound(AssetSounds.huh);
                    reactionTime = MAX_REACTION_TIME;
                    isCautious = true;
                }
                isAlert = false;
            }
        }
    }

    // handle hearing
    if (Player.instance.isRunning && (Player.instance.isMoveDown || Player.instance.isMoveUp
            || Player.instance.isMoveLeft || Player.instance.isMoveRight) && null != Player.instance.body) {
        if (distanceToPlayer == null) {
            distanceToPlayer = body.getWorldCenter().cpy().sub(Player.instance.body.getWorldCenter()).len();
        }
        if (distanceToPlayer < MAX_LIGHT_CONE_LENGTH * 0.9f) {
            sumDeltaSinceHeardPlayer = 0;

            final RayCastCallback callback = new RayCastCallback() {
                @Override
                public float reportRayFixture(Fixture fixture, Vector2 point, Vector2 normal, float fraction) {
                    // Gdx.app.log(TAG, "reportRayFixture " + point + " normal " + normal);
                    if (fixture.isSensor()) {
                        // Gdx.app.log(TAG, "Raycast ignoring sensor");
                        return 1;
                    }
                    if (body.equals(fixture.getBody())) {
                        // this is the guards body so there is nothing inbetween them
                        // Gdx.app.log(TAG, "Guard CAN see the point where the noise happened" + Player.instance.body.getWorldCenter());
                        // playerLastHeardVisibleVec = Player.instance.body.getWorldCenter().cpy();
                        return 1;
                    }
                    // Gdx.app.log(TAG, "Fall through");
                    isHearingObstructed = true;
                    return 0;
                }
            };
            try {
                isSuspicious = true;
                playerLastHeardVec = Player.instance.body.getWorldCenter().cpy();
                isHearingObstructed = false;
                // Gdx.app.log(TAG, "###################################");
                // Gdx.app.log(TAG, "Guard " + body.getWorldCenter());
                // Gdx.app.log(TAG, "Player " + playerLastHeardVec);
                artTag.world.rayCast(callback, playerLastHeardVec, body.getWorldCenter());
                if (!isHearingObstructed) {
                    playerLastHeardVisibleVec = Player.instance.body.getWorldCenter().cpy();
                }
            } catch (final Exception e) {
                Gdx.app.error(TAG, "Error Raycasting :(", e);
            }
        } else {
            sumDeltaSinceHeardPlayer += delta;
        }
    } else {
        sumDeltaSinceHeardPlayer += delta;
    }
    isHeardPlayer = playerLastHeardVisibleVec != null || sumDeltaSinceHeardPlayer < 3;

    if (isTouchingPlayerLightCone && Player.instance.isLightOn) {
        // isAlert = true;
    }

    // handle backToPath
    if (isAlert || isCautious || (isSuspicious && playerLastHeardVisibleVec != null)) {
        if (lastVisibleVecBackToPath == null) {
            lastVisibleVecBackToPath = body.getWorldCenter();
        }

        Vector2 checkPoint = path.get(currentPathIndex);
        if (backToPath.size > 0) {
            checkPoint = backToPath.get(backToPath.size - 1);
        }
        if (BODY_RADIUS < checkPoint.dst(body.getWorldCenter())) {
            // not touching checkpoint
            // Gdx.app.log(TAG, "Goard not touching checkpoint");
            final RayCastCallback callback = new RayCastCallback() {
                @Override
                public float reportRayFixture(Fixture fixture, Vector2 point, Vector2 normal, float fraction) {
                    // Gdx.app.log(TAG, "reportRayFixture adds new backToPathPoint" + lastVisibleVecBackToPath);
                    backToPath.add(lastVisibleVecBackToPath.cpy());
                    return 0;
                }
            };
            try {
                artTag.world.rayCast(callback, body.getWorldCenter(), checkPoint);
            } catch (final Exception e) {
                Gdx.app.error(TAG, "Error Raycasting :(", e);
            }
        }
        lastVisibleVecBackToPath = body.getWorldCenter();
    }

    // determine targetPoint
    if (isAlert && playerInView.size > 0 && Player.instance.body != null) {
        targetPoint = Player.instance.body.getWorldCenter();
    } else if (isCautious && playerLastSeenVec != null) {
        targetPoint = playerLastSeenVec;
        if (BODY_RADIUS / 10 > targetPoint.dst2(body.getPosition())) {
            // Lost player
            Assets.instance.playSound(AssetSounds.hm);
            Gdx.app.log(TAG, "Guard no longer cautious");
            isCautious = false;
            isSuspicious = true;
        }
    } else if (isSuspicious && playerLastHeardVisibleVec != null) {
        targetPoint = playerLastHeardVisibleVec;
        // Gdx.app.log(TAG, "Guard going to playerLastHeardVisibleVec");
        if (BODY_RADIUS / 10 > targetPoint.dst2(body.getPosition())) {
            // Lost player
            Assets.instance.playSound(AssetSounds.hm);
            Gdx.app.log(TAG, "Guard no longer suspicious");
            isSuspicious = false;
            playerLastHeardVisibleVec = null;
        }
    } else {
        lastVisibleVecBackToPath = null;
        if (backToPath.size > 0) {
            // following Path back to path
            targetPoint = backToPath.get(backToPath.size - 1);
            if (BODY_RADIUS / 10 > targetPoint.dst(body.getPosition())) {
                // Gdx.app.log(TAG, "Guard reached target back to path point " + targetPoint);
                backToPath.pop();
            }
        } else {
            // following path
            isSuspicious = false;
            targetPoint = path.get(currentPathIndex);
            if (BODY_RADIUS > targetPoint.dst(body.getPosition())) {
                // Gdx.app.log(TAG, "Guard reached target point " + targetPoint);
                currentPathIndex++;
                if (currentPathIndex >= path.size) {
                    currentPathIndex = 0;
                }
                targetPoint = path.get(currentPathIndex);
                // Gdx.app.log(TAG, "New target point " + targetPoint);
            }
        }

    }

    targetMoveVec = targetPoint.cpy().sub(body.getPosition());
    targetMoveVec.nor().scl(moveSpeed);

    if (MathUtils.isEqual(0f, oldMoveVec.angle(targetMoveVec))) {
        sumDeltaSinceMoveChange += delta;
    } else {
        // movment direction changed
        sumDeltaSinceMoveChange = 0f;
    }

    final float alpha = reactionTime > 0 ? MathUtils.clamp(sumDeltaSinceMoveChange / reactionTime, 0.1f, 1f)
            : 1f;
    body.setLinearVelocity(targetMoveVec);

    final Vector2 bodyRotVec = new Vector2(1f, 0f);
    bodyRotVec.setAngleRad(body.getAngle());
    float angleDiff;
    if (!isAlert && !isSuspicious && isHeardPlayer && null == playerLastHeardVisibleVec
            && null != playerLastHeardVec) {
        // look at last heard
        angleDiff = bodyRotVec.angleRad(playerLastHeardVec.cpy().sub(body.getWorldCenter()).rotate90(-1));
    } else {
        angleDiff = bodyRotVec.angleRad(targetMoveVec.cpy().rotate90(-1));
    }
    final float rotByRad = MathUtils.clamp(angleDiff, -(MAX_ROTATION_SPEED * delta) / reactionTime,
            MAX_ROTATION_SPEED * delta / reactionTime);
    // Gdx.app.log(TAG, "angleDiff: " + angleDiff + " rotByRad: " + rotByRad + " bodyRotVec: " + bodyRotVec + " - targetMoveVec:
    // "
    // + targetMoveVec);

    // is moving?
    if (!MathUtils.isEqual(targetMoveVec.len2(), 0f)) {
        if (Player.instance.body != null) {
            final float dist = body.getPosition().dst(Player.instance.body.getPosition());
            float volume = isRunning ? STEP_VOLUME * 2 : STEP_VOLUME;
            if (dist > 1) {
                volume = volume / dist;
            }
            sound.setVolume(stepSoundId, volume);
            sound.setPitch(stepSoundId, isRunning ? runFactor : 1f);
            body.setTransform(body.getPosition(), body.getAngle() + rotByRad);
        }
    } else {
        sound.setVolume(stepSoundId, 0f);
        sound.setPitch(stepSoundId, 1f);
    }

    light.setActive(isLightOn);
}

From source file:MeshBoneUtil.MeshRenderRegion.java

License:Open Source License

public void runUvWarp() {
    int cur_uvs_index = getUVsIndex();
    for (int i = 0; i < uv_warp_ref_uvs.size(); i++) {
        Vector2 set_uv = uv_warp_ref_uvs.get(i).cpy();
        set_uv.sub(uv_warp_local_offset);
        set_uv.scl(uv_warp_scale);/*  w ww.j  av  a  2s . c  o  m*/
        set_uv.add(uv_warp_global_offset);

        /*
        set_uv -= uv_warp_local_offset;
        set_uv *= uv_warp_scale;
        set_uv += uv_warp_global_offset;
        */

        store_uvs[0 + cur_uvs_index] = set_uv.x;
        store_uvs[1 + cur_uvs_index] = set_uv.y;

        /*
        store_uvs[0 + cur_uvs_index] = (float)set_uv.X;
        store_uvs[1 + cur_uvs_index] = (float)set_uv.Y;
        */

        cur_uvs_index += 2;
    }
}

From source file:org.ams.core.clipper.Simplify.java

License:Open Source License

public static Array<Array<Vector2>> simplify(Array<Vector2> vertices) {
    Path path = new Path();
    for (Vector2 v : vertices) {
        path.add(convertToLongPoint(v));
    }/*from   www . j  av  a2s.  co  m*/
    Paths paths = DefaultClipper.simplifyPolygon(path);

    Array<Array<Vector2>> vv = new Array();
    for (int i = 0; i < paths.size(); i++) {
        Array<Vector2> v = new Array();

        for (Point.LongPoint p : paths.get(i)) {
            v.add(convertToVector(p));
        }
        vv.add(v);
    }
    return vv;
}

From source file:org.ams.physics.tools.BodyMover.java

License:Open Source License

@Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
    boolean b = mouseJoint != null;

    if (mouseJoint != null) {
        Vector2 worldCoordinates = CoordinateHelper.getWorldCoordinates(camera, screenX, screenY);
        worldCoordinates.add(offset);
        mouseJoint.setTarget(worldCoordinates);
    }//from w w  w. j a va  2 s.  c o m

    return b;
}

From source file:org.ams.prettypaint.TextureAligner.java

License:Open Source License

/**
 * Align the given textures so that they can seamlessly overlap.
 *
 * @param texturePolygons      the textures to align.
 * @param textureAlwaysUpright whether to set the textures upright when calling {@link #alignTextures(Array)}.
 *                             If you set this value false the textures may not look aligned because they can have different angles.
 *///from www. ja  v  a  2  s. c om
public void alignTextures(Array<TexturePolygon> texturePolygons, boolean textureAlwaysUpright) {
    if (texturePolygons.size == 0)
        return;

    Vector2 origin = getOrigin(texturePolygons, ORIGIN_CENTER);
    origin.add(extraTranslation);

    for (TexturePolygon texturePolygon : texturePolygons) {
        if (textureAlwaysUpright)
            texturePolygon.setTextureUprightForCurrentAngle();
        texturePolygon.alignTexture(origin);
    }
}