Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ digTunnel()

static Vector2D Terraria.WorldGen.digTunnel ( double X,
double Y,
double xDir,
double yDir,
int Steps,
int Size,
bool Wet = false )
inlinestatic

Definition at line 69255 of file WorldGen.cs.

69256 {
69257 //IL_024e: Unknown result type (might be due to invalid IL or missing references)
69258 double num = X;
69259 double num2 = Y;
69260 try
69261 {
69262 double num3 = 0.0;
69263 double num4 = 0.0;
69264 double num5 = Size;
69265 num = Utils.Clamp(num, num5 + 1.0, (double)Main.maxTilesX - num5 - 1.0);
69266 num2 = Utils.Clamp(num2, num5 + 1.0, (double)Main.maxTilesY - num5 - 1.0);
69267 for (int i = 0; i < Steps; i++)
69268 {
69269 for (int j = (int)(num - num5); (double)j <= num + num5; j++)
69270 {
69271 for (int k = (int)(num2 - num5); (double)k <= num2 + num5; k++)
69272 {
69273 if (Math.Abs((double)j - num) + Math.Abs((double)k - num2) < num5 * (1.0 + (double)genRand.Next(-10, 11) * 0.005) && j >= 0 && j < Main.maxTilesX && k >= 0 && k < Main.maxTilesY)
69274 {
69275 Main.tile[j, k].active(active: false);
69276 if (Wet)
69277 {
69278 Main.tile[j, k].liquid = byte.MaxValue;
69279 }
69280 }
69281 }
69282 }
69283 num5 += (double)genRand.Next(-50, 51) * 0.03;
69284 if (num5 < (double)Size * 0.6)
69285 {
69286 num5 = (double)Size * 0.6;
69287 }
69288 if (num5 > (double)(Size * 2))
69289 {
69290 num5 = Size * 2;
69291 }
69292 num3 += (double)genRand.Next(-20, 21) * 0.01;
69293 num4 += (double)genRand.Next(-20, 21) * 0.01;
69294 if (num3 < -1.0)
69295 {
69296 num3 = -1.0;
69297 }
69298 if (num3 > 1.0)
69299 {
69300 num3 = 1.0;
69301 }
69302 if (num4 < -1.0)
69303 {
69304 num4 = -1.0;
69305 }
69306 if (num4 > 1.0)
69307 {
69308 num4 = 1.0;
69309 }
69310 num += (xDir + num3) * 0.6;
69311 num2 += (yDir + num4) * 0.6;
69312 }
69313 }
69314 catch
69315 {
69316 }
69317 return new Vector2D(num, num2);
69318 }
static double Abs(double value)
static UnifiedRandom genRand
Definition WorldGen.cs:1215

References System.Math.Abs(), Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Main.tile, System.X, and System.Y.