Exemplo n.º 1
0
            public bool Intersect(LineTestData intersectData, out EntityID entity)
            {
                entity = this.entity;

                //First test if the bounds intersect
                if (!AABox.Intersect(box, intersectData.TestBounds))
                {
                    return(false);
                }

                //Then test if the ray intersects
                float rayTime;

                if (!AABox.Intersect(box, intersectData.TestRay, out rayTime))
                {
                    return(false);
                }

                //Then test if that ray was still within the line
                return(intersectData.TestLine.SqrMagnitude >= (rayTime * rayTime));
            }
Exemplo n.º 2
0
            public bool Intersect(LineTestData intersectData, out EntityID entity)
            {
                if (AABox.Intersect(volume, intersectData.TestBounds))
                {
                    for (int i = 0; i < children.Count; i++)
                    {
                        if (children[i].Intersect(intersectData, out entity))
                        {
                            return(true);
                        }
                    }

                    for (int i = 0; i < entries.Count; i++)
                    {
                        if (entries[i].Intersect(intersectData, out entity))
                        {
                            return(true);
                        }
                    }
                }
                entity = 0;
                return(false);
            }
Exemplo n.º 3
0
        public bool Intersect(Line line, out EntityID entity)
        {
            LineTestData testData = new LineTestData(line);

            return(root.Intersect(testData, out entity));
        }