f3e5431e1d6af6ed14edf5660ab4a0ac668555b4ac88789a468ea5f6fc552967.json 49 KB

1
  1. {"ast":null,"code":"import { StandardMaterial } from \"../Materials/standardMaterial.js\";\nimport { Color3 } from \"../Maths/math.color.js\";\nimport { Matrix, TmpVectors, Vector3 } from \"../Maths/math.vector.js\";\nimport { CreateLines } from \"../Meshes/Builders/linesBuilder.js\";\nimport { Mesh } from \"../Meshes/mesh.js\";\nimport { VertexData } from \"../Meshes/mesh.vertexData.js\";\nimport { TransformNode } from \"../Meshes/transformNode.js\";\n/**\n * Class used to render a debug view of the frustum for a directional light\n * @see https://playground.babylonjs.com/#7EFGSG#4\n * @since 5.0.0\n */\nexport class DirectionalLightFrustumViewer {\n /**\n * Gets or sets the transparency of the frustum planes\n */\n get transparency() {\n return this._transparency;\n }\n set transparency(alpha) {\n this._transparency = alpha;\n for (let i = 6; i < 12; ++i) {\n this._lightHelperFrustumMeshes[i].material.alpha = alpha;\n }\n }\n /**\n * true to display the edges of the frustum\n */\n get showLines() {\n return this._showLines;\n }\n set showLines(show) {\n if (this._showLines === show) {\n return;\n }\n this._showLines = show;\n for (let i = 0; i < 6; ++i) {\n this._lightHelperFrustumMeshes[i].setEnabled(show);\n }\n }\n /**\n * true to display the planes of the frustum\n */\n get showPlanes() {\n return this._showPlanes;\n }\n set showPlanes(show) {\n if (this._showPlanes === show) {\n return;\n }\n this._showPlanes = show;\n for (let i = 6; i < 12; ++i) {\n this._lightHelperFrustumMeshes[i].setEnabled(show);\n }\n }\n /**\n * Creates a new frustum viewer\n * @param light directional light to display the frustum for\n * @param camera camera used to retrieve the minZ / maxZ values if the shadowMinZ/shadowMaxZ values of the light are not setup\n */\n constructor(light, camera) {\n this._oldPosition = new Vector3(Number.NaN, Number.NaN, Number.NaN);\n this._oldDirection = new Vector3(Number.NaN, Number.NaN, Number.NaN);\n this._transparency = 0.3;\n this._showLines = true;\n this._showPlanes = true;\n this._scene = light.getScene();\n this._light = light;\n this._camera = camera;\n this._inverseViewMatrix = Matrix.Identity();\n this._lightHelperFrustumMeshes = [];\n this._createGeometry();\n this.show();\n this.update();\n }\n /**\n * Shows the frustum\n */\n show() {\n this._lightHelperFrustumMeshes.forEach((mesh, index) => {\n mesh.setEnabled(index < 6 && this._showLines || index >= 6 && this._showPlanes);\n });\n this._oldPosition.set(Number.NaN, Number.NaN, Number.NaN);\n this._visible = true;\n }\n /**\n * Hides the frustum\n */\n hide() {\n this._lightHelperFrustumMeshes.forEach(mesh => {\n mesh.setEnabled(false);\n });\n this._visible = false;\n }\n /**\n * Updates the frustum.\n * Call this method to update the frustum view if the light has changed position/direction\n */\n update() {\n var _this$_lightHelperFru, _this$_lightHelperFru2, _this$_lightHelperFru3, _this$_lightHelperFru4, _this$_lightHelperFru5, _this$_lightHelperFru6;\n if (!this._visible) {\n return;\n }\n if (this._oldPosition.equals(this._light.position) && this._oldDirection.equals(this._light.direction) && this._oldAutoCalc === this._light.autoCalcShadowZBounds && this._oldMinZ === this._light.shadowMinZ && this._oldMaxZ === this._light.shadowMaxZ) {\n return;\n }\n this._oldPosition.copyFrom(this._light.position);\n this._oldDirection.copyFrom(this._light.direction);\n this._oldAutoCalc = this._light.autoCalcShadowZBounds;\n this._oldMinZ = this._light.shadowMinZ;\n this._oldMaxZ = this._light.shadowMaxZ;\n TmpVectors.Vector3[0].set(this._light.orthoLeft, this._light.orthoBottom, this._light.shadowMinZ !== undefined ? this._light.shadowMinZ : this._camera.minZ); // min light extents\n TmpVectors.Vector3[1].set(this._light.orthoRight, this._light.orthoTop, this._light.shadowMaxZ !== undefined ? this._light.shadowMaxZ : this._camera.maxZ); // max light extents\n const invLightView = this._getInvertViewMatrix();\n TmpVectors.Vector3[2].copyFromFloats(TmpVectors.Vector3[1].x, TmpVectors.Vector3[1].y, TmpVectors.Vector3[0].z); // n1\n TmpVectors.Vector3[3].copyFromFloats(TmpVectors.Vector3[1].x, TmpVectors.Vector3[0].y, TmpVectors.Vector3[0].z); // n2\n TmpVectors.Vector3[4].copyFromFloats(TmpVectors.Vector3[0].x, TmpVectors.Vector3[0].y, TmpVectors.Vector3[0].z); // n3\n TmpVectors.Vector3[5].copyFromFloats(TmpVectors.Vector3[0].x, TmpVectors.Vector3[1].y, TmpVectors.Vector3[0].z); // n4\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[2], invLightView, TmpVectors.Vector3[2]); // near1\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[3], invLightView, TmpVectors.Vector3[3]); // near2\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[4], invLightView, TmpVectors.Vector3[4]); // near3\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[5], invLightView, TmpVectors.Vector3[5]); // near4\n TmpVectors.Vector3[6].copyFromFloats(TmpVectors.Vector3[1].x, TmpVectors.Vector3[1].y, TmpVectors.Vector3[1].z); // f1\n TmpVectors.Vector3[7].copyFromFloats(TmpVectors.Vector3[1].x, TmpVectors.Vector3[0].y, TmpVectors.Vector3[1].z); // f2\n TmpVectors.Vector3[8].copyFromFloats(TmpVectors.Vector3[0].x, TmpVectors.Vector3[0].y, TmpVectors.Vector3[1].z); // f3\n TmpVectors.Vector3[9].copyFromFloats(TmpVectors.Vector3[0].x, TmpVectors.Vector3[1].y, TmpVectors.Vector3[1].z); // f4\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[6], invLightView, TmpVectors.Vector3[6]); // far1\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[7], invLightView, TmpVectors.Vector3[7]); // far2\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[8], invLightView, TmpVectors.Vector3[8]); // far3\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[9], invLightView, TmpVectors.Vector3[9]); // far4\n CreateLines(\"nearlines\", {\n updatable: true,\n points: this._nearLinesPoints,\n instance: this._lightHelperFrustumMeshes[0]\n }, this._scene);\n CreateLines(\"farlines\", {\n updatable: true,\n points: this._farLinesPoints,\n instance: this._lightHelperFrustumMeshes[1]\n }, this._scene);\n CreateLines(\"trlines\", {\n updatable: true,\n points: this._trLinesPoints,\n instance: this._lightHelperFrustumMeshes[2]\n }, this._scene);\n CreateLines(\"brlines\", {\n updatable: true,\n points: this._brLinesPoints,\n instance: this._lightHelperFrustumMeshes[3]\n }, this._scene);\n CreateLines(\"tllines\", {\n updatable: true,\n points: this._tlLinesPoints,\n instance: this._lightHelperFrustumMeshes[4]\n }, this._scene);\n CreateLines(\"bllines\", {\n updatable: true,\n points: this._blLinesPoints,\n instance: this._lightHelperFrustumMeshes[5]\n }, this._scene);\n TmpVectors.Vector3[2].toArray(this._nearPlaneVertices, 0);\n TmpVectors.Vector3[3].toArray(this._nearPlaneVertices, 3);\n TmpVectors.Vector3[4].toArray(this._nearPlaneVertices, 6);\n TmpVectors.Vector3[5].toArray(this._nearPlaneVertices, 9);\n (_this$_lightHelperFru = this._lightHelperFrustumMeshes[6].geometry) === null || _this$_lightHelperFru === void 0 || _this$_lightHelperFru.updateVerticesDataDirectly(\"position\", this._nearPlaneVertices, 0);\n TmpVectors.Vector3[6].toArray(this._farPlaneVertices, 0);\n TmpVectors.Vector3[7].toArray(this._farPlaneVertices, 3);\n TmpVectors.Vector3[8].toArray(this._farPlaneVertices, 6);\n TmpVectors.Vector3[9].toArray(this._farPlaneVertices, 9);\n (_this$_lightHelperFru2 = this._lightHelperFrustumMeshes[7].geometry) === null || _this$_lightHelperFru2 === void 0 || _this$_lightHelperFru2.updateVerticesDataDirectly(\"position\", this._farPlaneVertices, 0);\n TmpVectors.Vector3[2].toArray(this._rightPlaneVertices, 0);\n TmpVectors.Vector3[6].toArray(this._rightPlaneVertices, 3);\n TmpVectors.Vector3[7].toArray(this._rightPlaneVertices, 6);\n TmpVectors.Vector3[3].toArray(this._rightPlaneVertices, 9);\n (_this$_lightHelperFru3 = this._lightHelperFrustumMeshes[8].geometry) === null || _this$_lightHelperFru3 === void 0 || _this$_lightHelperFru3.updateVerticesDataDirectly(\"position\", this._rightPlaneVertices, 0);\n TmpVectors.Vector3[5].toArray(this._leftPlaneVertices, 0);\n TmpVectors.Vector3[9].toArray(this._leftPlaneVertices, 3);\n TmpVectors.Vector3[8].toArray(this._leftPlaneVertices, 6);\n TmpVectors.Vector3[4].toArray(this._leftPlaneVertices, 9);\n (_this$_lightHelperFru4 = this._lightHelperFrustumMeshes[9].geometry) === null || _this$_lightHelperFru4 === void 0 || _this$_lightHelperFru4.updateVerticesDataDirectly(\"position\", this._leftPlaneVertices, 0);\n TmpVectors.Vector3[2].toArray(this._topPlaneVertices, 0);\n TmpVectors.Vector3[6].toArray(this._topPlaneVertices, 3);\n TmpVectors.Vector3[9].toArray(this._topPlaneVertices, 6);\n TmpVectors.Vector3[5].toArray(this._topPlaneVertices, 9);\n (_this$_lightHelperFru5 = this._lightHelperFrustumMeshes[10].geometry) === null || _this$_lightHelperFru5 === void 0 || _this$_lightHelperFru5.updateVerticesDataDirectly(\"position\", this._topPlaneVertices, 0);\n TmpVectors.Vector3[3].toArray(this._bottomPlaneVertices, 0);\n TmpVectors.Vector3[7].toArray(this._bottomPlaneVertices, 3);\n TmpVectors.Vector3[8].toArray(this._bottomPlaneVertices, 6);\n TmpVectors.Vector3[4].toArray(this._bottomPlaneVertices, 9);\n (_this$_lightHelperFru6 = this._lightHelperFrustumMeshes[11].geometry) === null || _this$_lightHelperFru6 === void 0 || _this$_lightHelperFru6.updateVerticesDataDirectly(\"position\", this._bottomPlaneVertices, 0);\n }\n /**\n * Dispose of the class / remove the frustum view\n */\n dispose() {\n this._lightHelperFrustumMeshes.forEach(mesh => {\n var _mesh$material;\n (_mesh$material = mesh.material) === null || _mesh$material === void 0 || _mesh$material.dispose();\n mesh.dispose();\n });\n this._rootNode.dispose();\n }\n _createGeometry() {\n this._rootNode = new TransformNode(\"directionalLightHelperRoot_\" + this._light.name, this._scene);\n this._rootNode.parent = this._light.parent;\n this._nearLinesPoints = [TmpVectors.Vector3[0], TmpVectors.Vector3[1], TmpVectors.Vector3[2], TmpVectors.Vector3[3], TmpVectors.Vector3[4]];\n const nearLines = CreateLines(\"nearlines\", {\n updatable: true,\n points: this._nearLinesPoints\n }, this._scene);\n nearLines.parent = this._rootNode;\n nearLines.alwaysSelectAsActiveMesh = true;\n this._farLinesPoints = [TmpVectors.Vector3[5], TmpVectors.Vector3[6], TmpVectors.Vector3[7], TmpVectors.Vector3[8], TmpVectors.Vector3[9]];\n const farLines = CreateLines(\"farlines\", {\n updatable: true,\n points: this._farLinesPoints\n }, this._scene);\n farLines.parent = this._rootNode;\n farLines.alwaysSelectAsActiveMesh = true;\n this._trLinesPoints = [TmpVectors.Vector3[10], TmpVectors.Vector3[11]];\n const trLines = CreateLines(\"trlines\", {\n updatable: true,\n points: this._trLinesPoints\n }, this._scene);\n trLines.parent = this._rootNode;\n trLines.alwaysSelectAsActiveMesh = true;\n this._brLinesPoints = [TmpVectors.Vector3[12], TmpVectors.Vector3[0]];\n const brLines = CreateLines(\"brlines\", {\n updatable: true,\n points: this._brLinesPoints\n }, this._scene);\n brLines.parent = this._rootNode;\n brLines.alwaysSelectAsActiveMesh = true;\n this._tlLinesPoints = [TmpVectors.Vector3[1], TmpVectors.Vector3[2]];\n const tlLines = CreateLines(\"tllines\", {\n updatable: true,\n points: this._tlLinesPoints\n }, this._scene);\n tlLines.parent = this._rootNode;\n tlLines.alwaysSelectAsActiveMesh = true;\n this._blLinesPoints = [TmpVectors.Vector3[3], TmpVectors.Vector3[4]];\n const blLines = CreateLines(\"bllines\", {\n updatable: true,\n points: this._blLinesPoints\n }, this._scene);\n blLines.parent = this._rootNode;\n blLines.alwaysSelectAsActiveMesh = true;\n this._lightHelperFrustumMeshes.push(nearLines, farLines, trLines, brLines, tlLines, blLines);\n const makePlane = (name, color, positions) => {\n const plane = new Mesh(name + \"plane\", this._scene);\n const mat = new StandardMaterial(name + \"PlaneMat\", this._scene);\n plane.material = mat;\n plane.parent = this._rootNode;\n plane.alwaysSelectAsActiveMesh = true;\n mat.emissiveColor = color;\n mat.alpha = this.transparency;\n mat.backFaceCulling = false;\n mat.disableLighting = true;\n const indices = [0, 1, 2, 0, 2, 3];\n const vertexData = new VertexData();\n vertexData.positions = positions;\n vertexData.indices = indices;\n vertexData.applyToMesh(plane, true);\n this._lightHelperFrustumMeshes.push(plane);\n };\n this._nearPlaneVertices = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n this._farPlaneVertices = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n this._rightPlaneVertices = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n this._leftPlaneVertices = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n this._topPlaneVertices = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n this._bottomPlaneVertices = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n makePlane(\"near\", new Color3(1, 0, 0), this._nearPlaneVertices);\n makePlane(\"far\", new Color3(0.3, 0, 0), this._farPlaneVertices);\n makePlane(\"right\", new Color3(0, 1, 0), this._rightPlaneVertices);\n makePlane(\"left\", new Color3(0, 0.3, 0), this._leftPlaneVertices);\n makePlane(\"top\", new Color3(0, 0, 1), this._topPlaneVertices);\n makePlane(\"bottom\", new Color3(0, 0, 0.3), this._bottomPlaneVertices);\n this._nearLinesPoints[0] = TmpVectors.Vector3[2];\n this._nearLinesPoints[1] = TmpVectors.Vector3[3];\n this._nearLinesPoints[2] = TmpVectors.Vector3[4];\n this._nearLinesPoints[3] = TmpVectors.Vector3[5];\n this._nearLinesPoints[4] = TmpVectors.Vector3[2];\n this._farLinesPoints[0] = TmpVectors.Vector3[6];\n this._farLinesPoints[1] = TmpVectors.Vector3[7];\n this._farLinesPoints[2] = TmpVectors.Vector3[8];\n this._farLinesPoints[3] = TmpVectors.Vector3[9];\n this._farLinesPoints[4] = TmpVectors.Vector3[6];\n this._trLinesPoints[0] = TmpVectors.Vector3[2];\n this._trLinesPoints[1] = TmpVectors.Vector3[6];\n this._brLinesPoints[0] = TmpVectors.Vector3[3];\n this._brLinesPoints[1] = TmpVectors.Vector3[7];\n this._tlLinesPoints[0] = TmpVectors.Vector3[4];\n this._tlLinesPoints[1] = TmpVectors.Vector3[8];\n this._blLinesPoints[0] = TmpVectors.Vector3[5];\n this._blLinesPoints[1] = TmpVectors.Vector3[9];\n }\n _getInvertViewMatrix() {\n Matrix.LookAtLHToRef(this._light.position, this._light.position.add(this._light.direction), Vector3.UpReadOnly, this._inverseViewMatrix);\n this._inverseViewMatrix.invertToRef(this._inverseViewMatrix);\n return this._inverseViewMatrix;\n }\n}","map":{"version":3,"names":["StandardMaterial","Color3","Matrix","TmpVectors","Vector3","CreateLines","Mesh","VertexData","TransformNode","DirectionalLightFrustumViewer","transparency","_transparency","alpha","i","_lightHelperFrustumMeshes","material","showLines","_showLines","show","setEnabled","showPlanes","_showPlanes","constructor","light","camera","_oldPosition","Number","NaN","_oldDirection","_scene","getScene","_light","_camera","_inverseViewMatrix","Identity","_createGeometry","update","forEach","mesh","index","set","_visible","hide","_this$_lightHelperFru","_this$_lightHelperFru2","_this$_lightHelperFru3","_this$_lightHelperFru4","_this$_lightHelperFru5","_this$_lightHelperFru6","equals","position","direction","_oldAutoCalc","autoCalcShadowZBounds","_oldMinZ","shadowMinZ","_oldMaxZ","shadowMaxZ","copyFrom","orthoLeft","orthoBottom","undefined","minZ","orthoRight","orthoTop","maxZ","invLightView","_getInvertViewMatrix","copyFromFloats","x","y","z","TransformCoordinatesToRef","updatable","points","_nearLinesPoints","instance","_farLinesPoints","_trLinesPoints","_brLinesPoints","_tlLinesPoints","_blLinesPoints","toArray","_nearPlaneVertices","geometry","updateVerticesDataDirectly","_farPlaneVertices","_rightPlaneVertices","_leftPlaneVertices","_topPlaneVertices","_bottomPlaneVertices","dispose","_mesh$material","_rootNode","name","parent","nearLines","alwaysSelectAsActiveMesh","farLines","trLines","brLines","tlLines","blLines","push","makePlane","color","positions","plane","mat","emissiveColor","backFaceCulling","disableLighting","indices","vertexData","applyToMesh","LookAtLHToRef","add","UpReadOnly","invertToRef"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Debug/directionalLightFrustumViewer.js"],"sourcesContent":["import { StandardMaterial } from \"../Materials/standardMaterial.js\";\nimport { Color3 } from \"../Maths/math.color.js\";\nimport { Matrix, TmpVectors, Vector3 } from \"../Maths/math.vector.js\";\nimport { CreateLines } from \"../Meshes/Builders/linesBuilder.js\";\nimport { Mesh } from \"../Meshes/mesh.js\";\nimport { VertexData } from \"../Meshes/mesh.vertexData.js\";\nimport { TransformNode } from \"../Meshes/transformNode.js\";\n/**\n * Class used to render a debug view of the frustum for a directional light\n * @see https://playground.babylonjs.com/#7EFGSG#4\n * @since 5.0.0\n */\nexport class DirectionalLightFrustumViewer {\n /**\n * Gets or sets the transparency of the frustum planes\n */\n get transparency() {\n return this._transparency;\n }\n set transparency(alpha) {\n this._transparency = alpha;\n for (let i = 6; i < 12; ++i) {\n this._lightHelperFrustumMeshes[i].material.alpha = alpha;\n }\n }\n /**\n * true to display the edges of the frustum\n */\n get showLines() {\n return this._showLines;\n }\n set showLines(show) {\n if (this._showLines === show) {\n return;\n }\n this._showLines = show;\n for (let i = 0; i < 6; ++i) {\n this._lightHelperFrustumMeshes[i].setEnabled(show);\n }\n }\n /**\n * true to display the planes of the frustum\n */\n get showPlanes() {\n return this._showPlanes;\n }\n set showPlanes(show) {\n if (this._showPlanes === show) {\n return;\n }\n this._showPlanes = show;\n for (let i = 6; i < 12; ++i) {\n this._lightHelperFrustumMeshes[i].setEnabled(show);\n }\n }\n /**\n * Creates a new frustum viewer\n * @param light directional light to display the frustum for\n * @param camera camera used to retrieve the minZ / maxZ values if the shadowMinZ/shadowMaxZ values of the light are not setup\n */\n constructor(light, camera) {\n this._oldPosition = new Vector3(Number.NaN, Number.NaN, Number.NaN);\n this._oldDirection = new Vector3(Number.NaN, Number.NaN, Number.NaN);\n this._transparency = 0.3;\n this._showLines = true;\n this._showPlanes = true;\n this._scene = light.getScene();\n this._light = light;\n this._camera = camera;\n this._inverseViewMatrix = Matrix.Identity();\n this._lightHelperFrustumMeshes = [];\n this._createGeometry();\n this.show();\n this.update();\n }\n /**\n * Shows the frustum\n */\n show() {\n this._lightHelperFrustumMeshes.forEach((mesh, index) => {\n mesh.setEnabled((index < 6 && this._showLines) || (index >= 6 && this._showPlanes));\n });\n this._oldPosition.set(Number.NaN, Number.NaN, Number.NaN);\n this._visible = true;\n }\n /**\n * Hides the frustum\n */\n hide() {\n this._lightHelperFrustumMeshes.forEach((mesh) => {\n mesh.setEnabled(false);\n });\n this._visible = false;\n }\n /**\n * Updates the frustum.\n * Call this method to update the frustum view if the light has changed position/direction\n */\n update() {\n if (!this._visible) {\n return;\n }\n if (this._oldPosition.equals(this._light.position) &&\n this._oldDirection.equals(this._light.direction) &&\n this._oldAutoCalc === this._light.autoCalcShadowZBounds &&\n this._oldMinZ === this._light.shadowMinZ &&\n this._oldMaxZ === this._light.shadowMaxZ) {\n return;\n }\n this._oldPosition.copyFrom(this._light.position);\n this._oldDirection.copyFrom(this._light.direction);\n this._oldAutoCalc = this._light.autoCalcShadowZBounds;\n this._oldMinZ = this._light.shadowMinZ;\n this._oldMaxZ = this._light.shadowMaxZ;\n TmpVectors.Vector3[0].set(this._light.orthoLeft, this._light.orthoBottom, this._light.shadowMinZ !== undefined ? this._light.shadowMinZ : this._camera.minZ); // min light extents\n TmpVectors.Vector3[1].set(this._light.orthoRight, this._light.orthoTop, this._light.shadowMaxZ !== undefined ? this._light.shadowMaxZ : this._camera.maxZ); // max light extents\n const invLightView = this._getInvertViewMatrix();\n TmpVectors.Vector3[2].copyFromFloats(TmpVectors.Vector3[1].x, TmpVectors.Vector3[1].y, TmpVectors.Vector3[0].z); // n1\n TmpVectors.Vector3[3].copyFromFloats(TmpVectors.Vector3[1].x, TmpVectors.Vector3[0].y, TmpVectors.Vector3[0].z); // n2\n TmpVectors.Vector3[4].copyFromFloats(TmpVectors.Vector3[0].x, TmpVectors.Vector3[0].y, TmpVectors.Vector3[0].z); // n3\n TmpVectors.Vector3[5].copyFromFloats(TmpVectors.Vector3[0].x, TmpVectors.Vector3[1].y, TmpVectors.Vector3[0].z); // n4\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[2], invLightView, TmpVectors.Vector3[2]); // near1\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[3], invLightView, TmpVectors.Vector3[3]); // near2\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[4], invLightView, TmpVectors.Vector3[4]); // near3\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[5], invLightView, TmpVectors.Vector3[5]); // near4\n TmpVectors.Vector3[6].copyFromFloats(TmpVectors.Vector3[1].x, TmpVectors.Vector3[1].y, TmpVectors.Vector3[1].z); // f1\n TmpVectors.Vector3[7].copyFromFloats(TmpVectors.Vector3[1].x, TmpVectors.Vector3[0].y, TmpVectors.Vector3[1].z); // f2\n TmpVectors.Vector3[8].copyFromFloats(TmpVectors.Vector3[0].x, TmpVectors.Vector3[0].y, TmpVectors.Vector3[1].z); // f3\n TmpVectors.Vector3[9].copyFromFloats(TmpVectors.Vector3[0].x, TmpVectors.Vector3[1].y, TmpVectors.Vector3[1].z); // f4\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[6], invLightView, TmpVectors.Vector3[6]); // far1\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[7], invLightView, TmpVectors.Vector3[7]); // far2\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[8], invLightView, TmpVectors.Vector3[8]); // far3\n Vector3.TransformCoordinatesToRef(TmpVectors.Vector3[9], invLightView, TmpVectors.Vector3[9]); // far4\n CreateLines(\"nearlines\", { updatable: true, points: this._nearLinesPoints, instance: this._lightHelperFrustumMeshes[0] }, this._scene);\n CreateLines(\"farlines\", { updatable: true, points: this._farLinesPoints, instance: this._lightHelperFrustumMeshes[1] }, this._scene);\n CreateLines(\"trlines\", { updatable: true, points: this._trLinesPoints, instance: this._lightHelperFrustumMeshes[2] }, this._scene);\n CreateLines(\"brlines\", { updatable: true, points: this._brLinesPoints, instance: this._lightHelperFrustumMeshes[3] }, this._scene);\n CreateLines(\"tllines\", { updatable: true, points: this._tlLinesPoints, instance: this._lightHelperFrustumMeshes[4] }, this._scene);\n CreateLines(\"bllines\", { updatable: true, points: this._blLinesPoints, instance: this._lightHelperFrustumMeshes[5] }, this._scene);\n TmpVectors.Vector3[2].toArray(this._nearPlaneVertices, 0);\n TmpVectors.Vector3[3].toArray(this._nearPlaneVertices, 3);\n TmpVectors.Vector3[4].toArray(this._nearPlaneVertices, 6);\n TmpVectors.Vector3[5].toArray(this._nearPlaneVertices, 9);\n this._lightHelperFrustumMeshes[6].geometry?.updateVerticesDataDirectly(\"position\", this._nearPlaneVertices, 0);\n TmpVectors.Vector3[6].toArray(this._farPlaneVertices, 0);\n TmpVectors.Vector3[7].toArray(this._farPlaneVertices, 3);\n TmpVectors.Vector3[8].toArray(this._farPlaneVertices, 6);\n TmpVectors.Vector3[9].toArray(this._farPlaneVertices, 9);\n this._lightHelperFrustumMeshes[7].geometry?.updateVerticesDataDirectly(\"position\", this._farPlaneVertices, 0);\n TmpVectors.Vector3[2].toArray(this._rightPlaneVertices, 0);\n TmpVectors.Vector3[6].toArray(this._rightPlaneVertices, 3);\n TmpVectors.Vector3[7].toArray(this._rightPlaneVertices, 6);\n TmpVectors.Vector3[3].toArray(this._rightPlaneVertices, 9);\n this._lightHelperFrustumMeshes[8].geometry?.updateVerticesDataDirectly(\"position\", this._rightPlaneVertices, 0);\n TmpVectors.Vector3[5].toArray(this._leftPlaneVertices, 0);\n TmpVectors.Vector3[9].toArray(this._leftPlaneVertices, 3);\n TmpVectors.Vector3[8].toArray(this._leftPlaneVertices, 6);\n TmpVectors.Vector3[4].toArray(this._leftPlaneVertices, 9);\n this._lightHelperFrustumMeshes[9].geometry?.updateVerticesDataDirectly(\"position\", this._leftPlaneVertices, 0);\n TmpVectors.Vector3[2].toArray(this._topPlaneVertices, 0);\n TmpVectors.Vector3[6].toArray(this._topPlaneVertices, 3);\n TmpVectors.Vector3[9].toArray(this._topPlaneVertices, 6);\n TmpVectors.Vector3[5].toArray(this._topPlaneVertices, 9);\n this._lightHelperFrustumMeshes[10].geometry?.updateVerticesDataDirectly(\"position\", this._topPlaneVertices, 0);\n TmpVectors.Vector3[3].toArray(this._bottomPlaneVertices, 0);\n TmpVectors.Vector3[7].toArray(this._bottomPlaneVertices, 3);\n TmpVectors.Vector3[8].toArray(this._bottomPlaneVertices, 6);\n TmpVectors.Vector3[4].toArray(this._bottomPlaneVertices, 9);\n this._lightHelperFrustumMeshes[11].geometry?.updateVerticesDataDirectly(\"position\", this._bottomPlaneVertices, 0);\n }\n /**\n * Dispose of the class / remove the frustum view\n */\n dispose() {\n this._lightHelperFrustumMeshes.forEach((mesh) => {\n mesh.material?.dispose();\n mesh.dispose();\n });\n this._rootNode.dispose();\n }\n _createGeometry() {\n this._rootNode = new TransformNode(\"directionalLightHelperRoot_\" + this._light.name, this._scene);\n this._rootNode.parent = this._light.parent;\n this._nearLinesPoints = [TmpVectors.Vector3[0], TmpVectors.Vector3[1], TmpVectors.Vector3[2], TmpVectors.Vector3[3], TmpVectors.Vector3[4]];\n const nearLines = CreateLines(\"nearlines\", { updatable: true, points: this._nearLinesPoints }, this._scene);\n nearLines.parent = this._rootNode;\n nearLines.alwaysSelectAsActiveMesh = true;\n this._farLinesPoints = [TmpVectors.Vector3[5], TmpVectors.Vector3[6], TmpVectors.Vector3[7], TmpVectors.Vector3[8], TmpVectors.Vector3[9]];\n const farLines = CreateLines(\"farlines\", { updatable: true, points: this._farLinesPoints }, this._scene);\n farLines.parent = this._rootNode;\n farLines.alwaysSelectAsActiveMesh = true;\n this._trLinesPoints = [TmpVectors.Vector3[10], TmpVectors.Vector3[11]];\n const trLines = CreateLines(\"trlines\", { updatable: true, points: this._trLinesPoints }, this._scene);\n trLines.parent = this._rootNode;\n trLines.alwaysSelectAsActiveMesh = true;\n this._brLinesPoints = [TmpVectors.Vector3[12], TmpVectors.Vector3[0]];\n const brLines = CreateLines(\"brlines\", { updatable: true, points: this._brLinesPoints }, this._scene);\n brLines.parent = this._rootNode;\n brLines.alwaysSelectAsActiveMesh = true;\n this._tlLinesPoints = [TmpVectors.Vector3[1], TmpVectors.Vector3[2]];\n const tlLines = CreateLines(\"tllines\", { updatable: true, points: this._tlLinesPoints }, this._scene);\n tlLines.parent = this._rootNode;\n tlLines.alwaysSelectAsActiveMesh = true;\n this._blLinesPoints = [TmpVectors.Vector3[3], TmpVectors.Vector3[4]];\n const blLines = CreateLines(\"bllines\", { updatable: true, points: this._blLinesPoints }, this._scene);\n blLines.parent = this._rootNode;\n blLines.alwaysSelectAsActiveMesh = true;\n this._lightHelperFrustumMeshes.push(nearLines, farLines, trLines, brLines, tlLines, blLines);\n const makePlane = (name, color, positions) => {\n const plane = new Mesh(name + \"plane\", this._scene);\n const mat = new StandardMaterial(name + \"PlaneMat\", this._scene);\n plane.material = mat;\n plane.parent = this._rootNode;\n plane.alwaysSelectAsActiveMesh = true;\n mat.emissiveColor = color;\n mat.alpha = this.transparency;\n mat.backFaceCulling = false;\n mat.disableLighting = true;\n const indices = [0, 1, 2, 0, 2, 3];\n const vertexData = new VertexData();\n vertexData.positions = positions;\n vertexData.indices = indices;\n vertexData.applyToMesh(plane, true);\n this._lightHelperFrustumMeshes.push(plane);\n };\n this._nearPlaneVertices = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n this._farPlaneVertices = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n this._rightPlaneVertices = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n this._leftPlaneVertices = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n this._topPlaneVertices = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n this._bottomPlaneVertices = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n makePlane(\"near\", new Color3(1, 0, 0), this._nearPlaneVertices);\n makePlane(\"far\", new Color3(0.3, 0, 0), this._farPlaneVertices);\n makePlane(\"right\", new Color3(0, 1, 0), this._rightPlaneVertices);\n makePlane(\"left\", new Color3(0, 0.3, 0), this._leftPlaneVertices);\n makePlane(\"top\", new Color3(0, 0, 1), this._topPlaneVertices);\n makePlane(\"bottom\", new Color3(0, 0, 0.3), this._bottomPlaneVertices);\n this._nearLinesPoints[0] = TmpVectors.Vector3[2];\n this._nearLinesPoints[1] = TmpVectors.Vector3[3];\n this._nearLinesPoints[2] = TmpVectors.Vector3[4];\n this._nearLinesPoints[3] = TmpVectors.Vector3[5];\n this._nearLinesPoints[4] = TmpVectors.Vector3[2];\n this._farLinesPoints[0] = TmpVectors.Vector3[6];\n this._farLinesPoints[1] = TmpVectors.Vector3[7];\n this._farLinesPoints[2] = TmpVectors.Vector3[8];\n this._farLinesPoints[3] = TmpVectors.Vector3[9];\n this._farLinesPoints[4] = TmpVectors.Vector3[6];\n this._trLinesPoints[0] = TmpVectors.Vector3[2];\n this._trLinesPoints[1] = TmpVectors.Vector3[6];\n this._brLinesPoints[0] = TmpVectors.Vector3[3];\n this._brLinesPoints[1] = TmpVectors.Vector3[7];\n this._tlLinesPoints[0] = TmpVectors.Vector3[4];\n this._tlLinesPoints[1] = TmpVectors.Vector3[8];\n this._blLinesPoints[0] = TmpVectors.Vector3[5];\n this._blLinesPoints[1] = TmpVectors.Vector3[9];\n }\n _getInvertViewMatrix() {\n Matrix.LookAtLHToRef(this._light.position, this._light.position.add(this._light.direction), Vector3.UpReadOnly, this._inverseViewMatrix);\n this._inverseViewMatrix.invertToRef(this._inverseViewMatrix);\n return this._inverseViewMatrix;\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}