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.tnf.ptm.entities.planet.PlanetObjectsBuilder.java

License:Apache License

private RectSprite createCloudSprite(ArrayList<TextureAtlas.AtlasRegion> cloudTexs, float maxAngleShift,
        float maxDistShift, float baseDist, TextureManager textureManager) {

    TextureAtlas.AtlasRegion tex = PtmMath.elemRnd(cloudTexs);
    if (PtmMath.test(.5f)) {
        tex = textureManager.getFlipped(tex);
    }//from   w w  w  . jav  a  2  s .co m
    float angleShiftRel = PtmMath.rnd(1);
    float distPerc = 1 - PtmMath.abs(angleShiftRel);
    float sz = .5f * (1 + distPerc) * MAX_CLOUD_PIECE_SZ;

    float relAngle = PtmMath.rnd(30);
    float rotSpd = PtmMath.rnd(MAX_CLOUT_PIECE_ROT_SPD);
    float angleShift = angleShiftRel * maxAngleShift;
    float distShift = maxDistShift == 0 ? 0 : distPerc * PtmMath.rnd(0, maxDistShift);
    float dist = baseDist + distShift;
    Vector2 basePos = PtmMath.getVec(0, -baseDist);
    Vector2 relPos = new Vector2(0, -dist);
    PtmMath.rotate(relPos, angleShift, true);
    relPos.sub(basePos);
    PtmMath.free(basePos);

    return new RectSprite(tex, sz, 0, 0, relPos, DraLevel.CLOUDS, relAngle, rotSpd, PtmColor.WHITE, false);
}

From source file:com.tnf.ptm.entities.planet.SunSingleton.java

License:Apache License

public void draw(PtmGame game, GameDrawer drawer) {
    Vector2 camPos = game.getCam().getPos();
    PtmSystem sys = game.getPlanetMan().getNearestSystem(camPos);
    Vector2 toCam = PtmMath.getVec(camPos);
    toCam.sub(sys.getPos());
    float toCamLen = toCam.len();
    if (toCamLen < Const.SUN_RADIUS) {
        float closeness = 1 - toCamLen / Const.SUN_RADIUS;
        myGradTint.a = PtmMath.clamp(closeness * 4, 0, 1);
        myFillTint.a = PtmMath.clamp((closeness - .25f) * 4, 0, 1);

        float sz = 2 * game.getCam().getViewDist();
        float gradAngle = PtmMath.angle(toCam) + 90;
        drawer.draw(myWhiteTex, sz * 2, sz * 2, sz, sz, camPos.x, camPos.y, 0, myFillTint);
        drawer.draw(myGradTex, sz * 2, sz * 2, sz, sz, camPos.x, camPos.y, gradAngle, myGradTint);
    }/*ww w .j av a2 s .com*/
    PtmMath.free(toCam);
}

From source file:com.tnf.ptm.entities.planet.TileObject.java

License:Apache License

@Override
public void update(PtmGame game) {
    setDependentParams();/*from   w w  w  .ja v  a  2  s.co  m*/

    if (myBody != null) {
        float ts = game.getTimeStep();
        Vector2 spd = PtmMath.getVec(myPos);
        spd.sub(myBody.getPosition());
        spd.scl(1f / ts);
        myBody.setLinearVelocity(spd);
        PtmMath.free(spd);
        float bodyAngle = myBody.getAngle() * PtmMath.radDeg;
        float av = PtmMath.norm(myAngle - bodyAngle) * PtmMath.degRad / ts;
        myBody.setAngularVelocity(av);
    }
}

From source file:com.tnf.ptm.entities.StarPort.java

License:Apache License

@Override
public void update(PtmGame game) {
    setParamsFromBody();/*from  w w w . j  av  a  2  s.c o m*/

    float fps = 1 / game.getTimeStep();

    Vector2 spd = getDesiredPos(myFrom, myTo, true);
    // Adjust position so that StarPorts are not overlapping
    spd = adjustDesiredPos(game, this, spd);
    spd.sub(myPos).scl(fps / 4);
    myBody.setLinearVelocity(spd);
    PtmMath.free(spd);
    float desiredAngle = PtmMath.angle(myFrom.getPos(), myTo.getPos());
    myBody.setAngularVelocity((desiredAngle - myAngle) * PtmMath.degRad * fps / 4);

    PtmShip ship = ForceBeacon.pullShips(game, this, myPos, null, null, .4f * SIZE);
    if (ship != null && ship.getMoney() >= FARE && ship.getPosition().dst(myPos) < .05f * SIZE) {
        ship.setMoney(ship.getMoney() - FARE);
        Transcendent t = new Transcendent(ship, myFrom, myTo, game);
        ObjectManager objectManager = game.getObjMan();
        objectManager.addObjDelayed(t);
        blip(game, ship);
        game.getSoundManager().play(game, game.getSpecialSounds().transcendentCreated, null, t);
        objectManager.removeObjDelayed(ship);
    }
    for (int i = 0, myLightsSize = myLights.size(); i < myLightsSize; i++) {
        LightSrc l = myLights.get(i);
        l.update(true, myAngle, game);
    }

}

