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

◆ CheckLinevLine()

static Vector2[] Terraria.Collision.CheckLinevLine ( Vector2 a1,
Vector2 a2,
Vector2 b1,
Vector2 b2 )
inlinestatic

Definition at line 40 of file Collision.cs.

41 {
42 if (a1.Equals(a2) && b1.Equals(b2))
43 {
44 if (a1.Equals(b1))
45 {
46 return new Vector2[1] { a1 };
47 }
48 return new Vector2[0];
49 }
50 if (b1.Equals(b2))
51 {
52 if (PointOnLine(b1, a1, a2))
53 {
54 return new Vector2[1] { b1 };
55 }
56 return new Vector2[0];
57 }
58 if (a1.Equals(a2))
59 {
60 if (PointOnLine(a1, b1, b2))
61 {
62 return new Vector2[1] { a1 };
63 }
64 return new Vector2[0];
65 }
66 float num = (b2.X - b1.X) * (a1.Y - b1.Y) - (b2.Y - b1.Y) * (a1.X - b1.X);
67 float num2 = (a2.X - a1.X) * (a1.Y - b1.Y) - (a2.Y - a1.Y) * (a1.X - b1.X);
68 float num3 = (b2.Y - b1.Y) * (a2.X - a1.X) - (b2.X - b1.X) * (a2.Y - a1.Y);
69 if (!(0f - Epsilon < num3) || !(num3 < Epsilon))
70 {
71 float num4 = num / num3;
72 float num5 = num2 / num3;
73 if (0f <= num4 && num4 <= 1f && 0f <= num5 && num5 <= 1f)
74 {
75 return new Vector2[1]
76 {
77 new Vector2(a1.X + num4 * (a2.X - a1.X), a1.Y + num4 * (a2.Y - a1.Y))
78 };
79 }
80 return new Vector2[0];
81 }
82 if ((0f - Epsilon < num && num < Epsilon) || (0f - Epsilon < num2 && num2 < Epsilon))
83 {
84 if (a1.Equals(a2))
85 {
87 }
89 }
90 return new Vector2[0];
91 }
static Vector2[] OneDimensionalIntersection(Vector2 a1, Vector2 a2, Vector2 b1, Vector2 b2)
Definition Collision.cs:113
static bool PointOnLine(Vector2 p, Vector2 a1, Vector2 a2)
Definition Collision.cs:107
static float Epsilon
Definition Collision.cs:36

References Terraria.Collision.Epsilon, Terraria.Collision.OneDimensionalIntersection(), and Terraria.Collision.PointOnLine().

Referenced by Terraria.GameContent.PortalHelper.RemoveIntersectingPortals().