computeBoundingBox method
void
computeBoundingBox()
Implementation
void computeBoundingBox() {
boundingBox ??= BoundingBox();
final position = attributes["position"];
final morphAttributesPosition = morphAttributes["position"];
if (position != null && position is GLBufferAttribute) {
console.warning('BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false". $this');
double infinity = 9999999999.0;
boundingBox!.set(Vector3(-infinity, -infinity, -infinity),Vector3(infinity, infinity, infinity));
return;
}
if (position != null) {
boundingBox!.setFromBuffer(position);
// process morph attributes if present
if (morphAttributesPosition != null) {
for (int i = 0, il = morphAttributesPosition.length; i < il; i++) {
final morphAttribute = morphAttributesPosition[i];
_bufferGeometrybox.setFromBuffer(morphAttribute);
if (morphTargetsRelative) {
_bufferGeometryvector.add2(boundingBox!.min, _bufferGeometrybox.min);
boundingBox!.expandByPoint(_bufferGeometryvector);
_bufferGeometryvector.add2(boundingBox!.max, _bufferGeometrybox.max);
boundingBox!.expandByPoint(_bufferGeometryvector);
} else {
boundingBox!.expandByPoint(_bufferGeometrybox.min);
boundingBox!.expandByPoint(_bufferGeometrybox.max);
}
}
}
} else {
boundingBox!.empty();
}
}