Terraria v1.4.4.9
Terraria source code documentation
All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros

◆ WetCollision()

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

Definition at line 1359 of file Collision.cs.

1360 {
1361 honey = false;
1362 shimmer = false;
1363 Vector2 vector = new Vector2(Position.X + (float)(Width / 2), Position.Y + (float)(Height / 2));
1364 int num = 10;
1365 int num2 = Height / 2;
1366 if (num > Width)
1367 {
1368 num = Width;
1369 }
1370 if (num2 > Height)
1371 {
1372 num2 = Height;
1373 }
1374 vector = new Vector2(vector.X - (float)(num / 2), vector.Y - (float)(num2 / 2));
1375 int value = (int)(Position.X / 16f) - 1;
1376 int value2 = (int)((Position.X + (float)Width) / 16f) + 2;
1377 int value3 = (int)(Position.Y / 16f) - 1;
1378 int value4 = (int)((Position.Y + (float)Height) / 16f) + 2;
1379 int num3 = Utils.Clamp(value, 0, Main.maxTilesX - 1);
1380 value2 = Utils.Clamp(value2, 0, Main.maxTilesX - 1);
1381 value3 = Utils.Clamp(value3, 0, Main.maxTilesY - 1);
1382 value4 = Utils.Clamp(value4, 0, Main.maxTilesY - 1);
1383 Vector2 vector2 = default(Vector2);
1384 for (int i = num3; i < value2; i++)
1385 {
1386 for (int j = value3; j < value4; j++)
1387 {
1388 if (Main.tile[i, j] == null)
1389 {
1390 continue;
1391 }
1392 if (Main.tile[i, j].liquid > 0)
1393 {
1394 vector2.X = i * 16;
1395 vector2.Y = j * 16;
1396 int num4 = 16;
1397 float num5 = 256 - Main.tile[i, j].liquid;
1398 num5 /= 32f;
1399 vector2.Y += num5 * 2f;
1400 num4 -= (int)(num5 * 2f);
1401 if (vector.X + (float)num > vector2.X && vector.X < vector2.X + 16f && vector.Y + (float)num2 > vector2.Y && vector.Y < vector2.Y + (float)num4)
1402 {
1403 if (Main.tile[i, j].honey())
1404 {
1405 honey = true;
1406 }
1407 if (Main.tile[i, j].shimmer())
1408 {
1409 shimmer = true;
1410 }
1411 return true;
1412 }
1413 }
1414 else
1415 {
1416 if (!Main.tile[i, j].active() || Main.tile[i, j].slope() == 0 || j <= 0 || Main.tile[i, j - 1] == null || Main.tile[i, j - 1].liquid <= 0)
1417 {
1418 continue;
1419 }
1420 vector2.X = i * 16;
1421 vector2.Y = j * 16;
1422 int num6 = 16;
1423 if (vector.X + (float)num > vector2.X && vector.X < vector2.X + 16f && vector.Y + (float)num2 > vector2.Y && vector.Y < vector2.Y + (float)num6)
1424 {
1425 if (Main.tile[i, j - 1].honey())
1426 {
1427 honey = true;
1428 }
1429 else if (Main.tile[i, j - 1].shimmer())
1430 {
1431 shimmer = true;
1432 }
1433 return true;
1434 }
1435 }
1436 }
1437 }
1438 return false;
1439 }
static bool honey
Definition Collision.cs:24
static bool shimmer
Definition Collision.cs:26

References Terraria.Collision.honey, Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Collision.shimmer, Terraria.Main.tile, and System.value.

Referenced by Terraria.NPC.AI_007_TownEntities(), Terraria.Projectile.AI_145_BookStaffStorm(), Terraria.Player.CheckForGoodTeleportationSpot(), Terraria.NPC.Collision_WaterCollision(), Terraria.GameContent.Shaders.WaterShaderData.DrawWaves(), Terraria.MessageBuffer.GetData(), Terraria.GameContent.ShimmerHelper.IsSpotShimmerFree(), Terraria.Item.MoveInWorld(), Terraria.Dust.NewDust(), Terraria.Item.NewItem(), Terraria.NPC.NewNPC(), Terraria.Projectile.NewProjectile(), Terraria.Player.ShimmerUnstuck(), Terraria.Player.SporeSac(), Terraria.Gore.Update(), Terraria.Rain.Update(), Terraria.Player.Update(), Terraria.Projectile.Update(), Terraria.Dust.UpdateDust(), and Terraria.NPC.UpdateNPC().