{"ast":null,"code":"import { Scene } from \"../../scene.js\";\nimport { Vector3 } from \"../../Maths/math.vector.js\";\nimport { AbstractMesh } from \"../../Meshes/abstractMesh.js\";\nimport { Ray } from \"../../Culling/ray.js\";\nimport { SceneComponentConstants } from \"../../sceneComponent.js\";\nimport { Octree } from \"./octree.js\";\nimport { EngineStore } from \"../../Engines/engineStore.js\";\nScene.prototype.createOrUpdateSelectionOctree = function (maxCapacity = 64, maxDepth = 2) {\n let component = this._getComponent(SceneComponentConstants.NAME_OCTREE);\n if (!component) {\n component = new OctreeSceneComponent(this);\n this._addComponent(component);\n }\n if (!this._selectionOctree) {\n this._selectionOctree = new Octree(Octree.CreationFuncForMeshes, maxCapacity, maxDepth);\n }\n const worldExtends = this.getWorldExtends();\n // Update octree\n this._selectionOctree.update(worldExtends.min, worldExtends.max, this.meshes);\n return this._selectionOctree;\n};\nObject.defineProperty(Scene.prototype, \"selectionOctree\", {\n get: function () {\n return this._selectionOctree;\n },\n enumerable: true,\n configurable: true\n});\n/**\n * This function will create an octree to help to select the right submeshes for rendering, picking and collision computations.\n * Please note that you must have a decent number of submeshes to get performance improvements when using an octree\n * @param maxCapacity defines the maximum size of each block (64 by default)\n * @param maxDepth defines the maximum depth to use (no more than 2 levels by default)\n * @returns the new octree\n * @see https://www.babylonjs-playground.com/#NA4OQ#12\n * @see https://doc.babylonjs.com/features/featuresDeepDive/scene/optimizeOctrees\n */\nAbstractMesh.prototype.createOrUpdateSubmeshesOctree = function (maxCapacity = 64, maxDepth = 2) {\n const scene = this.getScene();\n let component = scene._getComponent(SceneComponentConstants.NAME_OCTREE);\n if (!component) {\n component = new OctreeSceneComponent(scene);\n scene._addComponent(component);\n }\n if (!this._submeshesOctree) {\n this._submeshesOctree = new Octree(Octree.CreationFuncForSubMeshes, maxCapacity, maxDepth);\n }\n this.computeWorldMatrix(true);\n const boundingInfo = this.getBoundingInfo();\n // Update octree\n const bbox = boundingInfo.boundingBox;\n this._submeshesOctree.update(bbox.minimumWorld, bbox.maximumWorld, this.subMeshes);\n return this._submeshesOctree;\n};\n/**\n * Defines the octree scene component responsible to manage any octrees\n * in a given scene.\n */\nexport class OctreeSceneComponent {\n /**\n * Creates a new instance of the component for the given scene\n * @param scene Defines the scene to register the component in\n */\n constructor(scene) {\n /**\n * The component name help to identify the component in the list of scene components.\n */\n this.name = SceneComponentConstants.NAME_OCTREE;\n /**\n * Indicates if the meshes have been checked to make sure they are isEnabled()\n */\n this.checksIsEnabled = true;\n this._tempRay = new Ray(Vector3.Zero(), new Vector3(1, 1, 1));\n scene = scene || EngineStore.LastCreatedScene;\n if (!scene) {\n return;\n }\n this.scene = scene;\n this.scene.getActiveMeshCandidates = () => this.getActiveMeshCandidates();\n this.scene.getActiveSubMeshCandidates = mesh => this.getActiveSubMeshCandidates(mesh);\n this.scene.getCollidingSubMeshCandidates = (mesh, collider) => this.getCollidingSubMeshCandidates(mesh, collider);\n this.scene.getIntersectingSubMeshCandidates = (mesh, localRay) => this.getIntersectingSubMeshCandidates(mesh, localRay);\n }\n /**\n * Registers the component in a given scene\n */\n register() {\n this.scene.onMeshRemovedObservable.add(mesh => {\n const sceneOctree = this.scene.selectionOctree;\n if (sceneOctree !== undefined && sceneOctree !== null) {\n const index = sceneOctree.dynamicContent.indexOf(mesh);\n if (index !== -1) {\n sceneOctree.dynamicContent.splice(index, 1);\n }\n }\n });\n this.scene.onMeshImportedObservable.add(mesh => {\n const sceneOctree = this.scene.selectionOctree;\n if (sceneOctree !== undefined && sceneOctree !== null) {\n sceneOctree.addMesh(mesh);\n }\n });\n }\n /**\n * Return the list of active meshes\n * @returns the list of active meshes\n */\n getActiveMeshCandidates() {\n var _this$scene$_selectio;\n return ((_this$scene$_selectio = this.scene._selectionOctree) === null || _this$scene$_selectio === void 0 ? void 0 : _this$scene$_selectio.select(this.scene.frustumPlanes)) || this.scene._getDefaultMeshCandidates();\n }\n /**\n * Return the list of active sub meshes\n * @param mesh The mesh to get the candidates sub meshes from\n * @returns the list of active sub meshes\n */\n getActiveSubMeshCandidates(mesh) {\n if (mesh._submeshesOctree && mesh.useOctreeForRenderingSelection) {\n const intersections = mesh._submeshesOctree.select(this.scene.frustumPlanes);\n return intersections;\n }\n return this.scene._getDefaultSubMeshCandidates(mesh);\n }\n /**\n * Return the list of sub meshes intersecting with a given local ray\n * @param mesh defines the mesh to find the submesh for\n * @param localRay defines the ray in local space\n * @returns the list of intersecting sub meshes\n */\n getIntersectingSubMeshCandidates(mesh, localRay) {\n if (mesh._submeshesOctree && mesh.useOctreeForPicking) {\n Ray.TransformToRef(localRay, mesh.getWorldMatrix(), this._tempRay);\n const intersections = mesh._submeshesOctree.intersectsRay(this._tempRay);\n return intersections;\n }\n return this.scene._getDefaultSubMeshCandidates(mesh);\n }\n /**\n * Return the list of sub meshes colliding with a collider\n * @param mesh defines the mesh to find the submesh for\n * @param collider defines the collider to evaluate the collision against\n * @returns the list of colliding sub meshes\n */\n getCollidingSubMeshCandidates(mesh, collider) {\n if (mesh._submeshesOctree && mesh.useOctreeForCollisions) {\n const radius = collider._velocityWorldLength + Math.max(collider._radius.x, collider._radius.y, collider._radius.z);\n const intersections = mesh._submeshesOctree.intersects(collider._basePointWorld, radius);\n return intersections;\n }\n return this.scene._getDefaultSubMeshCandidates(mesh);\n }\n /**\n * Rebuilds the elements related to this component in case of\n * context lost for instance.\n */\n rebuild() {\n // Nothing to do here.\n }\n /**\n * Disposes the component and the associated resources.\n */\n dispose() {\n // Nothing to do here.\n }\n}","map":{"version":3,"names":["Scene","Vector3","AbstractMesh","Ray","SceneComponentConstants","Octree","EngineStore","prototype","createOrUpdateSelectionOctree","maxCapacity","maxDepth","component","_getComponent","NAME_OCTREE","OctreeSceneComponent","_addComponent","_selectionOctree","CreationFuncForMeshes","worldExtends","getWorldExtends","update","min","max","meshes","Object","defineProperty","get","enumerable","configurable","createOrUpdateSubmeshesOctree","scene","getScene","_submeshesOctree","CreationFuncForSubMeshes","computeWorldMatrix","boundingInfo","getBoundingInfo","bbox","boundingBox","minimumWorld","maximumWorld","subMeshes","constructor","name","checksIsEnabled","_tempRay","Zero","LastCreatedScene","getActiveMeshCandidates","getActiveSubMeshCandidates","mesh","getCollidingSubMeshCandidates","collider","getIntersectingSubMeshCandidates","localRay","register","onMeshRemovedObservable","add","sceneOctree","selectionOctree","undefined","index","dynamicContent","indexOf","splice","onMeshImportedObservable","addMesh","_this$scene$_selectio","select","frustumPlanes","_getDefaultMeshCandidates","useOctreeForRenderingSelection","intersections","_getDefaultSubMeshCandidates","useOctreeForPicking","TransformToRef","getWorldMatrix","intersectsRay","useOctreeForCollisions","radius","_velocityWorldLength","Math","_radius","x","y","z","intersects","_basePointWorld","rebuild","dispose"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Culling/Octrees/octreeSceneComponent.js"],"sourcesContent":["import { Scene } from \"../../scene.js\";\nimport { Vector3 } from \"../../Maths/math.vector.js\";\nimport { AbstractMesh } from \"../../Meshes/abstractMesh.js\";\nimport { Ray } from \"../../Culling/ray.js\";\nimport { SceneComponentConstants } from \"../../sceneComponent.js\";\nimport { Octree } from \"./octree.js\";\nimport { EngineStore } from \"../../Engines/engineStore.js\";\nScene.prototype.createOrUpdateSelectionOctree = function (maxCapacity = 64, maxDepth = 2) {\n let component = this._getComponent(SceneComponentConstants.NAME_OCTREE);\n if (!component) {\n component = new OctreeSceneComponent(this);\n this._addComponent(component);\n }\n if (!this._selectionOctree) {\n this._selectionOctree = new Octree(Octree.CreationFuncForMeshes, maxCapacity, maxDepth);\n }\n const worldExtends = this.getWorldExtends();\n // Update octree\n this._selectionOctree.update(worldExtends.min, worldExtends.max, this.meshes);\n return this._selectionOctree;\n};\nObject.defineProperty(Scene.prototype, \"selectionOctree\", {\n get: function () {\n return this._selectionOctree;\n },\n enumerable: true,\n configurable: true,\n});\n/**\n * This function will create an octree to help to select the right submeshes for rendering, picking and collision computations.\n * Please note that you must have a decent number of submeshes to get performance improvements when using an octree\n * @param maxCapacity defines the maximum size of each block (64 by default)\n * @param maxDepth defines the maximum depth to use (no more than 2 levels by default)\n * @returns the new octree\n * @see https://www.babylonjs-playground.com/#NA4OQ#12\n * @see https://doc.babylonjs.com/features/featuresDeepDive/scene/optimizeOctrees\n */\nAbstractMesh.prototype.createOrUpdateSubmeshesOctree = function (maxCapacity = 64, maxDepth = 2) {\n const scene = this.getScene();\n let component = scene._getComponent(SceneComponentConstants.NAME_OCTREE);\n if (!component) {\n component = new OctreeSceneComponent(scene);\n scene._addComponent(component);\n }\n if (!this._submeshesOctree) {\n this._submeshesOctree = new Octree(Octree.CreationFuncForSubMeshes, maxCapacity, maxDepth);\n }\n this.computeWorldMatrix(true);\n const boundingInfo = this.getBoundingInfo();\n // Update octree\n const bbox = boundingInfo.boundingBox;\n this._submeshesOctree.update(bbox.minimumWorld, bbox.maximumWorld, this.subMeshes);\n return this._submeshesOctree;\n};\n/**\n * Defines the octree scene component responsible to manage any octrees\n * in a given scene.\n */\nexport class OctreeSceneComponent {\n /**\n * Creates a new instance of the component for the given scene\n * @param scene Defines the scene to register the component in\n */\n constructor(scene) {\n /**\n * The component name help to identify the component in the list of scene components.\n */\n this.name = SceneComponentConstants.NAME_OCTREE;\n /**\n * Indicates if the meshes have been checked to make sure they are isEnabled()\n */\n this.checksIsEnabled = true;\n this._tempRay = new Ray(Vector3.Zero(), new Vector3(1, 1, 1));\n scene = scene || EngineStore.LastCreatedScene;\n if (!scene) {\n return;\n }\n this.scene = scene;\n this.scene.getActiveMeshCandidates = () => this.getActiveMeshCandidates();\n this.scene.getActiveSubMeshCandidates = (mesh) => this.getActiveSubMeshCandidates(mesh);\n this.scene.getCollidingSubMeshCandidates = (mesh, collider) => this.getCollidingSubMeshCandidates(mesh, collider);\n this.scene.getIntersectingSubMeshCandidates = (mesh, localRay) => this.getIntersectingSubMeshCandidates(mesh, localRay);\n }\n /**\n * Registers the component in a given scene\n */\n register() {\n this.scene.onMeshRemovedObservable.add((mesh) => {\n const sceneOctree = this.scene.selectionOctree;\n if (sceneOctree !== undefined && sceneOctree !== null) {\n const index = sceneOctree.dynamicContent.indexOf(mesh);\n if (index !== -1) {\n sceneOctree.dynamicContent.splice(index, 1);\n }\n }\n });\n this.scene.onMeshImportedObservable.add((mesh) => {\n const sceneOctree = this.scene.selectionOctree;\n if (sceneOctree !== undefined && sceneOctree !== null) {\n sceneOctree.addMesh(mesh);\n }\n });\n }\n /**\n * Return the list of active meshes\n * @returns the list of active meshes\n */\n getActiveMeshCandidates() {\n return this.scene._selectionOctree?.select(this.scene.frustumPlanes) || this.scene._getDefaultMeshCandidates();\n }\n /**\n * Return the list of active sub meshes\n * @param mesh The mesh to get the candidates sub meshes from\n * @returns the list of active sub meshes\n */\n getActiveSubMeshCandidates(mesh) {\n if (mesh._submeshesOctree && mesh.useOctreeForRenderingSelection) {\n const intersections = mesh._submeshesOctree.select(this.scene.frustumPlanes);\n return intersections;\n }\n return this.scene._getDefaultSubMeshCandidates(mesh);\n }\n /**\n * Return the list of sub meshes intersecting with a given local ray\n * @param mesh defines the mesh to find the submesh for\n * @param localRay defines the ray in local space\n * @returns the list of intersecting sub meshes\n */\n getIntersectingSubMeshCandidates(mesh, localRay) {\n if (mesh._submeshesOctree && mesh.useOctreeForPicking) {\n Ray.TransformToRef(localRay, mesh.getWorldMatrix(), this._tempRay);\n const intersections = mesh._submeshesOctree.intersectsRay(this._tempRay);\n return intersections;\n }\n return this.scene._getDefaultSubMeshCandidates(mesh);\n }\n /**\n * Return the list of sub meshes colliding with a collider\n * @param mesh defines the mesh to find the submesh for\n * @param collider defines the collider to evaluate the collision against\n * @returns the list of colliding sub meshes\n */\n getCollidingSubMeshCandidates(mesh, collider) {\n if (mesh._submeshesOctree && mesh.useOctreeForCollisions) {\n const radius = collider._velocityWorldLength + Math.max(collider._radius.x, collider._radius.y, collider._radius.z);\n const intersections = mesh._submeshesOctree.intersects(collider._basePointWorld, radius);\n return intersections;\n }\n return this.scene._getDefaultSubMeshCandidates(mesh);\n }\n /**\n * Rebuilds the elements related to this component in case of\n * context lost for instance.\n */\n rebuild() {\n // Nothing to do here.\n }\n /**\n * Disposes the component and the associated resources.\n */\n dispose() {\n // Nothing to do here.\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}