/** * @param argScreen * @param argWorld */ public void getScreenToWorldToOut(Vec2 argScreen, Vec2 argWorld) { viewportTransform.getScreenToWorld(argScreen, argWorld); }
/** * @param x * @param y * @param scale * @deprecated use the viewport transform in {@link #getViewportTranform()} */ public void setCamera(float x, float y, float scale) { viewportTransform.setCamera(x, y, scale); }
/** * @param argWorld * @param argScreen */ public void getWorldToScreenToOut(Vec2 argWorld, Vec2 argScreen) { viewportTransform.getWorldToScreen(argWorld, argScreen); }
/** * Zooms the camera to a point on the screen. The zoom amount is given on camera initialization. */ public void zoomToPoint(Vec2 screenPosition, ZoomType zoomType) { Mat22 zoom; switch (zoomType) { case ZOOM_IN: zoom = upScale; break; case ZOOM_OUT: zoom = downScale; break; default: Preconditions.checkArgument(false, "Zoom type invalid"); return; } transform.getScreenToWorld(screenPosition, oldCenter); transform.mulByTransform(zoom); transform.getScreenToWorld(screenPosition, newCenter); Vec2 transformedMove = oldCenter.subLocal(newCenter); // set, just in case bad impl by someone if (!transform.isYFlip()) { transformedMove.y = -transformedMove.y; } transform.setCenter(transform.getCenter().addLocal(transformedMove)); }
continue; boolean oldFlip = transform.isYFlip(); if (mouseBehavior == MouseBehavior.FORCE_Y_FLIP) { transform.setYFlip(true); currTest.getCamera().getTransform().getScreenToWorld(i.p, i.p); if (mouseBehavior == MouseBehavior.FORCE_Y_FLIP) { transform.setYFlip(oldFlip);
@Override public void setViewportTransform(IViewportTransform viewportTransform) { super.setViewportTransform(viewportTransform); viewportTransform.setYFlip(yFlip); }
public void transformViewport(GL2 gl, Vec2 center) { Vec2 e = viewportTransform.getExtents(); Vec2 vc = viewportTransform.getCenter(); Mat22 vt = viewportTransform.getMat22Representation(); int f = viewportTransform.isYFlip() ? -1 : 1; mat[0] = vt.ex.x; mat[4] = vt.ey.x; // mat[8] = 0; mat[12] = e.x; mat[1] = f * vt.ex.y; mat[5] = f * vt.ey.y; // mat[9] = 0; mat[13] = e.y; // mat[2] = 0; // mat[6] = 0; // mat[10] = 1; // mat[14] = 0; // mat[3] = 0; // mat[7] = 0; // mat[11] = 0; // mat[15] = 1; gl.glMultMatrixf(mat, 0); gl.glTranslatef(center.x - vc.x, center.y - vc.y, 0); }
/** * Moves the camera by the given distance in screen coordinates. */ public void moveWorld(Vec2 screenDiff) { transform.getScreenVectorToWorld(screenDiff, worldDiff); if (!transform.isYFlip()) { worldDiff.y = -worldDiff.y; } transform.setCenter(transform.getCenter().addLocal(worldDiff)); }
private void transformGraphics(Graphics2D g, Vec2 center) { Vec2 e = viewportTransform.getExtents(); Vec2 vc = viewportTransform.getCenter(); Mat22 vt = viewportTransform.getMat22Representation(); int flip = yFlip ? -1 : 1; tr.setTransform(vt.ex.x, flip * vt.ex.y, vt.ey.x, flip * vt.ey.y, e.x, e.y); tr.translate(-vc.x, -vc.y); tr.translate(center.x, center.y); g.transform(tr); }
public void mouseDragged(MouseEvent e) { pos.set(e.getX(), e.getY()); if (e.getButton() == MouseEvent.BUTTON3) { posDif.set(model.getMouse()); model.setMouse(pos); posDif.subLocal(pos); if(!model.getDebugDraw().getViewportTranform().isYFlip()){ posDif.y *= -1; } model.getDebugDraw().getViewportTranform().getScreenVectorToWorld(posDif, posDif); model.getDebugDraw().getViewportTranform().getCenter().addLocal(posDif); if (model.getCurrTest() != null) { model.getCurrTest().setCachedCameraPos( model.getDebugDraw().getViewportTranform().getCenter()); } } if (model.getCurrTest() != null) { model.setMouse(pos); model.getDebugDraw().getScreenToWorldToOut(pos, pos); model.getCurrTest().queueMouseMove(pos); } }
@Override public void mouseDragged(MouseEvent e) { if (!drag) { return; } TestbedTest currTest = model.getCurrTest(); if (currTest == null) { return; } Vec2 diff = new Vec2(e.getX(), e.getY()); diff.subLocal(dragginMouse); currTest.getDebugDraw().getViewportTranform().getScreenVectorToWorld(diff, diff); currTest.getDebugDraw().getViewportTranform().getCenter().subLocal(diff); dragginMouse.set(e.getX(), e.getY()); } });
public void mouseWheelMoved(MouseWheelEvent e) { DebugDraw d = draw; int notches = e.getWheelRotation(); TestbedTest currTest = model.getCurrTest(); if (currTest == null) { return; } OBBViewportTransform trans = (OBBViewportTransform) d.getViewportTranform(); oldCenter.set(model.getCurrTest().getWorldMouse()); // Change the zoom and clamp it to reasonable values - can't clamp now. if (notches < 0) { trans.mulByTransform(upScale); currTest.setCachedCameraScale(currTest.getCachedCameraScale() * ZOOM_IN_SCALE); } else if (notches > 0) { trans.mulByTransform(downScale); currTest.setCachedCameraScale(currTest.getCachedCameraScale() * ZOOM_OUT_SCALE); } d.getScreenToWorldToOut(model.getMouse(), newCenter); Vec2 transformedMove = oldCenter.subLocal(newCenter); d.getViewportTranform().setCenter( d.getViewportTranform().getCenter().addLocal(transformedMove)); currTest.setCachedCameraPos(d.getViewportTranform().getCenter()); } });
debugDraw.drawString(camera.getTransform().getExtents().x, 15, title, Color3f.WHITE); m_textLine += TEXT_LINE_SPACE;
@Override public void setViewportTransform(IViewportTransform viewportTransform) { viewportTransform.setYFlip(false); super.setViewportTransform(viewportTransform); }
/** * takes the screen coordinates and returns the world coordinates. * * @param screenX * @param screenY */ public Vec2 getScreenToWorld(float screenX, float screenY) { Vec2 screen = new Vec2(screenX, screenY); viewportTransform.getScreenToWorld(screen, screen); return screen; } }
/** * Takes the world coordinates and puts the corresponding screen coordinates in argScreen. * * @param worldX * @param worldY * @param argScreen */ public void getWorldToScreenToOut(float worldX, float worldY, Vec2 argScreen) { argScreen.set(worldX, worldY); viewportTransform.getWorldToScreen(argScreen, argScreen); }
/** * @param x * @param y * @param scale * @deprecated use the viewport transform in {@link #getViewportTranform()} */ public void setCamera(float x, float y, float scale) { viewportTransform.setCamera(x, y, scale); }
public void setFlipY(boolean flip) { viewportTransform.setYFlip(flip); }
/** * takes the screen coordinates (argScreen) and returns the world coordinates * * @param argScreen */ public Vec2 getScreenToWorld(Vec2 argScreen) { Vec2 world = new Vec2(); viewportTransform.getScreenToWorld(argScreen, world); return world; }
/** * takes the world coordinate (argWorld) and returns the screen coordinates. * * @param argWorld */ public Vec2 getWorldToScreen(Vec2 argWorld) { Vec2 screen = new Vec2(); viewportTransform.getWorldToScreen(argWorld, screen); return screen; }