32 public static bool up;
66 float num = (b2.X -
b1.X) * (
a1.Y -
b1.Y) - (b2.Y -
b1.Y) * (
a1.X -
b1.X);
95 double num = q1.X -
q0.X;
97 double num3 = q0.X - p.
X;
98 double num4 = q0.Y - p.
Y;
102 throw new Exception(
"Expected line segment, not point.");
115 float num = a2.X -
a1.X;
133 float x = a2.X *
num3 + a1.X * (1f -
num3);
134 float y = a2.Y *
num3 + a1.Y * (1f -
num3);
137 return list.ToArray();
152 return new float[2] { num,
num2 };
154 return new float[1] { num };
161 return position1.Y + dimensions1.Y >
position2.Y;
179 else if (point.
X - num > 0f)
191 else if (point.
Y -
num2 > 0f)
208 if ((
num2 & num) != 0)
212 if (((uint)
num2 & 5
u) != 0)
215 if (((uint)
num2 & 4
u) != 0)
225 if (((uint)
num2 & 8
u) != 0)
251 if (dimensions.
X > 0f)
258 position.X += dimensions.X - num;
259 dimensions.X = 0f - dimensions.X +
lineWidth;
261 if (dimensions.
Y > 0f)
268 position.Y += dimensions.Y - num;
269 dimensions.Y = 0f - dimensions.Y +
lineWidth;
291 for (
int i = 0; i <
array.Length; i++)
303 for (
int j = 0;
j <
array.Length;
j++)
308 float num5 = vector7.X * vector8.Y - vector7.Y *
vector8.X;
324 num5 = vector7.X * vector8.Y - vector7.Y *
vector8.X;
361 int num = (Position1.X +
Width1 / 2) / 16;
371 num = Main.maxTilesX - 1;
379 num3 = Main.maxTilesX - 1;
387 num2 = Main.maxTilesY - 1;
395 num4 = Main.maxTilesY - 1;
409 num = ((num >=
num3) ? (num - 1) : (num + 1));
418 if (!
Main.
tile[num,
num2 - 1].inActive() &&
Main.
tile[num,
num2 - 1].active() &&
Main.
tileSolid[
Main.
tile[num,
num2 - 1].type] && !
Main.
tileSolidTop[
Main.
tile[num,
num2 - 1].type] &&
Main.
tile[num,
num2 - 1].slope() == 0 && !
Main.
tile[num,
num2 - 1].halfBrick() && !
Main.
tile[num,
num2 + 1].inActive() &&
Main.
tile[num,
num2 + 1].active() &&
Main.
tileSolid[
Main.
tile[num,
num2 + 1].type] && !
Main.
tileSolidTop[
Main.
tile[num,
num2 + 1].type] &&
Main.
tile[num,
num2 + 1].slope() == 0 && !
Main.
tile[num,
num2 + 1].halfBrick())
434 if (!
Main.
tile[num - 1,
num2].inActive() &&
Main.
tile[num - 1,
num2].active() &&
Main.
tileSolid[
Main.
tile[num - 1,
num2].type] && !
Main.
tileSolidTop[
Main.
tile[num - 1,
num2].type] &&
Main.
tile[num - 1,
num2].slope() == 0 && !
Main.
tile[num - 1,
num2].halfBrick() && !
Main.
tile[num + 1,
num2].inActive() &&
Main.
tile[num + 1,
num2].active() &&
Main.
tileSolid[
Main.
tile[num + 1,
num2].type] && !
Main.
tileSolidTop[
Main.
tile[num + 1,
num2].type] &&
Main.
tile[num + 1,
num2].slope() == 0 && !
Main.
tile[num + 1,
num2].halfBrick())
465 num = Main.maxTilesX - 1;
473 num3 = Main.maxTilesX - 1;
481 num2 = Main.maxTilesY - 1;
489 num4 = Main.maxTilesY - 1;
503 num = ((num >=
num3) ? (num - 1) : (num + 1));
512 if (!
Main.
tile[num,
num2 - 1].inActive() &&
Main.
tile[num,
num2 - 1].active() &&
Main.
tileSolid[
Main.
tile[num,
num2 - 1].type] && !
Main.
tileSolidTop[
Main.
tile[num,
num2 - 1].type] &&
Main.
tile[num,
num2 - 1].slope() == 0 && !
Main.
tile[num,
num2 - 1].halfBrick() && !
Main.
tile[num,
num2 + 1].inActive() &&
Main.
tile[num,
num2 + 1].active() &&
Main.
tileSolid[
Main.
tile[num,
num2 + 1].type] && !
Main.
tileSolidTop[
Main.
tile[num,
num2 + 1].type] &&
Main.
tile[num,
num2 + 1].slope() == 0 && !
Main.
tile[num,
num2 + 1].halfBrick())
528 if (!
Main.
tile[num - 1,
num2].inActive() &&
Main.
tile[num - 1,
num2].active() &&
Main.
tileSolid[
Main.
tile[num - 1,
num2].type] && !
Main.
tileSolidTop[
Main.
tile[num - 1,
num2].type] &&
Main.
tile[num - 1,
num2].slope() == 0 && !
Main.
tile[num - 1,
num2].halfBrick() && !
Main.
tile[num + 1,
num2].inActive() &&
Main.
tile[num + 1,
num2].active() &&
Main.
tileSolid[
Main.
tile[num + 1,
num2].type] && !
Main.
tileSolidTop[
Main.
tile[num + 1,
num2].type] &&
Main.
tile[num + 1,
num2].slope() == 0 && !
Main.
tile[num + 1,
num2].halfBrick())
542 while (check(num,
num2));
563 num = Main.maxTilesX - 1;
571 num3 = Main.maxTilesX - 1;
579 num2 = Main.maxTilesY - 1;
587 num4 = Main.maxTilesY - 1;
684 for (
int i = 0; i <
num16; i++)
734 while (!(flag ||
flag2));
755 if (num == 0f &&
num2 == 0f)
762 if (num == 0f ||
num2 == 0f)
861 for (
int i = 0; i <
num12; i++)
925 while (!(flag ||
flag2));
948 num = Main.maxTilesX - 1;
956 num3 = Main.maxTilesX - 1;
964 num2 = Main.maxTilesY - 1;
972 num4 = Main.maxTilesY - 1;
1055 for (
int i = 0; i <
num16; i++)
1091 while (!(flag ||
flag2));
1113 for (
int i = -1; i < 2; i++)
1115 for (
int j = -1;
j < 2;
j++)
1117 if ((i != 0 ||
j != 0) &&
Main.
tile[x + i, y +
j].wall == 0)
1124 if (
Main.
tile[x, y].active() && flag)
1127 for (
int k = -1;
k < 2;
k++)
1129 for (
int l = -1;
l < 2;
l++)
1131 if (
k != 0 ||
l != 0)
1156 for (
int k = 0;
k < 255;
k++)
1163 for (
int l = 0;
l < 200;
l++)
1189 vector.Y += Height / 2 - 6;
1213 vector2.Y +=
num6 * 2f;
1227 Point point = pos.ToTileCoordinates();
1245 if (pos.
X >= (
float)(point.
X * 16) && pos.
X <= (
float)(point.
X * 16 + 16) && pos.
Y >= (
float)(point.
Y * 16))
1247 return pos.Y <= (float)(point.
Y * 16 + 16);
1251 if (pos.
X >= (
float)(point.X * 16) && pos.
X <= (
float)(point.X * 16 + 16) && pos.
Y >= (
float)(point.Y * 16 + 8))
1253 return pos.Y <= (float)(point.
Y * 16 + 16);
1261 if (pos.
X < (
float)(point.X * 16) && pos.
X > (
float)(point.X * 16 + 16) && pos.
Y < (
float)(point.Y * 16) && pos.
Y > (
float)(point.Y * 16 + 16))
1265 float num2 = pos.X % 16f;
1266 float num3 = pos.Y % 16f;
1365 int num2 = Height / 2;
1399 vector2.Y +=
num5 * 2f;
1452 for (
int i = num; i <
value2; i++)
1463 vector.Y +=
num3 * 2f;
1477 if (Velocity.
Y != gravity)
1488 float num = (
value3 + 3) * 16;
1492 if (Velocity.
X < 0f)
1517 if (num == (
float)
num5)
1553 vector2.X =
num6 * 16;
1554 vector2.Y =
num7 * 16;
1559 float num9 = vector2.X + 16f - (Position.X + (float)Width);
1562 Velocity.Y +=
Math.
Abs(Velocity.
X);
1571 Velocity.Y +=
Math.
Abs(Velocity.
X);
1584 bool[]
array =
new bool[5];
1600 for (
int i = num; i <
value2; i++)
1623 if (Velocity.
Y < 0f)
1627 if (
Position.Y + (
float)Height < (float)(
j * 16) || Position.Y + (float)Height - (1f +
Math.
Abs(Velocity.
X)) > (
float)(
j * 16 + 16))
1631 if (((
Main.
tile[i,
j].slope() == 1 && Velocity.X >= 0f) || (
Main.
tile[i,
j].slope() == 2 && Velocity.X <= 0f)) && (Position.Y + (float)Height) / 16f - 1f == (float)
j)
1661 num4 = vector4.X + 16f - (Position.X + (float)Width);
1667 float num5 = vector4.Y + 16f - vector.Y -
num4;
1670 vector2.Y = Position.Y +
num5;
1674 vector3.Y = 0.0101f;
1682 float num6 = vector4.Y + 16f;
1688 vector3.Y = 0.0101f;
1703 num4 = vector4.X + 16f - (Position.X + (float)Width);
1711 float num7 = vector4.Y - (vector.Y + (float)Height) +
num4;
1729 vector2.Y = Position.Y +
num7;
1746 float num8 = vector4.Y - (float)Height;
1777 vector2.Y = Position.Y +
vector5.Y;
1780 vector2.X = Position.X -
num9;
1784 vector2.X = Position.X +
num9;
1792 float num10 = vector5.Y - velocity.
Y;
1793 vector2.Y = Position.Y +
vector5.Y;
1796 vector2.X = Position.X -
num10;
1800 vector2.X = Position.X +
num10;
1863 result.Y = vector4.Y - (vector3.Y + (float)Height);
1874 result.X = vector4.X - (vector3.X + (float)Width);
1887 result.X = vector4.X + 16f -
vector3.X;
1899 result.Y = vector4.Y + (float)
num7 -
vector3.Y + 0.01f;
1960 if (
Main.
tile[i,
j].slope() == 4 && vector3.Y +
Math.
Abs(Velocity.
X) >= vector4.Y && vector3.X + (float)Width <=
vector4.X + 16f)
1972 if (
Main.
tile[i,
j].slope() == 2 && vector3.Y + (float)Height -
Math.
Abs(Velocity.
X) <= vector4.Y + (float)
num7 &&
vector3.X + (
float)Width <= vector4.X + 16f)
1992 if (
num3 != num && !flag)
1994 result.Y = vector4.Y - (vector3.Y + (float)Height) + ((gravDir == -1) ? (-0.01f) : 0f);
2001 if (i >= 1 &&
Main.
tile[i - 1,
j] ==
null)
2011 result.X = vector4.X - (vector3.X + (float)Width);
2031 result.X = vector4.X + 16f -
vector3.X;
2044 result.Y = vector4.Y + (float)
num7 -
vector3.Y + ((gravDir == 1) ? 0.01f : 0f);
2113 if ((uint)Direction > 1
u)
2115 if ((uint)(Direction - 2) <= 1
u)
2119 int y = (int)(position.
Y + (
float)((Direction == 2) ? Height : 0)) / 16;
2120 float num =
Math.
Min(16f - position.
X % 16f, Width);
2124 list.Add(
new Point((
int)position.X / 16, y));
2128 list.Add(
new Point((
int)position.X / 16, y));
2130 for (;
num2 + 16f <= (float)(Width - 16);
num2 += 16f)
2141 int width = Width - (int)
num2;
2156 int y = (int)(position.
X + (
float)((Direction == 0) ? Width : 0)) / 16;
2167 for (;
num4 + 16f <= (float)(Height - 16);
num4 += 16f)
2178 int height = Height - (int)
num4;
2199 vector = -Vector2.UnitX * 16f;
2205 vector = Vector2.UnitY * 16f;
2211 vector = -Vector2.UnitY * 16f;
2232 for (
int i = num; i <
value2; i++)
2267 for (
int i = num; i <
value2; i++)
2315 for (
int i = num; i <
value2; i++)
2323 vector3.Y =
j * 16 + 16 -
num2;
2326 result.Y = vector3.Y - (vector2.Y + (float)Height);
2340 int num = (int)(
Position.X / 16f) - 1;
2341 int num2 = (int)((
Position.X + (
float)Width) / 16f) + 2;
2343 int num4 = (int)((
Position.Y + (
float)Height) / 16f) + 2;
2365 for (
int i = num; i <
num2; i++)
2392 result.Y = vector4.Y - (vector3.Y + (float)Height);
2401 result.X = vector4.X - (vector3.X + (float)Width);
2414 result.X = vector4.X + 16f -
vector3.X;
2425 result.Y = vector4.Y + (float)
num9 -
vector3.Y + 0.01f;
2428 result.X = vector.X + 0.01f;
2442 int num = (int)(
Position.X / 16f) - 1;
2443 int num2 = (int)((
Position.X + (
float)Width) / 16f) + 2;
2445 int num4 = (int)((
Position.Y + (
float)Height) / 16f) + 2;
2467 for (
int i = num; i <
num2; i++)
2493 result.Y = vector4.Y - (vector3.Y + (float)Height);
2502 result.X = vector4.X - (vector3.X + (float)Width);
2515 result.X = vector4.X + 16f -
vector3.X;
2526 result.Y = vector4.Y + (float)
num9 -
vector3.Y + 0.01f;
2529 result.X = vector.X + 0.01f;
2540 int num = (int)(
Position.X / 16f) - 1;
2541 int num2 = (int)((
Position.X + (
float)Width) / 16f) + 2;
2543 int num4 = (int)((
Position.Y + (
float)Height) / 16f) + 2;
2561 for (
int i = num; i <
num2; i++)
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)
2591 int num = (int)(
Position.X / 16f) - 1;
2592 int num2 = (int)((
Position.X + (
float)Width) / 16f) + 2;
2594 int num4 = (int)((
Position.Y + (
float)Height) / 16f) + 2;
2613 for (
int i = num; i <
num2; i++)
2639 if (tile.
slope() > 0)
2668 result.type = tile.
type;
2702 int num = (int)(
Position.X / 16f) - 1;
2703 int num2 = (int)((
Position.X + (
float)Width) / 16f) + 2;
2705 int num4 = (int)((
Position.Y + (
float)Height) / 16f) + 2;
2723 for (
int i = num; i <
num2; i++)
2737 vector.Y =
j * 16 + 12;
2774 if (
Utils.
FloatIntersect(
r1StartX,
r1StartY,
r1Width,
r1Height,
Position.X,
Position.Y, Width, Height) && !
Utils.
FloatIntersect(
r1StartX,
r1StartY,
r1Width,
r1Height, oldPosition.
X, oldPosition.
Y, Width, Height))
2793 if (oldPosition.
X + (
float)Width > vector.X && oldPosition.X < vector.X + 16f && oldPosition.Y + (float)Height >
vector.Y && (
double)oldPosition.Y < (double)
vector.Y + 16.01)
2845 for (
int i = num; i <=
num3; i++)
2862 int num = (int)(
Position.X / 16f) - 1;
2863 int num2 = (int)((
Position.X + (
float)Width) / 16f) + 2;
2865 int num4 = (int)((
Position.Y + (
float)Height) / 16f) + 2;
2883 for (
int i = num; i <
num2; i++)
2914 float num7 = 16.01f;
2949 return SolidTiles((
int)(position.
X / 16f), (
int)((position.
X + (
float)width) / 16f), (
int)(position.
Y / 16f), (
int)((position.
Y + (
float)height) / 16f));
2989 return SolidTiles((
int)(position.
X / 16f), (
int)((position.
X + (
float)width) / 16f), (
int)(position.
Y / 16f), (
int)((position.
Y + (
float)height) / 16f),
allowTopSurfaces);
3040 vector.X += velocity.X;
3041 vector.Y = (float)
Math.
Floor((
vector.Y + (
float)height) / 16f) * 16f - (
float)height;
3043 int num = (int)(
vector.X / 16f);
3044 int num2 = (int)((
vector.X + (
float)width) / 16f);
3045 int num3 = (int)((
vector.Y + (
float)height + 4f) / 16f);
3046 int num4 = height / 16 + ((height % 16 != 0) ? 1 : 0);
3048 float num6 = Main.bottomWorld / 16f - 42f;
3049 for (
int i = num; i <=
num2; i++)
3088 float num10 =
num5 - (position.Y + (float)height);
3096 gfxOffY += position.Y + (float)height -
num5;
3097 position.Y =
num5 - (float)height;
3104 if (velocity.X < 0f)
3108 if (velocity.X > 0f)
3113 vector.X += velocity.X;
3114 int num2 = (int)((
vector.X + (
float)(width / 2) + (
float)((width / 2 + 1) * num)) / 16f);
3115 int num3 = (int)(((
double)vector.Y + 0.1) / 16.0);
3118 num3 = (int)((
vector.Y + (
float)height - 1f) / 16f);
3120 int num4 = height / 16 + ((height % 16 != 0) ? 1 : 0);
3127 for (
int i = 1; i <
num4 + 2; i++)
3139 for (
int j = 2;
j <
num4 + 1;
j++)
3167 flag5 = tile.type != 16 && tile.type != 18 && tile.type != 14 && tile.type != 469 && tile.type != 134;
3204 float num6 = vector.Y + (float)height -
num5;
3205 if ((
double)
num6 <= 16.1)
3207 gfxOffY += position.Y + (float)height -
num5;
3208 position.Y =
num5 - (float)height;
3231 if ((
double)
num8 <= 16.1)
3233 gfxOffY -=
num7 - position.Y;
3259 float num = position.Y % 16f;
3260 int num2 = (int)(position.
X / 16f);
3261 int num3 = (int)(position.
Y / 16f);
3271 if (tile.
type != 19)
3276 2 => (float)
Math.
PI / 4f,
3277 3 => -(
float)Math.PI / 4f,
3281 int num6 = tile.frameX / 18;
3282 if (((
num6 >= 0 &&
num6 <= 7) || (
num6 >= 12 &&
num6 <= 16)) && (num == 0f || flag))
3292 return -(float)
Math.
PI / 4f;
3297 return (
float)Math.PI / 4f;
3305 return (
float)Math.PI / 4f;
3307 return -(float)
Math.
PI / 4f;
3354 for (
int i = num; i <= num +
num5; i++)
3389 entity.position.Y += 5f;
3425 lineStart.X = (lineStart2.X = point.X * 16);
3426 lineEnd.X = (lineEnd2.X = point.X * 16 + 16);
3427 switch (tile.
slope())
3430 lineStart2.Y = point.Y * 16;
3431 lineEnd2.Y = (lineEnd.Y = (lineStart.Y = point.Y * 16 + 16));
3434 lineEnd2.Y = point.Y * 16;
3435 lineStart2.Y = (lineEnd.Y = (lineStart.Y = point.Y * 16 + 16));
3438 lineEnd.Y = (lineStart2.Y = (lineEnd2.Y = point.Y * 16));
3439 lineStart.Y = point.Y * 16 + 16;
3442 lineStart.Y = (lineStart2.Y = (lineEnd2.Y = point.Y * 16));
3443 lineEnd.Y = point.Y * 16 + 16;
3448 lineStart2.Y = (lineEnd2.Y = point.Y * 16 + 8);
3452 lineStart2.Y = (lineEnd2.Y = point.Y * 16);
3454 lineStart.Y = (lineEnd.Y = point.Y * 16 + 16);
3483 entity.position.Y -= 5f;
3485 if (flag && num != 0)
3500 Point point = TopLeft.ToTileCoordinates();
3506 for (
int i = num; i <=
num3; i++)
3614 if (tile.
slope() > 2)
3616 if (tile.
slope() == 3 && vector3.Y +
Math.
Abs(Velocity.
X) >= vector4.Y && vector3.X >=
vector4.X)
3620 if (tile.
slope() == 4 && vector3.Y +
Math.
Abs(Velocity.
X) >= vector4.Y && vector3.X + (float)Width <=
vector4.X + 16f)
3625 else if (tile.
slope() > 0)
3632 if (tile.
slope() == 2 && vector3.Y + (float)Height -
Math.
Abs(Velocity.
X) <= vector4.Y + (float)
num7 &&
vector3.X + (
float)Width <= vector4.X + 16f)
3652 if (
num3 != num && !flag)
3654 result.Y = vector4.Y - (vector3.Y + (float)Height) + ((gravDir == -1) ? (-0.01f) : 0f);
3671 result.X = vector4.X - (vector3.X + (float)Width);
3691 result.X = vector4.X + 16f -
vector3.X;
3704 result.Y = vector4.Y + (float)
num7 -
vector3.Y + ((gravDir == 1) ? 0.01f : 0f);
3717 for (
int i = 0; i <
samples.Length; i++)
3719 float num = (float)i / (
float)(samples.Length - 1);
3727 num6 = (
TupleHitLine(
num2,
num3,
num4,
num5, 0, 0,
new List<
Tuple<int, int>>(),
out var col) ? ((col.Item1 !=
num4 || col.Item2 !=
num5) ? (
new Vector2(
Math.
Abs(
num2 -
col.Item1),
Math.
Abs(
num3 -
col.Item2)).
Length() * 16f) :
maxDistance) : (
new Vector2(
Math.
Abs(
num2 -
col.Item1),
Math.
Abs(
num3 -
col.Item2)).
Length() * 16f));
bool ICollection< KeyValuePair< TKey, TValue > >. Contains(KeyValuePair< TKey, TValue > keyValuePair)
void Add(TKey key, TValue value)
static byte Min(byte val1, byte val2)
static double Atan2(double y, double x)
static double Sqrt(double d)
static double Abs(double value)
static double Floor(double d)
static int Sign(decimal value)
static byte Max(byte val1, byte val2)
static bool CanHit(Entity source, Entity target)
static bool InTileBounds(int x, int y, int lx, int ly, int hx, int hy)
static bool SolidTiles(int startX, int endX, int startY, int endY, bool allowTopSurfaces)
static bool CanHitWithCheck(Vector2 Position1, int Width1, int Height1, Vector2 Position2, int Width2, int Height2, Utils.TileActionAttempt check)
static float[] FindOverlapPoints(float relativePoint1, float relativePoint2)
static bool SolidTiles(int startX, int endX, int startY, int endY)
static Vector2[] OneDimensionalIntersection(Vector2 a1, Vector2 a2, Vector2 b1, Vector2 b2)
static bool WetCollision(Vector2 Position, int Width, int Height)
static Vector2 WaterCollision(Vector2 Position, Vector2 Velocity, int Width, int Height, bool fallThrough=false, bool fall2=false, bool lavaWalk=true)
static Vector2[] CheckLinevLine(Vector2 a1, Vector2 a2, Vector2 b1, Vector2 b2)
static bool DrownCollision(Vector2 Position, int Width, int Height, float gravDir=-1f, bool includeSlopes=false)
static bool CanTileHurt(ushort type, int i, int j, Player player)
static int collisionOutcode(Vector2 aabbPosition, Vector2 aabbDimensions, Vector2 point)
static float GetTileRotation(Vector2 position)
static bool GetWaterLineIterate(Point pt, out float waterLineHeight)
static List< Point > FindCollisionTile(int Direction, Vector2 position, float testMagnitude, int Width, int Height, bool fallThrough=false, bool fall2=false, int gravDir=1, bool checkCardinals=true, bool checkSlopes=false)
static void HitTiles(Vector2 Position, Vector2 Velocity, int Width, int Height)
static bool SolidTiles(Vector2 position, int width, int height, bool allowTopSurfaces)
static void ExpandVertically(int startX, int startY, out int topY, out int bottomY, int maxExpandUp=100, int maxExpandDown=100)
static void AimingLaserScan(Vector2 startPoint, Vector2 endPoint, float samplingWidth, int samplesToTake, out Vector2 vectorTowardsTarget, out float[] samples)
static bool GetWaterLine(int X, int Y, out float waterLineHeight)
static bool CheckAABBvLineCollision(Vector2 aabbPosition, Vector2 aabbDimensions, Vector2 lineStart, Vector2 lineEnd)
static bool CanHitLine(Vector2 Position1, int Width1, int Height1, Vector2 Position2, int Width2, int Height2)
static bool AnyHurtingTiles(Vector2 Position, int Width, int Height)
static bool FindCollisionDirection(out int Direction, Vector2 position, int Width, int Height, bool fallThrough=false, bool fall2=false, int gravDir=1)
static Vector4 WalkDownSlope(Vector2 Position, Vector2 Velocity, int Width, int Height, float gravity=0f)
static bool IsWorldPointSolid(Vector2 pos, bool treatPlatformsAsNonSolid=false)
static Vector2 TileCollision(Vector2 Position, Vector2 Velocity, int Width, int Height, bool fallThrough=false, bool fall2=false, int gravDir=1)
static bool CheckAABBvLineCollision2(Vector2 aabbPosition, Vector2 aabbDimensions, Vector2 lineStart, Vector2 lineEnd)
static bool EmptyTile(int i, int j, bool ignoreTiles=false)
static List< Point > _cacheForConveyorBelts
static bool CanHit(Entity source, NPCAimedTarget target)
static HurtTile HurtTiles(Vector2 Position, int Width, int Height, Player player)
static bool SolidCollision(Vector2 Position, int Width, int Height, bool acceptTopSurfaces)
static void StepDown(ref Vector2 position, ref Vector2 velocity, int width, int height, ref float stepSpeed, ref float gfxOffY, int gravDir=1, bool waterWalk=false)
static Vector4 SlopeCollision(Vector2 Position, Vector2 Velocity, int Width, int Height, float gravity=0f, bool fall=false)
static double DistFromSeg(Vector2 p, Vector2 q0, Vector2 q1, double radius, ref float u)
static bool CheckAABBvLineCollision(Vector2 objectPosition, Vector2 objectDimensions, Vector2 lineStart, Vector2 lineEnd, float lineWidth, ref float collisionPoint)
static Vector2 StickyTiles(Vector2 Position, Vector2 Velocity, int Width, int Height)
static Vector2 AdvancedTileCollision(bool[] forcedIgnoredTiles, Vector2 Position, Vector2 Velocity, int Width, int Height, bool fallThrough=false, bool fall2=false, int gravDir=1)
static Vector2 noSlopeCollision(Vector2 Position, Vector2 Velocity, int Width, int Height, bool fallThrough=false, bool fall2=false)
static Tuple< int, int > TupleHitLineWall(int x1, int y1, int x2, int y2)
static bool GetWaterLineIterate(int X, int Y, out float waterLineHeight)
static List< Point > GetTilesIn(Vector2 TopLeft, Vector2 BottomRight)
static void LaserScan(Vector2 samplingPoint, Vector2 directionUnit, float samplingWidth, float maxDistance, float[] samples)
static void StepUp(ref Vector2 position, ref Vector2 velocity, int width, int height, ref float stepSpeed, ref float gfxOffY, int gravDir=1, bool holdsMatching=false, int specialChecksMode=0)
static bool LavaCollision(Vector2 Position, int Width, int Height)
static bool SolidTilesVersatile(int startX, int endX, int startY, int endY)
static bool SolidCollision(Vector2 Position, int Width, int Height)
static bool SwitchTiles(Vector2 Position, int Width, int Height, Vector2 oldPosition, int objType)
static bool TupleHitLine(int x1, int y1, int x2, int y2, int ignoreX, int ignoreY, List< Tuple< int, int > > ignoreTargets, out Tuple< int, int > col)
static Vector2 AnyCollision(Vector2 Position, Vector2 Velocity, int Width, int Height, bool evenActuated=false)
static bool PointOnLine(Vector2 p, Vector2 a1, Vector2 a2)
static bool CanHit(Vector2 Position1, int Width1, int Height1, Vector2 Position2, int Width2, int Height2)
static Vector2 AnyCollisionWithSpecificTiles(Vector2 Position, Vector2 Velocity, int Width, int Height, bool[] tilesWeCanCollideWithByType, bool evenActuated=false)
bool SwitchTilesNew(Vector2 Position, int Width, int Height, Vector2 oldPosition, int objType)
static void StepConveyorBelt(Entity entity, float gravDir)
static bool IsClearSpotTest(Vector2 position, float testMagnitude, int Width, int Height, bool fallThrough=false, bool fall2=false, int gravDir=1, bool checkCardinals=true, bool checkSlopes=false)
static bool SolidTiles(Vector2 position, int width, int height)
static bool HitWallSubstep(int x, int y)
static bool CheckAABBvAABBCollision(Vector2 position1, Vector2 dimensions1, Vector2 position2, Vector2 dimensions2)
static void GetEntityEdgeTiles(List< Point > p, Entity entity, bool left=true, bool right=true, bool up=true, bool down=true)
static bool GetWaterLine(Point pt, out float waterLineHeight)
static bool CanHit(Point Position1, int Width1, int Height1, Point Position2, int Width2, int Height2)
static int NewDust(Vector2 Position, int Width, int Height, int Type, float SpeedX=0f, float SpeedY=0f, int Alpha=0, Color newColor=default(Color), float Scale=1f)
static Tile GetTileSafely(Vector2 position)
static bool[] TouchDamageBleeding
static bool[] TouchDamageHot
static int[] TouchDamageImmediate
static int[] ConveyorDirection
static readonly ushort Count
static bool[] tileSolidTop
static UnifiedRandom rand
static bool dontStarveWorld
static void SendData(int msgType, int remoteClient=-1, int ignoreClient=-1, NetworkText text=null, int number=0, float number2=0f, float number3=0f, float number4=0f, int number5=0, int number6=0, int number7=0)
delegate bool TileActionAttempt(int x, int y)
static bool FloatIntersect(float r1StartX, float r1StartY, float r1Width, float r1Height, float r2StartX, float r2StartY, float r2Width, float r2Height)
static bool RectangleLineCollision(Vector2 rectTopLeft, Vector2 rectBottomRight, Vector2 lineStart, Vector2 lineEnd)
static void HitSwitch(int i, int j)
static void KillTile(int i, int j, bool fail=false, bool effectOnly=false, bool noItem=false)
static bool SolidTile3(int i, int j)
static void ExplodeMine(int i, int j, bool fromWiring)
static bool InWorld(int x, int y, int fluff=0)
void Inflate(int horizontalAmount, int verticalAmount)