Add gameobject id's to dev tools via dynamicobjects

This commit is contained in:
Lucas
2019-06-21 02:03:34 +02:00
parent 33653966a0
commit 2a4fbef7ee
6 changed files with 44 additions and 12 deletions

View File

@@ -20,10 +20,10 @@
"size": "3168921"
},
{
"hash": "7d64dafaf007613fef59f47884ce62db5fdc21e148b351e52a3f6ce7cc28928e",
"hash": "877106b9b525477f8e9662704b00894d445dd7d476c51dad7a674f6a313e3f88",
"name": "client-1.5.28-SNAPSHOT.jar",
"path": "https://raw.githubusercontent.com/runelite-extended/maven-repo/master/live/client-1.5.28-SNAPSHOT.jar",
"size": "5845716"
"size": "5845767"
},
{
"hash": "18c4a0095d5c1da6b817592e767bb23d29dd2f560ad74df75ff3961dbde25b79",
@@ -218,16 +218,16 @@
"size": "1019717"
},
{
"hash": "69eddc4155a66e07761c433dc83c0703afe7b1206063fc5e1ef77c787ce777ee",
"hash": "303ac8f202bc169f30f16f3c5a3810aaae773515af4d6a7562bc996ed0f32054",
"name": "runescape-api-1.5.28-SNAPSHOT.jar",
"path": "https://raw.githubusercontent.com/runelite-extended/maven-repo/master/live/runescape-api-1.5.28-SNAPSHOT.jar",
"size": "56056"
"size": "56043"
},
{
"hash": "55426093ae731f5c25fe6d5eb28bfb8f645ea7e41faad9e12f53d40f683101be",
"hash": "830499b8b8d65403536d20206d210f12e7524777dde9a6948d4681333c9b962a",
"name": "http-api-1.5.28-SNAPSHOT.jar",
"path": "https://raw.githubusercontent.com/runelite-extended/maven-repo/master/live/http-api-1.5.28-SNAPSHOT.jar",
"size": "101785"
"size": "101786"
},
{
"hash": "f55abda036da75e1af45bd43b9dfa79b2a3d90905be9cb38687c6621597a8165",

View File

@@ -0,0 +1,6 @@
package net.runelite.api;
public interface DynamicObject extends Renderable
{
int getAnimationID();
}

View File

@@ -42,6 +42,7 @@ import net.runelite.api.Actor;
import net.runelite.api.Client;
import net.runelite.api.Constants;
import net.runelite.api.DecorativeObject;
import net.runelite.api.DynamicObject;
import net.runelite.api.GameObject;
import net.runelite.api.GraphicsObject;
import net.runelite.api.GroundObject;
@@ -54,6 +55,7 @@ import net.runelite.api.Perspective;
import net.runelite.api.Player;
import net.runelite.api.Point;
import net.runelite.api.Projectile;
import net.runelite.api.Renderable;
import net.runelite.api.Scene;
import net.runelite.api.Tile;
import net.runelite.api.WallObject;
@@ -307,7 +309,11 @@ class DevToolsOverlay extends Overlay
{
if (player.getLocalLocation().distanceTo(gameObject.getLocalLocation()) <= MAX_DISTANCE)
{
OverlayUtil.renderTileOverlay(graphics, gameObject, "ID: " + gameObject.getId(), GREEN);
Renderable renderable = gameObject.getRenderable();
if (renderable instanceof DynamicObject)
{
OverlayUtil.renderTileOverlay(graphics, gameObject, "ID: " + gameObject.getId() + " Anim: " + ((DynamicObject) renderable).getAnimationID(), GREEN);
}
}
// Draw a polygon around the convex hull
@@ -417,7 +423,7 @@ class DevToolsOverlay extends Overlay
}
int projectileId = projectile.getId();
Actor projectileInteracting = null;
Actor projectileInteracting = projectile.getInteracting();
String infoString = "";

View File

@@ -27,11 +27,13 @@ package net.runelite.mixins;
import net.runelite.api.mixins.Copy;
import net.runelite.api.mixins.FieldHook;
import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.MethodHook;
import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Replace;
import net.runelite.api.mixins.Shadow;
import net.runelite.rs.api.RSClient;
import net.runelite.rs.api.RSDynamicObject;
import net.runelite.rs.api.RSEntity;
import net.runelite.rs.api.RSModel;
@Mixin(RSDynamicObject.class)
@@ -40,6 +42,9 @@ public abstract class RSDynamicObjectMixin implements RSDynamicObject
@Shadow("client")
private static RSClient client;
@Inject
public int animationID;
@Copy("getModel")
public abstract RSModel rs$getModel();
@@ -78,4 +83,18 @@ public abstract class RSDynamicObjectMixin implements RSDynamicObject
setAnimFrame(Integer.MIN_VALUE | objectFrameCycle << 16 | getAnimFrame());
}
}
@MethodHook(value = "<init>", end = true)
@Inject
public void rl$init(int id, int type, int orientation, int plane, int x, int y, int animationID, boolean var8, RSEntity var9)
{
this.animationID = animationID;
}
@Inject
@Override
public int getAnimationID()
{
return animationID;
}
}

View File

@@ -1,9 +1,10 @@
package net.runelite.rs.api;
import net.runelite.api.DynamicObject;
import net.runelite.api.Renderable;
import net.runelite.mapping.Import;
public interface RSDynamicObject extends RSEntity, Renderable
public interface RSDynamicObject extends RSEntity, DynamicObject, Renderable
{
@Import("id")
int getId();

View File

@@ -74,15 +74,15 @@ public class DynamicObject extends Entity {
@ObfuscatedSignature(
signature = "(IIIIIIIZLex;)V"
)
DynamicObject(int var1, int var2, int var3, int var4, int var5, int var6, int var7, boolean var8, Entity var9) {
DynamicObject(int var1, int var2, int var3, int var4, int var5, int var6, int animationID, boolean var8, Entity var9) {
this.id = var1;
this.type = var2;
this.orientation = var3;
this.plane = var4;
this.x = var5;
this.y = var6;
if(var7 != -1) {
this.sequenceDefinition = WorldMapAreaData.getSequenceDefinition(var7);
if(animationID != -1) {
this.sequenceDefinition = WorldMapAreaData.getSequenceDefinition(animationID);
this.frame = 0;
this.cycleStart = Client.cycle - 1;
if(this.sequenceDefinition.__t == 0 && var9 != null && var9 instanceof DynamicObject) {