89 const PxVec3 dist(contactDistance);
90 encode(
PxBounds3(b.minimum - dist, b.maximum + dist));
97 PX_FORCE_INLINE ValType getMin(PxU32 i)
const {
return (mMinMax)[MIN_X+i]; }
103 PX_FORCE_INLINE ValType getMax(PxU32 i)
const {
return (mMinMax)[MAX_X+i]; }
113 return (mMinMax)[3*isMax+index];
158 const PxU32*
PX_RESTRICT min = PxUnionCast<const PxU32*, const PxF32*>(&bounds.minimum.x);
159 const PxU32*
PX_RESTRICT max = PxUnionCast<const PxU32*, const PxF32*>(&bounds.maximum.x);
161 mMinMax[MIN_X] = encodeFloatMin(min[0]);
162 mMinMax[MIN_Y] = encodeFloatMin(min[1]);
163 mMinMax[MIN_Z] = encodeFloatMin(min[2]);
164 mMinMax[MAX_X] = encodeFloatMax(max[0]) | (1<<2);
165 mMinMax[MAX_Y] = encodeFloatMax(max[1]) | (1<<2);
166 mMinMax[MAX_Z] = encodeFloatMax(max[2]) | (1<<2);
178 PxU32*
PX_RESTRICT min = PxUnionCast<PxU32*, PxF32*>(&bounds.minimum.x);
179 PxU32*
PX_RESTRICT max = PxUnionCast<PxU32*, PxF32*>(&bounds.maximum.x);
180 min[0] = decodeFloat(mMinMax[MIN_X]);
181 min[1] = decodeFloat(mMinMax[MIN_Y]);
182 min[2] = decodeFloat(mMinMax[MIN_Z]);
183 max[0] = decodeFloat(mMinMax[MAX_X]);
184 max[1] = decodeFloat(mMinMax[MAX_Y]);
185 max[2] = decodeFloat(mMinMax[MAX_Z]);
195 return ((encodeFloat(source) >> eGRID_SNAP_VAL) - 1) << eGRID_SNAP_VAL;
205 return ((encodeFloat(source) >> eGRID_SNAP_VAL) + 1) << eGRID_SNAP_VAL;
216 elemBounds.minimum -= shift;
217 elemBounds.maximum -= shift;
228 if(box.mMinMax[MIN_X]>mMinMax[MIN_X])
return false;
229 if(box.mMinMax[MIN_Y]>mMinMax[MIN_Y])
return false;
230 if(box.mMinMax[MIN_Z]>mMinMax[MIN_Z])
return false;
231 if(box.mMinMax[MAX_X]<mMinMax[MAX_X])
return false;
232 if(box.mMinMax[MAX_Y]<mMinMax[MAX_Y])
return false;
233 if(box.mMinMax[MAX_Z]<mMinMax[MAX_Z])
return false;
244 return !(b.mMinMax[MIN_X] > mMinMax[MAX_X] || mMinMax[MIN_X] > b.mMinMax[MAX_X] ||
245 b.mMinMax[MIN_Y] > mMinMax[MAX_Y] || mMinMax[MIN_Y] > b.mMinMax[MAX_Y] ||
246 b.mMinMax[MIN_Z] > mMinMax[MAX_Z] || mMinMax[MIN_Z] > b.mMinMax[MAX_Z]);
251 const PxU32 maxAxis = axis + 3;
252 return !(b.mMinMax[axis] > mMinMax[maxAxis] || mMinMax[axis] > b.mMinMax[maxAxis]);
263 mMinMax[MIN_X] =
PxMin(mMinMax[MIN_X], b.mMinMax[MIN_X]);
264 mMinMax[MIN_Y] =
PxMin(mMinMax[MIN_Y], b.mMinMax[MIN_Y]);
265 mMinMax[MIN_Z] =
PxMin(mMinMax[MIN_Z], b.mMinMax[MIN_Z]);
266 mMinMax[MAX_X] =
PxMax(mMinMax[MAX_X], b.mMinMax[MAX_X]);
267 mMinMax[MAX_Y] =
PxMax(mMinMax[MAX_Y], b.mMinMax[MAX_Y]);
268 mMinMax[MAX_Z] =
PxMax(mMinMax[MAX_Z], b.mMinMax[MAX_Z]);
276 mMinMax[MIN_X] = mMinMax[MIN_Y] = mMinMax[MIN_Z] = 0xff7fffff;
277 mMinMax[MAX_X] = mMinMax[MAX_Y] = mMinMax[MAX_Z] = 0x00800000;