Fixed crash when closing the worldmap sometimes

This commit is contained in:
Pazaz 2022-05-05 12:11:40 -04:00
parent 8dc27ef51e
commit 77bfb744bc
23 changed files with 111 additions and 108 deletions

View file

@ -67,4 +67,19 @@ public class ColorUtils {
}
return (local188 >> 2 << 10) + (local159 >> 5 << 7) + (local164 >> 1);
}
@OriginalMember(owner = "client!pf", name = "a", descriptor = "(II)[F")
public static float[] getRgbFloat(@OriginalArg(0) int arg0) {
@Pc(7) float local7 = Static161.method3068() + Static161.method3059();
@Pc(9) int local9 = Static161.method3064();
@Pc(11) float local11 = 0.58823526F;
Static251.aFloatArray28[3] = 1.0F;
@Pc(24) float local24 = (float) (local9 >> 16 & 0xFF) / 255.0F;
@Pc(33) float local33 = (float) (local9 >> 8 & 0xFF) / 255.0F;
Static251.aFloatArray28[1] = local7 * (float) (arg0 >> 8 & 0xFF) / 255.0F * local33 * local11;
Static251.aFloatArray28[0] = local7 * local11 * local24 * ((float) (arg0 >> 16 & 0xFF) / 255.0F);
@Pc(74) float local74 = (float) (local9 & 0xFF) / 255.0F;
Static251.aFloatArray28[2] = (float) (arg0 & 0xFF) / 255.0F * local74 * local11 * local7;
return Static251.aFloatArray28;
}
}

View file

