diff --git a/cache/src/main/java/net/runelite/cache/definitions/loaders/ModelLoader.java b/cache/src/main/java/net/runelite/cache/definitions/loaders/ModelLoader.java index b613a8837b..16e1676d74 100644 --- a/cache/src/main/java/net/runelite/cache/definitions/loaders/ModelLoader.java +++ b/cache/src/main/java/net/runelite/cache/definitions/loaders/ModelLoader.java @@ -3,21 +3,25 @@ package net.runelite.cache.definitions.loaders; import net.runelite.cache.definitions.ModelDefinition; import net.runelite.cache.io.InputStream; -public class ModelLoader extends ModelDefinition +public class ModelLoader { - public void load(byte[] var1) + public ModelDefinition load(byte[] var1) { + ModelDefinition def = new ModelDefinition(); + if (var1[var1.length - 1] == -1 && var1[var1.length - 2] == -1) { - this.load1(var1); + this.load1(def, var1); } else { - this.load2(var1); + this.load2(def, var1); } + + return def; } - private void load1(byte[] var1) + private void load1(ModelDefinition model, byte[] var1) { InputStream var2 = new InputStream(var1); InputStream var24 = new InputStream(var1); @@ -47,12 +51,12 @@ public class ModelLoader extends ModelDefinition int position; if (textureTriangleCount > 0) { - this.textureRenderTypes = new byte[textureTriangleCount]; + model.textureRenderTypes = new byte[textureTriangleCount]; var2.setOffset(0); for (position = 0; position < textureTriangleCount; ++position) { - byte renderType = this.textureRenderTypes[position] = var2.readByte(); + byte renderType = model.textureRenderTypes[position] = var2.readByte(); if (renderType == 0) { ++textureAmount; @@ -133,73 +137,73 @@ public class ModelLoader extends ModelDefinition position += var7; int var46 = position; position += var7 * 2 + var29 * 2; - this.vertexCount = verticeCount; - this.triangleFaceCount = triangleCount; - this.anInt2569 = textureTriangleCount; - this.vertexX = new int[verticeCount]; - this.vertexY = new int[verticeCount]; - this.vertexZ = new int[verticeCount]; - this.trianglePointsX = new int[triangleCount]; - this.trianglePointsY = new int[triangleCount]; - this.trianglePointsZ = new int[triangleCount]; + model.vertexCount = verticeCount; + model.triangleFaceCount = triangleCount; + model.anInt2569 = textureTriangleCount; + model.vertexX = new int[verticeCount]; + model.vertexY = new int[verticeCount]; + model.vertexZ = new int[verticeCount]; + model.trianglePointsX = new int[triangleCount]; + model.trianglePointsY = new int[triangleCount]; + model.trianglePointsZ = new int[triangleCount]; if (modelVertexSkins == 1) { - this.vertexSkins = new int[verticeCount]; + model.vertexSkins = new int[verticeCount]; } if (var13 == 1) { - this.faceRenderType = new byte[triangleCount]; + model.faceRenderType = new byte[triangleCount]; } if (modelPriority == 255) { - this.faceRenderPriorities = new byte[triangleCount]; + model.faceRenderPriorities = new byte[triangleCount]; } else { - this.priority = (byte) modelPriority; + model.priority = (byte) modelPriority; } if (var50 == 1) { - this.faceAlphas = new byte[triangleCount]; + model.faceAlphas = new byte[triangleCount]; } if (var17 == 1) { - this.triangleSkinValues = new int[triangleCount]; + model.triangleSkinValues = new int[triangleCount]; } if (modelTexture == 1) { - this.faceTextures = new short[triangleCount]; + model.faceTextures = new short[triangleCount]; } if (modelTexture == 1 && textureTriangleCount > 0) { - this.textureCoords = new byte[triangleCount]; + model.textureCoords = new byte[triangleCount]; } - this.faceColor = new short[triangleCount]; + model.faceColor = new short[triangleCount]; if (textureTriangleCount > 0) { - this.texTriangleX = new short[textureTriangleCount]; - this.texTriangleY = new short[textureTriangleCount]; - this.texTriangleZ = new short[textureTriangleCount]; + model.texTriangleX = new short[textureTriangleCount]; + model.texTriangleY = new short[textureTriangleCount]; + model.texTriangleZ = new short[textureTriangleCount]; if (var7 > 0) { - this.aShortArray2574 = new short[var7]; - this.aShortArray2575 = new short[var7]; - this.aShortArray2586 = new short[var7]; - this.aShortArray2577 = new short[var7]; - this.aByteArray2580 = new byte[var7]; - this.aShortArray2578 = new short[var7]; + model.aShortArray2574 = new short[var7]; + model.aShortArray2575 = new short[var7]; + model.aShortArray2586 = new short[var7]; + model.aShortArray2577 = new short[var7]; + model.aByteArray2580 = new byte[var7]; + model.aShortArray2578 = new short[var7]; } if (var29 > 0) { - this.texturePrimaryColor = new short[var29]; + model.texturePrimaryColor = new short[var29]; } } @@ -238,15 +242,15 @@ public class ModelLoader extends ModelDefinition vertexZOffset = var28.readShortSmart(); } - this.vertexX[point] = vX + vertexXOffset; - this.vertexY[point] = vY + vertexYOffset; - this.vertexZ[point] = vZ + vertexZOffset; - vX = this.vertexX[point]; - vY = this.vertexY[point]; - vZ = this.vertexZ[point]; + model.vertexX[point] = vX + vertexXOffset; + model.vertexY[point] = vY + vertexYOffset; + model.vertexZ[point] = vZ + vertexZOffset; + vX = model.vertexX[point]; + vY = model.vertexY[point]; + vZ = model.vertexZ[point]; if (modelVertexSkins == 1) { - this.vertexSkins[point] = var6.readUnsignedByte(); + model.vertexSkins[point] = var6.readUnsignedByte(); } } @@ -260,35 +264,35 @@ public class ModelLoader extends ModelDefinition for (point = 0; point < triangleCount; ++point) { - this.faceColor[point] = (short) var2.readUnsignedShort(); + model.faceColor[point] = (short) var2.readUnsignedShort(); if (var13 == 1) { - this.faceRenderType[point] = var24.readByte(); + model.faceRenderType[point] = var24.readByte(); } if (modelPriority == 255) { - this.faceRenderPriorities[point] = var3.readByte(); + model.faceRenderPriorities[point] = var3.readByte(); } if (var50 == 1) { - this.faceAlphas[point] = var28.readByte(); + model.faceAlphas[point] = var28.readByte(); } if (var17 == 1) { - this.triangleSkinValues[point] = var6.readUnsignedByte(); + model.triangleSkinValues[point] = var6.readUnsignedByte(); } if (modelTexture == 1) { - this.faceTextures[point] = (short) (var55.readUnsignedShort() - 1); + model.faceTextures[point] = (short) (var55.readUnsignedShort() - 1); } - if (this.textureCoords != null && this.faceTextures[point] != -1) + if (model.textureCoords != null && model.faceTextures[point] != -1) { - this.textureCoords[point] = (byte) (var51.readUnsignedByte() - 1); + model.textureCoords[point] = (byte) (var51.readUnsignedByte() - 1); } } @@ -309,9 +313,9 @@ public class ModelLoader extends ModelDefinition trianglePointY = var2.readShortSmart() + trianglePointX; trianglePointZ = var2.readShortSmart() + trianglePointY; vertexYOffset = trianglePointZ; - this.trianglePointsX[vertexZOffset] = trianglePointX; - this.trianglePointsY[vertexZOffset] = trianglePointY; - this.trianglePointsZ[vertexZOffset] = trianglePointZ; + model.trianglePointsX[vertexZOffset] = trianglePointX; + model.trianglePointsY[vertexZOffset] = trianglePointY; + model.trianglePointsZ[vertexZOffset] = trianglePointZ; } if (numFaces == 2) @@ -319,9 +323,9 @@ public class ModelLoader extends ModelDefinition trianglePointY = trianglePointZ; trianglePointZ = var2.readShortSmart() + vertexYOffset; vertexYOffset = trianglePointZ; - this.trianglePointsX[vertexZOffset] = trianglePointX; - this.trianglePointsY[vertexZOffset] = trianglePointY; - this.trianglePointsZ[vertexZOffset] = trianglePointZ; + model.trianglePointsX[vertexZOffset] = trianglePointX; + model.trianglePointsY[vertexZOffset] = trianglePointY; + model.trianglePointsZ[vertexZOffset] = trianglePointZ; } if (numFaces == 3) @@ -329,9 +333,9 @@ public class ModelLoader extends ModelDefinition trianglePointX = trianglePointZ; trianglePointZ = var2.readShortSmart() + vertexYOffset; vertexYOffset = trianglePointZ; - this.trianglePointsX[vertexZOffset] = trianglePointX; - this.trianglePointsY[vertexZOffset] = trianglePointY; - this.trianglePointsZ[vertexZOffset] = trianglePointZ; + model.trianglePointsX[vertexZOffset] = trianglePointX; + model.trianglePointsY[vertexZOffset] = trianglePointY; + model.trianglePointsZ[vertexZOffset] = trianglePointZ; } if (numFaces == 4) @@ -341,9 +345,9 @@ public class ModelLoader extends ModelDefinition trianglePointY = var57; trianglePointZ = var2.readShortSmart() + vertexYOffset; vertexYOffset = trianglePointZ; - this.trianglePointsX[vertexZOffset] = trianglePointX; - this.trianglePointsY[vertexZOffset] = var57; - this.trianglePointsZ[vertexZOffset] = trianglePointZ; + model.trianglePointsX[vertexZOffset] = trianglePointX; + model.trianglePointsY[vertexZOffset] = var57; + model.trianglePointsZ[vertexZOffset] = trianglePointZ; } } @@ -356,52 +360,52 @@ public class ModelLoader extends ModelDefinition for (int texIndex = 0; texIndex < textureTriangleCount; ++texIndex) { - int type = this.textureRenderTypes[texIndex] & 255; + int type = model.textureRenderTypes[texIndex] & 255; if (type == 0) { - this.texTriangleX[texIndex] = (short) var2.readUnsignedShort(); - this.texTriangleY[texIndex] = (short) var2.readUnsignedShort(); - this.texTriangleZ[texIndex] = (short) var2.readUnsignedShort(); + model.texTriangleX[texIndex] = (short) var2.readUnsignedShort(); + model.texTriangleY[texIndex] = (short) var2.readUnsignedShort(); + model.texTriangleZ[texIndex] = (short) var2.readUnsignedShort(); } if (type == 1) { - this.texTriangleX[texIndex] = (short) var24.readUnsignedShort(); - this.texTriangleY[texIndex] = (short) var24.readUnsignedShort(); - this.texTriangleZ[texIndex] = (short) var24.readUnsignedShort(); - this.aShortArray2574[texIndex] = (short) var3.readUnsignedShort(); - this.aShortArray2575[texIndex] = (short) var3.readUnsignedShort(); - this.aShortArray2586[texIndex] = (short) var3.readUnsignedShort(); - this.aShortArray2577[texIndex] = (short) var28.readUnsignedShort(); - this.aByteArray2580[texIndex] = var6.readByte(); - this.aShortArray2578[texIndex] = (short) var55.readUnsignedShort(); + model.texTriangleX[texIndex] = (short) var24.readUnsignedShort(); + model.texTriangleY[texIndex] = (short) var24.readUnsignedShort(); + model.texTriangleZ[texIndex] = (short) var24.readUnsignedShort(); + model.aShortArray2574[texIndex] = (short) var3.readUnsignedShort(); + model.aShortArray2575[texIndex] = (short) var3.readUnsignedShort(); + model.aShortArray2586[texIndex] = (short) var3.readUnsignedShort(); + model.aShortArray2577[texIndex] = (short) var28.readUnsignedShort(); + model.aByteArray2580[texIndex] = var6.readByte(); + model.aShortArray2578[texIndex] = (short) var55.readUnsignedShort(); } if (type == 2) { - this.texTriangleX[texIndex] = (short) var24.readUnsignedShort(); - this.texTriangleY[texIndex] = (short) var24.readUnsignedShort(); - this.texTriangleZ[texIndex] = (short) var24.readUnsignedShort(); - this.aShortArray2574[texIndex] = (short) var3.readUnsignedShort(); - this.aShortArray2575[texIndex] = (short) var3.readUnsignedShort(); - this.aShortArray2586[texIndex] = (short) var3.readUnsignedShort(); - this.aShortArray2577[texIndex] = (short) var28.readUnsignedShort(); - this.aByteArray2580[texIndex] = var6.readByte(); - this.aShortArray2578[texIndex] = (short) var55.readUnsignedShort(); - this.texturePrimaryColor[texIndex] = (short) var55.readUnsignedShort(); + model.texTriangleX[texIndex] = (short) var24.readUnsignedShort(); + model.texTriangleY[texIndex] = (short) var24.readUnsignedShort(); + model.texTriangleZ[texIndex] = (short) var24.readUnsignedShort(); + model.aShortArray2574[texIndex] = (short) var3.readUnsignedShort(); + model.aShortArray2575[texIndex] = (short) var3.readUnsignedShort(); + model.aShortArray2586[texIndex] = (short) var3.readUnsignedShort(); + model.aShortArray2577[texIndex] = (short) var28.readUnsignedShort(); + model.aByteArray2580[texIndex] = var6.readByte(); + model.aShortArray2578[texIndex] = (short) var55.readUnsignedShort(); + model.texturePrimaryColor[texIndex] = (short) var55.readUnsignedShort(); } if (type == 3) { - this.texTriangleX[texIndex] = (short) var24.readUnsignedShort(); - this.texTriangleY[texIndex] = (short) var24.readUnsignedShort(); - this.texTriangleZ[texIndex] = (short) var24.readUnsignedShort(); - this.aShortArray2574[texIndex] = (short) var3.readUnsignedShort(); - this.aShortArray2575[texIndex] = (short) var3.readUnsignedShort(); - this.aShortArray2586[texIndex] = (short) var3.readUnsignedShort(); - this.aShortArray2577[texIndex] = (short) var28.readUnsignedShort(); - this.aByteArray2580[texIndex] = var6.readByte(); - this.aShortArray2578[texIndex] = (short) var55.readUnsignedShort(); + model.texTriangleX[texIndex] = (short) var24.readUnsignedShort(); + model.texTriangleY[texIndex] = (short) var24.readUnsignedShort(); + model.texTriangleZ[texIndex] = (short) var24.readUnsignedShort(); + model.aShortArray2574[texIndex] = (short) var3.readUnsignedShort(); + model.aShortArray2575[texIndex] = (short) var3.readUnsignedShort(); + model.aShortArray2586[texIndex] = (short) var3.readUnsignedShort(); + model.aShortArray2577[texIndex] = (short) var28.readUnsignedShort(); + model.aByteArray2580[texIndex] = var6.readByte(); + model.aShortArray2578[texIndex] = (short) var55.readUnsignedShort(); } } @@ -417,7 +421,7 @@ public class ModelLoader extends ModelDefinition } } - private void load2(byte[] var1) + private void load2(ModelDefinition model, byte[] var1) { boolean var2 = false; boolean var43 = false; @@ -484,55 +488,55 @@ public class ModelLoader extends ModelDefinition int var35 = var46; var46 += var20; int var10000 = var46 + var36; - this.vertexCount = var10; - this.triangleFaceCount = var11; - this.anInt2569 = var12; - this.vertexX = new int[var10]; - this.vertexY = new int[var10]; - this.vertexZ = new int[var10]; - this.trianglePointsX = new int[var11]; - this.trianglePointsY = new int[var11]; - this.trianglePointsZ = new int[var11]; + model.vertexCount = var10; + model.triangleFaceCount = var11; + model.anInt2569 = var12; + model.vertexX = new int[var10]; + model.vertexY = new int[var10]; + model.vertexZ = new int[var10]; + model.trianglePointsX = new int[var11]; + model.trianglePointsY = new int[var11]; + model.trianglePointsZ = new int[var11]; if (var12 > 0) { - this.textureRenderTypes = new byte[var12]; - this.texTriangleX = new short[var12]; - this.texTriangleY = new short[var12]; - this.texTriangleZ = new short[var12]; + model.textureRenderTypes = new byte[var12]; + model.texTriangleX = new short[var12]; + model.texTriangleY = new short[var12]; + model.texTriangleZ = new short[var12]; } if (var28 == 1) { - this.vertexSkins = new int[var10]; + model.vertexSkins = new int[var10]; } if (var13 == 1) { - this.faceRenderType = new byte[var11]; - this.textureCoords = new byte[var11]; - this.faceTextures = new short[var11]; + model.faceRenderType = new byte[var11]; + model.textureCoords = new byte[var11]; + model.faceTextures = new short[var11]; } if (var14 == 255) { - this.faceRenderPriorities = new byte[var11]; + model.faceRenderPriorities = new byte[var11]; } else { - this.priority = (byte) var14; + model.priority = (byte) var14; } if (var30 == 1) { - this.faceAlphas = new byte[var11]; + model.faceAlphas = new byte[var11]; } if (var15 == 1) { - this.triangleSkinValues = new int[var11]; + model.triangleSkinValues = new int[var11]; } - this.faceColor = new short[var11]; + model.faceColor = new short[var11]; var5.setOffset(var16); var39.setOffset(var34); var26.setOffset(var35); @@ -568,15 +572,15 @@ public class ModelLoader extends ModelDefinition var7 = var9.readShortSmart(); } - this.vertexX[var18] = var41 + var31; - this.vertexY[var18] = var33 + var6; - this.vertexZ[var18] = var19 + var7; - var41 = this.vertexX[var18]; - var33 = this.vertexY[var18]; - var19 = this.vertexZ[var18]; + model.vertexX[var18] = var41 + var31; + model.vertexY[var18] = var33 + var6; + model.vertexZ[var18] = var19 + var7; + var41 = model.vertexX[var18]; + var33 = model.vertexY[var18]; + var19 = model.vertexZ[var18]; if (var28 == 1) { - this.vertexSkins[var18] = var3.readUnsignedByte(); + model.vertexSkins[var18] = var3.readUnsignedByte(); } } @@ -588,50 +592,50 @@ public class ModelLoader extends ModelDefinition for (var18 = 0; var18 < var11; ++var18) { - this.faceColor[var18] = (short) var5.readUnsignedShort(); + model.faceColor[var18] = (short) var5.readUnsignedShort(); if (var13 == 1) { var8 = var39.readUnsignedByte(); if ((var8 & 1) == 1) { - this.faceRenderType[var18] = 1; + model.faceRenderType[var18] = 1; var2 = true; } else { - this.faceRenderType[var18] = 0; + model.faceRenderType[var18] = 0; } if ((var8 & 2) == 2) { - this.textureCoords[var18] = (byte) (var8 >> 2); - this.faceTextures[var18] = this.faceColor[var18]; - this.faceColor[var18] = 127; - if (this.faceTextures[var18] != -1) + model.textureCoords[var18] = (byte) (var8 >> 2); + model.faceTextures[var18] = model.faceColor[var18]; + model.faceColor[var18] = 127; + if (model.faceTextures[var18] != -1) { var43 = true; } } else { - this.textureCoords[var18] = -1; - this.faceTextures[var18] = -1; + model.textureCoords[var18] = -1; + model.faceTextures[var18] = -1; } } if (var14 == 255) { - this.faceRenderPriorities[var18] = var26.readByte(); + model.faceRenderPriorities[var18] = var26.readByte(); } if (var30 == 1) { - this.faceAlphas[var18] = var9.readByte(); + model.faceAlphas[var18] = var9.readByte(); } if (var15 == 1) { - this.triangleSkinValues[var18] = var3.readUnsignedByte(); + model.triangleSkinValues[var18] = var3.readUnsignedByte(); } } @@ -653,9 +657,9 @@ public class ModelLoader extends ModelDefinition var8 = var5.readShortSmart() + var18; var31 = var5.readShortSmart() + var8; var6 = var31; - this.trianglePointsX[var7] = var18; - this.trianglePointsY[var7] = var8; - this.trianglePointsZ[var7] = var31; + model.trianglePointsX[var7] = var18; + model.trianglePointsY[var7] = var8; + model.trianglePointsZ[var7] = var31; } if (var22 == 2) @@ -663,9 +667,9 @@ public class ModelLoader extends ModelDefinition var8 = var31; var31 = var5.readShortSmart() + var6; var6 = var31; - this.trianglePointsX[var7] = var18; - this.trianglePointsY[var7] = var8; - this.trianglePointsZ[var7] = var31; + model.trianglePointsX[var7] = var18; + model.trianglePointsY[var7] = var8; + model.trianglePointsZ[var7] = var31; } if (var22 == 3) @@ -673,9 +677,9 @@ public class ModelLoader extends ModelDefinition var18 = var31; var31 = var5.readShortSmart() + var6; var6 = var31; - this.trianglePointsX[var7] = var18; - this.trianglePointsY[var7] = var8; - this.trianglePointsZ[var7] = var31; + model.trianglePointsX[var7] = var18; + model.trianglePointsY[var7] = var8; + model.trianglePointsZ[var7] = var31; } if (var22 == 4) @@ -685,9 +689,9 @@ public class ModelLoader extends ModelDefinition var8 = var21; var31 = var5.readShortSmart() + var6; var6 = var31; - this.trianglePointsX[var7] = var18; - this.trianglePointsY[var7] = var21; - this.trianglePointsZ[var7] = var31; + model.trianglePointsX[var7] = var18; + model.trianglePointsY[var7] = var21; + model.trianglePointsZ[var7] = var31; } } @@ -695,24 +699,24 @@ public class ModelLoader extends ModelDefinition for (var7 = 0; var7 < var12; ++var7) { - this.textureRenderTypes[var7] = 0; - this.texTriangleX[var7] = (short) var5.readUnsignedShort(); - this.texTriangleY[var7] = (short) var5.readUnsignedShort(); - this.texTriangleZ[var7] = (short) var5.readUnsignedShort(); + model.textureRenderTypes[var7] = 0; + model.texTriangleX[var7] = (short) var5.readUnsignedShort(); + model.texTriangleY[var7] = (short) var5.readUnsignedShort(); + model.texTriangleZ[var7] = (short) var5.readUnsignedShort(); } - if (this.textureCoords != null) + if (model.textureCoords != null) { boolean var45 = false; for (var22 = 0; var22 < var11; ++var22) { - var21 = this.textureCoords[var22] & 255; + var21 = model.textureCoords[var22] & 255; if (var21 != 255) { - if ((this.texTriangleX[var21] & '\uffff') == this.trianglePointsX[var22] && (this.texTriangleY[var21] & '\uffff') == this.trianglePointsY[var22] && (this.texTriangleZ[var21] & '\uffff') == this.trianglePointsZ[var22]) + if ((model.texTriangleX[var21] & '\uffff') == model.trianglePointsX[var22] && (model.texTriangleY[var21] & '\uffff') == model.trianglePointsY[var22] && (model.texTriangleZ[var21] & '\uffff') == model.trianglePointsZ[var22]) { - this.textureCoords[var22] = -1; + model.textureCoords[var22] = -1; } else { @@ -723,18 +727,18 @@ public class ModelLoader extends ModelDefinition if (!var45) { - this.textureCoords = null; + model.textureCoords = null; } } if (!var43) { - this.faceTextures = null; + model.faceTextures = null; } if (!var2) { - this.faceRenderType = null; + model.faceRenderType = null; } } diff --git a/model-viewer/src/main/java/net/runelite/modelviewer/ModelViewer.java b/model-viewer/src/main/java/net/runelite/modelviewer/ModelViewer.java index 9e18a8c9e8..ad20e0f944 100644 --- a/model-viewer/src/main/java/net/runelite/modelviewer/ModelViewer.java +++ b/model-viewer/src/main/java/net/runelite/modelviewer/ModelViewer.java @@ -32,6 +32,7 @@ package net.runelite.modelviewer; import java.awt.Color; import java.io.File; import java.nio.file.Files; +import net.runelite.cache.definitions.ModelDefinition; import net.runelite.cache.definitions.loaders.ModelLoader; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.DisplayMode; @@ -49,9 +50,9 @@ public class ModelViewer System.exit(1); } - ModelLoader md = new ModelLoader(); + ModelLoader loader = new ModelLoader(); byte[] b = Files.readAllBytes(new File(args[0]).toPath()); - md.load(b); + ModelDefinition md = loader.load(b); Display.setDisplayMode(new DisplayMode(800, 600)); Display.setTitle("Model Viewer");