|
|
|
@ -221,30 +221,39 @@ public class BoundingBox extends BoundingVolume { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TempVars vars = TempVars.get(); |
|
|
|
|
|
|
|
|
|
float[] tmpArray = vars.skinPositions; |
|
|
|
|
|
|
|
|
|
BufferUtils.populateFromBuffer(vars.vect1, points, 0); |
|
|
|
|
float minX = vars.vect1.x, minY = vars.vect1.y, minZ = vars.vect1.z; |
|
|
|
|
float maxX = vars.vect1.x, maxY = vars.vect1.y, maxZ = vars.vect1.z; |
|
|
|
|
|
|
|
|
|
for (int i = 1, len = points.remaining() / 3; i < len; i++) { |
|
|
|
|
BufferUtils.populateFromBuffer(vars.vect1, points, i); |
|
|
|
|
|
|
|
|
|
if (vars.vect1.x < minX) { |
|
|
|
|
minX = vars.vect1.x; |
|
|
|
|
} else if (vars.vect1.x > maxX) { |
|
|
|
|
maxX = vars.vect1.x; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (vars.vect1.y < minY) { |
|
|
|
|
minY = vars.vect1.y; |
|
|
|
|
} else if (vars.vect1.y > maxY) { |
|
|
|
|
maxY = vars.vect1.y; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (vars.vect1.z < minZ) { |
|
|
|
|
minZ = vars.vect1.z; |
|
|
|
|
} else if (vars.vect1.z > maxZ) { |
|
|
|
|
maxZ = vars.vect1.z; |
|
|
|
|
float minX = Float.MAX_VALUE, minY = Float.MAX_VALUE, minZ = Float.MAX_VALUE; |
|
|
|
|
float maxX = Float.MIN_VALUE, maxY = Float.MIN_VALUE, maxZ = Float.MIN_VALUE; |
|
|
|
|
|
|
|
|
|
int iterations = (int) FastMath.ceil(points.limit() / ((float) tmpArray.length)); |
|
|
|
|
for (int i = iterations - 1; i >= 0; i--) { |
|
|
|
|
int bufLength = Math.min(tmpArray.length, points.remaining()); |
|
|
|
|
points.get(tmpArray, 0, bufLength); |
|
|
|
|
|
|
|
|
|
for (int j = 0; j < bufLength; j += 3) { |
|
|
|
|
vars.vect1.x = tmpArray[j]; |
|
|
|
|
vars.vect1.y = tmpArray[j+1]; |
|
|
|
|
vars.vect1.z = tmpArray[j+2]; |
|
|
|
|
|
|
|
|
|
if (vars.vect1.x < minX) { |
|
|
|
|
minX = vars.vect1.x; |
|
|
|
|
} else if (vars.vect1.x > maxX) { |
|
|
|
|
maxX = vars.vect1.x; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (vars.vect1.y < minY) { |
|
|
|
|
minY = vars.vect1.y; |
|
|
|
|
} else if (vars.vect1.y > maxY) { |
|
|
|
|
maxY = vars.vect1.y; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (vars.vect1.z < minZ) { |
|
|
|
|
minZ = vars.vect1.z; |
|
|
|
|
} else if (vars.vect1.z > maxZ) { |
|
|
|
|
maxZ = vars.vect1.z; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|