quantize(max, aabbMax, 1);
// allocate a handle
int handle = allocHandle();
Handle pHandle = getHandle(handle);
pHandle.uniqueId = handle;
//pHandle->m_pOverlaps = 0;
pHandle.clientObject = pOwner;
pHandle.collisionFilterGroup = collisionFilterGroup;
pHandle.collisionFilterMask = collisionFilterMask;
pHandle.multiSapParentProxy = multiSapProxy;
// compute current limit of edge arrays
int limit = numHandles * 2;
// insert new edges just inside the max boundary edge
for (int axis = 0; axis < 3; axis++) {
pHandles[0].setMaxEdges(axis, pHandles[0].getMaxEdges(axis) + 2);
pEdges[axis].set(limit + 1, limit - 1);
pEdges[axis].setPos(limit - 1, min[axis]);
pEdges[axis].setHandle(limit - 1, handle);
pEdges[axis].setPos(limit, max[axis]);
pEdges[axis].setHandle(limit, handle);
pHandle.setMinEdges(axis, limit - 1);
pHandle.setMaxEdges(axis, limit);
}
// now sort the new edges to their correct position
sortMinDown(0, pHandle.getMinEdges(0), dispatcher, false);
sortMaxDown(0, pHandle.getMaxEdges(0), dispatcher, false);
sortMinDown(1, pHandle.getMinEdges(1), dispatcher, false);
sortMaxDown(1, pHandle.getMaxEdges(1), dispatcher, false);
sortMinDown(2, pHandle.getMinEdges(2), dispatcher, true);
sortMaxDown(2, pHandle.getMaxEdges(2), dispatcher, true);
return handle;
}