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

◆ SolidCollision() [1/2]

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

Definition at line 2221 of file Collision.cs.

2222 {
2223 int value = (int)(Position.X / 16f) - 1;
2224 int value2 = (int)((Position.X + (float)Width) / 16f) + 2;
2225 int value3 = (int)(Position.Y / 16f) - 1;
2226 int value4 = (int)((Position.Y + (float)Height) / 16f) + 2;
2227 int num = Utils.Clamp(value, 0, Main.maxTilesX - 1);
2228 value2 = Utils.Clamp(value2, 0, Main.maxTilesX - 1);
2229 value3 = Utils.Clamp(value3, 0, Main.maxTilesY - 1);
2230 value4 = Utils.Clamp(value4, 0, Main.maxTilesY - 1);
2231 Vector2 vector = default(Vector2);
2232 for (int i = num; i < value2; i++)
2233 {
2234 for (int j = value3; j < value4; j++)
2235 {
2236 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])
2237 {
2238 vector.X = i * 16;
2239 vector.Y = j * 16;
2240 int num2 = 16;
2241 if (Main.tile[i, j].halfBrick())
2242 {
2243 vector.Y += 8f;
2244 num2 -= 8;
2245 }
2246 if (Position.X + (float)Width > vector.X && Position.X < vector.X + 16f && Position.Y + (float)Height > vector.Y && Position.Y < vector.Y + (float)num2)
2247 {
2248 return true;
2249 }
2250 }
2251 }
2252 }
2253 return false;
2254 }

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

Referenced by Terraria.NPC.AI(), Terraria.NPC.AI_001_Slimes(), Terraria.NPC.AI_002_FloatingEye(), Terraria.NPC.AI_003_Fighters(), Terraria.Projectile.AI_026(), Terraria.Projectile.AI_062(), Terraria.Projectile.AI_067_FreakingPirates(), Terraria.Projectile.AI_067_TigerSpecialAttack(), Terraria.NPC.AI_069_DukeFishron(), Terraria.NPC.AI_107_ImprovedWalkers(), Terraria.NPC.AI_108_DivingFlyer(), Terraria.NPC.AI_112_FairyCritter(), Terraria.NPC.AI_117_BloodNautilus(), Terraria.NPC.AI_123_Deerclops_Movement(), Terraria.Projectile.AI_145_BookStaffStorm(), Terraria.Projectile.AI_158_BabyBird(), Terraria.Player.CanMoveForwardOnRope(), Terraria.Player.CanSnapToPosition(), Terraria.Player.ChangeDir(), Terraria.Player.CheckForGoodTeleportationSpot(), Terraria.Player.FindPulley(), Terraria.Player.GrappleMovement(), Terraria.GameContent.TeleportHelpers.IsInSolidTilesExtended(), Terraria.GameContent.ShimmerHelper.IsSpotShimmerFree(), Terraria.Player.ItemCheck_UseTeleportRod(), Terraria.Player.SporeSac(), Terraria.Gore.Update(), Terraria.Rain.Update(), Terraria.Player.Update(), Terraria.Dust.UpdateDust(), and Terraria.WorldGen.UpdateWorld().