Merge pull request #1197 from DevDennis/clip-ground-items-overlay

Clip overlays on the above scene layer to the viewport
This commit is contained in:
Adam
2018-04-01 20:53:14 -04:00
committed by GitHub
4 changed files with 25 additions and 7 deletions

View File

@@ -34,7 +34,6 @@ import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -225,7 +224,7 @@ public class OverlayRenderer extends MouseListener implements KeyListener
{
if (value == null)
{
value = new ArrayList<>();
value = new CopyOnWriteArrayList<>();
}
value.add(overlay);
@@ -318,7 +317,7 @@ public class OverlayRenderer extends MouseListener implements KeyListener
if (overlayPosition == OverlayPosition.DYNAMIC || overlayPosition == OverlayPosition.TOOLTIP)
{
safeRender(overlay, graphics, new Point());
safeRender(client, overlay, layer, graphics, new Point());
}
else
{
@@ -339,7 +338,7 @@ public class OverlayRenderer extends MouseListener implements KeyListener
location.setLocation(overlay.getPreferredLocation());
}
safeRender(overlay, graphics, location);
safeRender(client, overlay, layer, graphics, location);
dimension.setSize(overlay.getBounds().getSize());
if (dimension.width == 0 && dimension.height == 0)
@@ -489,9 +488,16 @@ public class OverlayRenderer extends MouseListener implements KeyListener
}
}
private void safeRender(Overlay overlay, Graphics2D graphics, Point point)
private void safeRender(Client client, Overlay overlay, OverlayLayer layer, Graphics2D graphics, Point point)
{
final Graphics2D subGraphics = (Graphics2D) graphics.create();
if (!isResizeable && (layer == OverlayLayer.ABOVE_SCENE || layer == OverlayLayer.UNDER_WIDGETS))
{
subGraphics.setClip(client.getViewportXOffset(),
client.getViewportYOffset(),
client.getViewportWidth(),
client.getViewportHeight());
}
subGraphics.translate(point.x, point.y);
final Dimension dimension = MoreObjects.firstNonNull(overlay.render(subGraphics), new Dimension());
subGraphics.dispose();