Split up model loader from model definition

This commit is contained in:
Adam
2016-09-16 23:15:09 -04:00
parent f044d0207f
commit 520df7f8f4
2 changed files with 166 additions and 161 deletions

View File

@@ -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;
}
}