324 {
325 Contains(ref ray.Position, out var result2);
327 {
328 result = 0f;
329 return;
330 }
331 float num = float.MinValue;
332 float num2 = float.MaxValue;
333 result = null;
335 for (
int i = 0;
i <
array.Length;
i++)
336 {
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;
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)