Exemplo n.º 1
0
        public Boolean IsBoxVisibleToPoint(Vector3 startPoint, OrientedBoundingBox blockingBox)
        {
            Boolean isBlocked = Corners.All(t => blockingBox.LineInBox(startPoint, t));

            if (!blockingBox.LineInBox(startPoint, blockingBox.Origin))
            {
                isBlocked = false;
            }

            return(isBlocked);
        }
Exemplo n.º 2
0
        public Boolean Collides(OrientedBoundingBox box)
        {
            BoundingSphere boxSphere = box.ExtentSphere;

            switch (ExtentSphere.Contains(ref boxSphere))
            {
            case ContainmentType.Disjoint:
            {
                return(false);
            }
            }

            for (Int32 i = 0; i < 4; i++)
            {
                if (LineInBox(box.Corners[i], box.Corners[i + 4]) || box.LineInBox(Corners[i], Corners[i + 4]))
                {
                    return(true);
                }
            }

            for (Int32 i = 0; i < 8; i++)
            {
                Int32 pIndex;

                switch (i)
                {
                case 3:
                {
                    pIndex = 0;
                    break;
                }

                case 7:
                {
                    pIndex = 4;
                    break;
                }

                default:
                {
                    pIndex = i + 1;
                    break;
                }
                }

                if (LineInBox(box.Corners[i], box.Corners[pIndex]) || box.LineInBox(Corners[i], Corners[pIndex]))
                {
                    return(true);
                }
            }

            return(false);
        }