eea9e0233870668b856e8a8b0461e7e7c2ebf32b9649d4dd0e0ed461f1639bb2.json 23 KB

1
  1. {"ast":null,"code":"import { __decorate } from \"../../../../tslib.es6.js\";\nimport { NodeGeometryBlock } from \"../../nodeGeometryBlock.js\";\nimport { RegisterClass } from \"../../../../Misc/typeStore.js\";\nimport { NodeGeometryBlockConnectionPointTypes } from \"../../Enums/nodeGeometryConnectionPointTypes.js\";\nimport { Vector3 } from \"../../../../Maths/math.vector.js\";\nimport { editableInPropertyPage } from \"../../../../Decorators/nodeDecorator.js\";\nimport { Lattice } from \"../../../lattice.js\";\nimport { extractMinAndMax } from \"../../../../Maths/math.functions.js\";\n/**\n * Block used to apply Lattice on geometry\n */\nexport class LatticeBlock extends NodeGeometryBlock {\n /**\n * Create a new LatticeBlock\n * @param name defines the block name\n */\n constructor(name) {\n super(name);\n this._indexVector3 = new Vector3();\n this._currentControl = new Vector3();\n /**\n * Gets or sets a boolean indicating that this block can evaluate context\n * Build performance is improved when this value is set to false as the system will cache values instead of reevaluating everything per context change\n */\n this.evaluateContext = true;\n /**\n * Resolution on x axis\n */\n this.resolutionX = 3;\n /**\n * Resolution on y axis\n */\n this.resolutionY = 3;\n /**\n * Resolution on z axis\n */\n this.resolutionZ = 3;\n this.registerInput(\"geometry\", NodeGeometryBlockConnectionPointTypes.Geometry);\n this.registerInput(\"controls\", NodeGeometryBlockConnectionPointTypes.Vector3);\n this.registerOutput(\"output\", NodeGeometryBlockConnectionPointTypes.Geometry);\n }\n /**\n * Gets the current index in the current flow\n * @returns the current index\n */\n getExecutionIndex() {\n return this._currentIndexX + this.resolutionX * (this._currentIndexY + this.resolutionY * this._currentIndexZ);\n }\n /**\n * Gets the current loop index in the current flow\n * @returns the current loop index\n */\n getExecutionLoopIndex() {\n return this.getExecutionIndex();\n }\n /**\n * Gets the current face index in the current flow\n * @returns the current face index\n */\n getExecutionFaceIndex() {\n return 0;\n }\n /**\n * Gets the current class name\n * @returns the class name\n */\n getClassName() {\n return \"LatticeBlock\";\n }\n /**\n * Gets the geometry input component\n */\n get geometry() {\n return this._inputs[0];\n }\n /**\n * Gets the controls input component\n */\n get controls() {\n return this._inputs[1];\n }\n /**\n * Gets the geometry output component\n */\n get output() {\n return this._outputs[0];\n }\n /**\n * Gets the value associated with a contextual positions\n * In this case it will be the current position in the lattice\n * @returns the current position in the lattice\n */\n getOverridePositionsContextualValue() {\n return this._indexVector3;\n }\n /**\n * Gets the value associated with a contextual normals\n * In this case it will be the current control point being processed\n * @returns the current control point being processed\n */\n getOverrideNormalsContextualValue() {\n return this._currentControl;\n }\n _buildBlock(state) {\n const func = state => {\n state.pushExecutionContext(this);\n this._vertexData = this.geometry.getConnectedValue(state);\n if (this._vertexData) {\n this._vertexData = this._vertexData.clone(); // Preserve source data\n }\n if (!this._vertexData || !this._vertexData.positions) {\n state.restoreExecutionContext();\n this.output._storedValue = null;\n return;\n }\n const positions = this._vertexData.positions;\n const boundingInfo = extractMinAndMax(positions, 0, positions.length / 3);\n // Building the lattice\n const size = boundingInfo.maximum.subtract(boundingInfo.minimum);\n this._lattice = new Lattice({\n resolutionX: this.resolutionX,\n resolutionY: this.resolutionY,\n resolutionZ: this.resolutionZ,\n size: size,\n position: boundingInfo.minimum.add(size.scale(0.5))\n });\n for (this._currentIndexX = 0; this._currentIndexX < this.resolutionX; this._currentIndexX++) {\n for (this._currentIndexY = 0; this._currentIndexY < this.resolutionY; this._currentIndexY++) {\n for (this._currentIndexZ = 0; this._currentIndexZ < this.resolutionZ; this._currentIndexZ++) {\n this._indexVector3.set(this._currentIndexX, this._currentIndexY, this._currentIndexZ);\n const latticeControl = this._lattice.data[this._currentIndexX][this._currentIndexY][this._currentIndexZ];\n this._currentControl.copyFrom(latticeControl);\n const tempVector3 = this.controls.getConnectedValue(state);\n if (tempVector3) {\n latticeControl.set(tempVector3.x, tempVector3.y, tempVector3.z);\n }\n }\n }\n }\n // Apply lattice\n this._lattice.deform(positions);\n // Storage\n state.restoreExecutionContext();\n return this._vertexData;\n };\n if (this.evaluateContext) {\n this.output._storedFunction = func;\n } else {\n this.output._storedFunction = null;\n this.output._storedValue = func(state);\n }\n }\n _dumpPropertiesCode() {\n let codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.evaluateContext = ${this.evaluateContext ? \"true\" : \"false\"};\\n`;\n codeString += `${this._codeVariableName}.resolutionX = ${this.resolutionX};\\n`;\n codeString += `${this._codeVariableName}.resolutionY = ${this.resolutionY};\\n`;\n codeString += `${this._codeVariableName}.resolutionZ = ${this.resolutionZ};\\n`;\n return codeString;\n }\n /**\n * Serializes this block in a JSON representation\n * @returns the serialized block object\n */\n serialize() {\n const serializationObject = super.serialize();\n serializationObject.evaluateContext = this.evaluateContext;\n serializationObject.resolutionX = this.resolutionX;\n serializationObject.resolutionY = this.resolutionY;\n serializationObject.resolutionZ = this.resolutionZ;\n return serializationObject;\n }\n _deserialize(serializationObject) {\n super._deserialize(serializationObject);\n if (serializationObject.evaluateContext !== undefined) {\n this.evaluateContext = serializationObject.evaluateContext;\n this.resolutionX = serializationObject.resolutionX;\n this.resolutionY = serializationObject.resolutionY;\n this.resolutionZ = serializationObject.resolutionZ;\n }\n }\n}\n__decorate([editableInPropertyPage(\"Evaluate context\", 0 /* PropertyTypeForEdition.Boolean */, \"ADVANCED\", {\n embedded: true,\n notifiers: {\n rebuild: true\n }\n})], LatticeBlock.prototype, \"evaluateContext\", void 0);\n__decorate([editableInPropertyPage(\"resolutionX\", 2 /* PropertyTypeForEdition.Int */, \"ADVANCED\", {\n embedded: true,\n notifiers: {\n rebuild: true\n },\n min: 1,\n max: 10\n})], LatticeBlock.prototype, \"resolutionX\", void 0);\n__decorate([editableInPropertyPage(\"resolutionY\", 2 /* PropertyTypeForEdition.Int */, \"ADVANCED\", {\n embedded: true,\n notifiers: {\n rebuild: true\n },\n min: 1,\n max: 10\n})], LatticeBlock.prototype, \"resolutionY\", void 0);\n__decorate([editableInPropertyPage(\"resolutionZ\", 2 /* PropertyTypeForEdition.Int */, \"ADVANCED\", {\n embedded: true,\n notifiers: {\n rebuild: true\n },\n min: 1,\n max: 10\n})], LatticeBlock.prototype, \"resolutionZ\", void 0);\nRegisterClass(\"BABYLON.LatticeBlock\", LatticeBlock);","map":{"version":3,"names":["__decorate","NodeGeometryBlock","RegisterClass","NodeGeometryBlockConnectionPointTypes","Vector3","editableInPropertyPage","Lattice","extractMinAndMax","LatticeBlock","constructor","name","_indexVector3","_currentControl","evaluateContext","resolutionX","resolutionY","resolutionZ","registerInput","Geometry","registerOutput","getExecutionIndex","_currentIndexX","_currentIndexY","_currentIndexZ","getExecutionLoopIndex","getExecutionFaceIndex","getClassName","geometry","_inputs","controls","output","_outputs","getOverridePositionsContextualValue","getOverrideNormalsContextualValue","_buildBlock","state","func","pushExecutionContext","_vertexData","getConnectedValue","clone","positions","restoreExecutionContext","_storedValue","boundingInfo","length","size","maximum","subtract","minimum","_lattice","position","add","scale","set","latticeControl","data","copyFrom","tempVector3","x","y","z","deform","_storedFunction","_dumpPropertiesCode","codeString","_codeVariableName","serialize","serializationObject","_deserialize","undefined","embedded","notifiers","rebuild","prototype","min","max"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Meshes/Node/Blocks/Set/latticeBlock.js"],"sourcesContent":["import { __decorate } from \"../../../../tslib.es6.js\";\nimport { NodeGeometryBlock } from \"../../nodeGeometryBlock.js\";\nimport { RegisterClass } from \"../../../../Misc/typeStore.js\";\nimport { NodeGeometryBlockConnectionPointTypes } from \"../../Enums/nodeGeometryConnectionPointTypes.js\";\nimport { Vector3 } from \"../../../../Maths/math.vector.js\";\nimport { editableInPropertyPage } from \"../../../../Decorators/nodeDecorator.js\";\nimport { Lattice } from \"../../../lattice.js\";\nimport { extractMinAndMax } from \"../../../../Maths/math.functions.js\";\n/**\n * Block used to apply Lattice on geometry\n */\nexport class LatticeBlock extends NodeGeometryBlock {\n /**\n * Create a new LatticeBlock\n * @param name defines the block name\n */\n constructor(name) {\n super(name);\n this._indexVector3 = new Vector3();\n this._currentControl = new Vector3();\n /**\n * Gets or sets a boolean indicating that this block can evaluate context\n * Build performance is improved when this value is set to false as the system will cache values instead of reevaluating everything per context change\n */\n this.evaluateContext = true;\n /**\n * Resolution on x axis\n */\n this.resolutionX = 3;\n /**\n * Resolution on y axis\n */\n this.resolutionY = 3;\n /**\n * Resolution on z axis\n */\n this.resolutionZ = 3;\n this.registerInput(\"geometry\", NodeGeometryBlockConnectionPointTypes.Geometry);\n this.registerInput(\"controls\", NodeGeometryBlockConnectionPointTypes.Vector3);\n this.registerOutput(\"output\", NodeGeometryBlockConnectionPointTypes.Geometry);\n }\n /**\n * Gets the current index in the current flow\n * @returns the current index\n */\n getExecutionIndex() {\n return this._currentIndexX + this.resolutionX * (this._currentIndexY + this.resolutionY * this._currentIndexZ);\n }\n /**\n * Gets the current loop index in the current flow\n * @returns the current loop index\n */\n getExecutionLoopIndex() {\n return this.getExecutionIndex();\n }\n /**\n * Gets the current face index in the current flow\n * @returns the current face index\n */\n getExecutionFaceIndex() {\n return 0;\n }\n /**\n * Gets the current class name\n * @returns the class name\n */\n getClassName() {\n return \"LatticeBlock\";\n }\n /**\n * Gets the geometry input component\n */\n get geometry() {\n return this._inputs[0];\n }\n /**\n * Gets the controls input component\n */\n get controls() {\n return this._inputs[1];\n }\n /**\n * Gets the geometry output component\n */\n get output() {\n return this._outputs[0];\n }\n /**\n * Gets the value associated with a contextual positions\n * In this case it will be the current position in the lattice\n * @returns the current position in the lattice\n */\n getOverridePositionsContextualValue() {\n return this._indexVector3;\n }\n /**\n * Gets the value associated with a contextual normals\n * In this case it will be the current control point being processed\n * @returns the current control point being processed\n */\n getOverrideNormalsContextualValue() {\n return this._currentControl;\n }\n _buildBlock(state) {\n const func = (state) => {\n state.pushExecutionContext(this);\n this._vertexData = this.geometry.getConnectedValue(state);\n if (this._vertexData) {\n this._vertexData = this._vertexData.clone(); // Preserve source data\n }\n if (!this._vertexData || !this._vertexData.positions) {\n state.restoreExecutionContext();\n this.output._storedValue = null;\n return;\n }\n const positions = this._vertexData.positions;\n const boundingInfo = extractMinAndMax(positions, 0, positions.length / 3);\n // Building the lattice\n const size = boundingInfo.maximum.subtract(boundingInfo.minimum);\n this._lattice = new Lattice({\n resolutionX: this.resolutionX,\n resolutionY: this.resolutionY,\n resolutionZ: this.resolutionZ,\n size: size,\n position: boundingInfo.minimum.add(size.scale(0.5)),\n });\n for (this._currentIndexX = 0; this._currentIndexX < this.resolutionX; this._currentIndexX++) {\n for (this._currentIndexY = 0; this._currentIndexY < this.resolutionY; this._currentIndexY++) {\n for (this._currentIndexZ = 0; this._currentIndexZ < this.resolutionZ; this._currentIndexZ++) {\n this._indexVector3.set(this._currentIndexX, this._currentIndexY, this._currentIndexZ);\n const latticeControl = this._lattice.data[this._currentIndexX][this._currentIndexY][this._currentIndexZ];\n this._currentControl.copyFrom(latticeControl);\n const tempVector3 = this.controls.getConnectedValue(state);\n if (tempVector3) {\n latticeControl.set(tempVector3.x, tempVector3.y, tempVector3.z);\n }\n }\n }\n }\n // Apply lattice\n this._lattice.deform(positions);\n // Storage\n state.restoreExecutionContext();\n return this._vertexData;\n };\n if (this.evaluateContext) {\n this.output._storedFunction = func;\n }\n else {\n this.output._storedFunction = null;\n this.output._storedValue = func(state);\n }\n }\n _dumpPropertiesCode() {\n let codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.evaluateContext = ${this.evaluateContext ? \"true\" : \"false\"};\\n`;\n codeString += `${this._codeVariableName}.resolutionX = ${this.resolutionX};\\n`;\n codeString += `${this._codeVariableName}.resolutionY = ${this.resolutionY};\\n`;\n codeString += `${this._codeVariableName}.resolutionZ = ${this.resolutionZ};\\n`;\n return codeString;\n }\n /**\n * Serializes this block in a JSON representation\n * @returns the serialized block object\n */\n serialize() {\n const serializationObject = super.serialize();\n serializationObject.evaluateContext = this.evaluateContext;\n serializationObject.resolutionX = this.resolutionX;\n serializationObject.resolutionY = this.resolutionY;\n serializationObject.resolutionZ = this.resolutionZ;\n return serializationObject;\n }\n _deserialize(serializationObject) {\n super._deserialize(serializationObject);\n if (serializationObject.evaluateContext !== undefined) {\n this.evaluateContext = serializationObject.evaluateContext;\n this.resolutionX = serializationObject.resolutionX;\n this.resolutionY = serializationObject.resolutionY;\n this.resolutionZ = serializationObject.resolutionZ;\n }\n }\n}\n__decorate([\n editableInPropertyPage(\"Evaluate context\", 0 /* PropertyTypeForEdition.Boolean */, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true } })\n], LatticeBlock.prototype, \"evaluateContext\", void 0);\n__decorate([\n editableInPropertyPage(\"resolutionX\", 2 /* PropertyTypeForEdition.Int */, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 1, max: 10 })\n], LatticeBlock.prototype, \"resolutionX\", void 0);\n__decorate([\n editableInPropertyPage(\"resolutionY\", 2 /* PropertyTypeForEdition.Int */, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 1, max: 10 })\n], LatticeBlock.prototype, \"resolutionY\", void 0);\n__decorate([\n editableInPropertyPage(\"resolutionZ\", 2 /* PropertyTypeForEdition.Int */, \"ADVANCED\", { embedded: true, notifiers: { rebuild: true }, min: 1, max: 10 })\n], LatticeBlock.prototype, \"resolutionZ\", void 0);\nRegisterClass(\"BABYLON.LatticeBlock\", LatticeBlock);\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}