28 public Grid2d(
int sizeX,
int sizeY) {
36 public void Set(
int x,
int y,
float value) {
40 public float Sample(
float x,
float y) {
41 int num = (int)MathF.Floor(x);
42 int num2 = (int)MathF.Floor(y);
43 int num3 = (int)MathF.Ceiling(x);
44 int num4 = (int)MathF.Ceiling(y);
74 public Grid3d(
int sizeX,
int sizeY,
int sizeZ) {
106 public void Set(
int x,
int y,
int z,
float value) {
110 public float Sample(
float x,
float y,
float z) {
111 int num = (int)MathF.Floor(x);
112 int num2 = (int)MathF.Ceiling(x);
113 int num3 = (int)MathF.Floor(y);
114 int num4 = (int)MathF.Ceiling(y);
115 int num5 = (int)MathF.Floor(z);
116 int num6 = (int)MathF.Ceiling(z);
280 m_seed = subsystemGameInfo.WorldSeed;
323 float num =
float.MinValue;
324 for (
int i = 0; i < 800; i += 5) {
325 for (
int j = 0; j <= 12; j += 4) {
326 for (
int k = 0; k < 2; k++) {
330 num2 = m_oceanCorner.Y + i;
334 x = m_oceanCorner.X + i;
388 return MathUtils.
Min(x - num, z - num2, num3 - x, num4 - z);
433 float num18 = num13 + num14 + num15 + num17 + num16;
435 return Math.Clamp(64f + num19, 10f, 251f);
479 float num7 = num6 - num5;
567 for (
int i = x1; i < x2; i++) {
568 for (
int j = z1; j < z2; j++) {
583 int num3 = chunk.Origin.X + x1;
584 int num4 = chunk.Origin.Y + z1;
585 Grid2d grid2d =
new(num, num2);
586 Grid2d grid2d2 =
new(num, num2);
587 for (
int i = 0; i < num2; i++) {
588 for (
int j = 0; j < num; j++) {
593 Grid3d grid3d =
new(num / 4 + 1, 33, num2 / 4 + 1);
594 for (
int k = 0; k < grid3d.
SizeX; k++) {
595 for (
int l = 0; l < grid3d.
SizeZ; l++) {
596 int num5 = k * 4 + num3;
597 int num6 = l * 4 + num4;
601 for (
int m = 0; m < grid3d.
SizeY; m++) {
617 float num11 = num9 + num10;
618 float num12 = num7 - num11;
620 grid3d.
Set(k, m, l, num12);
625 for (
int n = 0; n < grid3d.SizeX - 1; n++) {
626 for (
int num13 = 0; num13 < grid3d.SizeZ - 1; num13++) {
627 for (
int num14 = 0; num14 < grid3d.SizeY - 1; num14++) {
641 float num15 = (v3 - v2) / 4f;
642 float num16 = (v5 - v4) / 4f;
643 float num17 = (v7 - v6) / 4f;
644 float num18 = (v9 - v8) / 4f;
649 for (
int num23 = 0; num23 < 4; num23++) {
650 float num24 = (num21 - num19) / 4f;
651 float num25 = (num22 - num20) / 4f;
654 for (
int num28 = 0; num28 < 4; num28++) {
655 float num29 = (num27 - num26) / 8f;
657 int num31 = num23 + n * 4;
658 int num32 = num28 + num13 * 4;
661 float x4 = grid2d.
Get(num31, num32);
662 float num33 = grid2d2.
Get(num31, num32);
665 float f = num33 - 0.01f * humidityFast;
668 bool flag = (temperatureFast > 8 && humidityFast < 8 && num33 < 0.97f) || (MathF.Abs(x4) < 16f && num33 < 0.97f);
670 for (
int num37 = 0; num37 < 8; num37++) {
671 int num38 = num37 + num14 * 8;
674 if (num38 <= oceanLevel) {
679 value = !flag ? !(num30 < num35) ? 67 : 3 :
680 !(num30 < num34) ? !(num30 < num35) ? 67 : 3 : 4;
701 for (
int i = 0; i < 16; i++) {
702 for (
int j = 0; j < 16; j++) {
716 num7 = temperature > 4 && temperature < 7 ? 6 : 7;
719 int num8 = temperature / 4;
722 (num4 < 66 || num4 == 84 + num8 || num4 == 103 + num8) && humidity == 9 && temperature % 6 == 1 ? 66 :
723 num9 != 18 || humidity <= 8 || humidity % 2 != 0 || temperature % 3 != 0 ? 2 : 72;
727 num10 = (int)Math.Clamp(1f * -temperature, 1f, 7f);
739 for (
int k = num12 - num10; k < num12; k++) {
760 for (
int i = x - 1; i <= x + 1; i++) {
761 for (
int j = y - 1; j <= y + 1; j++) {
763 int num = random.
Int(0, 10);
764 for (
int k = 0; k < num; k++) {
769 for (
int l = 0; l < num3; l++) {
770 int x2 = i * 16 + random.
Int(0, 15);
771 int y2 = random.
Int(5, 200);
772 int z = j * 16 + random.
Int(0, 15);
776 for (
int m = 0; m < num4; m++) {
777 int x3 = i * 16 + random.
Int(0, 15);
778 int y3 = random.
Int(20, 65);
779 int z2 = j * 16 + random.
Int(0, 15);
783 for (
int n = 0; n < num5; n++) {
784 int x4 = i * 16 + random.
Int(0, 15);
785 int y4 = random.
Int(2, 40);
786 int z3 = j * 16 + random.
Int(0, 15);
790 for (
int num7 = 0; num7 < num6; num7++) {
791 int x5 = i * 16 + random.
Int(0, 15);
792 int y5 = random.
Int(50, 90);
793 int z4 = j * 16 + random.
Int(0, 15);
797 for (
int num9 = 0; num9 < num8; num9++) {
798 int x6 = i * 16 + random.
Int(0, 15);
799 int y6 = random.
Int(2, 40);
800 int z5 = j * 16 + random.
Int(0, 15);
804 for (
int num11 = 0; num11 < num10; num11++) {
805 int x7 = i * 16 + random.
Int(0, 15);
806 int y7 = random.
Int(2, 15);
807 int z6 = j * 16 + random.
Int(0, 15);
811 for (
int num13 = 0; num13 < num12; num13++) {
812 int x8 = i * 16 + random.
Int(0, 15);
813 int y8 = random.
Int(2, 50);
814 int z7 = j * 16 + random.
Int(0, 15);
825 for (
int i = -1; i <= 1; i++) {
826 for (
int j = -1; j <= 1; j++) {
830 int num3 = random.
Int(0, 10);
831 for (
int k = 0; k < num3; k++) {
835 for (
int l = 0; l < 3; l++) {
836 int x = num * 16 + random.
Int(0, 15);
837 int y = random.
Int(50, 100);
838 int z = num2 * 16 + random.
Int(0, 15);
841 for (
int m = 0; m < 10; m++) {
842 int x2 = num * 16 + random.
Int(0, 15);
843 int y2 = random.
Int(20, 80);
844 int z2 = num2 * 16 + random.
Int(0, 15);
847 for (
int n = 0; n < 2; n++) {
848 int x3 = num * 16 + random.
Int(0, 15);
849 int y3 = random.
Int(20, 120);
850 int z3 = num2 * 16 + random.
Int(0, 15);
853 for (
int num5 = 0; num5 < 1; num5++) {
854 int x4 = num * 16 + random.
Int(0, 15);
855 int y4 = random.
Int(50, 70);
856 int z4 = num2 * 16 + random.
Int(0, 15);
859 for (
int num6 = 0; num6 < 6; num6++) {
860 int x5 = num * 16 + random.
Int(0, 15);
861 int y5 = random.
Int(40, 80);
862 int z5 = num2 * 16 + random.
Int(0, 15);
865 for (
int num7 = 0; num7 < 4; num7++) {
866 int x6 = num * 16 + random.
Int(0, 15);
867 int y6 = random.
Int(40, 60);
868 int z6 = num2 * 16 + random.
Int(0, 15);
871 for (
int num8 = 0; num8 < 3; num8++) {
872 int x7 = num * 16 + random.
Int(0, 15);
873 int y7 = random.
Int(20, 40);
874 int z7 = num2 * 16 + random.
Int(0, 15);
877 for (
int num9 = 0; num9 < 6; num9++) {
878 int x8 = num * 16 + random.
Int(0, 15);
879 int y8 = random.
Int(4, 50);
880 int z8 = num2 * 16 + random.
Int(0, 15);
883 if (random.
Bool(0.02f + 0.01f * num4)) {
884 int num10 = num * 16;
885 int num11 = random.
Int(40, 60);
886 int num12 = num2 * 16;
887 int num13 = random.
Int(1, 3);
888 for (
int num14 = 0; num14 < num13; num14++) {
890 int num15 = 8 + (int)MathF.
Round(vector.
X);
892 int num17 = 8 + (int)MathF.
Round(vector.
Y);
894 .PaintFast(chunk, num10 + num15, num11 + num16, num12 + num17);
897 if (random.
Bool(0.06f + 0.05f * num4)) {
898 int num18 = num * 16;
899 int num19 = random.
Int(15, 42);
900 int num20 = num2 * 16;
901 int num21 = random.
Int(1, 2);
902 for (
int num22 = 0; num22 < num21; num22++) {
904 int num23 = 8 + (int)MathF.
Round(vector2.
X);
905 int num24 = random.
Int(0, 1);
906 int num25 = 8 + (int)MathF.Round(vector2.
Y);
908 .PaintFast(chunk, num18 + num23, num19 + num24, num20 + num25);
919 List<CavePoint> list =
new();
922 for (
int i = x - 2; i <= x + 2; i++) {
923 for (
int j = y - 2; j <= y + 2; j++) {
926 int num = i * 16 + random.
Int(0, 15);
927 int num2 = j * 16 + random.
Int(0, 15);
928 float probability = 0.5f;
929 if (!random.
Bool(probability)) {
935 Vector3 position =
new(num, num3 - 1, num2);
936 Vector3 v =
new(3f, num4 - num3, 0f);
937 Vector3 v2 =
new(0f, num5 - num3, 3f);
939 if (direction.
Y > -0.6f) {
940 list.Add(
new CavePoint { Position = position, Direction = direction, BrushType = 0, Length = random.
Int(80, 240) });
942 int num6 = i * 16 + 8;
943 int num7 = j * 16 + 8;
945 while (num8 < list.Count) {
948 list2[random.
Int(0, list2.Count - 1)]
949 .PaintFastAvoidWater(
955 cavePoint.Position += 2f * cavePoint.
Direction;
956 cavePoint.StepsTaken += 2;
957 float num9 = cavePoint.Position.X - num6;
958 float num10 = cavePoint.Position.Z - num7;
959 if (random.
Bool(0.5f)) {
961 if ((num9 < -25.5f && v3.
X < 0f)
962 || (num9 > 25.5f && v3.
X > 0f)) {
965 if ((num10 < -25.5f && v3.
Z < 0f)
966 || (num10 > 25.5f && v3.
Z > 0f)) {
976 && random.
Bool(0.06f)) {
980 && random.
Bool(0.05f)) {
981 cavePoint.Direction.Y = 0f;
985 && random.
Bool(0.03f)) {
986 cavePoint.Direction.X = 0f;
987 cavePoint.Direction.Y = -1f;
988 cavePoint.Direction.Z = 0f;
992 && random.
Bool(0.02f)) {
993 cavePoint.Direction.X = 0f;
994 cavePoint.Direction.Y = 1f;
995 cavePoint.Direction.Z = 0f;
997 if (random.
Bool(0.33f)) {
1000 if (random.
Bool(0.06f)
1009 Length = random.
Int(40, 180)
1014 || MathF.Abs(num9) > 34f
1015 || MathF.Abs(num10) > 34f
1022 if (cavePoint.
Position.
Y > num11 + 1f) {
1042 for (
int i = x2; i <= x2; i++) {
1043 for (
int j = y2; j <= y2; j++) {
1052 num5 = random.
Int(1, 2);
1054 else if (num4 > 0.6f) {
1055 num5 = random.
Int(0, 1);
1058 for (
int k = 0; k < 12; k++) {
1062 int num7 = i * 16 + random.
Int(0, 15);
1063 int num8 = j * 16 + random.
Int(0, 15);
1069 if (cellContentsFast != 2
1070 && cellContentsFast != 8) {
1074 int num10 = random.
Int(3, 7);
1077 && num7 - num10 + 1 < 0) {
1081 && num7 + num10 - 1 > 15) {
1085 && num8 - num10 + 1 < 0) {
1089 && num8 + num10 - 1 > 15) {
1095 for (
int l = 0; l < num10; l++) {
1096 int num11 = num7 + point.X * l;
1097 int num12 = num8 + point.Z * l;
1101 || num12 >= num2 - 1) {
1120 if (!((flag && flag2) & flag3)) {
1131 if (treeType.HasValue) {
1138 for (
int m = 0; m < num10; m++) {
1139 int num13 = num7 + point.X * m;
1140 int num14 = num8 + point.Z * m;
1142 if (m > num10 / 2) {
1148 if (random.
Bool(0.5f)
1152 if (random.
Bool(0.05f)
1156 if (random.
Bool(0.5f)
1160 if (random.
Bool(0.05f)
1164 if (random.
Bool(0.5f)
1173 int num15 = (int)(5f * num4);
1175 for (
int n = 0; n < 32; n++) {
1176 if (num16 >= num15) {
1179 int num17 = i * 16 + random.
Int(2, 13);
1180 int num18 = j * 16 + random.
Int(2, 13);
1186 if (cellContentsFast2 != 2
1187 && cellContentsFast2 != 8) {
1205 if (treeType2.HasValue) {
1207 treeBrushes[random.
Int(treeBrushes.
Count)].PaintFast(chunk, num17, num19, num18);
1218 for (
int i = 0; i < 16; i++) {
1219 for (
int j = 0; j < 16; j++) {
1221 int num2 = j + chunk.
Origin.
Y;
1223 for (
int k = 0; k < num3; k++) {
1236 for (
int i = 0; i < 16; i++) {
1237 for (
int j = 0; j < 16; j++) {
1238 for (
int num = 254; num >= 0; num--) {
1265 for (
int i = 0; i < 16; i++) {
1266 for (
int j = 0; j < 16; j++) {
1267 if (!random.
Bool(0.2f)) {
1270 int num = chunk.Origin.X + i;
1271 int num2 = chunk.Origin.Y + j;
1277 for (
int num4 = 254; num4 >= 0; num4--) {
1280 int face = random.
Int(0, 5);
1282 if (i + point.
X >= 0
1284 && num4 + point.
Y >= 0
1285 && num4 + point.
Y < 254
1287 && j + point.
Z < 16) {
1293 if (temperatureFast < 8) {
1310 float num8 = random.
Float(0f, 1f);
1321 int face2 = random.
Int(0, 3);
1344 if (!random.
Bool(0.5f)) {
1348 for (
int i = 0; i < num; i++) {
1349 int num2 = random.
Int(3, 12);
1350 int num3 = random.
Int(3, 12);
1353 if (humidityFast >= 6
1354 || temperatureFast <= 8) {
1357 for (
int j = 0; j < 8; j++) {
1358 int num4 = num2 + random.
Int(-2, 2);
1359 int num5 = num3 + random.
Int(-2, 2);
1360 for (
int num6 = 251; num6 >= 0; num6--) {
1363 for (
int k = num6 + 1;
1389 if (!random.
Bool(0.2f)) {
1393 for (
int i = 0; i < num; i++) {
1394 int num2 = random.
Int(1, 14);
1395 int num3 = random.
Int(1, 14);
1398 if (humidityFast < 10
1399 || temperatureFast <= 6) {
1402 for (
int j = 0; j < 5; j++) {
1403 int x2 = num2 + random.
Int(-1, 1);
1404 int z = num3 + random.
Int(-1, 1);
1405 for (
int num4 = 254; num4 >= 0; num4--) {
1430 for (
int i = 0; i < 9; i++) {
1431 int num2 = i % 3 - 1;
1432 int num3 = i / 3 - 1;
1433 random.
Seed(
m_seed + x + num2 + 850 * (y + num3));
1434 if (random.
Bool(0.2f)) {
1446 for (
int j = 0; j < num4; j++) {
1447 int num5 = random.
Int(2, 13);
1448 int num6 = random.
Int(2, 13);
1449 int num7 = num5 + chunk.
Origin.
X;
1450 int num8 = num6 + chunk.
Origin.
Y;
1451 int num9 = random.
Int(10, 26);
1461 for (
int k = 0; k < num9; k++) {
1462 int x2 = num5 + random.
Int(-2, 2);
1463 int z = num6 + random.
Int(-2, 2);
1465 for (
int num12 = 254; num12 >= 0; num12--) {
1470 if ((num13 == 2 || num13 == 7 || num13 == 72)
1472 int num14 = flag ? random.
Int(num11 - 2, num11 - 1) : random.
Int(num11 - 1, num11);
1473 for (
int l = 0; l < num14; l++) {
1480 if (num11 > num10) {
1496 for (
int i = 0; i < 6; i++) {
1497 int num = random.
Int(1, 14);
1498 int num2 = random.
Int(1, 14);
1499 int num3 = chunk.Origin.X + num;
1500 int num4 = chunk.Origin.Y + num2;
1502 int num5 = random.
Int(1, 3);
1503 for (
int j = 0; j < num5; j++) {
1504 int x2 = num + random.
Int(-1, 1);
1505 int z = num2 + random.
Int(-1, 1);
1507 for (
int num7 = 254; num7 >= 0; num7--) {
1518 && (num8 == 2 || num8 == 7 || num8 == 72 || num8 == 3)) {
1519 int x3 = !random.
Bool(0.1f) ? 1 : 2;
1521 for (
int k = 0; k < x3; k++) {
1540 for (
int i = 0; i < num; i++) {
1541 int num2 = random.
Int(4, 11);
1542 int num3 = random.
Int(4, 11);
1545 if (humidityFast < 10
1546 || temperatureFast < 10) {
1550 for (
int j = 0; j < 100; j++) {
1551 int num5 = num2 + random.
Int(-3, 3);
1552 int num6 = Math.Clamp(num4 + random.
Int(-12, 1), 1, 255);
1553 int num7 = num3 + random.
Int(-3, 3);
1562 int num8 = random.
Int(0, 3);
1563 for (
int k = 0; k < 4; k++) {
1564 int face = (k + num8) % 4;
1569 int num9 = num6 - 1;
1605 if (!random.
Bool(0.15f)
1610 for (
int i = 0; i < num; i++) {
1611 int num2 = random.
Int(2, 5);
1612 int num3 = random.
Int(2, 5);
1613 int num4 = random.
Int(1, 16 - num2 - 2);
1614 int num5 = random.
Int(1, 16 - num3 - 2);
1615 bool flag = random.
Float(0f, 1f) < 0.5f;
1616 int num6 = random.
Int(3, 5);
1618 int num8 = num4 - 1;
1620 if (num8 < num4 + num2 + 1) {
1621 for (
int j = num5 - 1; j < num5 + num3 + 1; j++) {
1624 while (num9 >= num10
1641 || num7 - num6 < 5) {
1644 for (
int k = num4; k < num4 + num2; k++) {
1645 for (
int l = num5; l < num5 + num3; l++) {
1646 for (
int num11 = num7.Value - 1; num11 >= num7 - num6 + 1; num11--) {
1670 if (!(random.
Float(0f, 1f) < 0.033f)
1675 for (
int i = 0; i < num; i++) {
1676 int num2 = random.
Int(6, 9);
1677 int num3 = random.
Int(6, 9);
1678 int num4 = random.
Bool(0.2f) ? random.
Int(6, 20) : random.
Int(1, 5);
1679 bool flag = random.
Bool(0.5f);
1680 for (
int j = 0; j < num4; j++) {
1681 int num5 = num2 + random.
Int(-4, 4);
1682 int num6 = num3 + random.
Int(-4, 4);
1688 int num8 = random.
Int(0, 3);
1689 for (
int k = 0; k < 4; k++) {
1690 int num9 = (k + num8) % 4;
1693 int num10 = p.X < 0 ? num5 - 2 : num5 - 1;
1694 int num11 = p.X > 0 ? num5 + 2 : num5 + 1;
1695 int num12 = p.Z < 0 ? num6 - 2 : num6 - 1;
1696 int num13 = p.Z > 0 ? num6 + 2 : num6 + 1;
1697 for (
int l = num10; l <= num11; l++) {
1698 for (
int m = num7 - 2; m <= num7 + 2; m++) {
1699 for (
int n = num12; n <= num13; n++) {
1718 int num15 = random.
Int(0, 7);
1722 int contents2 = 136;
1726 if (cellContentsFast == 7
1727 || cellContentsFast == 4) {
1732 else if (random.
Float(0f, 1f) < 0.5f) {
1743 bool flag2 = num16.HasValue && random.
Bool(0.33f);
1744 float num17 = random.
Float(0f, 1f);
1745 float num18 = random.
Float(0f, 1f);
1746 int num19 = random.
Int(-1, 0);
1747 int num20 = random.
Int(1, 2);
1748 int num21 = flag2 ? num7 + 2 : num7 + 1;
1750 for (
int num22 = num19; num22 <= num20; num22++) {
1751 int num23 = num5 + p.X * num22;
1752 int num24 = num6 + p.Z * num22;
1756 if (num16.HasValue) {
1763 else if (num18 < 0.3f) {
1766 else if (num18 < 0.4f) {
1769 else if (num18 < 0.5f) {
1772 else if (num18 < 0.6f) {
1806 else if (num17 < 0.4f) {
1816 else if (num17 < 0.6f) {
1848 for (
int i = 0; i < 16; i++) {
1849 for (
int j = 0; j < 16; j++) {
1851 int num2 = j + chunk.
Origin.
Y;
1852 for (
int num3 = 254; num3 >= 0; num3--) {
1862 for (
int k = 0; k < num5; k++) {
1889 for (
int i = 0; i < 16; i++) {
1890 for (
int j = 0; j < 16; j++) {
1911 for (
int i = 0; i < 16; i++) {
1912 for (
int j = 0; j < 16; j++) {
1935 for (
int i = 0; i < 16; i++) {
1937 int num = random.
Int(4, 12);
1938 for (
int j = 0; j < num; j++) {
1940 int num2 = random.
Int(3, 8);
1942 for (
int k = 0; k < num2; k++) {
1944 (
int)MathF.Floor(zero.
X),
1945 (
int)MathF.Floor(zero.
Y),
1946 (
int)MathF.Floor(zero.
Z),
1956 terrainBrush.
AddCell(0, 0, 0, 150);
1961 for (
int l = 0; l < 16; l++) {
1963 int num3 = random.
Int(3, 7);
1964 for (
int m = 0; m < num3; m++) {
1966 int num4 = random.
Int(3, 6);
1968 for (
int n = 0; n < num4; n++) {
1970 (
int)MathF.Floor(zero2.
X),
1971 (
int)MathF.Floor(zero2.
Y),
1972 (
int)MathF.Floor(zero2.
Z),
1984 for (
int num5 = 0; num5 < 16; num5++) {
1986 int num6 = random.
Int(4, 10);
1987 for (
int num7 = 0; num7 < num6; num7++) {
1989 int num8 = random.
Int(3, 6);
1991 for (
int num9 = 0; num9 < num8; num9++) {
1993 (
int)MathF.Floor(zero3.
X),
1994 (
int)MathF.Floor(zero3.
Y),
1995 (
int)MathF.Floor(zero3.
Z),
2007 for (
int num10 = 0; num10 < 16; num10++) {
2009 int num11 = random.
Int(8, 16);
2010 for (
int num12 = 0; num12 < num11; num12++) {
2013 int num13 = random.
Int(4, 8);
2015 for (
int num14 = 0; num14 < num13; num14++) {
2017 (
int)MathF.Floor(zero4.
X),
2018 (
int)MathF.Floor(zero4.
Y),
2019 (
int)MathF.Floor(zero4.
Z),
2031 for (
int num15 = 0; num15 < 16; num15++) {
2033 int num16 = random.
Int(4, 10);
2034 for (
int num17 = 0; num17 < num16; num17++) {
2036 int num18 = random.
Int(3, 6);
2038 for (
int num19 = 0; num19 < num18; num19++) {
2040 (
int)MathF.Floor(zero5.
X),
2041 (
int)MathF.Floor(zero5.
Y),
2042 (
int)MathF.Floor(zero5.
Z),
2054 for (
int num20 = 0; num20 < 16; num20++) {
2056 int num21 = random.
Int(2, 6);
2057 for (
int num22 = 0; num22 < num21; num22++) {
2059 int num23 = random.
Int(3, 6);
2061 for (
int num24 = 0; num24 < num23; num24++) {
2063 (
int)MathF.Floor(zero6.
X),
2064 (
int)MathF.Floor(zero6.
Y),
2065 (
int)MathF.Floor(zero6.
Z),
2077 for (
int num25 = 0; num25 < 16; num25++) {
2079 int num26 = random.
Int(4, 10);
2080 for (
int num27 = 0; num27 < num26; num27++) {
2082 int num28 = random.
Int(3, 6);
2084 for (
int num29 = 0; num29 < num28; num29++) {
2086 (
int)MathF.Floor(zero7.
X),
2087 (
int)MathF.Floor(zero7.
Y),
2088 (
int)MathF.Floor(zero7.
Z),
2100 for (
int num30 = 0; num30 < 16; num30++) {
2102 int num31 = random.
Int(16, 32);
2103 for (
int num32 = 0; num32 < num31; num32++) {
2106 int num33 = random.
Int(6, 12);
2108 for (
int num34 = 0; num34 < num33; num34++) {
2110 (
int)MathF.Floor(zero8.
X),
2111 (
int)MathF.Floor(zero8.
Y),
2112 (
int)MathF.Floor(zero8.
Z),
2124 for (
int num35 = 0; num35 < 16; num35++) {
2126 int num36 = random.
Int(16, 32);
2127 for (
int num37 = 0; num37 < num36; num37++) {
2130 int num38 = random.
Int(6, 12);
2132 for (
int num39 = 0; num39 < num38; num39++) {
2134 (
int)MathF.Floor(zero9.
X),
2135 (
int)MathF.Floor(zero9.
Y),
2136 (
int)MathF.Floor(zero9.
Z),
2148 for (
int num40 = 0; num40 < 16; num40++) {
2150 int num41 = random.
Int(16, 32);
2151 for (
int num42 = 0; num42 < num41; num42++) {
2154 int num43 = random.
Int(6, 12);
2156 for (
int num44 = 0; num44 < num43; num44++) {
2158 (
int)MathF.Floor(zero10.
X),
2159 (
int)MathF.Floor(zero10.
Y),
2160 (
int)MathF.Floor(zero10.
Z),
2172 for (
int num45 = 0; num45 < 16; num45++) {
2174 int num46 = random.
Int(16, 32);
2175 for (
int num47 = 0; num47 < num46; num47++) {
2177 int num48 = random.
Int(6, 12);
2179 for (
int num49 = 0; num49 < num48; num49++) {
2181 (
int)MathF.Floor(zero11.
X),
2182 (
int)MathF.Floor(zero11.
Y),
2183 (
int)MathF.Floor(zero11.
Z),
2195 for (
int num50 = 0; num50 < 16; num50++) {
2197 int num51 = random.
Int(16, 32);
2198 for (
int num52 = 0; num52 < num51; num52++) {
2201 int num53 = random.
Int(6, 12);
2203 for (
int num54 = 0; num54 < num53; num54++) {
2205 (
int)MathF.Floor(zero12.
X),
2206 (
int)MathF.Floor(zero12.
Y),
2207 (
int)MathF.Floor(zero12.
Z),
2219 for (
int num55 = 0; num55 < 16; num55++) {
2221 int num56 = random.
Int(16, 32);
2222 for (
int num57 = 0; num57 < num56; num57++) {
2225 int num58 = random.
Int(6, 12);
2227 for (
int num59 = 0; num59 < num58; num59++) {
2229 (
int)MathF.Floor(zero13.
X),
2230 (
int)MathF.Floor(zero13.
Y),
2231 (
int)MathF.Floor(zero13.
Z),
2243 for (
int num60 = 0; num60 < 16; num60++) {
2245 int num61 = random.
Int(16, 32);
2246 for (
int num62 = 0; num62 < num61; num62++) {
2248 int num63 = random.
Int(5, 10);
2250 for (
int num64 = 0; num64 < num63; num64++) {
2252 (
int)MathF.Floor(zero14.
X),
2253 (
int)MathF.Floor(zero14.
Y),
2254 (
int)MathF.Floor(zero14.
Z),
2266 int[] array = [4, 6, 8];
2267 for (
int num65 = 0; num65 < 4 * array.Length; num65++) {
2269 int num66 = array[num65 / 4];
2270 int num67 = num65 % 2 + 1;
2271 float num68 = num65 % 4 == 2 ? 0.5f : 1f;
2272 int num69 = num65 % 4 == 1 ? num66 * num66 : 2 * num66 * num66;
2273 for (
int num70 = 0; num70 < num69; num70++) {
2275 float num71 = vector15.
Length();
2276 int num72 = random.
Int(3, 4);
2279 (
int)MathF.Floor(vector15.
X),
2281 (
int)MathF.Floor(vector15.
Y),
2288 (
int)MathF.Floor(vector15.
X),
2290 (
int)MathF.Floor(vector15.
Y),
2300 int[] array2 = [8, 12, 14, 16];
2301 for (
int num73 = 0; num73 < 4 * array2.Length; num73++) {
2303 int num74 = array2[num73 / 4];
2304 int num75 = num74 + 2;
2305 float num76 = num73 % 4 == 2 ? 0.5f : 1f;
2306 int num77 = num73 % 4 == 1 ? num74 * num74 : 2 * num74 * num74;
2307 for (
int num78 = 0; num78 < num77; num78++) {
2309 float num79 = vector16.
Length();
2310 int num80 = random.
Int(3, 4);
2312 int num81 = 1 + (int)
MathUtils.
Lerp(num75, 0f, num79 / num74) + random.
Int(0, 1);
2314 (
int)MathF.Floor(vector16.
X),
2316 (
int)MathF.Floor(vector16.
Y),
2323 (
int)MathF.Floor(vector16.
X),
2325 (
int)MathF.Floor(vector16.
Y),
2335 for (
int num82 = 0; num82 < 7; num82++) {
2337 for (
int num83 = 0; num83 < 3; num83++) {
2339 int num84 = 6 + 4 * num82;
2340 int max = 3 + num82 / 3;
2341 int max2 = 9 + num82;
2342 for (
int num85 = 0; num85 < num84; num85++) {
2343 int num86 = random.
Int(2, max);
2344 int num87 = random.
Int(8, max2) - 2 * num86;
2347 for (
int num88 = 0; num88 < num87; num88++) {
2349 (
int)MathF.Floor(zero15.
X) - num86 / 2,
2350 (
int)MathF.Floor(zero15.
Y) - num86 / 2,
2351 (
int)MathF.Floor(zero15.
Z) - num86 / 2,
static int Min(int x1, int x2)
static float Saturate(float x)
static float PowSign(float x, float n)
static int Max(int x1, int x2)
static float Lerp(float x1, float x2, float f)
virtual bool IsTransparent_(int value)
virtual bool IsCollidable_(int value)
static FluidBlock[] FluidBlocks
static int SetSubvariant(int data, int face)
static int SetFace(int data, int face)
static int SetIsTop(int data, bool isTop)
static int SetVariant(int data, int variant)
static int SetRotation(int data, int rotation)
static int SetFace(int data, int face)
static bool IsGrowthStopCell(int x, int y, int z)
static int GenerateRandomPlantValue(Random random, int groundValue, int temperature, int humidity, int y)
static ReadOnlyList< TerrainBrush > GetTreeBrushes(TreeType treeType)
static ? TreeType GenerateRandomTreeType(Random random, int temperature, int humidity, int y, float densityMultiplier=1f)
static int GetTreeTrunkValue(TreeType treeType)
static int GetTreeLeavesValue(TreeType treeType)
static float OctavedNoise(float x, float frequency, int octaves, float frequencyStep, float amplitudeStep, bool ridged=false)
static int SetSpikesState(int data, bool spikesState)
static int SetRotation(int data, int rotation)
static bool CanSupportSnow(int value)
static Func< int, int, bool > ShaftHasSnowOnIce
static Func< int, int > GetTemperatureAdjustmentAtHeight
static Func< int, int, bool > IsPlaceFrozen
void AddBox(int x, int y, int z, int sizeX, int sizeY, int sizeZ, Brush brush)
void AddCell(int x, int y, int z, Brush brush)
static int CalculateCellIndex(int x, int y, int z)
virtual int GetCellValueFast(int index)
virtual void SetCellValueFast(int x, int y, int z, int value)
virtual int GetTemperatureFast(int x, int z)
virtual void SetHumidityFast(int x, int z, int humidity)
virtual void SetTemperatureFast(int x, int z, int temperature)
virtual int GetCellContentsFast(int x, int y, int z)
virtual int GetHumidityFast(int x, int z)
virtual int CalculateTopmostCellHeight(int x, int z)
void Set(int x, int y, float value)
float Sample(float x, float y)
Grid2d(int sizeX, int sizeY)
float Get(int x, int y, int z)
float Sample(float x, float y, float z)
Grid3d(int sizeX, int sizeY, int sizeZ)
void Get8(int x, int y, int z, out float v111, out float v211, out float v121, out float v221, out float v112, out float v212, out float v122, out float v222)
void Set(int x, int y, int z, float value)
static List< TerrainBrush > m_coalBrushes
static List< TerrainBrush > m_germaniumBrushes
float CalculateMountainRangeFactor(float x, float z)
static TerrainContentsGenerator22()
void GenerateSurface(TerrainChunk chunk)
float ScoreSpawnPosition(int x, int z)
float TGShoreFluctuations
void GenerateChunkContentsPass1(TerrainChunk chunk)
WorldSettings m_worldSettings
void GenerateBedrockAndAir(TerrainChunk chunk)
void GenerateIvy(TerrainChunk chunk)
float TGMountainsStrength
void GenerateTerrain(TerrainChunk chunk, int x1, int z1, int x2, int z2)
void GenerateCacti(TerrainChunk chunk)
Vector2 m_temperatureOffset
static List< List< TerrainBrush > > m_caveBrushesByType
TerrainContentsGenerator22(SubsystemTerrain subsystemTerrain)
static List< TerrainBrush > m_magmaPocketBrushes
virtual void UpdateFluidIsTop(TerrainChunk chunk)
Vector2 m_mountainsOffset
static float TGMountainsDetailPersistence
void GenerateGrassAndPlants(TerrainChunk chunk)
void GenerateBottomSuckers(TerrainChunk chunk)
static List< TerrainBrush > m_ironBrushes
static List< TerrainBrush > m_sandPocketBrushes
static float TGMountainsDetailFreq
float TGTurbulenceStrength
void GenerateCaves(TerrainChunk chunk)
SubsystemTerrain m_subsystemTerrain
void GeneratePumpkins(TerrainChunk chunk)
void GenerateChunkContentsPass3(TerrainChunk chunk)
static List< TerrainBrush > m_basaltPocketBrushes
static List< TerrainBrush > m_limestonePocketBrushes
void GenerateKelp(TerrainChunk chunk)
static List< TerrainBrush > m_dirtPocketBrushes
void GenerateSeagrass(TerrainChunk chunk)
void GenerateSnowAndIce(TerrainChunk chunk)
static List< TerrainBrush > m_waterPocketBrushes
static void CreateBrushes()
float TGMountainRangeFreq
float CalculateHeight(float x, float z)
void GenerateTraps(TerrainChunk chunk)
void GenerateGraves(TerrainChunk chunk)
Vector3 FindCoarseSpawnPosition()
SubsystemBottomSuckerBlockBehavior m_subsystemBottomSuckerBlockBehavior
static List< TerrainBrush > m_copperBrushes
static List< TerrainBrush > m_saltpeterBrushes
static List< TerrainBrush > m_gravelPocketBrushes
void GenerateChunkContentsPass4(TerrainChunk chunk)
int CalculateHumidity(float x, float z)
void GenerateMinerals(TerrainChunk chunk)
float TGOceanSlopeVariation
float TGTurbulencePersistence
static float TGSurfaceMultiplier
void GenerateChunkContentsPass2(TerrainChunk chunk)
int CalculateTemperature(float x, float z)
float CalculateOceanShoreDistance(float x, float z)
static List< TerrainBrush > m_diamondBrushes
static float Squish(float v, float zero, float one)
float TGMountainsPercentage
static List< TerrainBrush > m_clayPocketBrushes
float CalculateOceanShoreX(float z)
static List< TerrainBrush > m_sulphurBrushes
float CalculateOceanShoreZ(float x)
void GenerateTreesAndLogs(TerrainChunk chunk)
static List< TerrainBrush > m_granitePocketBrushes
void PropagateFluidsDownwards(TerrainChunk chunk)
static int TGMountainsDetailOctaves
void GeneratePockets(TerrainChunk chunk)
void GenerateSurfaceParameters(TerrainChunk chunk, int x1, int z1, int x2, int z2)
float TGShoreFluctuationsScaling
static int ExtractContents(int value)
static int ReplaceData(int value, int data)
virtual int GetCellValueFast(int x, int y, int z)
virtual int GetHumidity(int x, int z)
virtual void SetCellValueFast(int x, int y, int z, int value)
static int ToCell(float x)
virtual int GetCellContentsFast(int x, int y, int z)
static int ReplaceContents(int value, int contents)
方块值的最低10位,替换为目标Content
static int MakeBlockValue(int contents)
static int ExtractData(int value)
virtual int CalculateTopmostCellHeight(int x, int z)
virtual int GetTemperature(int x, int z)
static int SetCutFace(int data, int cutFace)
virtual Subsystem FindSubsystem(Type type, string name, bool throwOnError)
static readonly Vector2 Zero
static Vector2 Round(Vector2 v)
static Vector3 Cross(Vector3 v1, Vector3 v2)
static Vector3 Normalize(Vector3 v)
static readonly Vector3 Zero
static int OppositeFace(int face)
static Point3 FaceToPoint3(int face)
static int Point3ToFace(Point3 p, int maxFace=5)