@ -206,7 +206,7 @@ public final class GlModel extends Model {
if (arg0.aShortArray23 != null) {
local135 = arg0.aShortArray23[local125];
if (local135 != -1) {
local131 = Rasteriser.textureProvider.method3237(local135 & 0xFFFF);
local131 = Rasteriser.textureProvider.getMaterialType(local135 & 0xFFFF);
local133 = Rasteriser.textureProvider.method3228(local135 & 0xFFFF);
}
}

View file

@ -566,7 +566,7 @@ public final class GlRenderer {
}
@OriginalMember(owner = "client!tf", name = "p", descriptor = "()V")
public static void method4173() {
public static void restoreLighting() {
if (Preferences.highDetailLighting) {
setLightingEnabled(true);
setNormalArrayEnabled(true);

View file

@ -89,27 +89,27 @@ public final class GlTile extends Node {
private int anInt2489 = 0;
@OriginalMember(owner = "client!hg", name = "y", descriptor = "I")
public final int anInt2485;
public final int texture;
@OriginalMember(owner = "client!hg", name = "V", descriptor = "F")
private final float aFloat12;
@OriginalMember(owner = "client!hg", name = "M", descriptor = "Z")
public final boolean aBoolean140;
public final boolean blend;
@OriginalMember(owner = "client!hg", name = "u", descriptor = "Z")
private final boolean aBoolean139;
@OriginalMember(owner = "client!hg", name = "C", descriptor = "I")
public final int anInt2486;
public final int underwaterColor;
@OriginalMember(owner = "client!hg", name = "<init>", descriptor = "(IFZZI)V")
public GlTile(@OriginalArg(0) int arg0, @OriginalArg(1) float arg1, @OriginalArg(2) boolean arg2, @OriginalArg(3) boolean arg3, @OriginalArg(4) int arg4) {
this.anInt2485 = arg0;
this.texture = arg0;
this.aFloat12 = arg1;
this.aBoolean140 = arg2;
this.blend = arg2;
this.aBoolean139 = arg3;
this.anInt2486 = arg4;
this.underwaterColor = arg4;
}
@OriginalMember(owner = "client!hg", name = "a", descriptor = "()V")
@ -137,7 +137,7 @@ public final class GlTile extends Node {
this.anIntArray231 = new int[this.anInt2484];
this.anIntArrayArray17 = new int[this.anInt2484][];
this.aClass133_8 = new HashTable(Static165.clp2(this.anInt2482));
if (this.aBoolean140) {
if (this.blend) {
this.anIntArrayArray18 = new int[this.anInt2484][];
this.aBooleanArray54 = new boolean[this.anInt2484];
}
@ -248,7 +248,7 @@ public final class GlTile extends Node {
local68 = arg0[this.anIntArray231[local47]][this.anIntArray228[local47]][this.anIntArray227[local47]];
if (local68 != null && local68.aBoolean45) {
local78 = this.anIntArrayArray17[local47];
if (this.aBoolean140) {
if (this.blend) {
local86 = this.anIntArrayArray18[local47];
if (local86 != null) {
for (local90 = 0; local90 < local86.length; local90++) {
@ -271,7 +271,7 @@ public final class GlTile extends Node {
local68 = arg0[this.anIntArray231[local47]][this.anIntArray228[local47]][this.anIntArray227[local47]];
if (local68 != null && local68.aBoolean45) {
local78 = this.anIntArrayArray17[local47];
if (this.aBoolean140) {
if (this.blend) {
local86 = this.anIntArrayArray18[local47];
if (local86 != null) {
for (local90 = 0; local90 < local86.length; local90++) {
@ -293,50 +293,50 @@ public final class GlTile extends Node {
if (aClass3_Sub15_3.offset == 0 && aClass3_Sub15_2.offset == 0) {
return;
}
@Pc(257) GL2 local257 = GlRenderer.gl;
if (this.anInt2485 == -1 || arg2) {
@Pc(257) GL2 gl = GlRenderer.gl;
if (this.texture == -1 || arg2) {
GlRenderer.setTextureId(-1);
MaterialManager.setMaterial(0, 0);
} else {
Rasteriser.textureProvider.method3227(this.anInt2485);
Rasteriser.textureProvider.method3227(this.texture);
}
@Pc(282) int local282 = this.aBoolean139 ? 40 : 36;
@Pc(282) int i = this.aBoolean139 ? 40 : 36;
if (this.aClass155_3 == null) {
if (GlRenderer.arbVboSupported) {
local257.glBindBuffer(GL2.GL_ARRAY_BUFFER, 0);
gl.glBindBuffer(GL2.GL_ARRAY_BUFFER, 0);
}
this.aByteBuffer3.position(0);
local257.glVertexPointer(3, GL2.GL_FLOAT, local282, this.aByteBuffer3);
gl.glVertexPointer(3, GL2.GL_FLOAT, i, this.aByteBuffer3);
this.aByteBuffer3.position(12);
local257.glColorPointer(4, GL2.GL_UNSIGNED_BYTE, local282, this.aByteBuffer3);
gl.glColorPointer(4, GL2.GL_UNSIGNED_BYTE, i, this.aByteBuffer3);
if (Preferences.highDetailLighting) {
this.aByteBuffer3.position(16);
local257.glNormalPointer(GL2.GL_FLOAT, local282, this.aByteBuffer3);
gl.glNormalPointer(GL2.GL_FLOAT, i, this.aByteBuffer3);
}
this.aByteBuffer3.position(28);
local257.glTexCoordPointer(2, GL2.GL_FLOAT, local282, this.aByteBuffer3);
gl.glTexCoordPointer(2, GL2.GL_FLOAT, i, this.aByteBuffer3);
if (this.aBoolean139) {
local257.glClientActiveTexture(UnderwaterMaterialRenderer.method4607());
gl.glClientActiveTexture(UnderwaterMaterialRenderer.method4607());
this.aByteBuffer3.position(36);
local257.glTexCoordPointer(1, GL2.GL_FLOAT, local282, this.aByteBuffer3);
local257.glClientActiveTexture(GL2.GL_TEXTURE0);
gl.glTexCoordPointer(1, GL2.GL_FLOAT, i, this.aByteBuffer3);
gl.glClientActiveTexture(GL2.GL_TEXTURE0);
}
} else {
this.aClass155_3.method4516();
local257.glVertexPointer(3, GL2.GL_FLOAT, local282, 0L);
local257.glColorPointer(4, GL2.GL_UNSIGNED_BYTE, local282, 12L);
gl.glVertexPointer(3, GL2.GL_FLOAT, i, 0L);
gl.glColorPointer(4, GL2.GL_UNSIGNED_BYTE, i, 12L);
if (Preferences.highDetailLighting) {
local257.glNormalPointer(GL2.GL_FLOAT, local282, 16L);
gl.glNormalPointer(GL2.GL_FLOAT, i, 16L);
}
local257.glTexCoordPointer(2, GL2.GL_FLOAT, local282, 28L);
gl.glTexCoordPointer(2, GL2.GL_FLOAT, i, 28L);
if (this.aBoolean139) {
local257.glClientActiveTexture(UnderwaterMaterialRenderer.method4607());
local257.glTexCoordPointer(1, GL2.GL_FLOAT, local282, 36L);
local257.glClientActiveTexture(GL2.GL_TEXTURE0);
gl.glClientActiveTexture(UnderwaterMaterialRenderer.method4607());
gl.glTexCoordPointer(1, GL2.GL_FLOAT, i, 36L);
gl.glClientActiveTexture(GL2.GL_TEXTURE0);
}
}
if (GlRenderer.arbVboSupported) {
local257.glBindBuffer(GL2.GL_ELEMENT_ARRAY_BUFFER, 0);
gl.glBindBuffer(GL2.GL_ELEMENT_ARRAY_BUFFER, 0);
}
if (aClass3_Sub15_3.offset != 0) {
if (aByteBuffer5 == null || aByteBuffer5.capacity() < aClass3_Sub15_3.offset) {
@ -347,7 +347,7 @@ public final class GlTile extends Node {
aByteBuffer5.put(aClass3_Sub15_3.data, 0, aClass3_Sub15_3.offset);
aByteBuffer5.flip();
GlRenderer.method4159(arg1);
local257.glDrawElements(GL2.GL_TRIANGLES, aClass3_Sub15_3.offset / 4, GL2.GL_UNSIGNED_INT, aByteBuffer5);
gl.glDrawElements(GL2.GL_TRIANGLES, aClass3_Sub15_3.offset / 4, GL2.GL_UNSIGNED_INT, aByteBuffer5);
}
if (aClass3_Sub15_2.offset == 0) {
return;
@ -361,13 +361,13 @@ public final class GlTile extends Node {
aByteBuffer4.flip();
GlRenderer.method4159(arg1 - 100.0F);
GlRenderer.disableDepthMask();
local257.glDrawElements(GL2.GL_TRIANGLES, aClass3_Sub15_2.offset / 4, GL2.GL_UNSIGNED_INT, aByteBuffer4);
gl.glDrawElements(GL2.GL_TRIANGLES, aClass3_Sub15_2.offset / 4, GL2.GL_UNSIGNED_INT, aByteBuffer4);
GlRenderer.enableDepthMask();
}
@OriginalMember(owner = "client!hg", name = "a", descriptor = "(III[I[IZ)I")
public final int method1945(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int[] arg3, @OriginalArg(4) int[] arg4, @OriginalArg(5) boolean arg5) {
if (this.aBoolean140) {
if (this.blend) {
this.anIntArrayArray18[this.anInt2489] = arg4;
this.aBooleanArray54[this.anInt2489] = arg5;
if (arg4 != null) {

View file

@ -188,7 +188,7 @@ public final class Js5GlTextureProvider implements TextureProvider {
@OriginalMember(owner = "client!nk", name = "g", descriptor = "(II)I")
@Override
public final int method3237(@OriginalArg(0) int arg0) {
public final int getMaterialType(@OriginalArg(0) int arg0) {
return this.aByteArray62[arg0] & 0xFF;
}

View file

@ -415,7 +415,7 @@ public class LightingManager {
local4.glDepthMask(true);
local4.glFogfv(GL2.GL_FOG_COLOR, Static161.fogColor, 0);
local4.glEnableClientState(GL2.GL_TEXTURE_COORD_ARRAY);
GlRenderer.method4173();
GlRenderer.restoreLighting();
}
@OriginalMember(owner = "client!jf", name = "a", descriptor = "(ILclient!gi;III)V")

View file

@ -5,6 +5,8 @@ import org.openrs2.deob.annotation.OriginalMember;
import org.openrs2.deob.annotation.Pc;
public class MaterialManager {
public static final int WATER = 4;
@OriginalMember(owner = "client!dl", name = "c", descriptor = "I")
public static int currentType = 0;
@OriginalMember(owner = "client!je", name = "R", descriptor = "Z")

View file

@ -66,6 +66,8 @@ public class SceneGraph {
public static Scenery[] aClass31Array3;
@OriginalMember(owner = "client!c", name = "bb", descriptor = "[Lclient!ec;")
public static Scenery[] aClass31Array2;
@OriginalMember(owner = "client!gf", name = "O", descriptor = "[[[I")
public static int[][][] underwaterTileHeights;
@OriginalMember(owner = "client!km", name = "f", descriptor = "(I)Z")
public static boolean allLevelsAreVisible() {

View file

@ -23,7 +23,7 @@ public final class Static105 {
@OriginalMember(owner = "client!ib", name = "a", descriptor = "(IIIIIIIILclient!th;IZJ)Z")
public static boolean method2256(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4, @OriginalArg(5) int arg5, @OriginalArg(6) int arg6, @OriginalArg(7) int arg7, @OriginalArg(8) Entity arg8, @OriginalArg(9) int arg9, @OriginalArg(10) boolean arg10, @OriginalArg(11) long arg11) {
@Pc(6) boolean local6 = SceneGraph.tileHeights == Static80.underWaterTileHeightMap;
@Pc(6) boolean local6 = SceneGraph.tileHeights == SceneGraph.underwaterTileHeights;
@Pc(8) int local8 = 0;
@Pc(17) int local17;
for (@Pc(10) int local10 = arg1; local10 < arg1 + arg3; local10++) {

View file

@ -66,10 +66,10 @@ public final class Static156 {
@Pc(152) int local152 = Static193.anInt4539 + local113 - Static277.tileVisibilityDistance;
if (local146 >= 0 && local152 >= 0 && local146 < SceneGraph.mapSizeX && local152 < SceneGraph.mapSizeZ) {
@Pc(176) int local176;
if (Static80.underWaterTileHeightMap == null) {
if (SceneGraph.underwaterTileHeights == null) {
local176 = SceneGraph.surfaceTileHeights[0][local146][local152] + 128 - Static123.anInt3947;
} else {
local176 = Static80.underWaterTileHeightMap[0][local146][local152] + 128 - Static123.anInt3947;
local176 = SceneGraph.underwaterTileHeights[0][local146][local152] + 128 - Static123.anInt3947;
}
@Pc(201) int local201 = SceneGraph.surfaceTileHeights[3][local146][local152] - Static123.anInt3947 - 1000;
Static89.aBooleanArrayArray3[local104][local113] = Static160.method3049(local130, local201, local176, local140, local99);
@ -103,30 +103,6 @@ public final class Static156 {
Static248.method3292(arg0, arg1, arg2, arg5, arg11, arg12, arg13, arg14);
}
@OriginalMember(owner = "client!mf", name = "a", descriptor = "()V")
public static void method2959() {
@Pc(1) GL2 local1 = GlRenderer.gl;
local1.glDisableClientState(GL2.GL_COLOR_ARRAY);
GlRenderer.setLightingEnabled(false);
local1.glDisable(GL2.GL_DEPTH_TEST);
local1.glPushAttrib(GL2.GL_FOG_BIT);
local1.glFogf(GL2.GL_FOG_START, (float) GlobalConfig.VIEW_DISTANCE - (GlobalConfig.VIEW_FADE_DISTANCE * 2.0f));
GlRenderer.disableDepthMask();
for (@Pc(19) int local19 = 0; local19 < SceneGraph.surfaceHdTiles[0].length; local19++) {
@Pc(31) GlTile local31 = SceneGraph.surfaceHdTiles[0][local19];
if (local31.anInt2485 >= 0 && Rasteriser.textureProvider.method3237(local31.anInt2485) == 4) {
local1.glColor4fv(Static190.method3441(local31.anInt2486), 0);
@Pc(57) float local57 = 201.5F - (local31.aBoolean140 ? 1.0F : 0.5F);
local31.method1944(SceneGraph.tiles, local57, true);
}
}
local1.glEnableClientState(GL2.GL_COLOR_ARRAY);
GlRenderer.method4173();
local1.glEnable(GL2.GL_DEPTH_TEST);
local1.glPopAttrib();
GlRenderer.enableDepthMask();
}
@OriginalMember(owner = "client!mf", name = "a", descriptor = "(BLclient!wa;)Lclient!ta;")
public static TextureOp29SubOp4 method2960(@OriginalArg(1) Buffer arg0) {
return new TextureOp29SubOp4(arg0.g2s(), arg0.g2s(), arg0.g2s(), arg0.g2s(), arg0.g3(), arg0.g3(), arg0.g1());

View file

@ -6,21 +6,6 @@ import org.openrs2.deob.annotation.Pc;
public final class Static190 {
@OriginalMember(owner = "client!pf", name = "a", descriptor = "(II)[F")
public static float[] method3441(@OriginalArg(0) int arg0) {
@Pc(7) float local7 = Static161.method3068() + Static161.method3059();
@Pc(9) int local9 = Static161.method3064();
@Pc(11) float local11 = 0.58823526F;
Static251.aFloatArray28[3] = 1.0F;
@Pc(24) float local24 = (float) (local9 >> 16 & 0xFF) / 255.0F;
@Pc(33) float local33 = (float) (local9 >> 8 & 0xFF) / 255.0F;
Static251.aFloatArray28[1] = local7 * (float) (arg0 >> 8 & 0xFF) / 255.0F * local33 * local11;
Static251.aFloatArray28[0] = local7 * local11 * local24 * ((float) (arg0 >> 16 & 0xFF) / 255.0F);
@Pc(74) float local74 = (float) (local9 & 0xFF) / 255.0F;
Static251.aFloatArray28[2] = (float) (arg0 & 0xFF) / 255.0F * local74 * local11 * local7;
return Static251.aFloatArray28;
}
@OriginalMember(owner = "client!pf", name = "a", descriptor = "(IIZIII)Lclient!qf;")
public static Sprite method3443(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) boolean arg2, @OriginalArg(3) int arg3, @OriginalArg(4) int arg4) {
@Pc(27) int local27 = (arg2 ? 65536 : 0) + arg1 + (arg0 << 17) + (arg4 << 19);

View file

@ -151,7 +151,7 @@ public final class Static242 {
}
local1.glEnableClientState(GL2.GL_COLOR_ARRAY);
local1.glDepthMask(true);
GlRenderer.method4173();
GlRenderer.restoreLighting();
}
@OriginalMember(owner = "client!tj", name = "a", descriptor = "([BIIIII)Z")

View file

@ -70,7 +70,7 @@ public final class Static247 {
local31 = SceneGraph.tiles[local24];
@Pc(33) float local33 = 0.0F;
if (GlRenderer.enabled) {
if (Static80.underWaterTileHeightMap == SceneGraph.tileHeights) {
if (SceneGraph.underwaterTileHeights == SceneGraph.tileHeights) {
var9 = Static62.anIntArrayArray11[local18][local21];
var10 = var9 & 0xFFFFFF;
if (var10 != Static152.anInt3604) {

View file

@ -74,13 +74,13 @@ public final class Static248 {
}
}
}
@Pc(240) boolean local240 = SceneGraph.tileHeights == Static80.underWaterTileHeightMap;
@Pc(240) boolean local240 = SceneGraph.tileHeights == SceneGraph.underwaterTileHeights;
if (GlRenderer.enabled) {
@Pc(244) GL2 local244 = GlRenderer.gl;
local244.glPushMatrix();
local244.glTranslatef((float) -arg0, (float) -arg1, (float) -arg2);
@Pc(244) GL2 gl = GlRenderer.gl;
gl.glPushMatrix();
gl.glTranslatef((float) -arg0, (float) -arg1, (float) -arg2);
if (local240) {
Static156.method2959();
UnderwaterMaterialRenderer.applyFogFade();
MaterialManager.setMaterial(-1, 3);
MaterialManager.renderingUnderwater = true;
UnderwaterMaterialRenderer.method4609();
@ -88,10 +88,10 @@ public final class Static248 {
Static22.anInt730 = -1;
for (local32 = 0; local32 < Static182.aClass3_Sub14ArrayArray2[0].length; local32++) {
@Pc(285) GlTile local285 = Static182.aClass3_Sub14ArrayArray2[0][local32];
@Pc(294) float local294 = 251.5F - (local285.aBoolean140 ? 1.0F : 0.5F);
if (local285.anInt2486 != Static152.anInt3604) {
Static152.anInt3604 = local285.anInt2486;
WaterMaterialRenderer.method619(local285.anInt2486);
@Pc(294) float local294 = 251.5F - (local285.blend ? 1.0F : 0.5F);
if (local285.underwaterColor != Static152.anInt3604) {
Static152.anInt3604 = local285.underwaterColor;
WaterMaterialRenderer.method619(local285.underwaterColor);
Static161.method3066(WaterMaterialRenderer.method2422());
}
local285.method1944(SceneGraph.tiles, local294, false);
@ -106,9 +106,9 @@ public final class Static248 {
}
for (local37 = 0; local37 < Static182.aClass3_Sub14ArrayArray2[local32].length; local37++) {
@Pc(336) GlTile local336 = Static182.aClass3_Sub14ArrayArray2[local32][local37];
@Pc(350) float local350 = 201.5F - (float) local32 * 50.0F - (local336.aBoolean140 ? 1.0F : 0.5F);
if (local336.anInt2485 != -1 && Rasteriser.textureProvider.method3237(local336.anInt2485) == 4 && Preferences.highWaterDetail) {
WaterMaterialRenderer.method619(local336.anInt2486);
@Pc(350) float local350 = 201.5F - (float) local32 * 50.0F - (local336.blend ? 1.0F : 0.5F);
if (local336.texture != -1 && Rasteriser.textureProvider.getMaterialType(local336.texture) == MaterialManager.WATER && Preferences.highWaterDetail) {
WaterMaterialRenderer.method619(local336.underwaterColor);
}
local336.method1944(SceneGraph.tiles, local350, false);
}
@ -119,7 +119,7 @@ public final class Static248 {
local32++;
}
}
local244.glPopMatrix();
gl.glPopMatrix();
}
@Pc(434) int local434;
@Pc(438) int local438;

View file

@ -109,7 +109,7 @@ public final class Static253 {
client.audioLoop();
@Pc(387) byte local387 = Static236.method4047() == 2 ? (byte) Static136.anInt3325 : 1;
if (GlRenderer.enabled) {
GlRenderer.method4173();
GlRenderer.restoreLighting();
GlRenderer.setDepthTestEnabled(true);
GlRenderer.setFogEnabled(true);
if (client.gameState == 10) {

View file

@ -30,7 +30,7 @@ public final class Static278 {
public static void setRenderTiles(@OriginalArg(0) boolean arg0) {
if (arg0) {
SceneGraph.tiles = SceneGraph.underWaterGroundTiles;
SceneGraph.tileHeights = Static80.underWaterTileHeightMap;
SceneGraph.tileHeights = SceneGraph.underwaterTileHeights;
Static182.aClass3_Sub14ArrayArray2 = SceneGraph.underWaterHdTiles;
} else {
SceneGraph.tiles = SceneGraph.surfaceGroundTiles;

View file

@ -18,14 +18,14 @@ public final class Static28 {
if (hasUnderWaterMap) {
SceneGraph.underWaterGroundTiles = new Tile[1][SceneGraph.mapSizeX][SceneGraph.mapSizeZ];
Static62.anIntArrayArray11 = new int[SceneGraph.mapSizeX][SceneGraph.mapSizeZ];
Static80.underWaterTileHeightMap = new int[1][SceneGraph.mapSizeX + 1][SceneGraph.mapSizeZ + 1];
SceneGraph.underwaterTileHeights = new int[1][SceneGraph.mapSizeX + 1][SceneGraph.mapSizeZ + 1];
if (GlRenderer.enabled) {
SceneGraph.underWaterHdTiles = new GlTile[1][];
}
} else {
SceneGraph.underWaterGroundTiles = null;
Static62.anIntArrayArray11 = null;
Static80.underWaterTileHeightMap = null;
SceneGraph.underwaterTileHeights = null;
SceneGraph.underWaterHdTiles = null;
}
Static278.setRenderTiles(false);

View file

@ -231,7 +231,7 @@ public final class Static45 {
@Pc(1834) int local1834 = SceneGraph.tileOverlays[local152][local322][local1794] & 0xFF;
if (local1834 != 0) {
@Pc(1842) FloType local1842 = FloTypeList.method4395(local1834 - 1);
if (local1842.texture != -1 && Rasteriser.textureProvider.method3237(local1842.texture) == 4) {
if (local1842.texture != -1 && Rasteriser.textureProvider.getMaterialType(local1842.texture) == MaterialManager.WATER) {
Static62.anIntArrayArray11[local168][local173] = local1842.anInt5889 + (local1842.anInt5898 << 24);
continue label771;
}
@ -248,7 +248,7 @@ public final class Static45 {
@Pc(1353) int local1353;
@Pc(1288) int local1288;
if (GlRenderer.enabled && !underwater && Static62.anIntArrayArray11 != null && local152 == 0) {
if (local1248.texture != -1 && Rasteriser.textureProvider.method3237(local1248.texture) == 4) {
if (local1248.texture != -1 && Rasteriser.textureProvider.getMaterialType(local1248.texture) == MaterialManager.WATER) {
Static62.anIntArrayArray11[local168][local173] = (local1248.anInt5898 << 24) + local1248.anInt5889;
} else {
label737: for (local1288 = local168 - 1; local1288 <= local168 + 1; local1288++) {
@ -257,7 +257,7 @@ public final class Static45 {
local1353 = SceneGraph.tileOverlays[local152][local1288][local1301] & 0xFF;
if (local1353 != 0) {
@Pc(1366) FloType local1366 = FloTypeList.method4395(local1353 - 1);
if (local1366.texture != -1 && Rasteriser.textureProvider.method3237(local1366.texture) == 4) {
if (local1366.texture != -1 && Rasteriser.textureProvider.getMaterialType(local1366.texture) == MaterialManager.WATER) {
Static62.anIntArrayArray11[local168][local173] = local1366.anInt5889 + (local1366.anInt5898 << 24);
break label737;
}

View file

@ -10,10 +10,7 @@ public final class Static80 {
@OriginalMember(owner = "client!gf", name = "M", descriptor = "I")
public static int anInt4698;
@OriginalMember(owner = "client!gf", name = "O", descriptor = "[[[I")
public static int[][][] underWaterTileHeightMap;
@OriginalMember(owner = "client!gf", name = "R", descriptor = "I")
@OriginalMember(owner = "client!gf", name = "R", descriptor = "I")
public static int centralZoneX;
@OriginalMember(owner = "client!gf", name = "S", descriptor = "[I")

View file

@ -700,7 +700,7 @@ public final class Static87 {
GlRenderer.method4148(local556, local545, color, cardMemory);
GlRenderer.method4152((float) local30.aShort10, (float) local30.aShort11 * 1.5F);
}
GlRenderer.method4173();
GlRenderer.restoreLighting();
GlRenderer.setDepthTestEnabled(true);
GlRenderer.setFogEnabled(false);
Static229.method3935(Preferences.brightness);

View file

@ -41,7 +41,7 @@ public interface TextureProvider {
boolean method3236(@OriginalArg(0) int arg0);
@OriginalMember(owner = "client!m", name = "g", descriptor = "(II)I")
int method3237(@OriginalArg(0) int arg0);
int getMaterialType(@OriginalArg(0) int arg0);
@OriginalMember(owner = "client!m", name = "h", descriptor = "(II)I")
int method3238(@OriginalArg(1) int arg0);

View file

@ -64,7 +64,33 @@ public final class UnderwaterMaterialRenderer implements MaterialRenderer {
local1.glClientActiveTexture(GL2.GL_TEXTURE0);
}
@OriginalMember(owner = "client!wg", name = "d", descriptor = "()V")
@OriginalMember(owner = "client!mf", name = "a", descriptor = "()V")
public static void applyFogFade() {
@Pc(1) GL2 gl = GlRenderer.gl;
gl.glDisableClientState(GL2.GL_COLOR_ARRAY);
GlRenderer.setLightingEnabled(false);
gl.glDisable(GL2.GL_DEPTH_TEST);
gl.glPushAttrib(GL2.GL_FOG_BIT);
gl.glFogf(GL2.GL_FOG_START, (float) GlobalConfig.VIEW_DISTANCE - (GlobalConfig.VIEW_FADE_DISTANCE * 2.0f));
GlRenderer.disableDepthMask();
try {
for (@Pc(19) int i = 0; i < SceneGraph.surfaceHdTiles[0].length; i++) {
@Pc(31) GlTile tile = SceneGraph.surfaceHdTiles[0][i];
if (tile.texture >= 0 && Rasteriser.textureProvider.getMaterialType(tile.texture) == MaterialManager.WATER) {
gl.glColor4fv(ColorUtils.getRgbFloat(tile.underwaterColor), 0);
@Pc(57) float f = 201.5F - (tile.blend ? 1.0F : 0.5F);
tile.method1944(SceneGraph.tiles, f, true);
}
}
} catch (Exception ignored) {}
gl.glEnableClientState(GL2.GL_COLOR_ARRAY);
GlRenderer.restoreLighting();
gl.glEnable(GL2.GL_DEPTH_TEST);
gl.glPopAttrib();
GlRenderer.enableDepthMask();
}
@OriginalMember(owner = "client!wg", name = "d", descriptor = "()V")
private void method4606() {
@Pc(1) GL2 local1 = GlRenderer.gl;
this.anInt5806 = local1.glGenLists(2);

View file

@ -212,7 +212,7 @@ public class Playground extends GameShell {
GlRenderer.init(GameShell.canvas, 0);
if (GlRenderer.enabled) {
GlRenderer.setCanvasSize(GameShell.canvasWidth, GameShell.canvasHeight);
GlRenderer.method4173();
GlRenderer.restoreLighting();
float yaw1 = yaw * 360.0F / 6.2831855F;
float pitch1 = pitch * 360.0F / 6.2831855F;
GlRenderer.method4171(0, 0, GameShell.canvasWidth, GameShell.canvasHeight, GameShell.canvasWidth / 2, GameShell.canvasHeight / 2, yaw1, pitch1, zoom2d, zoom3d);