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

◆ Intersects() [7/9]

void Microsoft.Xna.Framework.BoundingFrustum.Intersects ( ref BoundingSphere sphere,
out bool result )
inline

Definition at line 387 of file BoundingFrustum.cs.

388 {
389 if (gjk == null)
390 {
391 gjk = new Gjk();
392 }
393 gjk.Reset();
394 Vector3.Subtract(ref cornerArray[0], ref sphere.Center, out var result2);
395 if (result2.LengthSquared() < 1E-05f)
396 {
397 result2 = Vector3.UnitX;
398 }
399 float num = float.MaxValue;
400 float num2 = 0f;
401 result = false;
402 Vector3 v = default(Vector3);
403 do
404 {
405 v.X = 0f - result2.X;
406 v.Y = 0f - result2.Y;
407 v.Z = 0f - result2.Z;
408 SupportMapping(ref v, out var result3);
409 sphere.SupportMapping(ref result2, out var result4);
410 Vector3.Subtract(ref result3, ref result4, out var result5);
411 float num3 = result2.X * result5.X + result2.Y * result5.Y + result2.Z * result5.Z;
412 if (num3 > 0f)
413 {
414 return;
415 }
416 gjk.AddSupportPoint(ref result5);
417 result2 = gjk.ClosestPoint;
418 float num4 = num;
419 num = result2.LengthSquared();
420 if (num4 - num <= 1E-05f * num4)
421 {
422 return;
423 }
424 num2 = 4E-05f * gjk.MaxLengthSquared;
425 }
426 while (!gjk.FullSimplex && num >= num2);
427 result = true;
428 }
void SupportMapping(ref Vector3 v, out Vector3 result)
bool AddSupportPoint(ref Vector3 newPoint)
Definition Gjk.cs:67

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.Gjk.MaxLengthSquared, Microsoft.Xna.Framework.Gjk.Reset(), Microsoft.Xna.Framework.Vector3.Subtract(), Microsoft.Xna.Framework.BoundingFrustum.SupportMapping(), Microsoft.Xna.Framework.Vector3.UnitX, and Microsoft.Xna.Framework.Vector3.X.