|
@@ -4230,16 +4230,15 @@
|
|
}
|
|
}
|
|
|
|
|
|
// Octrees
|
|
// Octrees
|
|
- public getWorldExtends(): { min: Vector3; max: Vector3 } {
|
|
|
|
|
|
+ public getWorldExtends(filterPredicate?: (mesh: AbstractMesh) => boolean): { min: Vector3; max: Vector3 } {
|
|
var min = new Vector3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
|
|
var min = new Vector3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);
|
|
var max = new Vector3(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
|
|
var max = new Vector3(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);
|
|
- for (var index = 0; index < this.meshes.length; index++) {
|
|
|
|
- var mesh = this.meshes[index];
|
|
|
|
-
|
|
|
|
|
|
+ filterPredicate = filterPredicate || (() => false);
|
|
|
|
+ this.meshes.filter(filterPredicate).forEach(mesh => {
|
|
mesh.computeWorldMatrix(true);
|
|
mesh.computeWorldMatrix(true);
|
|
|
|
|
|
if (!mesh.subMeshes || mesh.subMeshes.length === 0 || mesh.infiniteDistance) {
|
|
if (!mesh.subMeshes || mesh.subMeshes.length === 0 || mesh.infiniteDistance) {
|
|
- continue;
|
|
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
|
|
|
|
let boundingInfo = mesh.getBoundingInfo();
|
|
let boundingInfo = mesh.getBoundingInfo();
|
|
@@ -4249,7 +4248,7 @@
|
|
|
|
|
|
Tools.CheckExtends(minBox, min, max);
|
|
Tools.CheckExtends(minBox, min, max);
|
|
Tools.CheckExtends(maxBox, min, max);
|
|
Tools.CheckExtends(maxBox, min, max);
|
|
- }
|
|
|
|
|
|
+ })
|
|
|
|
|
|
return {
|
|
return {
|
|
min: min,
|
|
min: min,
|