@babylonjs/core 6.17.0 → 6.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Audio/audioEngine.d.ts +1 -1
- package/Audio/audioEngine.js +24 -13
- package/Audio/audioEngine.js.map +1 -1
- package/Bones/skeleton.d.ts +3 -1
- package/Bones/skeleton.js +11 -2
- package/Bones/skeleton.js.map +1 -1
- package/DeviceInput/webDeviceInputSystem.js +26 -1
- package/DeviceInput/webDeviceInputSystem.js.map +1 -1
- package/Engines/thinEngine.js +2 -2
- package/Engines/thinEngine.js.map +1 -1
- package/Materials/Node/Blocks/Teleport/teleportInBlock.js +1 -0
- package/Materials/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
- package/Materials/greasedLinePluginMaterial.d.ts +7 -2
- package/Materials/greasedLinePluginMaterial.js +46 -21
- package/Materials/greasedLinePluginMaterial.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateBlock.d.ts +77 -0
- package/Meshes/Node/Blocks/Instances/instantiateBlock.js +169 -0
- package/Meshes/Node/Blocks/Instances/instantiateBlock.js.map +1 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.d.ts +6 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js +74 -68
- package/Meshes/Node/Blocks/Instances/instantiateOnFacesBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.d.ts +11 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js +94 -66
- package/Meshes/Node/Blocks/Instances/instantiateOnVerticesBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.d.ts +6 -0
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js +68 -62
- package/Meshes/Node/Blocks/Instances/instantiateOnVolumeBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setColorsBlock.d.ts +5 -0
- package/Meshes/Node/Blocks/Set/setColorsBlock.js +7 -0
- package/Meshes/Node/Blocks/Set/setColorsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setNormalsBlock.d.ts +5 -0
- package/Meshes/Node/Blocks/Set/setNormalsBlock.js +7 -0
- package/Meshes/Node/Blocks/Set/setNormalsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setPositionsBlock.d.ts +5 -0
- package/Meshes/Node/Blocks/Set/setPositionsBlock.js +7 -0
- package/Meshes/Node/Blocks/Set/setPositionsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setTangentsBlock.d.ts +5 -0
- package/Meshes/Node/Blocks/Set/setTangentsBlock.js +7 -0
- package/Meshes/Node/Blocks/Set/setTangentsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Set/setUVsBlock.d.ts +5 -0
- package/Meshes/Node/Blocks/Set/setUVsBlock.js +7 -0
- package/Meshes/Node/Blocks/Set/setUVsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Sources/meshBlock.d.ts +4 -0
- package/Meshes/Node/Blocks/Sources/meshBlock.js +6 -0
- package/Meshes/Node/Blocks/Sources/meshBlock.js.map +1 -1
- package/Meshes/Node/Blocks/Teleport/teleportInBlock.js +1 -0
- package/Meshes/Node/Blocks/Teleport/teleportInBlock.js.map +1 -1
- package/Meshes/Node/Blocks/computeNormalsBlock.js +3 -0
- package/Meshes/Node/Blocks/computeNormalsBlock.js.map +1 -1
- package/Meshes/Node/Blocks/geometryCollectionBlock.d.ts +76 -0
- package/Meshes/Node/Blocks/geometryCollectionBlock.js +163 -0
- package/Meshes/Node/Blocks/geometryCollectionBlock.js.map +1 -0
- package/Meshes/Node/Blocks/geometryInfoBlock.d.ts +43 -0
- package/Meshes/Node/Blocks/geometryInfoBlock.js +100 -0
- package/Meshes/Node/Blocks/geometryInfoBlock.js.map +1 -0
- package/Meshes/Node/Blocks/geometryInputBlock.js +2 -0
- package/Meshes/Node/Blocks/geometryInputBlock.js.map +1 -1
- package/Meshes/Node/Enums/nodeGeometryContextualSources.d.ts +5 -1
- package/Meshes/Node/Enums/nodeGeometryContextualSources.js +4 -0
- package/Meshes/Node/Enums/nodeGeometryContextualSources.js.map +1 -1
- package/Meshes/Node/Interfaces/nodeGeometryExecutionContext.d.ts +5 -0
- package/Meshes/Node/Interfaces/nodeGeometryExecutionContext.js.map +1 -1
- package/Meshes/Node/index.d.ts +3 -0
- package/Meshes/Node/index.js +3 -0
- package/Meshes/Node/index.js.map +1 -1
- package/Meshes/Node/nodeGeometry.d.ts +7 -0
- package/Meshes/Node/nodeGeometry.js +17 -0
- package/Meshes/Node/nodeGeometry.js.map +1 -1
- package/Meshes/Node/nodeGeometryBlock.d.ts +8 -3
- package/Meshes/Node/nodeGeometryBlock.js +24 -5
- package/Meshes/Node/nodeGeometryBlock.js.map +1 -1
- package/Meshes/Node/nodeGeometryBuildState.d.ts +3 -1
- package/Meshes/Node/nodeGeometryBuildState.js +34 -12
- package/Meshes/Node/nodeGeometryBuildState.js.map +1 -1
- package/Meshes/mesh.vertexData.d.ts +4 -0
- package/Meshes/mesh.vertexData.js +4 -0
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Meshes/transformNode.js +7 -3
- package/Meshes/transformNode.js.map +1 -1
- package/Shaders/gpuRenderParticles.vertex.js +5 -5
- package/Shaders/gpuRenderParticles.vertex.js.map +1 -1
- package/Shaders/particles.vertex.js +5 -5
- package/Shaders/particles.vertex.js.map +1 -1
- package/Sprites/sprite.js +4 -4
- package/Sprites/sprite.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeGeometryBuildState.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Node/nodeGeometryBuildState.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { VertexData } from \"../mesh.vertexData\";\r\nimport type { NodeGeometryConnectionPoint } from \"./nodeGeometryBlockConnectionPoint\";\r\nimport { NodeGeometryContextualSources } from \"./Enums/nodeGeometryContextualSources\";\r\nimport { Matrix, Vector2, Vector3, Vector4 } from \"../../Maths/math.vector\";\r\nimport type { INodeGeometryExecutionContext } from \"./Interfaces/nodeGeometryExecutionContext\";\r\nimport { NodeGeometryBlockConnectionPointTypes } from \"./Enums/nodeGeometryConnectionPointTypes\";\r\n\r\n/**\r\n * Class used to store node based geometry build state\r\n */\r\nexport class NodeGeometryBuildState {\r\n private _rotationMatrix = new Matrix();\r\n private _scalingMatrix = new Matrix();\r\n private _positionMatrix = new Matrix();\r\n private _scalingRotationMatrix = new Matrix();\r\n private _transformMatrix = new Matrix();\r\n private _tempVector3 = new Vector3();\r\n\r\n /** Gets or sets the list of non connected mandatory inputs */\r\n public notConnectedNonOptionalInputs: NodeGeometryConnectionPoint[] = [];\r\n /** Gets or sets the build identifier */\r\n public buildId: number;\r\n /** Gets or sets a boolean indicating that verbose mode is on */\r\n public verbose: boolean;\r\n /** Gets or sets the vertex data */\r\n public vertexData: Nullable<VertexData> = null;\r\n /** Gets or sets the geometry context */\r\n public geometryContext: Nullable<VertexData> = null;\r\n /** Gets or sets the execution context */\r\n public executionContext: Nullable<INodeGeometryExecutionContext> = null;\r\n\r\n /**\r\n * Gets the value associated with a contextual source\r\n * @param source Source of the contextual value\r\n * @returns the value associated with the source\r\n */\r\n public getContextualValue(source: NodeGeometryContextualSources) {\r\n if (!this.executionContext || !this.geometryContext) {\r\n return null;\r\n }\r\n\r\n const index = this.executionContext.getExecutionIndex();\r\n\r\n switch (source) {\r\n case NodeGeometryContextualSources.Positions:\r\n if (this.executionContext.getOverridePositionsContextualValue) {\r\n return this.executionContext.getOverridePositionsContextualValue();\r\n }\r\n if (!this.geometryContext.positions) {\r\n return Vector3.Zero();\r\n }\r\n return Vector3.FromArray(this.geometryContext.positions as ArrayLike<number>, index * 3);\r\n case NodeGeometryContextualSources.Normals:\r\n if (this.executionContext.getOverrideNormalsContextualValue) {\r\n return this.executionContext.getOverrideNormalsContextualValue();\r\n }\r\n if (!this.geometryContext.normals) {\r\n return Vector3.Zero();\r\n }\r\n return Vector3.FromArray(this.geometryContext.normals as ArrayLike<number>, index * 3);\r\n case NodeGeometryContextualSources.Colors:\r\n if (!this.geometryContext.colors) {\r\n return Vector4.Zero();\r\n }\r\n return Vector4.FromArray(this.geometryContext.colors as ArrayLike<number>, index * 4);\r\n case NodeGeometryContextualSources.Tangents:\r\n if (!this.geometryContext.tangents) {\r\n return Vector4.Zero();\r\n }\r\n return Vector4.FromArray(this.geometryContext.tangents as ArrayLike<number>, index * 4);\r\n case NodeGeometryContextualSources.UV:\r\n if (!this.geometryContext.uvs) {\r\n return Vector2.Zero();\r\n }\r\n return Vector2.FromArray(this.geometryContext.uvs as ArrayLike<number>, index * 2);\r\n case NodeGeometryContextualSources.UV2:\r\n if (!this.geometryContext.uvs2) {\r\n return Vector2.Zero();\r\n }\r\n return Vector2.FromArray(this.geometryContext.uvs2 as ArrayLike<number>, index * 2);\r\n case NodeGeometryContextualSources.UV3:\r\n if (!this.geometryContext.uvs3) {\r\n return Vector2.Zero();\r\n }\r\n return Vector2.FromArray(this.geometryContext.uvs3 as ArrayLike<number>, index * 2);\r\n case NodeGeometryContextualSources.UV4:\r\n if (!this.geometryContext.uvs4) {\r\n return Vector2.Zero();\r\n }\r\n return Vector2.FromArray(this.geometryContext.uvs4 as ArrayLike<number>, index * 2);\r\n case NodeGeometryContextualSources.UV5:\r\n if (!this.geometryContext.uvs5) {\r\n return Vector2.Zero();\r\n }\r\n return Vector2.FromArray(this.geometryContext.uvs5 as ArrayLike<number>, index * 2);\r\n case NodeGeometryContextualSources.UV6:\r\n if (!this.geometryContext.uvs6) {\r\n return Vector2.Zero();\r\n }\r\n return Vector2.FromArray(this.geometryContext.uvs6 as ArrayLike<number>, index * 2);\r\n case NodeGeometryContextualSources.VertexID:\r\n return index;\r\n case NodeGeometryContextualSources.FaceID:\r\n return this.executionContext.getExecutionFaceIndex();\r\n case NodeGeometryContextualSources.GeometryID:\r\n return this.geometryContext.uniqueId;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Adapt a value to a target type\r\n * @param source defines the value to adapt\r\n * @param targetType defines the target type\r\n * @returns the adapted value\r\n */\r\n adapt(source: NodeGeometryConnectionPoint, targetType: NodeGeometryBlockConnectionPointTypes) {\r\n const value = source.getConnectedValue(this);\r\n\r\n if (source.type === targetType) {\r\n return value;\r\n }\r\n\r\n switch (targetType) {\r\n case NodeGeometryBlockConnectionPointTypes.Vector2:\r\n return new Vector2(value, value);\r\n case NodeGeometryBlockConnectionPointTypes.Vector3:\r\n return new Vector3(value, value, value);\r\n case NodeGeometryBlockConnectionPointTypes.Vector4:\r\n return new Vector4(value, value, value, value);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Adapt an input value to a target type\r\n * @param source defines the value to adapt\r\n * @param targetType defines the target type\r\n * @param defaultValue defines the default value to use if not connected\r\n * @returns the adapted value\r\n */\r\n adaptInput(source: NodeGeometryConnectionPoint, targetType: NodeGeometryBlockConnectionPointTypes, defaultValue: any) {\r\n if (!source.isConnected) {\r\n return source.value || defaultValue;\r\n }\r\n\r\n const value = source.getConnectedValue(this);\r\n\r\n if (source._connectedPoint?.type === targetType) {\r\n return value;\r\n }\r\n\r\n switch (targetType) {\r\n case NodeGeometryBlockConnectionPointTypes.Vector2:\r\n return new Vector2(value, value);\r\n case NodeGeometryBlockConnectionPointTypes.Vector3:\r\n return new Vector3(value, value, value);\r\n case NodeGeometryBlockConnectionPointTypes.Vector4:\r\n return new Vector4(value, value, value, value);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Emits console errors and exceptions if there is a failing check\r\n */\r\n public emitErrors() {\r\n let errorMessage = \"\";\r\n\r\n for (const notConnectedInput of this.notConnectedNonOptionalInputs) {\r\n errorMessage += `input ${notConnectedInput.name} from block ${\r\n notConnectedInput.ownerBlock.name\r\n }[${notConnectedInput.ownerBlock.getClassName()}] is not connected and is not optional.\\n`;\r\n }\r\n\r\n if (errorMessage) {\r\n throw \"Build of NodeGeometry failed:\\n\" + errorMessage;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _instantiate(clone: VertexData, currentPosition: Vector3, rotation: Vector3, scaling: Vector3, additionalVertexData: VertexData[]) {\r\n // Transform\r\n Matrix.ScalingToRef(scaling.x, scaling.y, scaling.z, this._scalingMatrix);\r\n Matrix.RotationYawPitchRollToRef(rotation.y, rotation.x, rotation.z, this._rotationMatrix);\r\n Matrix.TranslationToRef(currentPosition.x, currentPosition.y, currentPosition.z, this._positionMatrix);\r\n\r\n this._scalingMatrix.multiplyToRef(this._rotationMatrix, this._scalingRotationMatrix);\r\n this._scalingRotationMatrix.multiplyToRef(this._positionMatrix, this._transformMatrix);\r\n for (let clonePositionIndex = 0; clonePositionIndex < clone.positions!.length; clonePositionIndex += 3) {\r\n this._tempVector3.fromArray(clone.positions!, clonePositionIndex);\r\n Vector3.TransformCoordinatesToRef(this._tempVector3, this._transformMatrix, this._tempVector3);\r\n this._tempVector3.toArray(clone.positions!, clonePositionIndex);\r\n\r\n if (clone.normals) {\r\n this._tempVector3.fromArray(clone.normals, clonePositionIndex);\r\n Vector3.TransformNormalToRef(this._tempVector3, this._scalingRotationMatrix, this._tempVector3);\r\n this._tempVector3.toArray(clone.normals, clonePositionIndex);\r\n }\r\n }\r\n\r\n additionalVertexData.push(clone);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"nodeGeometryBuildState.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Node/nodeGeometryBuildState.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../types\";\r\nimport type { VertexData } from \"../mesh.vertexData\";\r\nimport type { NodeGeometryConnectionPoint } from \"./nodeGeometryBlockConnectionPoint\";\r\nimport { NodeGeometryContextualSources } from \"./Enums/nodeGeometryContextualSources\";\r\nimport { Matrix, Vector2, Vector3, Vector4 } from \"../../Maths/math.vector\";\r\nimport type { INodeGeometryExecutionContext } from \"./Interfaces/nodeGeometryExecutionContext\";\r\nimport { NodeGeometryBlockConnectionPointTypes } from \"./Enums/nodeGeometryConnectionPointTypes\";\r\n\r\n/**\r\n * Class used to store node based geometry build state\r\n */\r\nexport class NodeGeometryBuildState {\r\n private _rotationMatrix = new Matrix();\r\n private _scalingMatrix = new Matrix();\r\n private _positionMatrix = new Matrix();\r\n private _scalingRotationMatrix = new Matrix();\r\n private _transformMatrix = new Matrix();\r\n private _tempVector3 = new Vector3();\r\n\r\n /** Gets or sets the list of non connected mandatory inputs */\r\n public notConnectedNonOptionalInputs: NodeGeometryConnectionPoint[] = [];\r\n /** Gets or sets the build identifier */\r\n public buildId: number;\r\n /** Gets or sets a boolean indicating that verbose mode is on */\r\n public verbose: boolean;\r\n /** Gets or sets the vertex data */\r\n public vertexData: Nullable<VertexData> = null;\r\n /** Gets or sets the geometry context */\r\n public geometryContext: Nullable<VertexData> = null;\r\n /** Gets or sets the execution context */\r\n public executionContext: Nullable<INodeGeometryExecutionContext> = null;\r\n\r\n /**\r\n * Gets the value associated with a contextual source\r\n * @param source Source of the contextual value\r\n * @returns the value associated with the source\r\n */\r\n public getContextualValue(source: NodeGeometryContextualSources) {\r\n if (!this.executionContext) {\r\n return null;\r\n }\r\n\r\n const index = this.executionContext.getExecutionIndex();\r\n\r\n switch (source) {\r\n case NodeGeometryContextualSources.Positions:\r\n if (this.executionContext.getOverridePositionsContextualValue) {\r\n return this.executionContext.getOverridePositionsContextualValue();\r\n }\r\n if (!this.geometryContext || !this.geometryContext.positions) {\r\n return Vector3.Zero();\r\n }\r\n return Vector3.FromArray(this.geometryContext.positions as ArrayLike<number>, index * 3);\r\n case NodeGeometryContextualSources.Normals:\r\n if (this.executionContext.getOverrideNormalsContextualValue) {\r\n return this.executionContext.getOverrideNormalsContextualValue();\r\n }\r\n if (!this.geometryContext || !this.geometryContext.normals) {\r\n return Vector3.Zero();\r\n }\r\n return Vector3.FromArray(this.geometryContext.normals as ArrayLike<number>, index * 3);\r\n case NodeGeometryContextualSources.Colors:\r\n if (!this.geometryContext || !this.geometryContext.colors) {\r\n return Vector4.Zero();\r\n }\r\n return Vector4.FromArray(this.geometryContext.colors as ArrayLike<number>, index * 4);\r\n case NodeGeometryContextualSources.Tangents:\r\n if (!this.geometryContext || !this.geometryContext.tangents) {\r\n return Vector4.Zero();\r\n }\r\n return Vector4.FromArray(this.geometryContext.tangents as ArrayLike<number>, index * 4);\r\n case NodeGeometryContextualSources.UV:\r\n if (!this.geometryContext || !this.geometryContext.uvs) {\r\n return Vector2.Zero();\r\n }\r\n return Vector2.FromArray(this.geometryContext.uvs as ArrayLike<number>, index * 2);\r\n case NodeGeometryContextualSources.UV2:\r\n if (!this.geometryContext || !this.geometryContext.uvs2) {\r\n return Vector2.Zero();\r\n }\r\n return Vector2.FromArray(this.geometryContext.uvs2 as ArrayLike<number>, index * 2);\r\n case NodeGeometryContextualSources.UV3:\r\n if (!this.geometryContext || !this.geometryContext.uvs3) {\r\n return Vector2.Zero();\r\n }\r\n return Vector2.FromArray(this.geometryContext.uvs3 as ArrayLike<number>, index * 2);\r\n case NodeGeometryContextualSources.UV4:\r\n if (!this.geometryContext || !this.geometryContext.uvs4) {\r\n return Vector2.Zero();\r\n }\r\n return Vector2.FromArray(this.geometryContext.uvs4 as ArrayLike<number>, index * 2);\r\n case NodeGeometryContextualSources.UV5:\r\n if (!this.geometryContext || !this.geometryContext.uvs5) {\r\n return Vector2.Zero();\r\n }\r\n return Vector2.FromArray(this.geometryContext.uvs5 as ArrayLike<number>, index * 2);\r\n case NodeGeometryContextualSources.UV6:\r\n if (!this.geometryContext || !this.geometryContext.uvs6) {\r\n return Vector2.Zero();\r\n }\r\n return Vector2.FromArray(this.geometryContext.uvs6 as ArrayLike<number>, index * 2);\r\n case NodeGeometryContextualSources.VertexID:\r\n return index;\r\n case NodeGeometryContextualSources.FaceID:\r\n return this.executionContext.getExecutionFaceIndex();\r\n case NodeGeometryContextualSources.LoopID:\r\n return this.executionContext.getExecutionLoopIndex();\r\n case NodeGeometryContextualSources.GeometryID:\r\n return !this.geometryContext ? 0 : this.geometryContext.uniqueId;\r\n case NodeGeometryContextualSources.CollectionID: {\r\n if (!this.geometryContext || !this.geometryContext.metadata) {\r\n return 0;\r\n }\r\n return this.geometryContext.metadata.collectionId || 0;\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Adapt a value to a target type\r\n * @param source defines the value to adapt\r\n * @param targetType defines the target type\r\n * @returns the adapted value\r\n */\r\n adapt(source: NodeGeometryConnectionPoint, targetType: NodeGeometryBlockConnectionPointTypes) {\r\n const value = source.getConnectedValue(this);\r\n\r\n if (source.type === targetType) {\r\n return value;\r\n }\r\n\r\n switch (targetType) {\r\n case NodeGeometryBlockConnectionPointTypes.Vector2:\r\n return new Vector2(value, value);\r\n case NodeGeometryBlockConnectionPointTypes.Vector3:\r\n return new Vector3(value, value, value);\r\n case NodeGeometryBlockConnectionPointTypes.Vector4:\r\n return new Vector4(value, value, value, value);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Adapt an input value to a target type\r\n * @param source defines the value to adapt\r\n * @param targetType defines the target type\r\n * @param defaultValue defines the default value to use if not connected\r\n * @returns the adapted value\r\n */\r\n adaptInput(source: NodeGeometryConnectionPoint, targetType: NodeGeometryBlockConnectionPointTypes, defaultValue: any) {\r\n if (!source.isConnected) {\r\n return source.value || defaultValue;\r\n }\r\n\r\n const value = source.getConnectedValue(this);\r\n\r\n if (source._connectedPoint?.type === targetType) {\r\n return value;\r\n }\r\n\r\n switch (targetType) {\r\n case NodeGeometryBlockConnectionPointTypes.Vector2:\r\n return new Vector2(value, value);\r\n case NodeGeometryBlockConnectionPointTypes.Vector3:\r\n return new Vector3(value, value, value);\r\n case NodeGeometryBlockConnectionPointTypes.Vector4:\r\n return new Vector4(value, value, value, value);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /**\r\n * Emits console errors and exceptions if there is a failing check\r\n */\r\n public emitErrors() {\r\n let errorMessage = \"\";\r\n\r\n for (const notConnectedInput of this.notConnectedNonOptionalInputs) {\r\n errorMessage += `input ${notConnectedInput.name} from block ${\r\n notConnectedInput.ownerBlock.name\r\n }[${notConnectedInput.ownerBlock.getClassName()}] is not connected and is not optional.\\n`;\r\n }\r\n\r\n if (errorMessage) {\r\n throw \"Build of NodeGeometry failed:\\n\" + errorMessage;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public _instantiate(clone: VertexData, currentPosition: Vector3, rotation: Vector3, scaling: Vector3, additionalVertexData: VertexData[]) {\r\n // Transform\r\n Matrix.ScalingToRef(scaling.x, scaling.y, scaling.z, this._scalingMatrix);\r\n Matrix.RotationYawPitchRollToRef(rotation.y, rotation.x, rotation.z, this._rotationMatrix);\r\n Matrix.TranslationToRef(currentPosition.x, currentPosition.y, currentPosition.z, this._positionMatrix);\r\n\r\n this._scalingMatrix.multiplyToRef(this._rotationMatrix, this._scalingRotationMatrix);\r\n this._scalingRotationMatrix.multiplyToRef(this._positionMatrix, this._transformMatrix);\r\n for (let clonePositionIndex = 0; clonePositionIndex < clone.positions!.length; clonePositionIndex += 3) {\r\n this._tempVector3.fromArray(clone.positions!, clonePositionIndex);\r\n Vector3.TransformCoordinatesToRef(this._tempVector3, this._transformMatrix, this._tempVector3);\r\n this._tempVector3.toArray(clone.positions!, clonePositionIndex);\r\n\r\n if (clone.normals) {\r\n this._tempVector3.fromArray(clone.normals, clonePositionIndex);\r\n Vector3.TransformNormalToRef(this._tempVector3, this._scalingRotationMatrix, this._tempVector3);\r\n this._tempVector3.toArray(clone.normals, clonePositionIndex);\r\n }\r\n }\r\n\r\n additionalVertexData.push(clone);\r\n }\r\n\r\n /** @internal */\r\n public _instantiateWithMatrix(clone: VertexData, transform: Matrix, additionalVertexData: VertexData[]) {\r\n for (let clonePositionIndex = 0; clonePositionIndex < clone.positions!.length; clonePositionIndex += 3) {\r\n this._tempVector3.fromArray(clone.positions!, clonePositionIndex);\r\n Vector3.TransformCoordinatesToRef(this._tempVector3, transform, this._tempVector3);\r\n this._tempVector3.toArray(clone.positions!, clonePositionIndex);\r\n\r\n if (clone.normals) {\r\n this._tempVector3.fromArray(clone.normals, clonePositionIndex);\r\n Vector3.TransformNormalToRef(this._tempVector3, transform, this._tempVector3);\r\n this._tempVector3.toArray(clone.normals, clonePositionIndex);\r\n }\r\n }\r\n\r\n additionalVertexData.push(clone);\r\n }\r\n}\r\n"]}
|
|
@@ -23,6 +23,10 @@ export class VertexData {
|
|
|
23
23
|
* Gets the unique ID of this vertex Data
|
|
24
24
|
*/
|
|
25
25
|
this.uniqueId = 0;
|
|
26
|
+
/**
|
|
27
|
+
* Metadata used to store contextual values
|
|
28
|
+
*/
|
|
29
|
+
this.metadata = {};
|
|
26
30
|
this._applyTo = makeSyncFunction(this._applyToCoroutine.bind(this));
|
|
27
31
|
this.uniqueId = VertexData._UniqueIDGenerator;
|
|
28
32
|
VertexData._UniqueIDGenerator++;
|