@Override public void update(float delta) { elapsed += delta / 1000; i1.setRotation(elapsed * FloatMath.PI / 2); s1.setRotation(elapsed * FloatMath.PI / 2); g2.setWidth(Math.max(1f, Math.abs(100 * FloatMath.sin(elapsed)))); inner.setOrigin(FloatMath.sin(elapsed * 2f) * 50, FloatMath.cos(elapsed * 2f) * 50); }
@Override public Surface drawLine(float x0, float y0, float x1, float y1, float width) { bindFramebuffer(); // swap the line end points if x1 is less than x0 if (x1 < x0) { float temp = x0; x0 = x1; x1 = temp; temp = y0; y0 = y1; y1 = temp; } float dx = x1 - x0, dy = y1 - y0; float length = FloatMath.sqrt(dx * dx + dy * dy); float wx = dx * (width / 2) / length; float wy = dy * (width / 2) / length; InternalTransform l = ctx.createTransform(); l.setRotation(FloatMath.atan2(dy, dx)); l.setTranslation(x0 + wy, y0 - wx); l.preConcatenate(topTransform()); GLShader shader = ctx.quadShader(this.shader); if (fillPattern != null) { int tex = fillPattern.ensureTexture(); if (tex > 0) { shader.prepareTexture(tex, tint); shader.addQuad( l, 0, 0, length, width, 0, 0, length / fillPattern.width(), width / fillPattern.height()); } } else { int tex = ctx.fillImage().ensureTexture(); shader.prepareTexture(tex, Tint.combine(fillColor, tint)); shader.addQuad(l, 0, 0, length, width, 0, 0, 1, 1); } return this; }