List of usage examples for com.badlogic.gdx.math Vector2 sub
@Override
public Vector2 sub(Vector2 v)
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)); }