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

◆ HitTiles()

static void Terraria.Collision.HitTiles ( Vector2 Position,
Vector2 Velocity,
int Width,
int Height )
inlinestatic

Definition at line 2537 of file Collision.cs.

2538 {
2539 Vector2 vector = Position + Velocity;
2540 int num = (int)(Position.X / 16f) - 1;
2541 int num2 = (int)((Position.X + (float)Width) / 16f) + 2;
2542 int num3 = (int)(Position.Y / 16f) - 1;
2543 int num4 = (int)((Position.Y + (float)Height) / 16f) + 2;
2544 if (num < 0)
2545 {
2546 num = 0;
2547 }
2548 if (num2 > Main.maxTilesX)
2549 {
2550 num2 = Main.maxTilesX;
2551 }
2552 if (num3 < 0)
2553 {
2554 num3 = 0;
2555 }
2556 if (num4 > Main.maxTilesY)
2557 {
2558 num4 = Main.maxTilesY;
2559 }
2560 Vector2 vector2 = default(Vector2);
2561 for (int i = num; i < num2; i++)
2562 {
2563 for (int j = num3; j < num4; j++)
2564 {
2565 if (Main.tile[i, j] != null && !Main.tile[i, j].inActive() && Main.tile[i, j].active() && (Main.tileSolid[Main.tile[i, j].type] || (Main.tileSolidTop[Main.tile[i, j].type] && Main.tile[i, j].frameY == 0)))
2566 {
2567 vector2.X = i * 16;
2568 vector2.Y = j * 16;
2569 int num5 = 16;
2570 if (Main.tile[i, j].halfBrick())
2571 {
2572 vector2.Y += 8f;
2573 num5 -= 8;
2574 }
2575 if (vector.X + (float)Width >= vector2.X && vector.X <= vector2.X + 16f && vector.Y + (float)Height >= vector2.Y && vector.Y <= vector2.Y + (float)num5)
2576 {
2577 WorldGen.KillTile(i, j, fail: true, effectOnly: true);
2578 }
2579 }
2580 }
2581 }
2582 }

References Terraria.WorldGen.KillTile(), Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Main.tile, Terraria.Main.tileSolid, and Terraria.Main.tileSolidTop.

Referenced by Terraria.Projectile.AI_015_HandleMovementCollision(), Terraria.Projectile.AI_015_HandleMovementCollision_Old(), Terraria.Projectile.HandleMovement(), and Terraria.Projectile.Kill().