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

◆ Intersects() [6/9]

void Microsoft.Xna.Framework.BoundingFrustum.Intersects ( ref BoundingBox box,
out bool result )
inline

Definition at line 193 of file BoundingFrustum.cs.

194 {
195 if (gjk == null)
196 {
197 gjk = new Gjk();
198 }
199 gjk.Reset();
200 Vector3.Subtract(ref cornerArray[0], ref box.Min, out var result2);
201 if (result2.LengthSquared() < 1E-05f)
202 {
203 Vector3.Subtract(ref cornerArray[0], ref box.Max, out result2);
204 }
205 float num = float.MaxValue;
206 float num2 = 0f;
207 result = false;
208 Vector3 v = default(Vector3);
209 do
210 {
211 v.X = 0f - result2.X;
212 v.Y = 0f - result2.Y;
213 v.Z = 0f - result2.Z;
214 SupportMapping(ref v, out var result3);
215 box.SupportMapping(ref result2, out var result4);
216 Vector3.Subtract(ref result3, ref result4, out var result5);
217 float num3 = result2.X * result5.X + result2.Y * result5.Y + result2.Z * result5.Z;
218 if (num3 > 0f)
219 {
220 return;
221 }
222 gjk.AddSupportPoint(ref result5);
223 result2 = gjk.ClosestPoint;
224 float num4 = num;
225 num = result2.LengthSquared();
226 if (num4 - num <= 1E-05f * num4)
227 {
228 return;
229 }
230 num2 = 4E-05f * gjk.MaxLengthSquared;
231 }
232 while (!gjk.FullSimplex && num >= num2);
233 result = true;
234 }
void SupportMapping(ref Vector3 v, out Vector3 result)
bool AddSupportPoint(ref Vector3 newPoint)
Definition Gjk.cs:67
static Vector3 Min(Vector3 value1, Vector3 value2)
Definition Vector3.cs:241
static Vector3 Max(Vector3 value1, Vector3 value2)
Definition Vector3.cs:257

References Microsoft.Xna.Framework.Gjk.AddSupportPoint(), Microsoft.Xna.Framework.Gjk.ClosestPoint, Microsoft.Xna.Framework.BoundingFrustum.cornerArray, System.E, Microsoft.Xna.Framework.Gjk.FullSimplex, Microsoft.Xna.Framework.BoundingFrustum.gjk, Microsoft.Xna.Framework.Vector3.Max(), Microsoft.Xna.Framework.Gjk.MaxLengthSquared, Microsoft.Xna.Framework.Vector3.Min(), Microsoft.Xna.Framework.Gjk.Reset(), Microsoft.Xna.Framework.Vector3.Subtract(), Microsoft.Xna.Framework.BoundingFrustum.SupportMapping(), and Microsoft.Xna.Framework.Vector3.X.