runelite-api: Use more general Shape for clickboxes and convex hulls

This commit is contained in:
Max Weber
2019-09-09 08:19:28 -06:00
parent cd1cf905c4
commit a4cfbc3b42
15 changed files with 45 additions and 41 deletions

View File

@@ -26,6 +26,7 @@ package net.runelite.api;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.Shape;
import java.awt.image.BufferedImage;
import javax.annotation.Nullable;
import net.runelite.api.annotations.VisibleForDevtools;
@@ -218,7 +219,7 @@ public interface Actor extends Renderable
* @return the convex hull
* @see net.runelite.api.model.Jarvis
*/
Polygon getConvexHull();
Shape getConvexHull();
/**
* Gets the world area that the actor occupies.

View File

@@ -24,7 +24,7 @@
*/
package net.runelite.api;
import java.awt.Polygon;
import java.awt.Shape;
/**
* Represents a decorative object, such as an object on a wall.
@@ -37,8 +37,8 @@ public interface DecorativeObject extends TileObject
* @return the convex hull
* @see net.runelite.api.model.Jarvis
*/
Polygon getConvexHull();
Polygon getConvexHull2();
Shape getConvexHull();
Shape getConvexHull2();
Renderable getRenderable();
Renderable getRenderable2();

View File

@@ -24,7 +24,7 @@
*/
package net.runelite.api;
import java.awt.Polygon;
import java.awt.Shape;
import net.runelite.api.coords.Angle;
/**
@@ -54,12 +54,12 @@ public interface GameObject extends TileObject
Point getSceneMaxLocation();
/**
* Gets the convex hull of the actors model.
* Gets the convex hull of the object's model.
*
* @return the convex hull
* @see net.runelite.api.model.Jarvis
*/
Polygon getConvexHull();
Shape getConvexHull();
/**
* Gets the orientation of the object.

View File

@@ -26,7 +26,7 @@ package net.runelite.api;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.geom.Area;
import java.awt.Shape;
import javax.annotation.Nullable;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
@@ -132,5 +132,5 @@ public interface TileObject
* @return the clickable area
*/
@Nullable
Area getClickbox();
Shape getClickbox();
}

View File

@@ -24,7 +24,7 @@
*/
package net.runelite.api;
import java.awt.Polygon;
import java.awt.Shape;
/**
* Represents one or two walls on a tile
@@ -63,8 +63,8 @@ public interface WallObject extends TileObject
* @return the convex hull
* @see net.runelite.api.model.Jarvis
*/
Polygon getConvexHull();
Polygon getConvexHull2();
Shape getConvexHull();
Shape getConvexHull2();
Renderable getRenderable1();
Renderable getRenderable2();

View File

@@ -29,7 +29,7 @@ import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.geom.Area;
import java.awt.Shape;
import java.util.List;
import javax.inject.Inject;
import net.runelite.api.Client;
@@ -90,7 +90,7 @@ class AgilityOverlay extends Overlay
}
return;
}
Area objectClickbox = object.getClickbox();
Shape objectClickbox = object.getClickbox();
if (objectClickbox != null)
{
AgilityShortcut agilityShortcut = obstacle.getShortcut();

View File

@@ -27,7 +27,7 @@ package net.runelite.client.plugins.blastfurnace;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Area;
import java.awt.Shape;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.EquipmentInventorySlot;
@@ -110,7 +110,7 @@ class BlastFurnaceClickBoxOverlay extends Overlay
if (localLocation.distanceTo(location) <= MAX_DISTANCE)
{
Area objectClickbox = object.getClickbox();
Shape objectClickbox = object.getClickbox();
if (objectClickbox != null)
{
if (objectClickbox.contains(mousePosition.getX(), mousePosition.getY()))

View File

@@ -32,6 +32,7 @@ import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.Rectangle;
import java.awt.Shape;
import java.awt.geom.Rectangle2D;
import java.util.List;
import javax.inject.Inject;
@@ -286,10 +287,10 @@ class DevToolsOverlay extends Overlay
// Draw a polygon around the convex hull
// of the model vertices
Polygon p = gameObject.getConvexHull();
Shape p = gameObject.getConvexHull();
if (p != null)
{
graphics.drawPolygon(p);
graphics.draw(p);
}
}
}
@@ -330,16 +331,16 @@ class DevToolsOverlay extends Overlay
OverlayUtil.renderTileOverlay(graphics, decorObject, "ID: " + decorObject.getId(), DEEP_PURPLE);
}
Polygon p = decorObject.getConvexHull();
Shape p = decorObject.getConvexHull();
if (p != null)
{
graphics.drawPolygon(p);
graphics.draw(p);
}
p = decorObject.getConvexHull2();
if (p != null)
{
graphics.drawPolygon(p);
graphics.draw(p);
}
}
}

View File