From source file:com.tnf.ptm.handler.files.HullConfigManager.java

License:Apache License

private void parseGunSlotList(JsonValue containerNode, HullConfig.Data configData) {
    Vector2 builderOrigin = new Vector2(configData.shipBuilderOrigin);

    for (JsonValue gunSlotNode : containerNode) {
        Vector2 position = readVector2(gunSlotNode, "position", null);
        position.sub(builderOrigin).scl(configData.size);

        boolean isUnderneathHull = gunSlotNode.getBoolean("isUnderneathHull", false);
        boolean allowsRotation = gunSlotNode.getBoolean("allowsRotation", true);

        configData.gunSlots.add(new GunSlot(position, isUnderneathHull, allowsRotation));
    }/* w ww  .  ja va  2s .c  om*/
}

From source file:com.tnf.ptm.handler.files.HullConfigManager.java

License:Apache License

private void process(HullConfig.Data configData) {
    Vector2 builderOrigin = new Vector2(configData.shipBuilderOrigin);

    configData.origin.set(builderOrigin).scl(configData.size);

    configData.e1Pos.sub(builderOrigin).scl(configData.size);

    configData.e2Pos.sub(builderOrigin).scl(configData.size);

    for (Vector2 position : configData.lightSrcPoss) {
        position.sub(builderOrigin).scl(configData.size);
    }/*from ww  w .ja  v  a  2 s  .co  m*/

    for (Vector2 position : configData.forceBeaconPoss) {
        position.sub(builderOrigin).scl(configData.size);
    }

    for (Vector2 position : configData.doorPoss) {
        position.sub(builderOrigin).scl(configData.size);
    }
}

From source file:com.uwsoft.editor.controller.commands.PasteItemsCommand.java

License:Apache License

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

    if (payload == null) {
        cancel();/*  www . jav a  2  s  . 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);

    Set<Entity> newEntitiesList = new HashSet<>();

    HashMap<Integer, Collection<Component>> backup = (HashMap<Integer, Collection<Component>>) payload[1];
    for (Collection<Component> components : backup.values()) {
        Entity entity = new Entity();
        for (Component component : components) {
            entity.add(ComponentCloner.get(component));
        }
        sandbox.getEngine().addEntity(entity);
        int uniquId = sandbox.getSceneControl().sceneLoader.entityFactory.postProcessEntity(entity);

        ParentNodeComponent parentNodeComponent = ComponentRetriever.get(entity, ParentNodeComponent.class);
        parentNodeComponent.parentEntity = sandbox.getCurrentViewingEntity();
        NodeComponent nodeComponent = parentNodeComponent.parentEntity.getComponent(NodeComponent.class);
        nodeComponent.addChild(entity);

        TransformComponent transformComponent = ComponentRetriever.get(entity, TransformComponent.class);
        transformComponent.x += diff.x;
        transformComponent.y += diff.y;

        MainItemComponent mainItemComponent = ComponentRetriever.get(entity, MainItemComponent.class);
        UILayerBoxMediator layerBoxMediator = facade.retrieveMediator(UILayerBoxMediator.NAME);
        mainItemComponent.layer = layerBoxMediator.getCurrentSelectedLayerName();

        Overlap2DFacade.getInstance().sendNotification(ItemFactory.NEW_ITEM_ADDED, entity);
        newEntitiesList.add(entity);

        pastedEntityIds.add(uniquId);
    }

    sandbox.getSelector().setSelections(newEntitiesList, true);
}

From source file:com.uwsoft.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();
    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.x + transformComponent.originX,
                transformComponent.y + transformComponent.originY);
        mousePoint.sub(originPoint);

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

    }/*  w ww . ja  v a2 s  . c  om*/

}

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

License:Apache License

