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

◆ GetTileRotation()

static float Terraria.Collision.GetTileRotation ( Vector2 position)
inlinestatic

Definition at line 3257 of file Collision.cs.

3258 {
3259 float num = position.Y % 16f;
3260 int num2 = (int)(position.X / 16f);
3261 int num3 = (int)(position.Y / 16f);
3262 Tile tile = Main.tile[num2, num3];
3263 bool flag = false;
3264 for (int num4 = 2; num4 >= 0; num4--)
3265 {
3266 if (tile.active())
3267 {
3268 if (Main.tileSolid[tile.type])
3269 {
3270 int num5 = tile.blockType();
3271 if (tile.type != 19)
3272 {
3273 return num5 switch
3274 {
3275 1 => 0f,
3276 2 => (float)Math.PI / 4f,
3277 3 => -(float)Math.PI / 4f,
3278 _ => 0f,
3279 };
3280 }
3281 int num6 = tile.frameX / 18;
3282 if (((num6 >= 0 && num6 <= 7) || (num6 >= 12 && num6 <= 16)) && (num == 0f || flag))
3283 {
3284 return 0f;
3285 }
3286 switch (num6)
3287 {
3288 case 8:
3289 case 19:
3290 case 21:
3291 case 23:
3292 return -(float)Math.PI / 4f;
3293 case 10:
3294 case 20:
3295 case 22:
3296 case 24:
3297 return (float)Math.PI / 4f;
3298 case 25:
3299 case 26:
3300 if (!flag)
3301 {
3302 switch (num5)
3303 {
3304 case 2:
3305 return (float)Math.PI / 4f;
3306 case 3:
3307 return -(float)Math.PI / 4f;
3308 }
3309 break;
3310 }
3311 return 0f;
3312 }
3313 }
3314 else if (Main.tileSolidTop[tile.type] && tile.frameY == 0 && flag)
3315 {
3316 return 0f;
3317 }
3318 }
3319 num3++;
3320 tile = Main.tile[num2, num3];
3321 flag = true;
3322 }
3323 return 0f;
3324 }
const double PI
Definition Math.cs:16

References Terraria.Tile.active(), Terraria.Tile.blockType(), Terraria.Tile.frameY, System.Math.PI, Terraria.Main.tile, Terraria.Main.tileSolid, Terraria.Main.tileSolidTop, Terraria.Tile.type, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.

Referenced by Terraria.Mount.UpdateFrame().