/** Transforms the stage coordinates to screen coordinates. * @param stageCoords Input stage coordinates and output for resulting screen coordinates. */ public Vector2 stageToScreenCoordinates (Vector2 stageCoords) { viewport.project(stageCoords); stageCoords.y = viewport.getScreenHeight() - stageCoords.y; return stageCoords; }
/** Transforms the stage coordinates to screen coordinates. * @param stageCoords Input stage coordinates and output for resulting screen coordinates. */ public Vector2 stageToScreenCoordinates (Vector2 stageCoords) { viewport.project(stageCoords); stageCoords.y = viewport.getScreenHeight() - stageCoords.y; return stageCoords; }
/** Check if screen coordinates are inside the viewport's screen area. */ protected boolean isInsideViewport (int screenX, int screenY) { int x0 = viewport.getScreenX(); int x1 = x0 + viewport.getScreenWidth(); int y0 = viewport.getScreenY(); int y1 = y0 + viewport.getScreenHeight(); screenY = Gdx.graphics.getHeight() - 1 - screenY; return screenX >= x0 && screenX < x1 && screenY >= y0 && screenY < y1; }
/** Check if screen coordinates are inside the viewport's screen area. */ protected boolean isInsideViewport (int screenX, int screenY) { int x0 = viewport.getScreenX(); int x1 = x0 + viewport.getScreenWidth(); int y0 = viewport.getScreenY(); int y1 = y0 + viewport.getScreenHeight(); screenY = Gdx.graphics.getHeight() - 1 - screenY; return screenX >= x0 && screenX < x1 && screenY >= y0 && screenY < y1; }
@Override public void draw3dText (Vector3 location, String textString) { if (spriteBatch == null) { spriteBatch = new SpriteBatch(); } if (font == null) { font = new BitmapFont(); } // this check is necessary to avoid "mirrored" instances of the text if (camera.frustum.pointInFrustum(location)) { if (viewport != null) { camera.project(location, viewport.getScreenX(), viewport.getScreenY(), viewport.getScreenWidth(), viewport.getScreenHeight()); } else { camera.project(location); } shapeRenderer.end(); spriteBatch.begin(); // the text will be centered on the position font.draw(spriteBatch, textString, location.x, location.y, 0, textString.length(), 0, Align.center, false); spriteBatch.end(); shapeRenderer.begin(ShapeType.Line); } }
@Override public void draw3dText (Vector3 location, String textString) { if (spriteBatch == null) { spriteBatch = new SpriteBatch(); } if (font == null) { font = new BitmapFont(); } // this check is necessary to avoid "mirrored" instances of the text if (camera.frustum.pointInFrustum(location)) { if (viewport != null) { camera.project(location, viewport.getScreenX(), viewport.getScreenY(), viewport.getScreenWidth(), viewport.getScreenHeight()); } else { camera.project(location); } shapeRenderer.end(); spriteBatch.begin(); // the text will be centered on the position font.draw(spriteBatch, textString, location.x, location.y, 0, textString.length(), 0, Align.center, false); spriteBatch.end(); shapeRenderer.begin(ShapeType.Line); } }
/** Transforms the stage coordinates to screen coordinates. * @param stageCoords Input stage coordinates and output for resulting screen coordinates. */ public Vector2 stageToScreenCoordinates (Vector2 stageCoords) { viewport.project(stageCoords); stageCoords.y = viewport.getScreenHeight() - stageCoords.y; return stageCoords; }
public void scene2screen(Viewport viewport, Vector3 out) { project(out, 0, 0, viewport.getScreenWidth(), viewport.getScreenHeight()); }
public void resize(int width, int height) { getViewport().update(width, height, false); cameraUI.viewportWidth = viewport.getScreenWidth(); cameraUI.viewportHeight = viewport.getScreenHeight(); cameraUI.position.set(viewport.getScreenWidth() / 2, viewport.getScreenHeight() / 2, 0); cameraUI.update(); batch.setProjectionMatrix(cameraUI.combined); shapeRenderer.setProjectionMatrix(cameraUI.combined); // Resize the root table that will auto-scale if needed rootTable.setSize(viewport.getScreenWidth(), viewport.getScreenHeight()); }
/** Check if screen coordinates are inside the viewport's screen area. */ protected boolean isInsideViewport (int screenX, int screenY) { int x0 = viewport.getScreenX(); int x1 = x0 + viewport.getScreenWidth(); int y0 = viewport.getScreenY(); int y1 = y0 + viewport.getScreenHeight(); screenY = Gdx.graphics.getHeight() - 1 - screenY; return screenX >= x0 && screenX < x1 && screenY >= y0 && screenY < y1; }
public void resize(Viewport viewport){ post.setViewport(new Rectangle(viewport.getScreenX(), viewport.getScreenY(), viewport.getScreenWidth(), viewport.getScreenHeight())); }
protected void begin(Viewport viewport) { fbo.begin(); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); HdpiUtils.glViewport(viewport.getScreenX(), viewport.getScreenY(), viewport.getScreenWidth(), viewport.getScreenHeight()); }
@Override public void calculateScissors (Rectangle localRect, Rectangle scissorRect) { ScissorStack.calculateScissors(cameraUI, viewport.getScreenX(), viewport.getScreenY(), viewport.getScreenWidth(), viewport.getScreenHeight(), batch.getTransformMatrix(), localRect, scissorRect); Matrix4 transformMatrix; if (shapeRenderer != null && shapeRenderer.isDrawing()) transformMatrix = shapeRenderer.getTransformMatrix(); else transformMatrix = batch.getTransformMatrix(); ScissorStack.calculateScissors(cameraUI, viewport.getScreenX(), viewport.getScreenY(), viewport.getScreenWidth(), viewport.getScreenHeight(), transformMatrix, localRect, scissorRect); }
@Override public Vector2 screenToStageCoordinates(Vector2 screenCoords) { tmp.set(screenCoords.x, screenCoords.y, 1); cameraUI.unproject(tmp, viewport.getScreenX(), viewport.getScreenY(), viewport.getScreenWidth(), viewport.getScreenHeight()); screenCoords.set(tmp.x, tmp.y); return screenCoords; }
public Pixmap getFrameBufferPixmap(Viewport viewport) { int w = viewport.getScreenWidth(); int h = viewport.getScreenHeight(); int x = viewport.getScreenX(); int y = viewport.getScreenY(); final ByteBuffer pixelBuffer = BufferUtils.newByteBuffer(w * h * 4); Gdx.gl.glBindFramebuffer(GL20.GL_FRAMEBUFFER, fbo.getFramebufferHandle()); Gdx.gl.glReadPixels(x, y, w, h, GL30.GL_RGBA, GL30.GL_UNSIGNED_BYTE, pixelBuffer); Gdx.gl.glBindFramebuffer(GL20.GL_FRAMEBUFFER, 0); final int numBytes = w * h * 4; byte[] imgLines = new byte[numBytes]; final int numBytesPerLine = w * 4; for (int i = 0; i < h; i++) { pixelBuffer.position((h - i - 1) * numBytesPerLine); pixelBuffer.get(imgLines, i * numBytesPerLine, numBytesPerLine); } Pixmap pixmap = new Pixmap(w, h, Pixmap.Format.RGBA8888); BufferUtils.copy(imgLines, 0, pixmap.getPixels(), imgLines.length); return pixmap; }
public void getInputUnProject(Viewport viewport, Vector3 out) { out.set(Gdx.input.getX(), Gdx.input.getY(), 0); unproject(out, viewport.getScreenX(), viewport.getScreenY(), viewport.getScreenWidth(), viewport.getScreenHeight()); out.x = MathUtils.clamp(out.x, 0, scrollingWidth - 1); out.y = MathUtils.clamp(out.y, 0, scrollingHeight - 1); }
@Override public void render(float delta) { SpriteBatch batch = ui.getBatch(); Gdx.gl.glClearColor(0, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); batch.setProjectionMatrix(viewport.getCamera().combined); batch.begin(); batch.draw(tex, 0, 0, viewport.getScreenWidth(), viewport.getScreenHeight()); batch.end(); }
@Override public void resize(int width, int height) { final World world = ui.getWorld(); if (!world.isDisposed()) { screenViewport.setWorldSize(world.getWidth(), world.getHeight()); screenViewport.update(width, height, true); worldViewport.setScreenBounds(screenViewport.getScreenX(), screenViewport.getScreenY(), screenViewport.getScreenWidth(), screenViewport.getScreenHeight()); world.resize(screenViewport.getWorldWidth(), screenViewport.getWorldHeight()); } pointer.resize(); verbUI.setSize(screenViewport.getScreenWidth(), screenViewport.getScreenHeight() * UI_SCREEN_PERCENT); float size = DPIUtils.getPrefButtonSize(); float margin = DPIUtils.getMarginSize(); menuButton.setSize(size, size); menuButton.setPosition(stage.getViewport().getScreenWidth() - menuButton.getWidth() - margin, stage.getViewport().getScreenHeight() - menuButton.getHeight() - margin); }
public GameObject pick(EditorScene scene, int screenX, int screenY) { begin(scene.viewport); renderPickableScene(scene.sceneGraph); end(); Pixmap pm = getFrameBufferPixmap(scene.viewport); int x = screenX - scene.viewport.getScreenX(); int y = screenY - (Gdx.graphics.getHeight() - (scene.viewport.getScreenY() + scene.viewport.getScreenHeight())); int id = PickerColorEncoder.decode(pm.getPixel(x, y)); for (GameObject go : scene.sceneGraph.getGameObjects()) { if (id == go.id) return go; for (GameObject child : go) { if (id == child.id) return child; } } return null; }
public ToolHandle pick(ToolHandle[] handles, EditorScene scene, int screenX, int screenY) { begin(scene.viewport); renderPickableScene(handles, scene.sceneGraph.batch, scene.cam); end(); Pixmap pm = getFrameBufferPixmap(scene.viewport); int x = screenX - scene.viewport.getScreenX(); int y = screenY - (Gdx.graphics.getHeight() - (scene.viewport.getScreenY() + scene.viewport.getScreenHeight())); int id = PickerColorEncoder.decode(pm.getPixel(x, y)); Log.trace("ToolHandlePicker", "Picking handle with id {}", id); for (ToolHandle handle : handles) { if (handle.getId() == id) { return handle; } } return null; }