1 |
- {"ast":null,"code":"import { AbstractMesh } from \"../../Meshes/abstractMesh.js\";\nimport { AbstractEngine } from \"../abstractEngine.js\";\n/** @internal */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class _OcclusionDataStorage {\n constructor() {\n /** @internal */\n this.occlusionInternalRetryCounter = 0;\n /** @internal */\n this.isOcclusionQueryInProgress = false;\n /** @internal */\n this.isOccluded = false;\n /** @internal */\n this.occlusionRetryCount = -1;\n /** @internal */\n this.occlusionType = AbstractMesh.OCCLUSION_TYPE_NONE;\n /** @internal */\n this.occlusionQueryAlgorithmType = AbstractMesh.OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE;\n /** @internal */\n this.forceRenderingWhenOccluded = false;\n }\n}\nAbstractEngine.prototype.getGPUFrameTimeCounter = function () {\n return null;\n};\nAbstractEngine.prototype.captureGPUFrameTime = function (value) {\n // Do nothing. Must be implemented by child classes\n};\nAbstractEngine.prototype.createQuery = function () {\n return null;\n};\nAbstractEngine.prototype.deleteQuery = function (query) {\n // Do nothing. Must be implemented by child classes\n return this;\n};\nAbstractEngine.prototype.isQueryResultAvailable = function (query) {\n // Do nothing. Must be implemented by child classes\n return false;\n};\nAbstractEngine.prototype.getQueryResult = function (query) {\n // Do nothing. Must be implemented by child classes\n return 0;\n};\nAbstractEngine.prototype.beginOcclusionQuery = function (algorithmType, query) {\n // Do nothing. Must be implemented by child classes\n return false;\n};\nAbstractEngine.prototype.endOcclusionQuery = function (algorithmType) {\n // Do nothing. Must be implemented by child classes\n return this;\n};\nObject.defineProperty(AbstractMesh.prototype, \"isOcclusionQueryInProgress\", {\n get: function () {\n return this._occlusionDataStorage.isOcclusionQueryInProgress;\n },\n set: function (value) {\n this._occlusionDataStorage.isOcclusionQueryInProgress = value;\n },\n enumerable: false,\n configurable: true\n});\nObject.defineProperty(AbstractMesh.prototype, \"_occlusionDataStorage\", {\n get: function () {\n if (!this.__occlusionDataStorage) {\n this.__occlusionDataStorage = new _OcclusionDataStorage();\n }\n return this.__occlusionDataStorage;\n },\n enumerable: false,\n configurable: true\n});\nObject.defineProperty(AbstractMesh.prototype, \"isOccluded\", {\n get: function () {\n return this._occlusionDataStorage.isOccluded;\n },\n set: function (value) {\n this._occlusionDataStorage.isOccluded = value;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(AbstractMesh.prototype, \"occlusionQueryAlgorithmType\", {\n get: function () {\n return this._occlusionDataStorage.occlusionQueryAlgorithmType;\n },\n set: function (value) {\n this._occlusionDataStorage.occlusionQueryAlgorithmType = value;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(AbstractMesh.prototype, \"occlusionType\", {\n get: function () {\n return this._occlusionDataStorage.occlusionType;\n },\n set: function (value) {\n this._occlusionDataStorage.occlusionType = value;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(AbstractMesh.prototype, \"occlusionRetryCount\", {\n get: function () {\n return this._occlusionDataStorage.occlusionRetryCount;\n },\n set: function (value) {\n this._occlusionDataStorage.occlusionRetryCount = value;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(AbstractMesh.prototype, \"forceRenderingWhenOccluded\", {\n get: function () {\n return this._occlusionDataStorage.forceRenderingWhenOccluded;\n },\n set: function (value) {\n this._occlusionDataStorage.forceRenderingWhenOccluded = value;\n },\n enumerable: true,\n configurable: true\n});\n// We also need to update AbstractMesh as there is a portion of the code there\nAbstractMesh.prototype._checkOcclusionQuery = function () {\n const dataStorage = this._occlusionDataStorage;\n if (dataStorage.occlusionType === AbstractMesh.OCCLUSION_TYPE_NONE) {\n dataStorage.isOccluded = false;\n return false;\n }\n const engine = this.getEngine();\n if (!engine.getCaps().supportOcclusionQuery) {\n dataStorage.isOccluded = false;\n return false;\n }\n if (!engine.isQueryResultAvailable) {\n // Occlusion query where not referenced\n dataStorage.isOccluded = false;\n return false;\n }\n if (this.isOcclusionQueryInProgress && this._occlusionQuery !== null && this._occlusionQuery !== undefined) {\n const isOcclusionQueryAvailable = engine.isQueryResultAvailable(this._occlusionQuery);\n if (isOcclusionQueryAvailable) {\n const occlusionQueryResult = engine.getQueryResult(this._occlusionQuery);\n dataStorage.isOcclusionQueryInProgress = false;\n dataStorage.occlusionInternalRetryCounter = 0;\n dataStorage.isOccluded = occlusionQueryResult > 0 ? false : true;\n } else {\n dataStorage.occlusionInternalRetryCounter++;\n if (dataStorage.occlusionRetryCount !== -1 && dataStorage.occlusionInternalRetryCounter > dataStorage.occlusionRetryCount) {\n dataStorage.isOcclusionQueryInProgress = false;\n dataStorage.occlusionInternalRetryCounter = 0;\n // if optimistic set isOccluded to false regardless of the status of isOccluded. (Render in the current render loop)\n // if strict continue the last state of the object.\n dataStorage.isOccluded = dataStorage.occlusionType === AbstractMesh.OCCLUSION_TYPE_OPTIMISTIC ? false : dataStorage.isOccluded;\n } else {\n return dataStorage.occlusionType === AbstractMesh.OCCLUSION_TYPE_OPTIMISTIC ? false : dataStorage.isOccluded;\n }\n }\n }\n const scene = this.getScene();\n if (scene.getBoundingBoxRenderer) {\n const occlusionBoundingBoxRenderer = scene.getBoundingBoxRenderer();\n if (this._occlusionQuery === null) {\n this._occlusionQuery = engine.createQuery();\n }\n if (this._occlusionQuery && engine.beginOcclusionQuery(dataStorage.occlusionQueryAlgorithmType, this._occlusionQuery)) {\n occlusionBoundingBoxRenderer.renderOcclusionBoundingBox(this);\n engine.endOcclusionQuery(dataStorage.occlusionQueryAlgorithmType);\n this._occlusionDataStorage.isOcclusionQueryInProgress = true;\n }\n }\n return dataStorage.isOccluded;\n};","map":{"version":3,"names":["AbstractMesh","AbstractEngine","_OcclusionDataStorage","constructor","occlusionInternalRetryCounter","isOcclusionQueryInProgress","isOccluded","occlusionRetryCount","occlusionType","OCCLUSION_TYPE_NONE","occlusionQueryAlgorithmType","OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE","forceRenderingWhenOccluded","prototype","getGPUFrameTimeCounter","captureGPUFrameTime","value","createQuery","deleteQuery","query","isQueryResultAvailable","getQueryResult","beginOcclusionQuery","algorithmType","endOcclusionQuery","Object","defineProperty","get","_occlusionDataStorage","set","enumerable","configurable","__occlusionDataStorage","_checkOcclusionQuery","dataStorage","engine","getEngine","getCaps","supportOcclusionQuery","_occlusionQuery","undefined","isOcclusionQueryAvailable","occlusionQueryResult","OCCLUSION_TYPE_OPTIMISTIC","scene","getScene","getBoundingBoxRenderer","occlusionBoundingBoxRenderer","renderOcclusionBoundingBox"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Engines/AbstractEngine/abstractEngine.query.js"],"sourcesContent":["import { AbstractMesh } from \"../../Meshes/abstractMesh.js\";\nimport { AbstractEngine } from \"../abstractEngine.js\";\n/** @internal */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport class _OcclusionDataStorage {\n constructor() {\n /** @internal */\n this.occlusionInternalRetryCounter = 0;\n /** @internal */\n this.isOcclusionQueryInProgress = false;\n /** @internal */\n this.isOccluded = false;\n /** @internal */\n this.occlusionRetryCount = -1;\n /** @internal */\n this.occlusionType = AbstractMesh.OCCLUSION_TYPE_NONE;\n /** @internal */\n this.occlusionQueryAlgorithmType = AbstractMesh.OCCLUSION_ALGORITHM_TYPE_CONSERVATIVE;\n /** @internal */\n this.forceRenderingWhenOccluded = false;\n }\n}\nAbstractEngine.prototype.getGPUFrameTimeCounter = function () {\n return null;\n};\nAbstractEngine.prototype.captureGPUFrameTime = function (value) {\n // Do nothing. Must be implemented by child classes\n};\nAbstractEngine.prototype.createQuery = function () {\n return null;\n};\nAbstractEngine.prototype.deleteQuery = function (query) {\n // Do nothing. Must be implemented by child classes\n return this;\n};\nAbstractEngine.prototype.isQueryResultAvailable = function (query) {\n // Do nothing. Must be implemented by child classes\n return false;\n};\nAbstractEngine.prototype.getQueryResult = function (query) {\n // Do nothing. Must be implemented by child classes\n return 0;\n};\nAbstractEngine.prototype.beginOcclusionQuery = function (algorithmType, query) {\n // Do nothing. Must be implemented by child classes\n return false;\n};\nAbstractEngine.prototype.endOcclusionQuery = function (algorithmType) {\n // Do nothing. Must be implemented by child classes\n return this;\n};\nObject.defineProperty(AbstractMesh.prototype, \"isOcclusionQueryInProgress\", {\n get: function () {\n return this._occlusionDataStorage.isOcclusionQueryInProgress;\n },\n set: function (value) {\n this._occlusionDataStorage.isOcclusionQueryInProgress = value;\n },\n enumerable: false,\n configurable: true,\n});\nObject.defineProperty(AbstractMesh.prototype, \"_occlusionDataStorage\", {\n get: function () {\n if (!this.__occlusionDataStorage) {\n this.__occlusionDataStorage = new _OcclusionDataStorage();\n }\n return this.__occlusionDataStorage;\n },\n enumerable: false,\n configurable: true,\n});\nObject.defineProperty(AbstractMesh.prototype, \"isOccluded\", {\n get: function () {\n return this._occlusionDataStorage.isOccluded;\n },\n set: function (value) {\n this._occlusionDataStorage.isOccluded = value;\n },\n enumerable: true,\n configurable: true,\n});\nObject.defineProperty(AbstractMesh.prototype, \"occlusionQueryAlgorithmType\", {\n get: function () {\n return this._occlusionDataStorage.occlusionQueryAlgorithmType;\n },\n set: function (value) {\n this._occlusionDataStorage.occlusionQueryAlgorithmType = value;\n },\n enumerable: true,\n configurable: true,\n});\nObject.defineProperty(AbstractMesh.prototype, \"occlusionType\", {\n get: function () {\n return this._occlusionDataStorage.occlusionType;\n },\n set: function (value) {\n this._occlusionDataStorage.occlusionType = value;\n },\n enumerable: true,\n configurable: true,\n});\nObject.defineProperty(AbstractMesh.prototype, \"occlusionRetryCount\", {\n get: function () {\n return this._occlusionDataStorage.occlusionRetryCount;\n },\n set: function (value) {\n this._occlusionDataStorage.occlusionRetryCount = value;\n },\n enumerable: true,\n configurable: true,\n});\nObject.defineProperty(AbstractMesh.prototype, \"forceRenderingWhenOccluded\", {\n get: function () {\n return this._occlusionDataStorage.forceRenderingWhenOccluded;\n },\n set: function (value) {\n this._occlusionDataStorage.forceRenderingWhenOccluded = value;\n },\n enumerable: true,\n configurable: true,\n});\n// We also need to update AbstractMesh as there is a portion of the code there\nAbstractMesh.prototype._checkOcclusionQuery = function () {\n const dataStorage = this._occlusionDataStorage;\n if (dataStorage.occlusionType === AbstractMesh.OCCLUSION_TYPE_NONE) {\n dataStorage.isOccluded = false;\n return false;\n }\n const engine = this.getEngine();\n if (!engine.getCaps().supportOcclusionQuery) {\n dataStorage.isOccluded = false;\n return false;\n }\n if (!engine.isQueryResultAvailable) {\n // Occlusion query where not referenced\n dataStorage.isOccluded = false;\n return false;\n }\n if (this.isOcclusionQueryInProgress && this._occlusionQuery !== null && this._occlusionQuery !== undefined) {\n const isOcclusionQueryAvailable = engine.isQueryResultAvailable(this._occlusionQuery);\n if (isOcclusionQueryAvailable) {\n const occlusionQueryResult = engine.getQueryResult(this._occlusionQuery);\n dataStorage.isOcclusionQueryInProgress = false;\n dataStorage.occlusionInternalRetryCounter = 0;\n dataStorage.isOccluded = occlusionQueryResult > 0 ? false : true;\n }\n else {\n dataStorage.occlusionInternalRetryCounter++;\n if (dataStorage.occlusionRetryCount !== -1 && dataStorage.occlusionInternalRetryCounter > dataStorage.occlusionRetryCount) {\n dataStorage.isOcclusionQueryInProgress = false;\n dataStorage.occlusionInternalRetryCounter = 0;\n // if optimistic set isOccluded to false regardless of the status of isOccluded. (Render in the current render loop)\n // if strict continue the last state of the object.\n dataStorage.isOccluded = dataStorage.occlusionType === AbstractMesh.OCCLUSION_TYPE_OPTIMISTIC ? false : dataStorage.isOccluded;\n }\n else {\n return dataStorage.occlusionType === AbstractMesh.OCCLUSION_TYPE_OPTIMISTIC ? false : dataStorage.isOccluded;\n }\n }\n }\n const scene = this.getScene();\n if (scene.getBoundingBoxRenderer) {\n const occlusionBoundingBoxRenderer = scene.getBoundingBoxRenderer();\n if (this._occlusionQuery === null) {\n this._occlusionQuery = engine.createQuery();\n }\n if (this._occlusionQuery && engine.beginOcclusionQuery(dataStorage.occlusionQueryAlgorithmType, this._occlusionQuery)) {\n occlusionBoundingBoxRenderer.renderOcclusionBoundingBox(this);\n engine.endOcclusionQuery(dataStorage.occlusionQueryAlgorithmType);\n this._occlusionDataStorage.isOcclusionQueryInProgress = true;\n }\n }\n return dataStorage.isOccluded;\n};\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|