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

◆ LavaCollision()

static bool Terraria.Collision.LavaCollision ( Vector2 Position,
int Width,
int Height )
inlinestatic

Definition at line 1441 of file Collision.cs.

1442 {
1443 int value = (int)(Position.X / 16f) - 1;
1444 int value2 = (int)((Position.X + (float)Width) / 16f) + 2;
1445 int value3 = (int)(Position.Y / 16f) - 1;
1446 int value4 = (int)((Position.Y + (float)Height) / 16f) + 2;
1447 int num = Utils.Clamp(value, 0, Main.maxTilesX - 1);
1448 value2 = Utils.Clamp(value2, 0, Main.maxTilesX - 1);
1449 value3 = Utils.Clamp(value3, 0, Main.maxTilesY - 1);
1450 value4 = Utils.Clamp(value4, 0, Main.maxTilesY - 1);
1451 Vector2 vector = default(Vector2);
1452 for (int i = num; i < value2; i++)
1453 {
1454 for (int j = value3; j < value4; j++)
1455 {
1456 if (Main.tile[i, j] != null && Main.tile[i, j].liquid > 0 && Main.tile[i, j].lava())
1457 {
1458 vector.X = i * 16;
1459 vector.Y = j * 16;
1460 int num2 = 16;
1461 float num3 = 256 - Main.tile[i, j].liquid;
1462 num3 /= 32f;
1463 vector.Y += num3 * 2f;
1464 num2 -= (int)(num3 * 2f);
1465 if (Position.X + (float)Width > vector.X && Position.X < vector.X + 16f && Position.Y + (float)Height > vector.Y && Position.Y < vector.Y + (float)num2)
1466 {
1467 return true;
1468 }
1469 }
1470 }
1471 }
1472 return false;
1473 }

References Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Main.tile, and System.value.

Referenced by Terraria.Projectile.AI_152_SuperStarSlash(), Terraria.Player.CheckForGoodTeleportationSpot(), Terraria.NPC.Collision_LavaCollision(), Terraria.NPC.DoDeathEvents(), Terraria.GameContent.Shaders.WaterShaderData.DrawWaves(), Terraria.GameContent.TeleportHelpers.IsInSolidTilesExtended(), Terraria.Item.MoveInWorld(), Terraria.Player.Update(), and Terraria.Projectile.Update().