private void PlaceClusters(DesertBiome.ClusterGroup clusters, Point start, Vector2 scale) { int num1 = (int)(scale.X * (double)clusters.Width); int num2 = (int)(scale.Y * (double)clusters.Height); Vector2 vector2_1; // ISSUE: explicit reference operation ((Vector2)@vector2_1).\u002Ector((float)num1, (float)num2); Vector2 vector2_2; // ISSUE: explicit reference operation ((Vector2)@vector2_2).\u002Ector((float)clusters.Width, (float)clusters.Height); for (int index1 = -20; index1 < num1 + 20; ++index1) { for (int index2 = -20; index2 < num2 + 20; ++index2) { float num3 = 0.0f; int num4 = -1; float num5 = 0.0f; int x = index1 + start.X; int y = index2 + start.Y; Vector2 vector2_3 = Vector2.op_Multiply(Vector2.op_Division(new Vector2((float)index1, (float)index2), vector2_1), vector2_2); Vector2 vector2_4 = Vector2.op_Subtraction(Vector2.op_Multiply(Vector2.op_Division(new Vector2((float)index1, (float)index2), vector2_1), 2f), Vector2.get_One()); // ISSUE: explicit reference operation float num6 = ((Vector2)@vector2_4).Length(); for (int index3 = 0; index3 < clusters.Count; ++index3) { DesertBiome.Cluster cluster = clusters[index3]; if ((double)Math.Abs((float)(cluster[0].Position.X - vector2_3.X)) <= 10.0 && (double)Math.Abs((float)(cluster[0].Position.Y - vector2_3.Y)) <= 10.0) { float num7 = 0.0f; foreach (DesertBiome.Hub hub in (List <DesertBiome.Hub>)cluster) { num7 += 1f / Vector2.DistanceSquared(hub.Position, vector2_3); } if ((double)num7 > (double)num3) { if ((double)num3 > (double)num5) { num5 = num3; } num3 = num7; num4 = index3; } else if ((double)num7 > (double)num5) { num5 = num7; } } } float num8 = num3 + num5; Tile tile = GenBase._tiles[x, y]; bool flag = (double)num6 >= 0.800000011920929; if ((double)num8 > 3.5) { tile.ClearEverything(); tile.wall = (byte)187; tile.liquid = (byte)0; if (num4 % 15 == 2) { tile.ResetToType((ushort)404); tile.wall = (byte)187; tile.active(true); } Tile.SmoothSlope(x, y, true); } else if ((double)num8 > 1.79999995231628) { tile.wall = (byte)187; if (!flag || tile.active()) { tile.ResetToType((ushort)396); tile.wall = (byte)187; tile.active(true); Tile.SmoothSlope(x, y, true); } tile.liquid = (byte)0; } else if ((double)num8 > 0.699999988079071 || !flag) { if (!flag || tile.active()) { tile.ResetToType((ushort)397); tile.active(true); Tile.SmoothSlope(x, y, true); } tile.liquid = (byte)0; tile.wall = (byte)216; } else if ((double)num8 > 0.25 && (double)GenBase._random.NextFloat() < ((double)num8 - 0.25) / 0.449999988079071) { if (tile.active()) { tile.ResetToType((ushort)397); tile.active(true); Tile.SmoothSlope(x, y, true); tile.wall = (byte)216; } tile.liquid = (byte)0; tile.wall = (byte)187; } } } }
private void PlaceClusters(DesertBiome.ClusterGroup clusters, Point start, Vector2 scale) { int x = (int)(scale.X * (float)clusters.Width); int y = (int)(scale.Y * (float)clusters.Height); Vector2 vector2 = new Vector2((float)x, (float)y); Vector2 vector21 = new Vector2((float)clusters.Width, (float)clusters.Height); for (int i = -20; i < x + 20; i++) { for (int j = -20; j < y + 20; j++) { float single = 0f; int num = -1; float single1 = 0f; int x1 = i + start.X; int y1 = j + start.Y; Vector2 vector22 = (new Vector2((float)i, (float)j) / vector2) * vector21; Vector2 vector23 = ((new Vector2((float)i, (float)j) / vector2) * 2f) - Vector2.One; float single2 = vector23.Length(); for (int k = 0; k < clusters.Count; k++) { DesertBiome.Cluster item = clusters[k]; if (Math.Abs(item[0].Position.X - vector22.X) <= 10f && Math.Abs(item[0].Position.Y - vector22.Y) <= 10f) { float single3 = 0f; foreach (DesertBiome.Hub hub in item) { single3 = single3 + 1f / Vector2.DistanceSquared(hub.Position, vector22); } if (single3 > single) { if (single > single1) { single1 = single; } single = single3; num = k; } else if (single3 > single1) { single1 = single3; } } } float single4 = single + single1; Tile tile = GenBase._tiles[x1, y1]; bool flag = single2 >= 0.8f; if (single4 > 3.5f) { tile.ClearEverything(); tile.wall = 187; tile.liquid = 0; if (num % 15 == 2) { tile.ResetToType(404); tile.wall = 187; tile.active(true); } Tile.SmoothSlope(x1, y1, true); } else if (single4 > 1.8f) { tile.wall = 187; if (!flag || tile.active()) { tile.ResetToType(396); tile.wall = 187; tile.active(true); Tile.SmoothSlope(x1, y1, true); } tile.liquid = 0; } else if (single4 > 0.7f || !flag) { if (!flag || tile.active()) { tile.ResetToType(397); tile.active(true); Tile.SmoothSlope(x1, y1, true); } tile.liquid = 0; tile.wall = 216; } else if (single4 > 0.25f) { float single5 = (single4 - 0.25f) / 0.45f; if (GenBase._random.NextFloat() < single5) { if (tile.active()) { tile.ResetToType(397); tile.active(true); Tile.SmoothSlope(x1, y1, true); tile.wall = 216; } tile.liquid = 0; tile.wall = 187; } } } } }
// Token: 0x06000FC9 RID: 4041 RVA: 0x003FAC60 File Offset: 0x003F8E60 private void PlaceClusters(DesertBiome.ClusterGroup clusters, Point start, Vector2 scale) { int num = (int)(scale.X * (float)clusters.Width); int num2 = (int)(scale.Y * (float)clusters.Height); Vector2 value = new Vector2((float)num, (float)num2); Vector2 value2 = new Vector2((float)clusters.Width, (float)clusters.Height); for (int i = -20; i < num + 20; i++) { for (int j = -20; j < num2 + 20; j++) { float num3 = 0f; int num4 = -1; float num5 = 0f; int num6 = i + start.X; int num7 = j + start.Y; Vector2 vector = new Vector2((float)i, (float)j) / value * value2; float num8 = (new Vector2((float)i, (float)j) / value * 2f - Vector2.One).Length(); for (int k = 0; k < clusters.Count; k++) { DesertBiome.Cluster cluster = clusters[k]; if (Math.Abs(cluster[0].Position.X - vector.X) <= 10f && Math.Abs(cluster[0].Position.Y - vector.Y) <= 10f) { float num9 = 0f; foreach (DesertBiome.Hub current in cluster) { num9 += 1f / Vector2.DistanceSquared(current.Position, vector); } if (num9 > num3) { if (num3 > num5) { num5 = num3; } num3 = num9; num4 = k; } else if (num9 > num5) { num5 = num9; } } } float num10 = num3 + num5; Tile tile = GenBase._tiles[num6, num7]; bool flag = num8 >= 0.8f; if (num10 > 3.5f) { tile.ClearEverything(); tile.wall = 187; tile.liquid = 0; if (num4 % 15 == 2) { tile.ResetToType(404); tile.wall = 187; tile.active(true); } Tile.SmoothSlope(num6, num7, true); } else if (num10 > 1.8f) { tile.wall = 187; if (!flag || tile.active()) { tile.ResetToType(396); tile.wall = 187; tile.active(true); Tile.SmoothSlope(num6, num7, true); } tile.liquid = 0; } else if (num10 > 0.7f || !flag) { if (!flag || tile.active()) { tile.ResetToType(397); tile.active(true); Tile.SmoothSlope(num6, num7, true); } tile.liquid = 0; tile.wall = 216; } else if (num10 > 0.25f) { float num11 = (num10 - 0.25f) / 0.45f; if (GenBase._random.NextFloat() < num11) { if (tile.active()) { tile.ResetToType(397); tile.active(true); Tile.SmoothSlope(num6, num7, true); tile.wall = 216; } tile.liquid = 0; tile.wall = 187; } } } } }