示例#1
0
        public UWB_BoundingBox GetBounds(ref UWB_DrawHelper helper, bool bDraw)
        {
            UWB_BoundingBox box = new UWB_BoundingBox();

            box.makeInvalid();
            if (mPrimitive != null)
            {
                box.add(mPrimitive.getBoundingVolume(eLevelofDetail.lodLow));
            }

            helper.pushModelTransform();
            {
                mXFormInfo.setupModelStack(helper);
                //Draw the box for debugging
                if (bDraw)
                {
                    box.Draw(ref helper);
                }
                Vector3 minPt = box.getMin();
                Vector3 maxPt = box.getMax();
                Vector3 pt1   = new Vector3(minPt.X, minPt.Y, minPt.Z);
                Vector3 pt2   = new Vector3(maxPt.X, minPt.Y, minPt.Z);
                Vector3 pt3   = new Vector3(maxPt.X, maxPt.Y, minPt.Z);
                Vector3 pt4   = new Vector3(minPt.X, maxPt.Y, minPt.Z);
                Vector3 pt5   = new Vector3(minPt.X, minPt.Y, maxPt.Z);
                Vector3 pt6   = new Vector3(maxPt.X, minPt.Y, maxPt.Z);
                Vector3 pt7   = new Vector3(maxPt.X, maxPt.Y, maxPt.Z);
                Vector3 pt8   = new Vector3(minPt.X, maxPt.Y, maxPt.Z);
                helper.transformPoint(ref pt1);
                helper.transformPoint(ref pt2);
                helper.transformPoint(ref pt3);
                helper.transformPoint(ref pt4);
                helper.transformPoint(ref pt5);
                helper.transformPoint(ref pt6);
                helper.transformPoint(ref pt7);
                helper.transformPoint(ref pt8);

                box.makeInvalid();
                box.add(new UWB_BoundingBox(pt1, pt2));
                box.add(new UWB_BoundingBox(pt3, pt4));
                box.add(new UWB_BoundingBox(pt5, pt6));
                box.add(new UWB_BoundingBox(pt7, pt8));

                int count = mChildNodes.count();
                for (int i = 0; i < count; i++)
                {
                    box.add(mChildNodes.getItem(i).GetBounds(ref helper, bDraw));
                }
            }
            helper.popModelTransform();

            return(box);
        }
示例#2
0
        public override bool intersects(UWB_BoundingVolume other)
        {
            eVolumeType vt = other.getType();

            if (eVolumeType.box == vt)
            {
                UWB_BoundingBox otherBox = other as UWB_BoundingBox;
                return(intesectBoxBox(mMin, mMax, otherBox.getMin(), otherBox.getMax()));
            }

            return(false);
        }
        public void add(UWB_BoundingBox box)
        {
            if (!box.isValid())
                return;

            if (!isValid())
                setCorners(box.getMax(), box.getMin());
            else
            {
                mMin.X = mMin.X < box.mMin.X ? mMin.X : box.mMin.X;
                mMin.Y = mMin.Y < box.mMin.Y ? mMin.Y : box.mMin.Y;
                mMin.Z = mMin.Z < box.mMin.Z ? mMin.Z : box.mMin.Z;
                mMax.X = mMax.X > box.mMax.X ? mMax.X : box.mMax.X;
                mMax.Y = mMax.Y > box.mMax.Y ? mMax.Y : box.mMax.Y;
                mMax.Z = mMax.Z > box.mMax.Z ? mMax.Z : box.mMax.Z;
            }
        }
示例#4
0
        public void add(UWB_BoundingBox box)
        {
            if (!box.isValid())
            {
                return;
            }

            if (!isValid())
            {
                setCorners(box.getMax(), box.getMin());
            }
            else
            {
                mMin.X = mMin.X < box.mMin.X ? mMin.X : box.mMin.X;
                mMin.Y = mMin.Y < box.mMin.Y ? mMin.Y : box.mMin.Y;
                mMin.Z = mMin.Z < box.mMin.Z ? mMin.Z : box.mMin.Z;
                mMax.X = mMax.X > box.mMax.X ? mMax.X : box.mMax.X;
                mMax.Y = mMax.Y > box.mMax.Y ? mMax.Y : box.mMax.Y;
                mMax.Z = mMax.Z > box.mMax.Z ? mMax.Z : box.mMax.Z;
            }
        }
 protected override void DrawPrimitive(eLevelofDetail lod, UWB_DrawHelper drawHelper)
 {
     drawHelper.drawRectangle(m_bounds.getMin(), m_bounds.getMax());
 }
        public UWB_BoundingBox GetBounds(ref UWB_DrawHelper helper, bool bDraw)
        {
            UWB_BoundingBox box = new UWB_BoundingBox();
            box.makeInvalid();
            if (mPrimitive != null)
                box.add(mPrimitive.getBoundingVolume(eLevelofDetail.lodLow));

            helper.pushModelTransform();
            {
                mXFormInfo.setupModelStack(helper);
                //Draw the box for debugging
                if (bDraw)
                    box.Draw(ref helper);
                Vector3 minPt = box.getMin();
                Vector3 maxPt = box.getMax();
                Vector3 pt1 = new Vector3(minPt.X, minPt.Y, minPt.Z);
                Vector3 pt2 = new Vector3(maxPt.X, minPt.Y, minPt.Z);
                Vector3 pt3 = new Vector3(maxPt.X, maxPt.Y, minPt.Z);
                Vector3 pt4 = new Vector3(minPt.X, maxPt.Y, minPt.Z);
                Vector3 pt5 = new Vector3(minPt.X, minPt.Y, maxPt.Z);
                Vector3 pt6 = new Vector3(maxPt.X, minPt.Y, maxPt.Z);
                Vector3 pt7 = new Vector3(maxPt.X, maxPt.Y, maxPt.Z);
                Vector3 pt8 = new Vector3(minPt.X, maxPt.Y, maxPt.Z);
                helper.transformPoint(ref pt1);
                helper.transformPoint(ref pt2);
                helper.transformPoint(ref pt3);
                helper.transformPoint(ref pt4);
                helper.transformPoint(ref pt5);
                helper.transformPoint(ref pt6);
                helper.transformPoint(ref pt7);
                helper.transformPoint(ref pt8);

                box.makeInvalid();
                box.add(new UWB_BoundingBox(pt1, pt2));
                box.add(new UWB_BoundingBox(pt3, pt4));
                box.add(new UWB_BoundingBox(pt5, pt6));
                box.add(new UWB_BoundingBox(pt7, pt8));

                int count = mChildNodes.count();
                for (int i = 0; i < count; i++)
                    box.add(mChildNodes.getItem(i).GetBounds(ref helper, bDraw));
            }
            helper.popModelTransform();

            return box;
        }