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