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