/** 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); } }
/** 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 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; }
@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); }
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); }
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; }
@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); } }
private float getCurrentDst() { ProjectContext projectContext = getProjectManager().current(); final GameObject selection = projectContext.currScene.currentSelection; if (selection != null) { selection.getTransform().getTranslation(temp0); Vector3 pivot = projectContext.currScene.cam.project(temp0, viewport3d.getScreenX(), viewport3d.getScreenY(), viewport3d.getWorldWidth(), viewport3d.getWorldHeight()); Vector3 mouse = temp1.set(Gdx.input.getX(), Gdx.graphics.getHeight() - Gdx.input.getY(), 0); return MathUtils.dst(pivot.x, pivot.y, mouse.x, mouse.y); } return 0; }
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; }
@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); }
worldViewport.setScreenY(screenViewport.getScreenY() + (int) verbUI.getHeight()); worldViewport.setScreenHeight(screenViewport.getScreenHeight() - (int) verbUI.getHeight()); world.resize(world.getWidth(), world.getHeight() * (1 - UI_SCREEN_PERCENT)); } else { worldViewport.setScreenY(screenViewport.getScreenY()); worldViewport.setScreenHeight(screenViewport.getScreenHeight()); world.resize(world.getWidth(), world.getHeight());
viewport3d.getScreenY(), viewport3d.getWorldWidth(), viewport3d.getWorldHeight()); shapeRenderMat.setToOrtho2D(viewport3d.getScreenX(), viewport3d.getScreenY(), viewport3d.getScreenWidth(), viewport3d.getScreenHeight()); switch (state) {
Vector3 pivot = projectContext.currScene.cam.project(temp0); shapeRenderMat.setToOrtho2D(vp.getScreenX(), vp.getScreenY(), vp.getScreenWidth(), vp.getScreenHeight()); switch (state) { case TRANSFORM_X: