@babylonjs/core 7.53.2 → 7.53.3

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.
Files changed (92) hide show
  1. package/AudioV2/abstractAudio/abstractSound.d.ts +1 -1
  2. package/AudioV2/abstractAudio/abstractSound.js +12 -12
  3. package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
  4. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.d.ts +15 -8
  5. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js +23 -11
  6. package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js.map +1 -1
  7. package/AudioV2/abstractAudio/staticSound.js +8 -0
  8. package/AudioV2/abstractAudio/staticSound.js.map +1 -1
  9. package/AudioV2/abstractAudio/staticSoundInstance.d.ts +2 -0
  10. package/AudioV2/abstractAudio/staticSoundInstance.js.map +1 -1
  11. package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.d.ts +4 -4
  12. package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.js +3 -3
  13. package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.js.map +1 -1
  14. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.d.ts +23 -16
  15. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js +3 -3
  16. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js.map +1 -1
  17. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.d.ts +13 -6
  18. package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js.map +1 -1
  19. package/AudioV2/abstractAudio/subProperties/spatialAudio.d.ts +13 -8
  20. package/AudioV2/abstractAudio/subProperties/spatialAudio.js +18 -14
  21. package/AudioV2/abstractAudio/subProperties/spatialAudio.js.map +1 -1
  22. package/AudioV2/abstractAudio/subProperties/spatialAudioListener.d.ts +10 -6
  23. package/AudioV2/abstractAudio/subProperties/spatialAudioListener.js +7 -3
  24. package/AudioV2/abstractAudio/subProperties/spatialAudioListener.js.map +1 -1
  25. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +5 -5
  26. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +9 -9
  27. package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
  28. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js +4 -4
  29. package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js.map +1 -1
  30. package/AudioV2/webAudio/webAudioStaticSound.d.ts +4 -0
  31. package/AudioV2/webAudio/webAudioStaticSound.js +14 -0
  32. package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
  33. package/Engines/abstractEngine.js +2 -3
  34. package/Engines/abstractEngine.js.map +1 -1
  35. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js +1 -1
  36. package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js.map +1 -1
  37. package/Lights/IES/iesLoader.d.ts +1 -1
  38. package/Lights/IES/iesLoader.js +1 -1
  39. package/Lights/IES/iesLoader.js.map +1 -1
  40. package/Lights/Shadows/shadowGenerator.d.ts +2 -2
  41. package/Lights/Shadows/shadowGenerator.js +2 -2
  42. package/Lights/Shadows/shadowGenerator.js.map +1 -1
  43. package/Lights/spotLight.d.ts +1 -1
  44. package/Lights/spotLight.js +1 -1
  45. package/Lights/spotLight.js.map +1 -1
  46. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.d.ts +1 -1
  47. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.js +1 -1
  48. package/Materials/Node/Blocks/Fragment/prePassOutputBlock.js.map +1 -1
  49. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.d.ts +1 -1
  50. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js +1 -1
  51. package/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock.js.map +1 -1
  52. package/Materials/PBR/pbrBaseMaterial.d.ts +2 -2
  53. package/Materials/PBR/pbrBaseMaterial.js +2 -2
  54. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  55. package/Materials/Textures/Loaders/basisTextureLoader.d.ts +1 -0
  56. package/Materials/Textures/Loaders/basisTextureLoader.js +1 -0
  57. package/Materials/Textures/Loaders/basisTextureLoader.js.map +1 -1
  58. package/Materials/Textures/Loaders/exrTextureLoader.d.ts +5 -4
  59. package/Materials/Textures/Loaders/exrTextureLoader.js +5 -4
  60. package/Materials/Textures/Loaders/exrTextureLoader.js.map +1 -1
  61. package/Maths/math.scalar.d.ts +1 -0
  62. package/Maths/math.scalar.functions.d.ts +9 -0
  63. package/Maths/math.scalar.functions.js +11 -0
  64. package/Maths/math.scalar.functions.js.map +1 -1
  65. package/Meshes/Node/Blocks/geometryEaseBlock.d.ts +96 -0
  66. package/Meshes/Node/Blocks/geometryEaseBlock.js +318 -0
  67. package/Meshes/Node/Blocks/geometryEaseBlock.js.map +1 -0
  68. package/Meshes/Node/index.d.ts +1 -0
  69. package/Meshes/Node/index.js +1 -0
  70. package/Meshes/Node/index.js.map +1 -1
  71. package/Meshes/csg2.d.ts +3 -3
  72. package/Meshes/csg2.js +3 -3
  73. package/Meshes/csg2.js.map +1 -1
  74. package/Meshes/lattice.d.ts +2 -2
  75. package/Meshes/lattice.js +5 -4
  76. package/Meshes/lattice.js.map +1 -1
  77. package/Meshes/lattice.material.d.ts +2 -2
  78. package/Meshes/lattice.material.js +2 -2
  79. package/Meshes/lattice.material.js.map +1 -1
  80. package/Meshes/mesh.d.ts +2 -2
  81. package/Meshes/mesh.js +2 -2
  82. package/Meshes/mesh.js.map +1 -1
  83. package/Misc/fileTools.d.ts +1 -1
  84. package/Misc/fileTools.js +1 -1
  85. package/Misc/fileTools.js.map +1 -1
  86. package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +4 -0
  87. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +11 -16
  88. package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
  89. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.d.ts +6 -1
  90. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js +7 -1
  91. package/Rendering/IBLShadows/iblShadowsVoxelRenderer.js.map +1 -1
  92. package/package.json +1 -1
