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); }
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; } }
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; }