@@ -28,7 +28,7 @@ import com.google.inject.Inject;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Area;
import java.awt.Shape;
import java.util.Set;
import net.runelite.api.TileObject;
import net.runelite.api.coords.WorldPoint;
@@ -103,7 +103,7 @@ class HerbiboarOverlay extends Overlay
{
if (config.showClickBoxes())
{
Area clickbox = object.getClickbox();
Shape clickbox = object.getClickbox();
if (clickbox != null)
{
graphics.setColor(config.getObjectColor());
@@ -129,7 +129,7 @@ class HerbiboarOverlay extends Overlay
{
if (config.showClickBoxes())
{
Area clickbox = object.getClickbox();
Shape clickbox = object.getClickbox();
if (clickbox != null)
{
Color col = config.getObjectColor();

View File

@@ -30,6 +30,7 @@ import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.Shape;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.time.Instant;
@@ -167,7 +168,7 @@ public class NpcSceneOverlay extends Overlay
break;
case HULL:
Polygon objectClickbox = actor.getConvexHull();
Shape objectClickbox = actor.getConvexHull();
renderPoly(graphics, color, objectClickbox);
break;
@@ -185,7 +186,7 @@ public class NpcSceneOverlay extends Overlay
}
}
private void renderPoly(Graphics2D graphics, Color color, Polygon polygon)
private void renderPoly(Graphics2D graphics, Color color, Shape polygon)
{
if (polygon != null)
{

View File

@@ -26,7 +26,7 @@ package net.runelite.client.plugins.objectindicators;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.Shape;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.DecorativeObject;
@@ -66,8 +66,8 @@ class ObjectIndicatorsOverlay extends Overlay
continue;
}
final Polygon polygon;
Polygon polygon2 = null;
final Shape polygon;
Shape polygon2 = null;
if (object instanceof GameObject)
{

View File

@@ -28,6 +28,7 @@ import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.Shape;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.coords.LocalPoint;
@@ -65,11 +66,11 @@ public class RoguesDenOverlay extends Overlay
{
if (tile.getPlane() == client.getPlane() && obstacle.getLocalLocation().distanceTo(playerLocation) < MAX_DISTANCE)
{
Polygon p = tile.getGameObjects()[0].getConvexHull();
Shape p = tile.getGameObjects()[0].getConvexHull();
if (p != null)
{
graphics.setColor(Color.CYAN);
graphics.drawPolygon(p);
graphics.draw(p);
}
}
});
@@ -82,7 +83,7 @@ public class RoguesDenOverlay extends Overlay
if (p != null)
{
graphics.setColor(Color.CYAN);
graphics.drawPolygon(p);
graphics.draw(p);
}
}
});

View File

@@ -26,7 +26,7 @@ package net.runelite.client.plugins.runecraft;
import java.awt.Color;
import java.awt.Polygon;
import java.awt.geom.Area;
import java.awt.Shape;
import com.google.inject.Inject;
import java.awt.Dimension;
import java.awt.Graphics2D;
@@ -105,7 +105,7 @@ class AbyssOverlay extends Overlay
}
Point mousePosition = client.getMouseCanvasPosition();
Area objectClickbox = object.getClickbox();
Shape objectClickbox = object.getClickbox();
if (objectClickbox != null)
{
if (objectClickbox.contains(mousePosition.getX(), mousePosition.getY()))

View File

@@ -30,7 +30,7 @@ import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.Shape;
import java.util.List;
import javax.inject.Inject;
import net.runelite.api.NPC;
@@ -71,7 +71,7 @@ public class TargetClickboxOverlay extends Overlay
private void renderTargetOverlay(Graphics2D graphics, NPC actor, Color color)
{
Polygon objectClickbox = actor.getConvexHull();
Shape objectClickbox = actor.getConvexHull();
if (objectClickbox != null)
{
graphics.setColor(color);

View File

@@ -31,8 +31,8 @@ import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.geom.Area;
import java.awt.image.BufferedImage;
import net.runelite.api.Actor;
import net.runelite.api.Client;
@@ -50,14 +50,14 @@ public class OverlayUtil
private static final int MINIMAP_DOT_RADIUS = 4;
private static final double UNIT = Math.PI / 1024.0d;
public static void renderPolygon(Graphics2D graphics, Polygon poly, Color color)
public static void renderPolygon(Graphics2D graphics, Shape poly, Color color)
{
graphics.setColor(color);
final Stroke originalStroke = graphics.getStroke();
graphics.setStroke(new BasicStroke(2));
graphics.drawPolygon(poly);
graphics.draw(poly);
graphics.setColor(new Color(0, 0, 0, 50));
graphics.fillPolygon(poly);
graphics.fill(poly);
graphics.setStroke(originalStroke);
}
@@ -175,7 +175,7 @@ public class OverlayUtil
renderImageLocation(client, graphics, localLocation, image, 0);
}
public static void renderHoverableArea(Graphics2D graphics, Area area, net.runelite.api.Point mousePosition, Color fillColor, Color borderColor, Color borderHoverColor)
public static void renderHoverableArea(Graphics2D graphics, Shape area, net.runelite.api.Point mousePosition, Color fillColor, Color borderColor, Color borderHoverColor)
{
if (area != null)
{