@@ -0,0 +1,318 @@
1
+ import { __decorate } from "../../../tslib.es6.js";
2
+ import { RegisterClass } from "../../../Misc/typeStore.js";
3
+ import { NodeGeometryBlockConnectionPointTypes } from "../Enums/nodeGeometryConnectionPointTypes.js";
4
+ import { NodeGeometryBlock } from "../nodeGeometryBlock.js";
5
+ import { Vector2, Vector3, Vector4 } from "../../../Maths/math.vector.js";
6
+ import { editableInPropertyPage } from "../../../Decorators/nodeDecorator.js";
7
+ import { BackEase, CircleEase, CubicEase, ElasticEase, ExponentialEase, QuadraticEase, QuarticEase, QuinticEase, SineEase } from "../../../Animations/easing.js";
8
+ /**
9
+ * Types of easing function supported by the Ease block
10
+ */
11
+ export var GeometryEaseBlockTypes;
12
+ (function (GeometryEaseBlockTypes) {
13
+ /** EaseInSine */
14
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInSine"] = 0] = "EaseInSine";
15
+ /** EaseOutSine */
16
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseOutSine"] = 1] = "EaseOutSine";
17
+ /** EaseInOutSine */
18
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInOutSine"] = 2] = "EaseInOutSine";
19
+ /** EaseInQuad */
20
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInQuad"] = 3] = "EaseInQuad";
21
+ /** EaseOutQuad */
22
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseOutQuad"] = 4] = "EaseOutQuad";
23
+ /** EaseInOutQuad */
24
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInOutQuad"] = 5] = "EaseInOutQuad";
25
+ /** EaseInCubic */
26
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInCubic"] = 6] = "EaseInCubic";
27
+ /** EaseOutCubic */
28
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseOutCubic"] = 7] = "EaseOutCubic";
29
+ /** EaseInOutCubic */
30
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInOutCubic"] = 8] = "EaseInOutCubic";
31
+ /** EaseInQuart */
32
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInQuart"] = 9] = "EaseInQuart";
33
+ /** EaseOutQuart */
34
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseOutQuart"] = 10] = "EaseOutQuart";
35
+ /** EaseInOutQuart */
36
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInOutQuart"] = 11] = "EaseInOutQuart";
37
+ /** EaseInQuint */
38
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInQuint"] = 12] = "EaseInQuint";
39
+ /** EaseOutQuint */
40
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseOutQuint"] = 13] = "EaseOutQuint";
41
+ /** EaseInOutQuint */
42
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInOutQuint"] = 14] = "EaseInOutQuint";
43
+ /** EaseInExpo */
44
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInExpo"] = 15] = "EaseInExpo";
45
+ /** EaseOutExpo */
46
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseOutExpo"] = 16] = "EaseOutExpo";
47
+ /** EaseInOutExpo */
48
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInOutExpo"] = 17] = "EaseInOutExpo";
49
+ /** EaseInCirc */
50
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInCirc"] = 18] = "EaseInCirc";
51
+ /** EaseOutCirc */
52
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseOutCirc"] = 19] = "EaseOutCirc";
53
+ /** EaseInOutCirc */
54
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInOutCirc"] = 20] = "EaseInOutCirc";
55
+ /** EaseInBack */
56
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInBack"] = 21] = "EaseInBack";
57
+ /** EaseOutBack */
58
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseOutBack"] = 22] = "EaseOutBack";
59
+ /** EaseInOutBack */
60
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInOutBack"] = 23] = "EaseInOutBack";
61
+ /** EaseInElastic */
62
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInElastic"] = 24] = "EaseInElastic";
63
+ /** EaseOutElastic */
64
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseOutElastic"] = 25] = "EaseOutElastic";
65
+ /** EaseInOutElastic */
66
+ GeometryEaseBlockTypes[GeometryEaseBlockTypes["EaseInOutElastic"] = 26] = "EaseInOutElastic";
67
+ })(GeometryEaseBlockTypes || (GeometryEaseBlockTypes = {}));
68
+ /**
69
+ * Block used to apply an easing function to floats
70
+ */
71
+ export class GeometryEaseBlock extends NodeGeometryBlock {
72
+ /**
73
+ * Gets or sets the type of the easing functions applied by the block
74
+ */
75
+ get type() {
76
+ return this._type;
77
+ }
78
+ set type(value) {
79
+ if (this._type === value) {
80
+ return;
81
+ }
82
+ this._type = value;
83
+ switch (this._type) {
84
+ case GeometryEaseBlockTypes.EaseInSine:
85
+ this._easingFunction = new SineEase();
86
+ this._easingFunction.setEasingMode(SineEase.EASINGMODE_EASEIN);
87
+ break;
88
+ case GeometryEaseBlockTypes.EaseOutSine:
89
+ this._easingFunction = new SineEase();
90
+ this._easingFunction.setEasingMode(SineEase.EASINGMODE_EASEOUT);
91
+ break;
92
+ case GeometryEaseBlockTypes.EaseInOutSine:
93
+ this._easingFunction = new SineEase();
94
+ this._easingFunction.setEasingMode(SineEase.EASINGMODE_EASEINOUT);
95
+ break;
96
+ case GeometryEaseBlockTypes.EaseInQuad:
97
+ this._easingFunction = new QuadraticEase();
98
+ this._easingFunction.setEasingMode(QuadraticEase.EASINGMODE_EASEIN);
99
+ break;
100
+ case GeometryEaseBlockTypes.EaseOutQuad:
101
+ this._easingFunction = new QuadraticEase();
102
+ this._easingFunction.setEasingMode(QuadraticEase.EASINGMODE_EASEOUT);
103
+ break;
104
+ case GeometryEaseBlockTypes.EaseInOutQuad:
105
+ this._easingFunction = new QuadraticEase();
106
+ this._easingFunction.setEasingMode(QuadraticEase.EASINGMODE_EASEINOUT);
107
+ break;
108
+ case GeometryEaseBlockTypes.EaseInCubic:
109
+ this._easingFunction = new CubicEase();
110
+ this._easingFunction.setEasingMode(CubicEase.EASINGMODE_EASEIN);
111
+ break;
112
+ case GeometryEaseBlockTypes.EaseOutCubic:
113
+ this._easingFunction = new CubicEase();
114
+ this._easingFunction.setEasingMode(CubicEase.EASINGMODE_EASEOUT);
115
+ break;
116
+ case GeometryEaseBlockTypes.EaseInOutCubic:
117
+ this._easingFunction = new CubicEase();
118
+ this._easingFunction.setEasingMode(CubicEase.EASINGMODE_EASEINOUT);
119
+ break;
120
+ case GeometryEaseBlockTypes.EaseInQuart:
121
+ this._easingFunction = new QuarticEase();
122
+ this._easingFunction.setEasingMode(QuarticEase.EASINGMODE_EASEIN);
123
+ break;
124
+ case GeometryEaseBlockTypes.EaseOutQuart:
125
+ this._easingFunction = new QuarticEase();
126
+ this._easingFunction.setEasingMode(QuarticEase.EASINGMODE_EASEOUT);
127
+ break;
128
+ case GeometryEaseBlockTypes.EaseInOutQuart:
129
+ this._easingFunction = new QuarticEase();
130
+ this._easingFunction.setEasingMode(QuarticEase.EASINGMODE_EASEINOUT);
131
+ break;
132
+ case GeometryEaseBlockTypes.EaseInQuint:
133
+ this._easingFunction = new QuinticEase();
134
+ this._easingFunction.setEasingMode(QuinticEase.EASINGMODE_EASEIN);
135
+ break;
136
+ case GeometryEaseBlockTypes.EaseOutQuint:
137
+ this._easingFunction = new QuinticEase();
138
+ this._easingFunction.setEasingMode(QuinticEase.EASINGMODE_EASEOUT);
139
+ break;
140
+ case GeometryEaseBlockTypes.EaseInOutQuint:
141
+ this._easingFunction = new QuinticEase();
142
+ this._easingFunction.setEasingMode(QuinticEase.EASINGMODE_EASEINOUT);
143
+ break;
144
+ case GeometryEaseBlockTypes.EaseInExpo:
145
+ this._easingFunction = new ExponentialEase();
146
+ this._easingFunction.setEasingMode(ExponentialEase.EASINGMODE_EASEIN);
147
+ break;
148
+ case GeometryEaseBlockTypes.EaseOutExpo:
149
+ this._easingFunction = new ExponentialEase();
150
+ this._easingFunction.setEasingMode(ExponentialEase.EASINGMODE_EASEOUT);
151
+ break;
152
+ case GeometryEaseBlockTypes.EaseInOutExpo:
153
+ this._easingFunction = new ExponentialEase();
154
+ this._easingFunction.setEasingMode(ExponentialEase.EASINGMODE_EASEINOUT);
155
+ break;
156
+ case GeometryEaseBlockTypes.EaseInCirc:
157
+ this._easingFunction = new CircleEase();
158
+ this._easingFunction.setEasingMode(CircleEase.EASINGMODE_EASEIN);
159
+ break;
160
+ case GeometryEaseBlockTypes.EaseOutCirc:
161
+ this._easingFunction = new CircleEase();
162
+ this._easingFunction.setEasingMode(CircleEase.EASINGMODE_EASEOUT);
163
+ break;
164
+ case GeometryEaseBlockTypes.EaseInOutCirc:
165
+ this._easingFunction = new CircleEase();
166
+ this._easingFunction.setEasingMode(CircleEase.EASINGMODE_EASEINOUT);
167
+ break;
168
+ case GeometryEaseBlockTypes.EaseInBack:
169
+ this._easingFunction = new BackEase();
170
+ this._easingFunction.setEasingMode(BackEase.EASINGMODE_EASEIN);
171
+ break;
172
+ case GeometryEaseBlockTypes.EaseOutBack:
173
+ this._easingFunction = new BackEase();
174
+ this._easingFunction.setEasingMode(BackEase.EASINGMODE_EASEOUT);
175
+ break;
176
+ case GeometryEaseBlockTypes.EaseInOutBack:
177
+ this._easingFunction = new BackEase();
178
+ this._easingFunction.setEasingMode(BackEase.EASINGMODE_EASEINOUT);
179
+ break;
180
+ case GeometryEaseBlockTypes.EaseInElastic:
181
+ this._easingFunction = new ElasticEase();
182
+ this._easingFunction.setEasingMode(ElasticEase.EASINGMODE_EASEIN);
183
+ break;
184
+ case GeometryEaseBlockTypes.EaseOutElastic:
185
+ this._easingFunction = new ElasticEase();
186
+ this._easingFunction.setEasingMode(ElasticEase.EASINGMODE_EASEOUT);
187
+ break;
188
+ case GeometryEaseBlockTypes.EaseInOutElastic:
189
+ this._easingFunction = new ElasticEase();
190
+ this._easingFunction.setEasingMode(ElasticEase.EASINGMODE_EASEINOUT);
191
+ break;
192
+ }
193
+ }
194
+ /**
195
+ * Creates a new GeometryEaseBlock
196
+ * @param name defines the block name
197
+ */
198
+ constructor(name) {
199
+ super(name);
200
+ this._easingFunction = new SineEase();
201
+ this._type = GeometryEaseBlockTypes.EaseInOutSine;
202
+ this.registerInput("input", NodeGeometryBlockConnectionPointTypes.AutoDetect);
203
+ this.registerOutput("output", NodeGeometryBlockConnectionPointTypes.BasedOnInput);
204
+ this._outputs[0]._typeConnectionSource = this._inputs[0];
205
+ this._inputs[0].excludedConnectionPointTypes.push(NodeGeometryBlockConnectionPointTypes.Matrix);
206
+ this._inputs[0].excludedConnectionPointTypes.push(NodeGeometryBlockConnectionPointTypes.Geometry);
207
+ this._inputs[0].excludedConnectionPointTypes.push(NodeGeometryBlockConnectionPointTypes.Texture);
208
+ }
209
+ /**
210
+ * Gets the current class name
211
+ * @returns the class name
212
+ */
213
+ getClassName() {
214
+ return "GeometryEaseBlock";
215
+ }
216
+ /**
217
+ * Gets the input component
218
+ */
219
+ get input() {
220
+ return this._inputs[0];
221
+ }
222
+ /**
223
+ * Gets the output component
224
+ */
225
+ get output() {
226
+ return this._outputs[0];
227
+ }
228
+ _buildBlock(state) {
229
+ super._buildBlock(state);
230
+ if (!this._easingFunction) {
231
+ this.output._storedFunction = null;
232
+ this.output._storedValue = null;
233
+ return;
234
+ }
235
+ switch (this.input.type) {
236
+ case NodeGeometryBlockConnectionPointTypes.Int:
237
+ case NodeGeometryBlockConnectionPointTypes.Float: {
238
+ this.output._storedFunction = (state) => {
239
+ const source = this.input.getConnectedValue(state);
240
+ return this._easingFunction.ease(source);
241
+ };
242
+ break;
243
+ }
244
+ case NodeGeometryBlockConnectionPointTypes.Vector2: {
245
+ this.output._storedFunction = (state) => {
246
+ const source = this.input.getConnectedValue(state);
247
+ return new Vector2(this._easingFunction.ease(source.x), this._easingFunction.ease(source.y));
248
+ };
249
+ break;
250
+ }
251
+ case NodeGeometryBlockConnectionPointTypes.Vector3: {
252
+ this.output._storedFunction = (state) => {
253
+ const source = this.input.getConnectedValue(state);
254
+ return new Vector3(this._easingFunction.ease(source.x), this._easingFunction.ease(source.y), this._easingFunction.ease(source.z));
255
+ };
256
+ break;
257
+ }
258
+ case NodeGeometryBlockConnectionPointTypes.Vector4: {
259
+ this.output._storedFunction = (state) => {
260
+ const source = this.input.getConnectedValue(state);
261
+ return new Vector4(this._easingFunction.ease(source.x), this._easingFunction.ease(source.y), this._easingFunction.ease(source.z), this._easingFunction.ease(source.w));
262
+ };
263
+ break;
264
+ }
265
+ }
266
+ return this;
267
+ }
268
+ serialize() {
269
+ const serializationObject = super.serialize();
270
+ serializationObject.type = this.type;
271
+ return serializationObject;
272
+ }
273
+ _deserialize(serializationObject) {
274
+ super._deserialize(serializationObject);
275
+ this.type = serializationObject.type;
276
+ }
277
+ _dumpPropertiesCode() {
278
+ const codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.type = BABYLON.GeometryEaseBlockTypes.${GeometryEaseBlockTypes[this.type]};\n`;
279
+ return codeString;
280
+ }
281
+ }
282
+ __decorate([
283
+ editableInPropertyPage("Type", 4 /* PropertyTypeForEdition.List */, "ADVANCED", {
284
+ notifiers: { rebuild: true },
285
+ embedded: true,
286
+ options: [
287
+ { label: "EaseInSine", value: GeometryEaseBlockTypes.EaseInSine },
288
+ { label: "EaseOutSine", value: GeometryEaseBlockTypes.EaseOutSine },
289
+ { label: "EaseInOutSine", value: GeometryEaseBlockTypes.EaseInOutSine },
290
+ { label: "EaseInQuad", value: GeometryEaseBlockTypes.EaseInQuad },
291
+ { label: "EaseOutQuad", value: GeometryEaseBlockTypes.EaseOutQuad },
292
+ { label: "EaseInOutQuad", value: GeometryEaseBlockTypes.EaseInOutQuad },
293
+ { label: "EaseInCubic", value: GeometryEaseBlockTypes.EaseInCubic },
294
+ { label: "EaseOutCubic", value: GeometryEaseBlockTypes.EaseOutCubic },
295
+ { label: "EaseInOutCubic", value: GeometryEaseBlockTypes.EaseInOutCubic },
296
+ { label: "EaseInQuart", value: GeometryEaseBlockTypes.EaseInQuart },
297
+ { label: "EaseOutQuart", value: GeometryEaseBlockTypes.EaseOutQuart },
298
+ { label: "EaseInOutQuart", value: GeometryEaseBlockTypes.EaseInOutQuart },
299
+ { label: "EaseInQuint", value: GeometryEaseBlockTypes.EaseInQuint },
300
+ { label: "EaseOutQuint", value: GeometryEaseBlockTypes.EaseOutQuint },
301
+ { label: "EaseInOutQuint", value: GeometryEaseBlockTypes.EaseInOutQuint },
302
+ { label: "EaseInExpo", value: GeometryEaseBlockTypes.EaseInExpo },
303
+ { label: "EaseOutExpo", value: GeometryEaseBlockTypes.EaseOutExpo },
304
+ { label: "EaseInOutExpo", value: GeometryEaseBlockTypes.EaseInOutExpo },
305
+ { label: "EaseInCirc", value: GeometryEaseBlockTypes.EaseInCirc },
306
+ { label: "EaseOutCirc", value: GeometryEaseBlockTypes.EaseOutCirc },
307
+ { label: "EaseInOutCirc", value: GeometryEaseBlockTypes.EaseInOutCirc },
308
+ { label: "EaseInBack", value: GeometryEaseBlockTypes.EaseInBack },
309
+ { label: "EaseOutBack", value: GeometryEaseBlockTypes.EaseOutBack },
310
+ { label: "EaseInOutBack", value: GeometryEaseBlockTypes.EaseInOutBack },
311
+ { label: "EaseInElastic", value: GeometryEaseBlockTypes.EaseInElastic },
312
+ { label: "EaseOutElastic", value: GeometryEaseBlockTypes.EaseOutElastic },
313
+ { label: "EaseInOutElastic", value: GeometryEaseBlockTypes.EaseInOutElastic },
314
+ ],
315
+ })
316
+ ], GeometryEaseBlock.prototype, "type", null);
317
+ RegisterClass("BABYLON.GeometryEaseBlock", GeometryEaseBlock);
318
+ //# sourceMappingURL=geometryEaseBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometryEaseBlock.js","sourceRoot":"","sources":["../../../../../../dev/core/src/Meshes/Node/Blocks/geometryEaseBlock.ts"],"names":[],"mappings":"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","sourcesContent":["import { RegisterClass } from \"../../../Misc/typeStore\";\r\nimport { NodeGeometryBlockConnectionPointTypes } from \"../Enums/nodeGeometryConnectionPointTypes\";\r\nimport { NodeGeometryBlock } from \"../nodeGeometryBlock\";\r\nimport type { NodeGeometryConnectionPoint } from \"../nodeGeometryBlockConnectionPoint\";\r\nimport type { NodeGeometryBuildState } from \"../nodeGeometryBuildState\";\r\nimport { Vector2, Vector3, Vector4 } from \"../../../Maths/math.vector\";\r\nimport { PropertyTypeForEdition, editableInPropertyPage } from \"../../../Decorators/nodeDecorator\";\r\nimport type { EasingFunction } from \"core/Animations/easing\";\r\nimport { BackEase, CircleEase, CubicEase, ElasticEase, ExponentialEase, QuadraticEase, QuarticEase, QuinticEase, SineEase } from \"core/Animations/easing\";\r\n\r\n/**\r\n * Types of easing function supported by the Ease block\r\n */\r\nexport enum GeometryEaseBlockTypes {\r\n /** EaseInSine */\r\n EaseInSine,\r\n /** EaseOutSine */\r\n EaseOutSine,\r\n /** EaseInOutSine */\r\n EaseInOutSine,\r\n /** EaseInQuad */\r\n EaseInQuad,\r\n /** EaseOutQuad */\r\n EaseOutQuad,\r\n /** EaseInOutQuad */\r\n EaseInOutQuad,\r\n /** EaseInCubic */\r\n EaseInCubic,\r\n /** EaseOutCubic */\r\n EaseOutCubic,\r\n /** EaseInOutCubic */\r\n EaseInOutCubic,\r\n /** EaseInQuart */\r\n EaseInQuart,\r\n /** EaseOutQuart */\r\n EaseOutQuart,\r\n /** EaseInOutQuart */\r\n EaseInOutQuart,\r\n /** EaseInQuint */\r\n EaseInQuint,\r\n /** EaseOutQuint */\r\n EaseOutQuint,\r\n /** EaseInOutQuint */\r\n EaseInOutQuint,\r\n /** EaseInExpo */\r\n EaseInExpo,\r\n /** EaseOutExpo */\r\n EaseOutExpo,\r\n /** EaseInOutExpo */\r\n EaseInOutExpo,\r\n /** EaseInCirc */\r\n EaseInCirc,\r\n /** EaseOutCirc */\r\n EaseOutCirc,\r\n /** EaseInOutCirc */\r\n EaseInOutCirc,\r\n /** EaseInBack */\r\n EaseInBack,\r\n /** EaseOutBack */\r\n EaseOutBack,\r\n /** EaseInOutBack */\r\n EaseInOutBack,\r\n /** EaseInElastic */\r\n EaseInElastic,\r\n /** EaseOutElastic */\r\n EaseOutElastic,\r\n /** EaseInOutElastic */\r\n EaseInOutElastic,\r\n}\r\n\r\n/**\r\n * Block used to apply an easing function to floats\r\n */\r\nexport class GeometryEaseBlock extends NodeGeometryBlock {\r\n private _easingFunction: EasingFunction = new SineEase();\r\n private _type = GeometryEaseBlockTypes.EaseInOutSine;\r\n /**\r\n * Gets or sets the type of the easing functions applied by the block\r\n */\r\n @editableInPropertyPage(\"Type\", PropertyTypeForEdition.List, \"ADVANCED\", {\r\n notifiers: { rebuild: true },\r\n embedded: true,\r\n options: [\r\n { label: \"EaseInSine\", value: GeometryEaseBlockTypes.EaseInSine },\r\n { label: \"EaseOutSine\", value: GeometryEaseBlockTypes.EaseOutSine },\r\n { label: \"EaseInOutSine\", value: GeometryEaseBlockTypes.EaseInOutSine },\r\n { label: \"EaseInQuad\", value: GeometryEaseBlockTypes.EaseInQuad },\r\n { label: \"EaseOutQuad\", value: GeometryEaseBlockTypes.EaseOutQuad },\r\n { label: \"EaseInOutQuad\", value: GeometryEaseBlockTypes.EaseInOutQuad },\r\n { label: \"EaseInCubic\", value: GeometryEaseBlockTypes.EaseInCubic },\r\n { label: \"EaseOutCubic\", value: GeometryEaseBlockTypes.EaseOutCubic },\r\n { label: \"EaseInOutCubic\", value: GeometryEaseBlockTypes.EaseInOutCubic },\r\n { label: \"EaseInQuart\", value: GeometryEaseBlockTypes.EaseInQuart },\r\n { label: \"EaseOutQuart\", value: GeometryEaseBlockTypes.EaseOutQuart },\r\n { label: \"EaseInOutQuart\", value: GeometryEaseBlockTypes.EaseInOutQuart },\r\n { label: \"EaseInQuint\", value: GeometryEaseBlockTypes.EaseInQuint },\r\n { label: \"EaseOutQuint\", value: GeometryEaseBlockTypes.EaseOutQuint },\r\n { label: \"EaseInOutQuint\", value: GeometryEaseBlockTypes.EaseInOutQuint },\r\n { label: \"EaseInExpo\", value: GeometryEaseBlockTypes.EaseInExpo },\r\n { label: \"EaseOutExpo\", value: GeometryEaseBlockTypes.EaseOutExpo },\r\n { label: \"EaseInOutExpo\", value: GeometryEaseBlockTypes.EaseInOutExpo },\r\n { label: \"EaseInCirc\", value: GeometryEaseBlockTypes.EaseInCirc },\r\n { label: \"EaseOutCirc\", value: GeometryEaseBlockTypes.EaseOutCirc },\r\n { label: \"EaseInOutCirc\", value: GeometryEaseBlockTypes.EaseInOutCirc },\r\n { label: \"EaseInBack\", value: GeometryEaseBlockTypes.EaseInBack },\r\n { label: \"EaseOutBack\", value: GeometryEaseBlockTypes.EaseOutBack },\r\n { label: \"EaseInOutBack\", value: GeometryEaseBlockTypes.EaseInOutBack },\r\n { label: \"EaseInElastic\", value: GeometryEaseBlockTypes.EaseInElastic },\r\n { label: \"EaseOutElastic\", value: GeometryEaseBlockTypes.EaseOutElastic },\r\n { label: \"EaseInOutElastic\", value: GeometryEaseBlockTypes.EaseInOutElastic },\r\n ],\r\n })\r\n public get type() {\r\n return this._type;\r\n }\r\n\r\n public set type(value: GeometryEaseBlockTypes) {\r\n if (this._type === value) {\r\n return;\r\n }\r\n this._type = value;\r\n\r\n switch (this._type) {\r\n case GeometryEaseBlockTypes.EaseInSine:\r\n this._easingFunction = new SineEase();\r\n this._easingFunction.setEasingMode(SineEase.EASINGMODE_EASEIN);\r\n break;\r\n case GeometryEaseBlockTypes.EaseOutSine:\r\n this._easingFunction = new SineEase();\r\n this._easingFunction.setEasingMode(SineEase.EASINGMODE_EASEOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInOutSine:\r\n this._easingFunction = new SineEase();\r\n this._easingFunction.setEasingMode(SineEase.EASINGMODE_EASEINOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInQuad:\r\n this._easingFunction = new QuadraticEase();\r\n this._easingFunction.setEasingMode(QuadraticEase.EASINGMODE_EASEIN);\r\n break;\r\n case GeometryEaseBlockTypes.EaseOutQuad:\r\n this._easingFunction = new QuadraticEase();\r\n this._easingFunction.setEasingMode(QuadraticEase.EASINGMODE_EASEOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInOutQuad:\r\n this._easingFunction = new QuadraticEase();\r\n this._easingFunction.setEasingMode(QuadraticEase.EASINGMODE_EASEINOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInCubic:\r\n this._easingFunction = new CubicEase();\r\n this._easingFunction.setEasingMode(CubicEase.EASINGMODE_EASEIN);\r\n break;\r\n case GeometryEaseBlockTypes.EaseOutCubic:\r\n this._easingFunction = new CubicEase();\r\n this._easingFunction.setEasingMode(CubicEase.EASINGMODE_EASEOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInOutCubic:\r\n this._easingFunction = new CubicEase();\r\n this._easingFunction.setEasingMode(CubicEase.EASINGMODE_EASEINOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInQuart:\r\n this._easingFunction = new QuarticEase();\r\n this._easingFunction.setEasingMode(QuarticEase.EASINGMODE_EASEIN);\r\n break;\r\n case GeometryEaseBlockTypes.EaseOutQuart:\r\n this._easingFunction = new QuarticEase();\r\n this._easingFunction.setEasingMode(QuarticEase.EASINGMODE_EASEOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInOutQuart:\r\n this._easingFunction = new QuarticEase();\r\n this._easingFunction.setEasingMode(QuarticEase.EASINGMODE_EASEINOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInQuint:\r\n this._easingFunction = new QuinticEase();\r\n this._easingFunction.setEasingMode(QuinticEase.EASINGMODE_EASEIN);\r\n break;\r\n case GeometryEaseBlockTypes.EaseOutQuint:\r\n this._easingFunction = new QuinticEase();\r\n this._easingFunction.setEasingMode(QuinticEase.EASINGMODE_EASEOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInOutQuint:\r\n this._easingFunction = new QuinticEase();\r\n this._easingFunction.setEasingMode(QuinticEase.EASINGMODE_EASEINOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInExpo:\r\n this._easingFunction = new ExponentialEase();\r\n this._easingFunction.setEasingMode(ExponentialEase.EASINGMODE_EASEIN);\r\n break;\r\n case GeometryEaseBlockTypes.EaseOutExpo:\r\n this._easingFunction = new ExponentialEase();\r\n this._easingFunction.setEasingMode(ExponentialEase.EASINGMODE_EASEOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInOutExpo:\r\n this._easingFunction = new ExponentialEase();\r\n this._easingFunction.setEasingMode(ExponentialEase.EASINGMODE_EASEINOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInCirc:\r\n this._easingFunction = new CircleEase();\r\n this._easingFunction.setEasingMode(CircleEase.EASINGMODE_EASEIN);\r\n break;\r\n case GeometryEaseBlockTypes.EaseOutCirc:\r\n this._easingFunction = new CircleEase();\r\n this._easingFunction.setEasingMode(CircleEase.EASINGMODE_EASEOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInOutCirc:\r\n this._easingFunction = new CircleEase();\r\n this._easingFunction.setEasingMode(CircleEase.EASINGMODE_EASEINOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInBack:\r\n this._easingFunction = new BackEase();\r\n this._easingFunction.setEasingMode(BackEase.EASINGMODE_EASEIN);\r\n break;\r\n case GeometryEaseBlockTypes.EaseOutBack:\r\n this._easingFunction = new BackEase();\r\n this._easingFunction.setEasingMode(BackEase.EASINGMODE_EASEOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInOutBack:\r\n this._easingFunction = new BackEase();\r\n this._easingFunction.setEasingMode(BackEase.EASINGMODE_EASEINOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInElastic:\r\n this._easingFunction = new ElasticEase();\r\n this._easingFunction.setEasingMode(ElasticEase.EASINGMODE_EASEIN);\r\n break;\r\n case GeometryEaseBlockTypes.EaseOutElastic:\r\n this._easingFunction = new ElasticEase();\r\n this._easingFunction.setEasingMode(ElasticEase.EASINGMODE_EASEOUT);\r\n break;\r\n case GeometryEaseBlockTypes.EaseInOutElastic:\r\n this._easingFunction = new ElasticEase();\r\n this._easingFunction.setEasingMode(ElasticEase.EASINGMODE_EASEINOUT);\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new GeometryEaseBlock\r\n * @param name defines the block name\r\n */\r\n public constructor(name: string) {\r\n super(name);\r\n\r\n this.registerInput(\"input\", NodeGeometryBlockConnectionPointTypes.AutoDetect);\r\n this.registerOutput(\"output\", NodeGeometryBlockConnectionPointTypes.BasedOnInput);\r\n\r\n this._outputs[0]._typeConnectionSource = this._inputs[0];\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeGeometryBlockConnectionPointTypes.Matrix);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeGeometryBlockConnectionPointTypes.Geometry);\r\n this._inputs[0].excludedConnectionPointTypes.push(NodeGeometryBlockConnectionPointTypes.Texture);\r\n }\r\n\r\n /**\r\n * Gets the current class name\r\n * @returns the class name\r\n */\r\n public override getClassName() {\r\n return \"GeometryEaseBlock\";\r\n }\r\n\r\n /**\r\n * Gets the input component\r\n */\r\n public get input(): NodeGeometryConnectionPoint {\r\n return this._inputs[0];\r\n }\r\n\r\n /**\r\n * Gets the output component\r\n */\r\n public get output(): NodeGeometryConnectionPoint {\r\n return this._outputs[0];\r\n }\r\n\r\n protected override _buildBlock(state: NodeGeometryBuildState) {\r\n super._buildBlock(state);\r\n\r\n if (!this._easingFunction) {\r\n this.output._storedFunction = null;\r\n this.output._storedValue = null;\r\n return;\r\n }\r\n\r\n switch (this.input.type) {\r\n case NodeGeometryBlockConnectionPointTypes.Int:\r\n case NodeGeometryBlockConnectionPointTypes.Float: {\r\n this.output._storedFunction = (state) => {\r\n const source = this.input.getConnectedValue(state);\r\n return this._easingFunction.ease(source);\r\n };\r\n break;\r\n }\r\n case NodeGeometryBlockConnectionPointTypes.Vector2: {\r\n this.output._storedFunction = (state) => {\r\n const source = this.input.getConnectedValue(state);\r\n return new Vector2(this._easingFunction.ease(source.x), this._easingFunction.ease(source.y));\r\n };\r\n break;\r\n }\r\n case NodeGeometryBlockConnectionPointTypes.Vector3: {\r\n this.output._storedFunction = (state) => {\r\n const source = this.input.getConnectedValue(state);\r\n return new Vector3(this._easingFunction.ease(source.x), this._easingFunction.ease(source.y), this._easingFunction.ease(source.z));\r\n };\r\n break;\r\n }\r\n case NodeGeometryBlockConnectionPointTypes.Vector4: {\r\n this.output._storedFunction = (state) => {\r\n const source = this.input.getConnectedValue(state);\r\n return new Vector4(\r\n this._easingFunction.ease(source.x),\r\n this._easingFunction.ease(source.y),\r\n this._easingFunction.ease(source.z),\r\n this._easingFunction.ease(source.w)\r\n );\r\n };\r\n break;\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n\r\n serializationObject.type = this.type;\r\n\r\n return serializationObject;\r\n }\r\n\r\n public override _deserialize(serializationObject: any) {\r\n super._deserialize(serializationObject);\r\n\r\n this.type = serializationObject.type;\r\n }\r\n\r\n protected override _dumpPropertiesCode() {\r\n const codeString = super._dumpPropertiesCode() + `${this._codeVariableName}.type = BABYLON.GeometryEaseBlockTypes.${GeometryEaseBlockTypes[this.type]};\\n`;\r\n return codeString;\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GeometryEaseBlock\", GeometryEaseBlock);\r\n"]}
@@ -82,5 +82,6 @@ export * from "./Blocks/geometryDotBlock";
82
82
  export * from "./Blocks/geometryLengthBlock";
83
83
  export * from "./Blocks/geometryRotate2dBlock";
84
84
  export * from "./Blocks/geometryInterceptorBlock";
85
+ export * from "./Blocks/geometryEaseBlock";
85
86
  export * from "./Blocks/Set/aggregatorBlock";
86
87
  export * from "./Blocks/subdivideBlock";
@@ -82,6 +82,7 @@ export * from "./Blocks/geometryDotBlock.js";
82
82
  export * from "./Blocks/geometryLengthBlock.js";
83
83
  export * from "./Blocks/geometryRotate2dBlock.js";
84
84
  export * from "./Blocks/geometryInterceptorBlock.js";
85
+ export * from "./Blocks/geometryEaseBlock.js";
85
86
  export * from "./Blocks/Set/aggregatorBlock.js";
86
87
  export * from "./Blocks/subdivideBlock.js";
87
88
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Node/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oCAAoC,CAAC;AACnD,cAAc,0BAA0B,CAAC;AACzC,cAAc,2CAA2C,CAAC;AAC1D,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,qCAAqC,CAAC;AACpD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC","sourcesContent":["export * from \"./nodeGeometry\";\r\nexport * from \"./nodeGeometryBlock\";\r\nexport * from \"./nodeGeometryBlockConnectionPoint\";\r\nexport * from \"./nodeGeometryBuildState\";\r\nexport * from \"./Interfaces/nodeGeometryExecutionContext\";\r\nexport * from \"./Enums/nodeGeometryConnectionPointTypes\";\r\nexport * from \"./Enums/nodeGeometryContextualSources\";\r\nexport * from \"./Blocks/geometryOptimizeBlock\";\r\nexport * from \"./Blocks/geometryOutputBlock\";\r\nexport * from \"./Blocks/geometryInputBlock\";\r\nexport * from \"./Blocks/Sources/planeBlock\";\r\nexport * from \"./Blocks/Sources/boxBlock\";\r\nexport * from \"./Blocks/Sources/meshBlock\";\r\nexport * from \"./Blocks/Sources/icoSphereBlock\";\r\nexport * from \"./Blocks/Sources/sphereBlock\";\r\nexport * from \"./Blocks/Sources/gridBlock\";\r\nexport * from \"./Blocks/Sources/torusBlock\";\r\nexport * from \"./Blocks/Sources/cylinderBlock\";\r\nexport * from \"./Blocks/Sources/capsuleBlock\";\r\nexport * from \"./Blocks/Sources/discBlock\";\r\nexport * from \"./Blocks/Sources/nullBlock\";\r\nexport * from \"./Blocks/Sources/pointListBlock\";\r\nexport * from \"./Blocks/Set/setPositionsBlock\";\r\nexport * from \"./Blocks/Set/setNormalsBlock\";\r\nexport * from \"./Blocks/Set/setUVsBlock\";\r\nexport * from \"./Blocks/Set/setColorsBlock\";\r\nexport * from \"./Blocks/Set/setTangentsBlock\";\r\nexport * from \"./Blocks/mathBlock\";\r\nexport * from \"./Blocks/mapRangeBlock\";\r\nexport * from \"./Blocks/conditionBlock\";\r\nexport * from \"./Blocks/randomBlock\";\r\nexport * from \"./Blocks/noiseBlock\";\r\nexport * from \"./Blocks/mergeGeometryBlock\";\r\nexport * from \"./Blocks/geometryCollectionBlock\";\r\nexport * from \"./Blocks/cleanGeometryBlock\";\r\nexport * from \"./Blocks/geometryElbowBlock\";\r\nexport * from \"./Blocks/computeNormalsBlock\";\r\nexport * from \"./Blocks/vectorConverterBlock\";\r\nexport * from \"./Blocks/normalizeVectorBlock\";\r\nexport * from \"./Blocks/Set/setMaterialIDBlock\";\r\nexport * from \"./Blocks/Set/latticeBlock\";\r\nexport * from \"./Blocks/geometryTrigonometryBlock\";\r\nexport * from \"./Blocks/geometryTransformBlock\";\r\nexport * from \"./Blocks/Matrices/rotationXBlock\";\r\nexport * from \"./Blocks/Matrices/rotationYBlock\";\r\nexport * from \"./Blocks/Matrices/rotationZBlock\";\r\nexport * from \"./Blocks/Matrices/scalingBlock\";\r\nexport * from \"./Blocks/Matrices/alignBlock\";\r\nexport * from \"./Blocks/Matrices/translationBlock\";\r\nexport * from \"./Blocks/Instances/instantiateOnVerticesBlock\";\r\nexport * from \"./Blocks/Instances/instantiateOnFacesBlock\";\r\nexport * from \"./Blocks/Instances/instantiateOnVolumeBlock\";\r\nexport * from \"./Blocks/Instances/instantiateBlock\";\r\nexport * from \"./Blocks/Instances/instantiateLinearBlock\";\r\nexport * from \"./Blocks/Instances/instantiateRadialBlock\";\r\nexport * from \"./Blocks/intFloatConverterBlock\";\r\nexport * from \"./Blocks/debugBlock\";\r\nexport * from \"./Blocks/geometryInfoBlock\";\r\nexport * from \"./Blocks/mappingBlock\";\r\nexport * from \"./Blocks/matrixComposeBlock\";\r\nexport * from \"./Blocks/Teleport/teleportInBlock\";\r\nexport * from \"./Blocks/Teleport/teleportOutBlock\";\r\nexport * from \"./Blocks/Textures/geometryTextureBlock\";\r\nexport * from \"./Blocks/Textures/geometryTextureFetchBlock\";\r\nexport * from \"./Blocks/boundingBlock\";\r\nexport * from \"./Blocks/booleanGeometryBlock\";\r\nexport * from \"./Blocks/geometryArcTan2Block\";\r\nexport * from \"./Blocks/geometryLerpBlock\";\r\nexport * from \"./Blocks/geometryNLerpBlock\";\r\nexport * from \"./Blocks/geometryStepBlock\";\r\nexport * from \"./Blocks/geometrySmoothStepBlock\";\r\nexport * from \"./Blocks/geometryModBlock\";\r\nexport * from \"./Blocks/geometryPowBlock\";\r\nexport * from \"./Blocks/geometryClampBlock\";\r\nexport * from \"./Blocks/geometryCrossBlock\";\r\nexport * from \"./Blocks/geometryCurveBlock\";\r\nexport * from \"./Blocks/geometryDesaturateBlock\";\r\nexport * from \"./Blocks/geometryPosterizeBlock\";\r\nexport * from \"./Blocks/geometryReplaceColorBlock\";\r\nexport * from \"./Blocks/geometryDistanceBlock\";\r\nexport * from \"./Blocks/geometryDotBlock\";\r\nexport * from \"./Blocks/geometryLengthBlock\";\r\nexport * from \"./Blocks/geometryRotate2dBlock\";\r\nexport * from \"./Blocks/geometryInterceptorBlock\";\r\nexport * from \"./Blocks/Set/aggregatorBlock\";\r\nexport * from \"./Blocks/subdivideBlock\";\r\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/core/src/Meshes/Node/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oCAAoC,CAAC;AACnD,cAAc,0BAA0B,CAAC;AACzC,cAAc,2CAA2C,CAAC;AAC1D,cAAc,0CAA0C,CAAC;AACzD,cAAc,uCAAuC,CAAC;AACtD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iCAAiC,CAAC;AAChD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC;AAChD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,qCAAqC,CAAC;AACpD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,2CAA2C,CAAC;AAC1D,cAAc,iCAAiC,CAAC;AAChD,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,wCAAwC,CAAC;AACvD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,wBAAwB,CAAC;AACvC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,oCAAoC,CAAC;AACnD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yBAAyB,CAAC","sourcesContent":["export * from \"./nodeGeometry\";\r\nexport * from \"./nodeGeometryBlock\";\r\nexport * from \"./nodeGeometryBlockConnectionPoint\";\r\nexport * from \"./nodeGeometryBuildState\";\r\nexport * from \"./Interfaces/nodeGeometryExecutionContext\";\r\nexport * from \"./Enums/nodeGeometryConnectionPointTypes\";\r\nexport * from \"./Enums/nodeGeometryContextualSources\";\r\nexport * from \"./Blocks/geometryOptimizeBlock\";\r\nexport * from \"./Blocks/geometryOutputBlock\";\r\nexport * from \"./Blocks/geometryInputBlock\";\r\nexport * from \"./Blocks/Sources/planeBlock\";\r\nexport * from \"./Blocks/Sources/boxBlock\";\r\nexport * from \"./Blocks/Sources/meshBlock\";\r\nexport * from \"./Blocks/Sources/icoSphereBlock\";\r\nexport * from \"./Blocks/Sources/sphereBlock\";\r\nexport * from \"./Blocks/Sources/gridBlock\";\r\nexport * from \"./Blocks/Sources/torusBlock\";\r\nexport * from \"./Blocks/Sources/cylinderBlock\";\r\nexport * from \"./Blocks/Sources/capsuleBlock\";\r\nexport * from \"./Blocks/Sources/discBlock\";\r\nexport * from \"./Blocks/Sources/nullBlock\";\r\nexport * from \"./Blocks/Sources/pointListBlock\";\r\nexport * from \"./Blocks/Set/setPositionsBlock\";\r\nexport * from \"./Blocks/Set/setNormalsBlock\";\r\nexport * from \"./Blocks/Set/setUVsBlock\";\r\nexport * from \"./Blocks/Set/setColorsBlock\";\r\nexport * from \"./Blocks/Set/setTangentsBlock\";\r\nexport * from \"./Blocks/mathBlock\";\r\nexport * from \"./Blocks/mapRangeBlock\";\r\nexport * from \"./Blocks/conditionBlock\";\r\nexport * from \"./Blocks/randomBlock\";\r\nexport * from \"./Blocks/noiseBlock\";\r\nexport * from \"./Blocks/mergeGeometryBlock\";\r\nexport * from \"./Blocks/geometryCollectionBlock\";\r\nexport * from \"./Blocks/cleanGeometryBlock\";\r\nexport * from \"./Blocks/geometryElbowBlock\";\r\nexport * from \"./Blocks/computeNormalsBlock\";\r\nexport * from \"./Blocks/vectorConverterBlock\";\r\nexport * from \"./Blocks/normalizeVectorBlock\";\r\nexport * from \"./Blocks/Set/setMaterialIDBlock\";\r\nexport * from \"./Blocks/Set/latticeBlock\";\r\nexport * from \"./Blocks/geometryTrigonometryBlock\";\r\nexport * from \"./Blocks/geometryTransformBlock\";\r\nexport * from \"./Blocks/Matrices/rotationXBlock\";\r\nexport * from \"./Blocks/Matrices/rotationYBlock\";\r\nexport * from \"./Blocks/Matrices/rotationZBlock\";\r\nexport * from \"./Blocks/Matrices/scalingBlock\";\r\nexport * from \"./Blocks/Matrices/alignBlock\";\r\nexport * from \"./Blocks/Matrices/translationBlock\";\r\nexport * from \"./Blocks/Instances/instantiateOnVerticesBlock\";\r\nexport * from \"./Blocks/Instances/instantiateOnFacesBlock\";\r\nexport * from \"./Blocks/Instances/instantiateOnVolumeBlock\";\r\nexport * from \"./Blocks/Instances/instantiateBlock\";\r\nexport * from \"./Blocks/Instances/instantiateLinearBlock\";\r\nexport * from \"./Blocks/Instances/instantiateRadialBlock\";\r\nexport * from \"./Blocks/intFloatConverterBlock\";\r\nexport * from \"./Blocks/debugBlock\";\r\nexport * from \"./Blocks/geometryInfoBlock\";\r\nexport * from \"./Blocks/mappingBlock\";\r\nexport * from \"./Blocks/matrixComposeBlock\";\r\nexport * from \"./Blocks/Teleport/teleportInBlock\";\r\nexport * from \"./Blocks/Teleport/teleportOutBlock\";\r\nexport * from \"./Blocks/Textures/geometryTextureBlock\";\r\nexport * from \"./Blocks/Textures/geometryTextureFetchBlock\";\r\nexport * from \"./Blocks/boundingBlock\";\r\nexport * from \"./Blocks/booleanGeometryBlock\";\r\nexport * from \"./Blocks/geometryArcTan2Block\";\r\nexport * from \"./Blocks/geometryLerpBlock\";\r\nexport * from \"./Blocks/geometryNLerpBlock\";\r\nexport * from \"./Blocks/geometryStepBlock\";\r\nexport * from \"./Blocks/geometrySmoothStepBlock\";\r\nexport * from \"./Blocks/geometryModBlock\";\r\nexport * from \"./Blocks/geometryPowBlock\";\r\nexport * from \"./Blocks/geometryClampBlock\";\r\nexport * from \"./Blocks/geometryCrossBlock\";\r\nexport * from \"./Blocks/geometryCurveBlock\";\r\nexport * from \"./Blocks/geometryDesaturateBlock\";\r\nexport * from \"./Blocks/geometryPosterizeBlock\";\r\nexport * from \"./Blocks/geometryReplaceColorBlock\";\r\nexport * from \"./Blocks/geometryDistanceBlock\";\r\nexport * from \"./Blocks/geometryDotBlock\";\r\nexport * from \"./Blocks/geometryLengthBlock\";\r\nexport * from \"./Blocks/geometryRotate2dBlock\";\r\nexport * from \"./Blocks/geometryInterceptorBlock\";\r\nexport * from \"./Blocks/geometryEaseBlock\";\r\nexport * from \"./Blocks/Set/aggregatorBlock\";\r\nexport * from \"./Blocks/subdivideBlock\";\r\n"]}
package/Meshes/csg2.d.ts CHANGED
@@ -49,9 +49,9 @@ export interface IVertexDataRebuildOptions {
49
49
  * Wrapper around the Manifold library
50
50
  * https://manifoldcad.org/
51
51
  * Use this class to perform fast boolean operations on meshes
52
- * #IW43EB#15 - basic operations
53
- * #JUKXQD#6218 - skull vs box
54
- * #JUKXQD#6219 - skull vs vertex data
52
+ * @see [basic operations](https://playground.babylonjs.com/#IW43EB#15)
53
+ * @see [skull vs box](https://playground.babylonjs.com/#JUKXQD#6218)
54
+ * @see [skull vs vertex data](https://playground.babylonjs.com/#JUKXQD#6219)
55
55
  */
56
56
  export declare class CSG2 implements IDisposable {
57
57
  private _manifold;
package/Meshes/csg2.js CHANGED
@@ -30,9 +30,9 @@ let FirstID;
30
30
  * Wrapper around the Manifold library
31
31
  * https://manifoldcad.org/
32
32
  * Use this class to perform fast boolean operations on meshes
33
- * #IW43EB#15 - basic operations
34
- * #JUKXQD#6218 - skull vs box
35
- * #JUKXQD#6219 - skull vs vertex data
33
+ * @see [basic operations](https://playground.babylonjs.com/#IW43EB#15)
34
+ * @see [skull vs box](https://playground.babylonjs.com/#JUKXQD#6218)
35
+ * @see [skull vs vertex data](https://playground.babylonjs.com/#JUKXQD#6219)
36
36
  */
37
37
  export class CSG2 {
38
38
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"csg2.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/csg2.ts"],"names":[],"mappings":"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","sourcesContent":["import { Mesh } from \"./mesh\";\r\nimport type { IDisposable, Scene } from \"core/scene\";\r\nimport type { IVertexDataLike } from \"./mesh.vertexData\";\r\nimport { VertexData } from \"./mesh.vertexData\";\r\nimport { VertexBuffer } from \"../Buffers/buffer\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { MultiMaterial } from \"core/Materials/multiMaterial\";\r\nimport { SubMesh } from \"./subMesh\";\r\nimport type { Material } from \"core/Materials/material\";\r\nimport { _LoadScriptModuleAsync } from \"core/Misc/tools.internals\";\r\nimport type { FloatArray, Nullable } from \"core/types\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\n\r\n/**\r\n * Main manifold library\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nlet Manifold: any;\r\n\r\n/**\r\n * Promise to wait for the manifold library to be ready\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nlet ManifoldPromise: Promise<{ Manifold: any; Mesh: any }>;\r\n\r\n/**\r\n * Manifold mesh\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nlet ManifoldMesh: any;\r\n\r\n/**\r\n * First ID to use for materials indexing\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nlet FirstID: number;\r\n\r\n/**\r\n * Interface to customize the Manifold library import\r\n */\r\nexport interface ICSG2Options {\r\n /**\r\n * Custom manifold URL\r\n */\r\n manifoldUrl?: string;\r\n /**\r\n * Custom manifold instance\r\n */\r\n manifoldInstance: any;\r\n /**\r\n * Custom manifold mesh instance\r\n */\r\n manifoldMeshInstance: any;\r\n}\r\n\r\n/**\r\n * Interface to customize the mesh rebuild options\r\n */\r\nexport interface IMeshRebuildOptions {\r\n /**\r\n * Rebuild normals\r\n */\r\n rebuildNormals?: boolean;\r\n /**\r\n * True to center the mesh on 0,0,0\r\n */\r\n centerMesh?: boolean;\r\n /**\r\n * Defines a material to use for that mesh. When not defined the system will either reuse the one from the source or create a multimaterial if several materials were involved\r\n */\r\n materialToUse?: Material;\r\n}\r\n\r\n/**\r\n * Interface to customize the vertex data rebuild options\r\n */\r\nexport interface IVertexDataRebuildOptions {\r\n /**\r\n * Rebuild normals\r\n */\r\n rebuildNormals?: boolean;\r\n}\r\n\r\ninterface IManifoldMesh {\r\n numProp: number;\r\n vertProperties: Float32Array;\r\n triVerts: Uint32Array;\r\n runIndex: Uint32Array;\r\n runOriginalID: Uint32Array;\r\n numRun: number;\r\n}\r\n\r\ninterface IManifoldVertexComponent {\r\n stride: number;\r\n kind: string;\r\n data?: FloatArray;\r\n}\r\n\r\n/**\r\n * Wrapper around the Manifold library\r\n * https://manifoldcad.org/\r\n * Use this class to perform fast boolean operations on meshes\r\n * #IW43EB#15 - basic operations\r\n * #JUKXQD#6218 - skull vs box\r\n * #JUKXQD#6219 - skull vs vertex data\r\n */\r\nexport class CSG2 implements IDisposable {\r\n private _manifold: any;\r\n private _numProp: number;\r\n private _vertexStructure: IManifoldVertexComponent[];\r\n\r\n /**\r\n * Return the size of a vertex (at least 3 for the position)\r\n */\r\n public get numProp() {\r\n return this._numProp;\r\n }\r\n\r\n private constructor(manifold: any, numProp: number, vertexStructure: IManifoldVertexComponent[]) {\r\n this._manifold = manifold;\r\n this._numProp = numProp;\r\n this._vertexStructure = vertexStructure;\r\n }\r\n\r\n private _process(operation: \"difference\" | \"intersection\" | \"union\", csg: CSG2) {\r\n if (this.numProp !== csg.numProp) {\r\n throw new Error(\"CSG must be used with geometries having the same number of properties\");\r\n }\r\n return new CSG2(Manifold[operation](this._manifold, csg._manifold), this.numProp, this._vertexStructure);\r\n }\r\n\r\n /**\r\n * Run a difference operation between two CSG\r\n * @param csg defines the CSG to use to create the difference\r\n * @returns a new csg\r\n */\r\n public subtract(csg: CSG2) {\r\n return this._process(\"difference\", csg);\r\n }\r\n\r\n /**\r\n * Run an intersection operation between two CSG\r\n * @param csg defines the CSG to use to create the intersection\r\n * @returns a new csg\r\n */\r\n public intersect(csg: CSG2) {\r\n return this._process(\"intersection\", csg);\r\n }\r\n\r\n /**\r\n * Run an union operation between two CSG\r\n * @param csg defines the CSG to use to create the union\r\n * @returns a new csg\r\n */\r\n public add(csg: CSG2) {\r\n return this._process(\"union\", csg);\r\n }\r\n\r\n /**\r\n * Print debug information about the CSG\r\n */\r\n public printDebug() {\r\n Logger.Log(\"Genus:\" + this._manifold.genus());\r\n const properties = this._manifold.getProperties();\r\n Logger.Log(\"Volume:\" + properties.volume);\r\n Logger.Log(\"surface area:\" + properties.surfaceArea);\r\n }\r\n\r\n /**\r\n * Generate a vertex data from the CSG\r\n * @param options defines the options to use to rebuild the vertex data\r\n * @returns a new vertex data\r\n */\r\n public toVertexData(options?: Partial<IVertexDataRebuildOptions>): VertexData {\r\n const localOptions = {\r\n rebuildNormals: false,\r\n ...options,\r\n };\r\n const vertexData = new VertexData();\r\n const normalComponent = this._vertexStructure.find((c) => c.kind === VertexBuffer.NormalKind);\r\n const manifoldMesh: IManifoldMesh = this._manifold.getMesh(localOptions.rebuildNormals && normalComponent ? [3, 4, 5] : undefined);\r\n\r\n vertexData.indices = manifoldMesh.triVerts.length > 65535 ? new Uint32Array(manifoldMesh.triVerts) : new Uint16Array(manifoldMesh.triVerts);\r\n\r\n for (let i = 0; i < manifoldMesh.triVerts.length; i += 3) {\r\n vertexData.indices[i] = manifoldMesh.triVerts[i + 2];\r\n vertexData.indices[i + 1] = manifoldMesh.triVerts[i + 1];\r\n vertexData.indices[i + 2] = manifoldMesh.triVerts[i];\r\n }\r\n\r\n const vertexCount = manifoldMesh.vertProperties.length / manifoldMesh.numProp;\r\n\r\n // Attributes\r\n let offset = 0;\r\n for (let componentIndex = 0; componentIndex < this._vertexStructure.length; componentIndex++) {\r\n const component = this._vertexStructure[componentIndex];\r\n\r\n const data = new Float32Array(vertexCount * component.stride);\r\n for (let i = 0; i < vertexCount; i++) {\r\n for (let strideIndex = 0; strideIndex < component.stride; strideIndex++) {\r\n data[i * component.stride + strideIndex] = manifoldMesh.vertProperties[i * manifoldMesh.numProp + offset + strideIndex];\r\n }\r\n }\r\n vertexData.set(data, component.kind);\r\n offset += component.stride;\r\n }\r\n\r\n // Rebuild mesh from vertex data\r\n return vertexData;\r\n }\r\n\r\n /**\r\n * Generate a mesh from the CSG\r\n * @param name defines the name of the mesh\r\n * @param scene defines the scene to use to create the mesh\r\n * @param options defines the options to use to rebuild the mesh\r\n * @returns a new Mesh\r\n */\r\n public toMesh(name: string, scene?: Scene, options?: Partial<IMeshRebuildOptions>): Mesh {\r\n const localOptions = {\r\n rebuildNormals: false,\r\n centerMesh: true,\r\n ...options,\r\n };\r\n const vertexData = this.toVertexData({ rebuildNormals: localOptions.rebuildNormals });\r\n const normalComponent = this._vertexStructure.find((c) => c.kind === VertexBuffer.NormalKind);\r\n const manifoldMesh: IManifoldMesh = this._manifold.getMesh(localOptions.rebuildNormals && normalComponent ? [3, 4, 5] : undefined);\r\n const vertexCount = manifoldMesh.vertProperties.length / manifoldMesh.numProp;\r\n\r\n // Rebuild mesh from vertex data\r\n const output = new Mesh(name, scene);\r\n vertexData.applyToMesh(output);\r\n\r\n // Center mesh\r\n if (localOptions.centerMesh) {\r\n const extents = output.getBoundingInfo().boundingSphere.center;\r\n output.position.set(-extents.x, -extents.y, -extents.z);\r\n output.bakeCurrentTransformIntoVertices();\r\n }\r\n\r\n // Submeshes\r\n let id = manifoldMesh.runOriginalID[0];\r\n let start = manifoldMesh.runIndex[0];\r\n let materialIndex = 0;\r\n const materials: Material[] = [];\r\n scene = output.getScene();\r\n for (let run = 0; run < manifoldMesh.numRun; ++run) {\r\n const nextID = manifoldMesh.runOriginalID[run + 1];\r\n if (nextID !== id) {\r\n const end = manifoldMesh.runIndex[run + 1];\r\n new SubMesh(materialIndex, 0, vertexCount, start, end - start, output);\r\n materials.push(scene.getMaterialByUniqueID(id - FirstID) || scene.defaultMaterial);\r\n id = nextID;\r\n start = end;\r\n materialIndex++;\r\n }\r\n }\r\n\r\n if (localOptions.materialToUse) {\r\n output.material = localOptions.materialToUse;\r\n } else {\r\n if (materials.length > 1) {\r\n const multiMaterial = new MultiMaterial(name, scene);\r\n multiMaterial.subMaterials = materials;\r\n output.material = multiMaterial;\r\n } else {\r\n if (output.subMeshes.length > 1) {\r\n // Remove the submeshes as they are not needed\r\n output._createGlobalSubMesh(true);\r\n }\r\n output.material = materials[0];\r\n }\r\n }\r\n\r\n return output;\r\n }\r\n\r\n /**\r\n * Dispose the CSG resources\r\n */\r\n public dispose() {\r\n if (this._manifold) {\r\n this._manifold.delete();\r\n this._manifold = null;\r\n }\r\n }\r\n\r\n private static _ProcessData(\r\n vertexCount: number,\r\n triVerts: Uint32Array,\r\n structure: IManifoldVertexComponent[],\r\n numProp: number,\r\n runIndex?: Uint32Array,\r\n runOriginalID?: Uint32Array\r\n ) {\r\n const vertProperties = new Float32Array(vertexCount * structure.reduce((acc, cur) => acc + cur.stride, 0));\r\n\r\n for (let i = 0; i < vertexCount; i++) {\r\n let offset = 0;\r\n for (let idx = 0; idx < structure.length; idx++) {\r\n const component = structure[idx];\r\n\r\n for (let strideIndex = 0; strideIndex < component.stride; strideIndex++) {\r\n vertProperties[i * numProp + offset + strideIndex] = component.data![i * component.stride + strideIndex];\r\n }\r\n offset += component.stride;\r\n }\r\n }\r\n\r\n const manifoldMesh = new ManifoldMesh({ numProp: numProp, vertProperties, triVerts, runIndex, runOriginalID });\r\n manifoldMesh.merge();\r\n\r\n let returnValue: CSG2;\r\n try {\r\n returnValue = new CSG2(new Manifold(manifoldMesh), numProp, structure);\r\n } catch (e) {\r\n throw new Error(\"Error while creating the CSG: \" + e.message);\r\n }\r\n\r\n return returnValue;\r\n }\r\n\r\n private static _Construct(data: IVertexDataLike, worldMatrix: Nullable<Matrix>, runIndex?: Uint32Array, runOriginalID?: Uint32Array) {\r\n // Create the MeshGL for I/O with Manifold library.\r\n const triVerts = new Uint32Array(data.indices!.length);\r\n\r\n // Revert order\r\n for (let i = 0; i < data.indices!.length; i += 3) {\r\n triVerts[i] = data.indices![i + 2];\r\n triVerts[i + 1] = data.indices![i + 1];\r\n triVerts[i + 2] = data.indices![i];\r\n }\r\n\r\n const tempVector3 = new Vector3();\r\n let numProp = 3;\r\n const structure: IManifoldVertexComponent[] = [{ stride: 3, kind: VertexBuffer.PositionKind }];\r\n\r\n if (!worldMatrix) {\r\n structure[0].data = data.positions!;\r\n } else {\r\n const positions = new Float32Array(data.positions!.length);\r\n for (let i = 0; i < data.positions!.length; i += 3) {\r\n Vector3.TransformCoordinatesFromFloatsToRef(data.positions![i], data.positions![i + 1], data.positions![i + 2], worldMatrix, tempVector3);\r\n tempVector3.toArray(positions, i);\r\n }\r\n structure[0].data = positions;\r\n }\r\n\r\n // Normals\r\n const sourceNormals = data.normals!;\r\n if (sourceNormals) {\r\n numProp += 3;\r\n structure.push({ stride: 3, kind: VertexBuffer.NormalKind });\r\n if (!worldMatrix) {\r\n structure[1].data = sourceNormals;\r\n } else {\r\n const normals = new Float32Array(sourceNormals.length);\r\n for (let i = 0; i < sourceNormals.length; i += 3) {\r\n Vector3.TransformNormalFromFloatsToRef(sourceNormals[i], sourceNormals[i + 1], sourceNormals[i + 2], worldMatrix, tempVector3);\r\n tempVector3.toArray(normals, i);\r\n }\r\n structure[1].data = normals;\r\n }\r\n }\r\n\r\n // UVs\r\n for (const kind of [VertexBuffer.UVKind, VertexBuffer.UV2Kind, VertexBuffer.UV3Kind, VertexBuffer.UV4Kind, VertexBuffer.UV5Kind, VertexBuffer.UV6Kind]) {\r\n const sourceUV = (data as any)[kind === VertexBuffer.UVKind ? \"uvs\" : kind];\r\n if (sourceUV) {\r\n numProp += 2;\r\n structure.push({ stride: 2, kind: kind, data: sourceUV });\r\n }\r\n }\r\n\r\n // Colors\r\n const sourceColors = data.colors;\r\n if (sourceColors) {\r\n numProp += 4;\r\n structure.push({ stride: 4, kind: VertexBuffer.ColorKind, data: sourceColors });\r\n }\r\n\r\n return this._ProcessData(data.positions!.length / 3, triVerts, structure, numProp, runIndex, runOriginalID);\r\n }\r\n\r\n /**\r\n * Create a new Constructive Solid Geometry from a vertexData\r\n * @param vertexData defines the vertexData to use to create the CSG\r\n * @returns a new CSG2 class\r\n */\r\n public static FromVertexData(vertexData: VertexData): CSG2 {\r\n const sourceVertices = vertexData.positions;\r\n const sourceIndices = vertexData.indices;\r\n\r\n if (!sourceVertices || !sourceIndices) {\r\n throw new Error(\"The vertexData must at least have positions and indices\");\r\n }\r\n\r\n return this._Construct(vertexData, null);\r\n }\r\n\r\n /**\r\n * Create a new Constructive Solid Geometry from a mesh\r\n * @param mesh defines the mesh to use to create the CSG\r\n * @param ignoreWorldMatrix defines if the world matrix should be ignored\r\n * @returns a new CSG2 class\r\n */\r\n public static FromMesh(mesh: Mesh, ignoreWorldMatrix = false): CSG2 {\r\n const sourceVertices = mesh.getVerticesData(VertexBuffer.PositionKind);\r\n const sourceIndices = mesh.getIndices();\r\n const worldMatrix = mesh.computeWorldMatrix(true);\r\n\r\n if (!sourceVertices || !sourceIndices) {\r\n throw new Error(\"The mesh must at least have positions and indices\");\r\n }\r\n\r\n // Create a triangle run for each submesh (material)\r\n const starts = [...Array(mesh.subMeshes.length)].map((_, idx) => mesh.subMeshes[idx].indexStart);\r\n\r\n // Map the materials to ID.\r\n const sourceMaterial = mesh.material || mesh.getScene().defaultMaterial;\r\n const isMultiMaterial = sourceMaterial.getClassName() === \"MultiMaterial\";\r\n const originalIDs = [...Array(mesh.subMeshes.length)].map((_, idx) => {\r\n if (isMultiMaterial) {\r\n return FirstID + (sourceMaterial as MultiMaterial).subMaterials[mesh.subMeshes[idx].materialIndex]!.uniqueId;\r\n }\r\n\r\n return FirstID + sourceMaterial.uniqueId;\r\n });\r\n\r\n // List the runs in sequence.\r\n const indices = Array.from(starts.keys());\r\n indices.sort((a, b) => starts[a] - starts[b]);\r\n const runIndex = new Uint32Array(indices.map((i) => starts[i]));\r\n const runOriginalID = new Uint32Array(indices.map((i) => originalIDs[i]));\r\n\r\n // Process\r\n const data = {\r\n positions: sourceVertices,\r\n indices: sourceIndices,\r\n normals: mesh.getVerticesData(VertexBuffer.NormalKind),\r\n colors: mesh.getVerticesData(VertexBuffer.ColorKind),\r\n uvs: mesh.getVerticesData(VertexBuffer.UVKind),\r\n uvs2: mesh.getVerticesData(VertexBuffer.UV2Kind),\r\n uvs3: mesh.getVerticesData(VertexBuffer.UV3Kind),\r\n uvs4: mesh.getVerticesData(VertexBuffer.UV4Kind),\r\n uvs5: mesh.getVerticesData(VertexBuffer.UV5Kind),\r\n uvs6: mesh.getVerticesData(VertexBuffer.UV6Kind),\r\n };\r\n return this._Construct(data, ignoreWorldMatrix ? null : worldMatrix, runIndex, runOriginalID);\r\n }\r\n}\r\n\r\n/**\r\n * Checks if the Manifold library is ready\r\n * @returns true if the Manifold library is ready\r\n */\r\nexport function IsCSG2Ready() {\r\n return Manifold !== undefined;\r\n}\r\n\r\n/**\r\n * Initialize the Manifold library\r\n * @param options defines the options to use to initialize the library\r\n */\r\nexport async function InitializeCSG2Async(options?: Partial<ICSG2Options>) {\r\n const localOptions = {\r\n manifoldUrl: \"https://unpkg.com/manifold-3d@3.0.1\",\r\n ...options,\r\n };\r\n\r\n if (Manifold) {\r\n return; // Already initialized\r\n }\r\n\r\n if (ManifoldPromise) {\r\n await ManifoldPromise;\r\n return;\r\n }\r\n\r\n if (localOptions.manifoldInstance) {\r\n Manifold = localOptions.manifoldInstance;\r\n ManifoldMesh = localOptions.manifoldMeshInstance;\r\n } else {\r\n ManifoldPromise = _LoadScriptModuleAsync(\r\n `\r\n import Module from '${localOptions.manifoldUrl}/manifold.js';\r\n const wasm = await Module();\r\n wasm.setup();\r\n const {Manifold, Mesh} = wasm;\r\n const returnedValue = {Manifold, Mesh};\r\n `\r\n );\r\n\r\n const result = await ManifoldPromise;\r\n Manifold = result.Manifold;\r\n ManifoldMesh = result.Mesh;\r\n }\r\n\r\n // Reserve IDs for materials (we consider that there will be no more than 65536 materials)\r\n FirstID = Manifold.reserveIDs(65536);\r\n}\r\n"]}
1
+ {"version":3,"file":"csg2.js","sourceRoot":"","sources":["../../../../dev/core/src/Meshes/csg2.ts"],"names":[],"mappings":"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","sourcesContent":["import { Mesh } from \"./mesh\";\r\nimport type { IDisposable, Scene } from \"core/scene\";\r\nimport type { IVertexDataLike } from \"./mesh.vertexData\";\r\nimport { VertexData } from \"./mesh.vertexData\";\r\nimport { VertexBuffer } from \"../Buffers/buffer\";\r\nimport { Logger } from \"core/Misc/logger\";\r\nimport { MultiMaterial } from \"core/Materials/multiMaterial\";\r\nimport { SubMesh } from \"./subMesh\";\r\nimport type { Material } from \"core/Materials/material\";\r\nimport { _LoadScriptModuleAsync } from \"core/Misc/tools.internals\";\r\nimport type { FloatArray, Nullable } from \"core/types\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\n\r\n/**\r\n * Main manifold library\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nlet Manifold: any;\r\n\r\n/**\r\n * Promise to wait for the manifold library to be ready\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nlet ManifoldPromise: Promise<{ Manifold: any; Mesh: any }>;\r\n\r\n/**\r\n * Manifold mesh\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nlet ManifoldMesh: any;\r\n\r\n/**\r\n * First ID to use for materials indexing\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nlet FirstID: number;\r\n\r\n/**\r\n * Interface to customize the Manifold library import\r\n */\r\nexport interface ICSG2Options {\r\n /**\r\n * Custom manifold URL\r\n */\r\n manifoldUrl?: string;\r\n /**\r\n * Custom manifold instance\r\n */\r\n manifoldInstance: any;\r\n /**\r\n * Custom manifold mesh instance\r\n */\r\n manifoldMeshInstance: any;\r\n}\r\n\r\n/**\r\n * Interface to customize the mesh rebuild options\r\n */\r\nexport interface IMeshRebuildOptions {\r\n /**\r\n * Rebuild normals\r\n */\r\n rebuildNormals?: boolean;\r\n /**\r\n * True to center the mesh on 0,0,0\r\n */\r\n centerMesh?: boolean;\r\n /**\r\n * Defines a material to use for that mesh. When not defined the system will either reuse the one from the source or create a multimaterial if several materials were involved\r\n */\r\n materialToUse?: Material;\r\n}\r\n\r\n/**\r\n * Interface to customize the vertex data rebuild options\r\n */\r\nexport interface IVertexDataRebuildOptions {\r\n /**\r\n * Rebuild normals\r\n */\r\n rebuildNormals?: boolean;\r\n}\r\n\r\ninterface IManifoldMesh {\r\n numProp: number;\r\n vertProperties: Float32Array;\r\n triVerts: Uint32Array;\r\n runIndex: Uint32Array;\r\n runOriginalID: Uint32Array;\r\n numRun: number;\r\n}\r\n\r\ninterface IManifoldVertexComponent {\r\n stride: number;\r\n kind: string;\r\n data?: FloatArray;\r\n}\r\n\r\n/**\r\n * Wrapper around the Manifold library\r\n * https://manifoldcad.org/\r\n * Use this class to perform fast boolean operations on meshes\r\n * @see [basic operations](https://playground.babylonjs.com/#IW43EB#15)\r\n * @see [skull vs box](https://playground.babylonjs.com/#JUKXQD#6218)\r\n * @see [skull vs vertex data](https://playground.babylonjs.com/#JUKXQD#6219)\r\n */\r\nexport class CSG2 implements IDisposable {\r\n private _manifold: any;\r\n private _numProp: number;\r\n private _vertexStructure: IManifoldVertexComponent[];\r\n\r\n /**\r\n * Return the size of a vertex (at least 3 for the position)\r\n */\r\n public get numProp() {\r\n return this._numProp;\r\n }\r\n\r\n private constructor(manifold: any, numProp: number, vertexStructure: IManifoldVertexComponent[]) {\r\n this._manifold = manifold;\r\n this._numProp = numProp;\r\n this._vertexStructure = vertexStructure;\r\n }\r\n\r\n private _process(operation: \"difference\" | \"intersection\" | \"union\", csg: CSG2) {\r\n if (this.numProp !== csg.numProp) {\r\n throw new Error(\"CSG must be used with geometries having the same number of properties\");\r\n }\r\n return new CSG2(Manifold[operation](this._manifold, csg._manifold), this.numProp, this._vertexStructure);\r\n }\r\n\r\n /**\r\n * Run a difference operation between two CSG\r\n * @param csg defines the CSG to use to create the difference\r\n * @returns a new csg\r\n */\r\n public subtract(csg: CSG2) {\r\n return this._process(\"difference\", csg);\r\n }\r\n\r\n /**\r\n * Run an intersection operation between two CSG\r\n * @param csg defines the CSG to use to create the intersection\r\n * @returns a new csg\r\n */\r\n public intersect(csg: CSG2) {\r\n return this._process(\"intersection\", csg);\r\n }\r\n\r\n /**\r\n * Run an union operation between two CSG\r\n * @param csg defines the CSG to use to create the union\r\n * @returns a new csg\r\n */\r\n public add(csg: CSG2) {\r\n return this._process(\"union\", csg);\r\n }\r\n\r\n /**\r\n * Print debug information about the CSG\r\n */\r\n public printDebug() {\r\n Logger.Log(\"Genus:\" + this._manifold.genus());\r\n const properties = this._manifold.getProperties();\r\n Logger.Log(\"Volume:\" + properties.volume);\r\n Logger.Log(\"surface area:\" + properties.surfaceArea);\r\n }\r\n\r\n /**\r\n * Generate a vertex data from the CSG\r\n * @param options defines the options to use to rebuild the vertex data\r\n * @returns a new vertex data\r\n */\r\n public toVertexData(options?: Partial<IVertexDataRebuildOptions>): VertexData {\r\n const localOptions = {\r\n rebuildNormals: false,\r\n ...options,\r\n };\r\n const vertexData = new VertexData();\r\n const normalComponent = this._vertexStructure.find((c) => c.kind === VertexBuffer.NormalKind);\r\n const manifoldMesh: IManifoldMesh = this._manifold.getMesh(localOptions.rebuildNormals && normalComponent ? [3, 4, 5] : undefined);\r\n\r\n vertexData.indices = manifoldMesh.triVerts.length > 65535 ? new Uint32Array(manifoldMesh.triVerts) : new Uint16Array(manifoldMesh.triVerts);\r\n\r\n for (let i = 0; i < manifoldMesh.triVerts.length; i += 3) {\r\n vertexData.indices[i] = manifoldMesh.triVerts[i + 2];\r\n vertexData.indices[i + 1] = manifoldMesh.triVerts[i + 1];\r\n vertexData.indices[i + 2] = manifoldMesh.triVerts[i];\r\n }\r\n\r\n const vertexCount = manifoldMesh.vertProperties.length / manifoldMesh.numProp;\r\n\r\n // Attributes\r\n let offset = 0;\r\n for (let componentIndex = 0; componentIndex < this._vertexStructure.length; componentIndex++) {\r\n const component = this._vertexStructure[componentIndex];\r\n\r\n const data = new Float32Array(vertexCount * component.stride);\r\n for (let i = 0; i < vertexCount; i++) {\r\n for (let strideIndex = 0; strideIndex < component.stride; strideIndex++) {\r\n data[i * component.stride + strideIndex] = manifoldMesh.vertProperties[i * manifoldMesh.numProp + offset + strideIndex];\r\n }\r\n }\r\n vertexData.set(data, component.kind);\r\n offset += component.stride;\r\n }\r\n\r\n // Rebuild mesh from vertex data\r\n return vertexData;\r\n }\r\n\r\n /**\r\n * Generate a mesh from the CSG\r\n * @param name defines the name of the mesh\r\n * @param scene defines the scene to use to create the mesh\r\n * @param options defines the options to use to rebuild the mesh\r\n * @returns a new Mesh\r\n */\r\n public toMesh(name: string, scene?: Scene, options?: Partial<IMeshRebuildOptions>): Mesh {\r\n const localOptions = {\r\n rebuildNormals: false,\r\n centerMesh: true,\r\n ...options,\r\n };\r\n const vertexData = this.toVertexData({ rebuildNormals: localOptions.rebuildNormals });\r\n const normalComponent = this._vertexStructure.find((c) => c.kind === VertexBuffer.NormalKind);\r\n const manifoldMesh: IManifoldMesh = this._manifold.getMesh(localOptions.rebuildNormals && normalComponent ? [3, 4, 5] : undefined);\r\n const vertexCount = manifoldMesh.vertProperties.length / manifoldMesh.numProp;\r\n\r\n // Rebuild mesh from vertex data\r\n const output = new Mesh(name, scene);\r\n vertexData.applyToMesh(output);\r\n\r\n // Center mesh\r\n if (localOptions.centerMesh) {\r\n const extents = output.getBoundingInfo().boundingSphere.center;\r\n output.position.set(-extents.x, -extents.y, -extents.z);\r\n output.bakeCurrentTransformIntoVertices();\r\n }\r\n\r\n // Submeshes\r\n let id = manifoldMesh.runOriginalID[0];\r\n let start = manifoldMesh.runIndex[0];\r\n let materialIndex = 0;\r\n const materials: Material[] = [];\r\n scene = output.getScene();\r\n for (let run = 0; run < manifoldMesh.numRun; ++run) {\r\n const nextID = manifoldMesh.runOriginalID[run + 1];\r\n if (nextID !== id) {\r\n const end = manifoldMesh.runIndex[run + 1];\r\n new SubMesh(materialIndex, 0, vertexCount, start, end - start, output);\r\n materials.push(scene.getMaterialByUniqueID(id - FirstID) || scene.defaultMaterial);\r\n id = nextID;\r\n start = end;\r\n materialIndex++;\r\n }\r\n }\r\n\r\n if (localOptions.materialToUse) {\r\n output.material = localOptions.materialToUse;\r\n } else {\r\n if (materials.length > 1) {\r\n const multiMaterial = new MultiMaterial(name, scene);\r\n multiMaterial.subMaterials = materials;\r\n output.material = multiMaterial;\r\n } else {\r\n if (output.subMeshes.length > 1) {\r\n // Remove the submeshes as they are not needed\r\n output._createGlobalSubMesh(true);\r\n }\r\n output.material = materials[0];\r\n }\r\n }\r\n\r\n return output;\r\n }\r\n\r\n /**\r\n * Dispose the CSG resources\r\n */\r\n public dispose() {\r\n if (this._manifold) {\r\n this._manifold.delete();\r\n this._manifold = null;\r\n }\r\n }\r\n\r\n private static _ProcessData(\r\n vertexCount: number,\r\n triVerts: Uint32Array,\r\n structure: IManifoldVertexComponent[],\r\n numProp: number,\r\n runIndex?: Uint32Array,\r\n runOriginalID?: Uint32Array\r\n ) {\r\n const vertProperties = new Float32Array(vertexCount * structure.reduce((acc, cur) => acc + cur.stride, 0));\r\n\r\n for (let i = 0; i < vertexCount; i++) {\r\n let offset = 0;\r\n for (let idx = 0; idx < structure.length; idx++) {\r\n const component = structure[idx];\r\n\r\n for (let strideIndex = 0; strideIndex < component.stride; strideIndex++) {\r\n vertProperties[i * numProp + offset + strideIndex] = component.data![i * component.stride + strideIndex];\r\n }\r\n offset += component.stride;\r\n }\r\n }\r\n\r\n const manifoldMesh = new ManifoldMesh({ numProp: numProp, vertProperties, triVerts, runIndex, runOriginalID });\r\n manifoldMesh.merge();\r\n\r\n let returnValue: CSG2;\r\n try {\r\n returnValue = new CSG2(new Manifold(manifoldMesh), numProp, structure);\r\n } catch (e) {\r\n throw new Error(\"Error while creating the CSG: \" + e.message);\r\n }\r\n\r\n return returnValue;\r\n }\r\n\r\n private static _Construct(data: IVertexDataLike, worldMatrix: Nullable<Matrix>, runIndex?: Uint32Array, runOriginalID?: Uint32Array) {\r\n // Create the MeshGL for I/O with Manifold library.\r\n const triVerts = new Uint32Array(data.indices!.length);\r\n\r\n // Revert order\r\n for (let i = 0; i < data.indices!.length; i += 3) {\r\n triVerts[i] = data.indices![i + 2];\r\n triVerts[i + 1] = data.indices![i + 1];\r\n triVerts[i + 2] = data.indices![i];\r\n }\r\n\r\n const tempVector3 = new Vector3();\r\n let numProp = 3;\r\n const structure: IManifoldVertexComponent[] = [{ stride: 3, kind: VertexBuffer.PositionKind }];\r\n\r\n if (!worldMatrix) {\r\n structure[0].data = data.positions!;\r\n } else {\r\n const positions = new Float32Array(data.positions!.length);\r\n for (let i = 0; i < data.positions!.length; i += 3) {\r\n Vector3.TransformCoordinatesFromFloatsToRef(data.positions![i], data.positions![i + 1], data.positions![i + 2], worldMatrix, tempVector3);\r\n tempVector3.toArray(positions, i);\r\n }\r\n structure[0].data = positions;\r\n }\r\n\r\n // Normals\r\n const sourceNormals = data.normals!;\r\n if (sourceNormals) {\r\n numProp += 3;\r\n structure.push({ stride: 3, kind: VertexBuffer.NormalKind });\r\n if (!worldMatrix) {\r\n structure[1].data = sourceNormals;\r\n } else {\r\n const normals = new Float32Array(sourceNormals.length);\r\n for (let i = 0; i < sourceNormals.length; i += 3) {\r\n Vector3.TransformNormalFromFloatsToRef(sourceNormals[i], sourceNormals[i + 1], sourceNormals[i + 2], worldMatrix, tempVector3);\r\n tempVector3.toArray(normals, i);\r\n }\r\n structure[1].data = normals;\r\n }\r\n }\r\n\r\n // UVs\r\n for (const kind of [VertexBuffer.UVKind, VertexBuffer.UV2Kind, VertexBuffer.UV3Kind, VertexBuffer.UV4Kind, VertexBuffer.UV5Kind, VertexBuffer.UV6Kind]) {\r\n const sourceUV = (data as any)[kind === VertexBuffer.UVKind ? \"uvs\" : kind];\r\n if (sourceUV) {\r\n numProp += 2;\r\n structure.push({ stride: 2, kind: kind, data: sourceUV });\r\n }\r\n }\r\n\r\n // Colors\r\n const sourceColors = data.colors;\r\n if (sourceColors) {\r\n numProp += 4;\r\n structure.push({ stride: 4, kind: VertexBuffer.ColorKind, data: sourceColors });\r\n }\r\n\r\n return this._ProcessData(data.positions!.length / 3, triVerts, structure, numProp, runIndex, runOriginalID);\r\n }\r\n\r\n /**\r\n * Create a new Constructive Solid Geometry from a vertexData\r\n * @param vertexData defines the vertexData to use to create the CSG\r\n * @returns a new CSG2 class\r\n */\r\n public static FromVertexData(vertexData: VertexData): CSG2 {\r\n const sourceVertices = vertexData.positions;\r\n const sourceIndices = vertexData.indices;\r\n\r\n if (!sourceVertices || !sourceIndices) {\r\n throw new Error(\"The vertexData must at least have positions and indices\");\r\n }\r\n\r\n return this._Construct(vertexData, null);\r\n }\r\n\r\n /**\r\n * Create a new Constructive Solid Geometry from a mesh\r\n * @param mesh defines the mesh to use to create the CSG\r\n * @param ignoreWorldMatrix defines if the world matrix should be ignored\r\n * @returns a new CSG2 class\r\n */\r\n public static FromMesh(mesh: Mesh, ignoreWorldMatrix = false): CSG2 {\r\n const sourceVertices = mesh.getVerticesData(VertexBuffer.PositionKind);\r\n const sourceIndices = mesh.getIndices();\r\n const worldMatrix = mesh.computeWorldMatrix(true);\r\n\r\n if (!sourceVertices || !sourceIndices) {\r\n throw new Error(\"The mesh must at least have positions and indices\");\r\n }\r\n\r\n // Create a triangle run for each submesh (material)\r\n const starts = [...Array(mesh.subMeshes.length)].map((_, idx) => mesh.subMeshes[idx].indexStart);\r\n\r\n // Map the materials to ID.\r\n const sourceMaterial = mesh.material || mesh.getScene().defaultMaterial;\r\n const isMultiMaterial = sourceMaterial.getClassName() === \"MultiMaterial\";\r\n const originalIDs = [...Array(mesh.subMeshes.length)].map((_, idx) => {\r\n if (isMultiMaterial) {\r\n return FirstID + (sourceMaterial as MultiMaterial).subMaterials[mesh.subMeshes[idx].materialIndex]!.uniqueId;\r\n }\r\n\r\n return FirstID + sourceMaterial.uniqueId;\r\n });\r\n\r\n // List the runs in sequence.\r\n const indices = Array.from(starts.keys());\r\n indices.sort((a, b) => starts[a] - starts[b]);\r\n const runIndex = new Uint32Array(indices.map((i) => starts[i]));\r\n const runOriginalID = new Uint32Array(indices.map((i) => originalIDs[i]));\r\n\r\n // Process\r\n const data = {\r\n positions: sourceVertices,\r\n indices: sourceIndices,\r\n normals: mesh.getVerticesData(VertexBuffer.NormalKind),\r\n colors: mesh.getVerticesData(VertexBuffer.ColorKind),\r\n uvs: mesh.getVerticesData(VertexBuffer.UVKind),\r\n uvs2: mesh.getVerticesData(VertexBuffer.UV2Kind),\r\n uvs3: mesh.getVerticesData(VertexBuffer.UV3Kind),\r\n uvs4: mesh.getVerticesData(VertexBuffer.UV4Kind),\r\n uvs5: mesh.getVerticesData(VertexBuffer.UV5Kind),\r\n uvs6: mesh.getVerticesData(VertexBuffer.UV6Kind),\r\n };\r\n return this._Construct(data, ignoreWorldMatrix ? null : worldMatrix, runIndex, runOriginalID);\r\n }\r\n}\r\n\r\n/**\r\n * Checks if the Manifold library is ready\r\n * @returns true if the Manifold library is ready\r\n */\r\nexport function IsCSG2Ready() {\r\n return Manifold !== undefined;\r\n}\r\n\r\n/**\r\n * Initialize the Manifold library\r\n * @param options defines the options to use to initialize the library\r\n */\r\nexport async function InitializeCSG2Async(options?: Partial<ICSG2Options>) {\r\n const localOptions = {\r\n manifoldUrl: \"https://unpkg.com/manifold-3d@3.0.1\",\r\n ...options,\r\n };\r\n\r\n if (Manifold) {\r\n return; // Already initialized\r\n }\r\n\r\n if (ManifoldPromise) {\r\n await ManifoldPromise;\r\n return;\r\n }\r\n\r\n if (localOptions.manifoldInstance) {\r\n Manifold = localOptions.manifoldInstance;\r\n ManifoldMesh = localOptions.manifoldMeshInstance;\r\n } else {\r\n ManifoldPromise = _LoadScriptModuleAsync(\r\n `\r\n import Module from '${localOptions.manifoldUrl}/manifold.js';\r\n const wasm = await Module();\r\n wasm.setup();\r\n const {Manifold, Mesh} = wasm;\r\n const returnedValue = {Manifold, Mesh};\r\n `\r\n );\r\n\r\n const result = await ManifoldPromise;\r\n Manifold = result.Manifold;\r\n ManifoldMesh = result.Mesh;\r\n }\r\n\r\n // Reserve IDs for materials (we consider that there will be no more than 65536 materials)\r\n FirstID = Manifold.reserveIDs(65536);\r\n}\r\n"]}