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

◆ Intersects() [9/9]

void Microsoft.Xna.Framework.BoundingFrustum.Intersects ( ref Ray ray,
out float? result )
inline

Definition at line 323 of file BoundingFrustum.cs.

324 {
325 Contains(ref ray.Position, out var result2);
326 if (result2 == ContainmentType.Contains)
327 {
328 result = 0f;
329 return;
330 }
331 float num = float.MinValue;
332 float num2 = float.MaxValue;
333 result = null;
334 Plane[] array = planes;
335 for (int i = 0; i < array.Length; i++)
336 {
337 Plane plane = array[i];
338 Vector3 vector = plane.Normal;
339 Vector3.Dot(ref ray.Direction, ref vector, out var result3);
340 Vector3.Dot(ref ray.Position, ref vector, out var result4);
341 result4 += plane.D;
342 if (Math.Abs(result3) < 1E-05f)
343 {
344 if (result4 > 0f)
345 {
346 return;
347 }
348 continue;
349 }
350 float num3 = (0f - result4) / result3;
351 if (result3 < 0f)
352 {
353 if (num3 > num2)
354 {
355 return;
356 }
357 if (num3 > num)
358 {
359 num = num3;
360 }
361 }
362 else
363 {
364 if (num3 < num)
365 {
366 return;
367 }
368 if (num3 < num2)
369 {
370 num2 = num3;
371 }
372 }
373 }
374 float num4 = ((num >= 0f) ? num : num2);
375 if (num4 >= 0f)
376 {
377 result = num4;
378 }
379 }
static double Abs(double value)

References System.Math.Abs(), System.array, Microsoft.Xna.Framework.Contains, Microsoft.Xna.Framework.Plane.D, Microsoft.Xna.Framework.Vector3.Dot(), System.E, Microsoft.Xna.Framework.Plane.Normal, and Microsoft.Xna.Framework.BoundingFrustum.planes.