@Override
public void anchorDragged(NormalSelectionFollower follower, int anchor, float x, float y) {

    Sandbox sandbox = Sandbox.getInstance();

    Vector2 mousePointStage = sandbox.screenToWorld(x, y);
    x = mousePointStage.x;/*from  w ww  . jav a  2  s.c  om*/
    y = mousePointStage.y;

    TransformComponent transformComponent = ComponentRetriever.get(follower.getEntity(),
            TransformComponent.class);
    DimensionsComponent dimensionsComponent = ComponentRetriever.get(follower.getEntity(),
            DimensionsComponent.class);

    float newX = transformComponent.x;
    float newY = transformComponent.y;
    float newWidth = dimensionsComponent.width * transformComponent.scaleX;
    float newHeight = dimensionsComponent.height * transformComponent.scaleY;

    float newOriginX = transformComponent.originX;
    float newOriginY = transformComponent.originY;
    float tmpAdjustmenX = transformComponent.originX * (transformComponent.scaleX - 1);
    float tmpAdjustmenY = transformComponent.originY * (transformComponent.scaleY - 1);

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

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

    difX = (difX * cos + difY * sin);
    difY = (difX * -sin + difY * cos);

    switch (anchor) {
    case NormalSelectionFollower.ORIGIN:
        //TODO this shit is to complicated will leave it for now
        //                newOriginX = x - transformComponent.x;
        //                newOriginY = y - transformComponent.y;
        // TODO: adjust coordinates
        //final float cos = (float)Math.cos(transformComponent.rotation * MathUtils.degreesToRadians);
        //final float sin = (float)Math.sin(transformComponent.rotation * MathUtils.degreesToRadians);
        //final float tox = (localCoords.x - originX) * scaleX;
        //final float toy = (localCoords.y - originY) * scaleY;
        //newX = (newX * cos + newY * sin)+newX;
        //newY = (newX * -sin + newY * cos)+newY;
        break;

    case NormalSelectionFollower.L:
        newWidth = dimensionsComponent.width + difX * 2;
        break;
    case NormalSelectionFollower.R:
        newWidth = tmpAdjustmenX - difX;
        break;
    case NormalSelectionFollower.B:
        newHeight = dimensionsComponent.height + difY * 2;
        break;
    case NormalSelectionFollower.T:
        newHeight = tmpAdjustmenY - difY;
        break;
    case NormalSelectionFollower.LT:
        newWidth = dimensionsComponent.width + difX * 2;
        newHeight = tmpAdjustmenY - difY;
        break;
    case NormalSelectionFollower.RT:
        newWidth = tmpAdjustmenX - difX;
        newHeight = tmpAdjustmenY - difY;
        break;
    case NormalSelectionFollower.RB:
        newWidth = tmpAdjustmenX - difX;
        newHeight = dimensionsComponent.height + difY * 2;
        break;
    case NormalSelectionFollower.LB:
        newWidth = dimensionsComponent.width + difX * 2;
        newHeight = dimensionsComponent.height + difY * 2;
        break;
    }

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

    }

    if (anchor != NormalSelectionFollower.ORIGIN) {
        newOriginX = (newWidth / (dimensionsComponent.width * transformComponent.scaleX)) * newOriginX;
        newOriginY = (newHeight / (dimensionsComponent.height * transformComponent.scaleY)) * newOriginY;
    }

    if (anchor >= NormalSelectionFollower.ROTATION_LT && anchor <= NormalSelectionFollower.ROTATION_LB) {
        Vector2 originPoint = new Vector2(transformComponent.x + transformComponent.originX,
                transformComponent.y + transformComponent.originY);
        mousePointStage.sub(originPoint);
        float currentAngle = mousePointStage.angle();
        float angleDiff = currentAngle - lastTransformAngle;
        transformComponent.rotation = lastEntityAngle + angleDiff;
    }

    //transformComponent.y = newY;
    if (EntityUtils.getType(follower.getEntity()) == EntityFactory.NINE_PATCH) {
        NinePatchComponent ninePatchComponent = ComponentRetriever.get(follower.getEntity(),
                NinePatchComponent.class);
        if (newWidth < ninePatchComponent.ninePatch.getTotalWidth())
            newWidth = ninePatchComponent.ninePatch.getTotalWidth();
        if (newHeight < ninePatchComponent.ninePatch.getTotalHeight())
            newHeight = ninePatchComponent.ninePatch.getTotalHeight();

        dimensionsComponent.width = newWidth;
        dimensionsComponent.height = newHeight;
    } else {
        transformComponent.scaleX = newWidth / dimensionsComponent.width;
        transformComponent.scaleY = newHeight / dimensionsComponent.height;
    }

    transformComponent.x = newX;
    transformComponent.y = newY;

    //transformComponent.originX = newOriginX;
    //transformComponent.originY = newOriginY;

    Overlap2DFacade.getInstance().sendNotification(Overlap2D.ITEM_DATA_UPDATED);

}

From source file:com.vlaaad.dice.game.world.view.ViewScroller.java

License:Open Source License

public void centerOn(float x, float y) {
    Vector2 viewCoordinate = tmp1.set(x * ViewController.CELL_SIZE, y * ViewController.CELL_SIZE);
    Vector2 currentCenter = tmp2.set(stage.getWidth(), stage.getHeight()).scl(0.5f);
    Vector2 targetPosition = currentCenter.sub(viewCoordinate);
    clamp(targetPosition);/* www  . j a  va  2s .  c o m*/
    root.clearActions();
    root.addAction(Actions.moveTo(hScrollEnabled ? targetPosition.x : root.getX(),
            vScrollEnabled ? targetPosition.y : root.getY(), CENTER_ON_TIME));
}