예제 #1
0
            public IEnumerable <HitInfo <float3> > Raycast(RayDescription ray)
            {
                float epsilon = 0.0001f;

                foreach (var item in XYlow.Raycast(ray)
                         .Concat(XYup.Raycast(ray)
                                 .Concat(XZlow.Raycast(ray)
                                         .Concat(XZup.Raycast(ray)
                                                 .Concat(YZlow.Raycast(ray)
                                                         .Concat(YZup.Raycast(ray))))))
                         .OrderBy(x => x.T))
                {
                    if (lowerBound.x <= item.Attribute.x + epsilon && item.Attribute.x <= upperBound.x + epsilon &&
                        lowerBound.y <= item.Attribute.y + epsilon && item.Attribute.y <= upperBound.y + epsilon &&
                        lowerBound.z <= item.Attribute.z + epsilon && item.Attribute.z <= upperBound.z + epsilon)
                    {
                        yield return(item);

                        break;
                    }
                }
            }