rt4-client/client/src/main/java/rt4/PerlinNoise.java
2022-05-01 12:48:59 -04:00

56 lines
2.9 KiB
Java

package rt4;
import org.openrs2.deob.annotation.OriginalArg;
import org.openrs2.deob.annotation.OriginalMember;
import org.openrs2.deob.annotation.Pc;
public class PerlinNoise {
@OriginalMember(owner = "client!fc", name = "a", descriptor = "(III)I")
public static int getTileHeight(@OriginalArg(0) int arg0, @OriginalArg(2) int arg1) {
@Pc(36) int local36 = interpolatedNoise(4, arg1 + 45365, arg0 - -91923) + (interpolatedNoise(2, arg1 + 10294, arg0 + 37821) - 128 >> 1) + (interpolatedNoise(1, arg1, arg0) + -128 >> 2) - 128;
local36 = (int) ((double) local36 * 0.3D) + 35;
if (local36 < 10) {
local36 = 10;
} else if (local36 > 60) {
local36 = 60;
}
return local36;
}
@OriginalMember(owner = "client!ja", name = "a", descriptor = "(IIII)I")
public static int interpolatedNoise(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2) {
@Pc(7) int local7 = arg1 / arg0;
@Pc(11) int local11 = arg2 / arg0;
@Pc(17) int local17 = arg2 & arg0 - 1;
@Pc(23) int local23 = arg0 - 1 & arg1;
@Pc(28) int local28 = smoothNoise(local7, local11);
@Pc(35) int local35 = smoothNoise(local7 + 1, local11);
@Pc(42) int local42 = smoothNoise(local7, local11 + 1);
@Pc(56) int local56 = smoothNoise(local7 + 1, local11 + 1);
@Pc(63) int local63 = interpolate(local28, local35, local23, arg0);
@Pc(70) int local70 = interpolate(local42, local56, local23, arg0);
return interpolate(local63, local70, local17, arg0);
}
@OriginalMember(owner = "client!bn", name = "a", descriptor = "(IIB)I")
public static int smoothNoise(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1) {
@Pc(47) int local47 = noise(arg0 - 1, arg1 + -1) + noise(arg0 + 1, arg1 + -1) + noise(arg0 + -1, arg1 - -1) + noise(arg0 + 1, arg1 - -1);
@Pc(76) int local76 = noise(arg0 - 1, arg1) + noise(arg0 + 1, arg1) + noise(arg0, arg1 + -1) + noise(arg0, arg1 + 1);
@Pc(81) int local81 = noise(arg0, arg1);
return local76 / 8 + local47 / 16 + local81 / 4;
}
@OriginalMember(owner = "client!nh", name = "a", descriptor = "(IIIII)I")
public static int interpolate(@OriginalArg(0) int arg0, @OriginalArg(1) int arg1, @OriginalArg(2) int arg2, @OriginalArg(4) int arg3) {
@Pc(22) int local22 = 65536 - MathUtils.cos[arg2 * 1024 / arg3] >> 1;
return (arg0 * (65536 - local22) >> 16) + (arg1 * local22 >> 16);
}
@OriginalMember(owner = "client!km", name = "b", descriptor = "(III)I")
public static int noise(@OriginalArg(0) int arg0, @OriginalArg(2) int arg1) {
@Pc(14) int local14 = arg1 * 57 + arg0;
@Pc(20) int local20 = local14 ^ local14 << 13;
@Pc(34) int local34 = Integer.MAX_VALUE & (local20 * local20 * 15731 + 789221) * local20 + 1376312589;
return local34 >> 19 & 0xFF;
}
}