@combeenation/3d-viewer 5.0.1 → 5.0.3-beta2
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/README.md +111 -114
- package/dist/lib-cjs/api/classes/animationInterface.d.ts +8 -8
- package/dist/lib-cjs/api/classes/animationInterface.js +1 -1
- package/dist/lib-cjs/api/classes/dottedPath.d.ts +79 -79
- package/dist/lib-cjs/api/classes/dottedPath.js +187 -187
- package/dist/lib-cjs/api/classes/element.d.ts +139 -139
- package/dist/lib-cjs/api/classes/element.js +794 -794
- package/dist/lib-cjs/api/classes/element.js.map +1 -1
- package/dist/lib-cjs/api/classes/elementParameterizable.d.ts +14 -0
- package/dist/lib-cjs/api/classes/elementParameterizable.js +135 -0
- package/dist/lib-cjs/api/classes/elementParameterizable.js.map +1 -0
- package/dist/lib-cjs/api/classes/event.d.ts +326 -326
- package/dist/lib-cjs/api/classes/event.js +371 -371
- package/dist/lib-cjs/api/classes/eventBroadcaster.d.ts +26 -26
- package/dist/lib-cjs/api/classes/eventBroadcaster.js +53 -53
- package/dist/lib-cjs/api/classes/parameter.d.ts +316 -259
- package/dist/lib-cjs/api/classes/parameter.js +451 -388
- package/dist/lib-cjs/api/classes/parameter.js.map +1 -1
- package/dist/lib-cjs/api/classes/parameterObservable.d.ts +36 -36
- package/dist/lib-cjs/api/classes/parameterObservable.js +101 -101
- package/dist/lib-cjs/api/classes/parameterizable.d.ts +15 -15
- package/dist/lib-cjs/api/classes/parameterizable.js +149 -149
- package/dist/lib-cjs/api/classes/placementAnimation.d.ts +44 -44
- package/dist/lib-cjs/api/classes/placementAnimation.js +163 -163
- package/dist/lib-cjs/api/classes/variant.d.ts +234 -234
- package/dist/lib-cjs/api/classes/variant.js +1154 -1154
- package/dist/lib-cjs/api/classes/variantInstance.d.ts +45 -45
- package/dist/lib-cjs/api/classes/variantInstance.js +108 -108
- package/dist/lib-cjs/api/classes/variantParameterizable.d.ts +17 -17
- package/dist/lib-cjs/api/classes/variantParameterizable.js +99 -99
- package/dist/lib-cjs/api/classes/viewer.d.ts +177 -175
- package/dist/lib-cjs/api/classes/viewer.js +717 -701
- package/dist/lib-cjs/api/classes/viewer.js.map +1 -1
- package/dist/lib-cjs/api/classes/viewerLight.d.ts +66 -66
- package/dist/lib-cjs/api/classes/viewerLight.js +392 -392
- package/dist/lib-cjs/api/internal/debugViewer.d.ts +13 -13
- package/dist/lib-cjs/api/internal/debugViewer.js +86 -86
- package/dist/lib-cjs/api/internal/lensRendering.d.ts +8 -8
- package/dist/lib-cjs/api/internal/lensRendering.js +11 -11
- package/dist/lib-cjs/api/internal/sceneSetup.d.ts +13 -10
- package/dist/lib-cjs/api/internal/sceneSetup.js +238 -234
- package/dist/lib-cjs/api/internal/sceneSetup.js.map +1 -1
- package/dist/lib-cjs/api/manager/animationManager.d.ts +29 -29
- package/dist/lib-cjs/api/manager/animationManager.js +130 -130
- package/dist/lib-cjs/api/manager/gltfExportManager.d.ts +65 -65
- package/dist/lib-cjs/api/manager/gltfExportManager.js +223 -222
- package/dist/lib-cjs/api/manager/gltfExportManager.js.map +1 -1
- package/dist/lib-cjs/api/manager/sceneManager.d.ts +31 -32
- package/dist/lib-cjs/api/manager/sceneManager.js +153 -132
- package/dist/lib-cjs/api/manager/sceneManager.js.map +1 -1
- package/dist/lib-cjs/api/manager/variantInstanceManager.d.ts +92 -92
- package/dist/lib-cjs/api/manager/variantInstanceManager.js +335 -335
- package/dist/lib-cjs/api/store/specStorage.d.ts +24 -24
- package/dist/lib-cjs/api/store/specStorage.js +51 -51
- package/dist/lib-cjs/api/util/babylonHelper.d.ts +174 -166
- package/dist/lib-cjs/api/util/babylonHelper.js +575 -497
- package/dist/lib-cjs/api/util/babylonHelper.js.map +1 -1
- package/dist/lib-cjs/api/util/globalTypes.d.ts +366 -356
- package/dist/lib-cjs/api/util/globalTypes.js +1 -1
- package/dist/lib-cjs/api/util/resourceHelper.d.ts +58 -53
- package/dist/lib-cjs/api/util/resourceHelper.js +257 -242
- package/dist/lib-cjs/api/util/resourceHelper.js.map +1 -1
- package/dist/lib-cjs/api/util/stringHelper.d.ts +9 -9
- package/dist/lib-cjs/api/util/stringHelper.js +25 -25
- package/dist/lib-cjs/api/util/structureHelper.d.ts +9 -9
- package/dist/lib-cjs/api/util/structureHelper.js +48 -44
- package/dist/lib-cjs/api/util/structureHelper.js.map +1 -1
- package/dist/lib-cjs/buildinfo.json +3 -3
- package/dist/lib-cjs/index.d.ts +49 -49
- package/dist/lib-cjs/index.js +89 -89
- package/dist/webpack-stats.json +0 -0
- package/package.json +87 -87
- package/src/api/classes/animationInterface.ts +10 -10
- package/src/api/classes/dottedPath.ts +181 -181
- package/src/api/classes/element.ts +690 -692
- package/src/api/classes/event.ts +367 -367
- package/src/api/classes/eventBroadcaster.ts +52 -52
- package/src/api/classes/parameter.ts +474 -405
- package/src/api/classes/parameterObservable.ts +100 -100
- package/src/api/classes/parameterizable.ts +87 -87
- package/src/api/classes/placementAnimation.ts +160 -160
- package/src/api/classes/variant.ts +845 -845
- package/src/api/classes/variantInstance.ts +97 -97
- package/src/api/classes/variantParameterizable.ts +85 -85
- package/src/api/classes/viewer.ts +650 -624
- package/src/api/classes/viewerLight.ts +334 -334
- package/src/api/internal/debugViewer.ts +90 -90
- package/src/api/internal/lensRendering.ts +10 -10
- package/src/api/internal/sceneSetup.ts +204 -201
- package/src/api/manager/animationManager.ts +142 -142
- package/src/api/manager/gltfExportManager.ts +191 -191
- package/src/api/manager/sceneManager.ts +128 -102
- package/src/api/manager/variantInstanceManager.ts +265 -265
- package/src/api/store/specStorage.ts +51 -51
- package/src/api/util/babylonHelper.ts +628 -538
- package/src/api/util/globalTypes.ts +413 -402
- package/src/api/util/resourceHelper.ts +189 -173
- package/src/api/util/stringHelper.ts +23 -23
- package/src/api/util/structureHelper.ts +49 -43
- package/src/buildinfo.json +3 -3
- package/src/commonjs.tsconfig.json +10 -10
- package/src/declaration.tsconfig.json +8 -8
- package/src/dev.ts +42 -42
- package/src/es6.tsconfig.json +10 -10
- package/src/index.ts +94 -94
- package/src/pagesconfig.json +77 -73
- package/src/tsconfig.json +32 -32
- package/src/tsconfig.types.json +9 -9
- package/src/types.d.ts +3 -3
|
@@ -1,498 +1,576 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getClientRectFromMesh = exports.removeFromShadowGenerator = exports.addToShadowGenerator = exports.setReceiveShadows = exports.removeFromHighlightLayer = exports.addToHighlightLayer = exports.setMaterialRoughness = exports.setMaterialMetallness = exports.setMaterialTexture = exports.setMaterialColor = exports.setSourceNodeMaterial = exports.setMaterial = exports.transformTransformNode = exports.disableNodeWithParents = exports.enableNodeWithParents = exports.deactivateTransformNode = exports.activateTransformNode = exports.assertTransformNode = exports.injectNodeMetadata = exports.cloneTransformNodeMaterial = exports.cloneNodeWithParents = exports.cloneTransformNode = exports.getDottedPathForNode = exports.mapToDottedNodes = exports.getRootNode = void 0;
|
|
4
|
-
var tslib_1 = require("tslib");
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
var
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
var
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
node.
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
if (
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
if (
|
|
295
|
-
var
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
};
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
}
|
|
332
|
-
if (deep) {
|
|
333
|
-
node.getChildTransformNodes(true).forEach(function (child) { return
|
|
334
|
-
}
|
|
335
|
-
};
|
|
336
|
-
exports.
|
|
337
|
-
/**
|
|
338
|
-
*
|
|
339
|
-
*
|
|
340
|
-
*
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
if (deep) {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
}
|
|
410
|
-
if (deep) {
|
|
411
|
-
node.getChildTransformNodes(true).forEach(function (child) { return
|
|
412
|
-
}
|
|
413
|
-
};
|
|
414
|
-
exports.
|
|
415
|
-
/**
|
|
416
|
-
* @param node
|
|
417
|
-
* @param
|
|
418
|
-
* @param deep
|
|
419
|
-
*/
|
|
420
|
-
var
|
|
421
|
-
if (deep === void 0) { deep = true; }
|
|
422
|
-
if (node instanceof abstractMesh_1.AbstractMesh) {
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
}
|
|
457
|
-
if (deep) {
|
|
458
|
-
node.getChildTransformNodes(true).forEach(function (child) { return
|
|
459
|
-
}
|
|
460
|
-
};
|
|
461
|
-
exports.
|
|
462
|
-
/**
|
|
463
|
-
*
|
|
464
|
-
* @param
|
|
465
|
-
* @param
|
|
466
|
-
* @param
|
|
467
|
-
*/
|
|
468
|
-
var
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.envHelperMetadataName = exports.backgroundDomeName = exports.changeEnvironment = exports.getClientRectFromMesh = exports.removeFromShadowGenerator = exports.addToShadowGenerator = exports.setReceiveShadows = exports.removeFromHighlightLayer = exports.addToHighlightLayer = exports.setMaterialRoughness = exports.setMaterialMetallness = exports.setMaterialTexture = exports.setMaterialColor = exports.setSourceNodeMaterial = exports.setMaterial = exports.transformTransformNode = exports.disableNodeWithParents = exports.enableNodeWithParents = exports.deactivateTransformNode = exports.activateTransformNode = exports.assertTransformNode = exports.injectNodeMetadata = exports.cloneTransformNodeMaterial = exports.cloneNodeWithParents = exports.cloneTransformNode = exports.getDottedPathForNode = exports.mapToDottedNodes = exports.getRootNode = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var photoDome_1 = require("@babylonjs/core/Helpers/photoDome");
|
|
6
|
+
var light_1 = require("@babylonjs/core/Lights/light");
|
|
7
|
+
var cubeTexture_1 = require("@babylonjs/core/Materials/Textures/cubeTexture");
|
|
8
|
+
var math_axis_1 = require("@babylonjs/core/Maths/math.axis");
|
|
9
|
+
var math_color_1 = require("@babylonjs/core/Maths/math.color");
|
|
10
|
+
var math_vector_1 = require("@babylonjs/core/Maths/math.vector");
|
|
11
|
+
var abstractMesh_1 = require("@babylonjs/core/Meshes/abstractMesh");
|
|
12
|
+
var instancedMesh_1 = require("@babylonjs/core/Meshes/instancedMesh");
|
|
13
|
+
var transformNode_1 = require("@babylonjs/core/Meshes/transformNode");
|
|
14
|
+
var tools_1 = require("@babylonjs/core/Misc/tools");
|
|
15
|
+
var sceneSetup_1 = require("../internal/sceneSetup");
|
|
16
|
+
var lodash_es_1 = require("lodash-es");
|
|
17
|
+
var dottedPath_1 = require("../classes/dottedPath");
|
|
18
|
+
var backgroundDomeName = 'BackgroundDome_ViewerGenerated';
|
|
19
|
+
exports.backgroundDomeName = backgroundDomeName;
|
|
20
|
+
var envHelperMetadataName = 'viewerEnvHelper';
|
|
21
|
+
exports.envHelperMetadataName = envHelperMetadataName;
|
|
22
|
+
/**
|
|
23
|
+
* @param node
|
|
24
|
+
* @return Node
|
|
25
|
+
*/
|
|
26
|
+
var getRootNode = function (node) {
|
|
27
|
+
var _node = node;
|
|
28
|
+
while (_node.parent) {
|
|
29
|
+
_node = _node.parent;
|
|
30
|
+
}
|
|
31
|
+
return _node;
|
|
32
|
+
};
|
|
33
|
+
exports.getRootNode = getRootNode;
|
|
34
|
+
/**
|
|
35
|
+
* @param nodes
|
|
36
|
+
* @param predicate
|
|
37
|
+
* @return Map<DottedPath, T>
|
|
38
|
+
*/
|
|
39
|
+
var mapToDottedNodes = function (nodes, predicate) {
|
|
40
|
+
var map = new Map();
|
|
41
|
+
var addNodes = function (_node) {
|
|
42
|
+
if (predicate && predicate(_node)) {
|
|
43
|
+
map.set(_node.metadata.dottedPath, _node);
|
|
44
|
+
}
|
|
45
|
+
_node.getChildren().forEach(function (child) {
|
|
46
|
+
addNodes(child);
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
nodes.forEach(function (node) {
|
|
50
|
+
addNodes(node);
|
|
51
|
+
});
|
|
52
|
+
return map;
|
|
53
|
+
};
|
|
54
|
+
exports.mapToDottedNodes = mapToDottedNodes;
|
|
55
|
+
/**
|
|
56
|
+
* @param node
|
|
57
|
+
* @return DottedPath
|
|
58
|
+
*/
|
|
59
|
+
var getDottedPathForNode = function (node) {
|
|
60
|
+
var dottedPath = dottedPath_1.DottedPath.create(node.name);
|
|
61
|
+
var _parent = node;
|
|
62
|
+
while (_parent.parent) {
|
|
63
|
+
_parent = _parent.parent;
|
|
64
|
+
dottedPath.unshiftPart(_parent.name);
|
|
65
|
+
}
|
|
66
|
+
return dottedPath;
|
|
67
|
+
};
|
|
68
|
+
exports.getDottedPathForNode = getDottedPathForNode;
|
|
69
|
+
/**
|
|
70
|
+
* @param node
|
|
71
|
+
* @param predicate
|
|
72
|
+
* @param deep
|
|
73
|
+
* @return TransformNode | null
|
|
74
|
+
*/
|
|
75
|
+
var cloneTransformNode = function (node, predicate, deep) {
|
|
76
|
+
if (deep === void 0) { deep = true; }
|
|
77
|
+
if (predicate && !predicate(node)) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
var clone = node.clone(node.name, node.parent, true);
|
|
81
|
+
if (clone) {
|
|
82
|
+
clone.metadata = lodash_es_1.cloneDeep(node.metadata);
|
|
83
|
+
}
|
|
84
|
+
if (deep) {
|
|
85
|
+
var children = node.getChildTransformNodes(true);
|
|
86
|
+
children.forEach(function (child) {
|
|
87
|
+
var clonedChild = cloneTransformNode(child, predicate, deep);
|
|
88
|
+
if (clonedChild) {
|
|
89
|
+
clonedChild.parent = clone;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return clone;
|
|
94
|
+
};
|
|
95
|
+
exports.cloneTransformNode = cloneTransformNode;
|
|
96
|
+
/**
|
|
97
|
+
* @param node
|
|
98
|
+
*/
|
|
99
|
+
var cloneNodeWithParents = function (node) {
|
|
100
|
+
var clone = null;
|
|
101
|
+
if (node instanceof transformNode_1.TransformNode) {
|
|
102
|
+
clone = node.clone(node.name, cloneNodeWithParents(node.parent), true);
|
|
103
|
+
}
|
|
104
|
+
else if (node instanceof light_1.Light) {
|
|
105
|
+
clone = node.clone(node.name, cloneNodeWithParents(node.parent));
|
|
106
|
+
}
|
|
107
|
+
else if (node) {
|
|
108
|
+
throw new Error("Cloning of \"" + (node === null || node === void 0 ? void 0 : node.constructor.name) + "\" is not implemented (yet).");
|
|
109
|
+
}
|
|
110
|
+
return clone;
|
|
111
|
+
};
|
|
112
|
+
exports.cloneNodeWithParents = cloneNodeWithParents;
|
|
113
|
+
/**
|
|
114
|
+
* @param node
|
|
115
|
+
* @param deep
|
|
116
|
+
* @param prefix
|
|
117
|
+
* @return TransformNode
|
|
118
|
+
*/
|
|
119
|
+
var cloneTransformNodeMaterial = function (node, prefix, deep) {
|
|
120
|
+
if (prefix === void 0) { prefix = ''; }
|
|
121
|
+
if (deep === void 0) { deep = true; }
|
|
122
|
+
if (node instanceof abstractMesh_1.AbstractMesh && node.material) {
|
|
123
|
+
var newMatName = dottedPath_1.DottedPath.create(prefix).addParts([node.material.name, 'clone', node.uniqueId.toString()]);
|
|
124
|
+
node.material = node.material.clone(newMatName.path);
|
|
125
|
+
}
|
|
126
|
+
if (deep) {
|
|
127
|
+
var children = node.getChildTransformNodes(true);
|
|
128
|
+
children.forEach(function (child) { return cloneTransformNodeMaterial(child, prefix, deep); });
|
|
129
|
+
}
|
|
130
|
+
return node;
|
|
131
|
+
};
|
|
132
|
+
exports.cloneTransformNodeMaterial = cloneTransformNodeMaterial;
|
|
133
|
+
/**
|
|
134
|
+
* @param node
|
|
135
|
+
* @param deep
|
|
136
|
+
* @param metadata
|
|
137
|
+
*/
|
|
138
|
+
var injectNodeMetadata = function (node, metadata, deep) {
|
|
139
|
+
if (deep === void 0) { deep = true; }
|
|
140
|
+
node.metadata = lodash_es_1.merge({}, node.metadata, metadata);
|
|
141
|
+
if (deep && node instanceof transformNode_1.TransformNode) {
|
|
142
|
+
var children = node.getChildTransformNodes(true);
|
|
143
|
+
children.forEach(function (child) { return injectNodeMetadata(child, metadata, deep); });
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
exports.injectNodeMetadata = injectNodeMetadata;
|
|
147
|
+
/**
|
|
148
|
+
* @param node
|
|
149
|
+
* @param assertCallable
|
|
150
|
+
* @param callableParameters
|
|
151
|
+
* @param deep
|
|
152
|
+
*/
|
|
153
|
+
var assertTransformNode = function (node, assertCallable, callableParameters, deep) {
|
|
154
|
+
if (callableParameters === void 0) { callableParameters = []; }
|
|
155
|
+
if (deep === void 0) { deep = true; }
|
|
156
|
+
assertCallable.apply(void 0, tslib_1.__spreadArrays([node], callableParameters));
|
|
157
|
+
if (deep) {
|
|
158
|
+
var children = node.getChildTransformNodes(true);
|
|
159
|
+
children.forEach(function (child) { return assertTransformNode(child, assertCallable, callableParameters, deep); });
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
exports.assertTransformNode = assertTransformNode;
|
|
163
|
+
/**
|
|
164
|
+
* @param node
|
|
165
|
+
* @param deep
|
|
166
|
+
*/
|
|
167
|
+
var activateTransformNode = function (node, deep) {
|
|
168
|
+
if (deep === void 0) { deep = true; }
|
|
169
|
+
node.setEnabled(true);
|
|
170
|
+
/*
|
|
171
|
+
if( node instanceof AbstractMesh ) {
|
|
172
|
+
node.visibility = 1;
|
|
173
|
+
node.isPickable = true;
|
|
174
|
+
}
|
|
175
|
+
*/
|
|
176
|
+
if (deep) {
|
|
177
|
+
node.getChildTransformNodes(true).forEach(function (child) { return activateTransformNode(child, deep); });
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
exports.activateTransformNode = activateTransformNode;
|
|
181
|
+
/**
|
|
182
|
+
* @param node
|
|
183
|
+
* @param deep
|
|
184
|
+
*/
|
|
185
|
+
var deactivateTransformNode = function (node, deep) {
|
|
186
|
+
if (deep === void 0) { deep = true; }
|
|
187
|
+
node.setEnabled(false);
|
|
188
|
+
/*
|
|
189
|
+
if( node instanceof AbstractMesh ) {
|
|
190
|
+
node.visibility = 0;
|
|
191
|
+
node.isPickable = false;
|
|
192
|
+
}
|
|
193
|
+
*/
|
|
194
|
+
if (deep) {
|
|
195
|
+
node.getChildTransformNodes(true).forEach(function (child) { return deactivateTransformNode(child, deep); });
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
exports.deactivateTransformNode = deactivateTransformNode;
|
|
199
|
+
/**
|
|
200
|
+
* @param node
|
|
201
|
+
*/
|
|
202
|
+
var enableNodeWithParents = function (node) {
|
|
203
|
+
node.setEnabled(true);
|
|
204
|
+
if (node.parent) {
|
|
205
|
+
enableNodeWithParents(node.parent);
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
exports.enableNodeWithParents = enableNodeWithParents;
|
|
209
|
+
/**
|
|
210
|
+
* @param node
|
|
211
|
+
*/
|
|
212
|
+
var disableNodeWithParents = function (node) {
|
|
213
|
+
node.setEnabled(false);
|
|
214
|
+
if (node.parent) {
|
|
215
|
+
disableNodeWithParents(node.parent);
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
exports.disableNodeWithParents = disableNodeWithParents;
|
|
219
|
+
/**
|
|
220
|
+
* Applies a {@link TransformationDefinition} consecutively to ensure dependencies in positioning etc.
|
|
221
|
+
* @param node
|
|
222
|
+
* @param transformation
|
|
223
|
+
*/
|
|
224
|
+
var transformTransformNode = function (node, transformation) {
|
|
225
|
+
// scaling
|
|
226
|
+
if (!lodash_es_1.has(node.metadata, 'scaling.initial')) {
|
|
227
|
+
injectNodeMetadata(node, { 'scaling.initial': node.scaling }, false);
|
|
228
|
+
}
|
|
229
|
+
var initialScaling = lodash_es_1.get(node.metadata, 'scaling.initial');
|
|
230
|
+
node.scaling = initialScaling.multiply(transformation.scaling);
|
|
231
|
+
// position
|
|
232
|
+
if (!lodash_es_1.has(node.metadata, 'position.initial')) {
|
|
233
|
+
injectNodeMetadata(node, { 'position.initial': node.absolutePosition.clone() }, false);
|
|
234
|
+
}
|
|
235
|
+
var initialPosition = lodash_es_1.get(node.metadata, 'position.initial');
|
|
236
|
+
node.setAbsolutePosition(initialPosition.add(transformation.position).multiply(transformation.scaling));
|
|
237
|
+
// rotation
|
|
238
|
+
if (!lodash_es_1.has(node.metadata, 'rotation.initial')) {
|
|
239
|
+
var rotationQuaternion = node.rotationQuaternion;
|
|
240
|
+
if (!rotationQuaternion) {
|
|
241
|
+
rotationQuaternion = math_vector_1.Quaternion.RotationYawPitchRoll(node.rotation.x, node.rotation.y, node.rotation.z);
|
|
242
|
+
}
|
|
243
|
+
injectNodeMetadata(node, { 'rotation.initial': rotationQuaternion.asArray() }, false);
|
|
244
|
+
}
|
|
245
|
+
var initialRotationQuaternion = math_vector_1.Quaternion.FromArray(lodash_es_1.get(node.metadata, 'rotation.initial'));
|
|
246
|
+
node.rotationQuaternion = initialRotationQuaternion;
|
|
247
|
+
node.rotateAround(math_vector_1.Vector3.Zero(), math_axis_1.Axis.X, transformation.rotation.x);
|
|
248
|
+
node.rotateAround(math_vector_1.Vector3.Zero(), math_axis_1.Axis.Y, transformation.rotation.y);
|
|
249
|
+
node.rotateAround(math_vector_1.Vector3.Zero(), math_axis_1.Axis.Z, transformation.rotation.z);
|
|
250
|
+
node.computeWorldMatrix(true);
|
|
251
|
+
};
|
|
252
|
+
exports.transformTransformNode = transformTransformNode;
|
|
253
|
+
/**
|
|
254
|
+
* Apply changes of environment (background texture, etc.) consecutively in order to avoid dependency related issues.
|
|
255
|
+
* @param scene
|
|
256
|
+
* @param envDef
|
|
257
|
+
*/
|
|
258
|
+
var changeEnvironment = function (scene, envDef) {
|
|
259
|
+
var _a;
|
|
260
|
+
var _b;
|
|
261
|
+
// issue warning if both background texture and usedefault are set
|
|
262
|
+
if (envDef.environmentUseDefault && envDef.environmentBackground) {
|
|
263
|
+
console.warn("!!! Warning !!! Spec parameter 'environment.useDefaultEnvironment' is being overruled by 'environment.background'.");
|
|
264
|
+
}
|
|
265
|
+
var useDefaultEnv = envDef.environmentUseDefault && !envDef.environmentBackground;
|
|
266
|
+
// 1) set ENVIRONMENT_COLOR
|
|
267
|
+
scene.clearColor = envDef.environmentColor
|
|
268
|
+
? math_color_1.Color4.FromColor3(envDef.environmentColor)
|
|
269
|
+
: useDefaultEnv
|
|
270
|
+
? sceneSetup_1.defaultEnvHelperColor
|
|
271
|
+
: sceneSetup_1.defaultSceneClearColor;
|
|
272
|
+
// 2) dispose existing & set new ENVIRONMENT (==texture)
|
|
273
|
+
var curEnvTexture = scene.environmentTexture;
|
|
274
|
+
var envTextureChanged = envDef.environment !== (curEnvTexture === null || curEnvTexture === void 0 ? void 0 : curEnvTexture.url);
|
|
275
|
+
if (curEnvTexture && (!envDef.environment || envTextureChanged)) {
|
|
276
|
+
curEnvTexture.dispose();
|
|
277
|
+
}
|
|
278
|
+
var rotation = envDef.environmentRotation !== undefined ? tools_1.Tools.ToRadians(envDef.environmentRotation) : 0;
|
|
279
|
+
if (envDef.environment && envTextureChanged) {
|
|
280
|
+
var envTexture = cubeTexture_1.CubeTexture.CreateFromPrefilteredData(envDef.environment, scene);
|
|
281
|
+
envTexture.rotationY = rotation;
|
|
282
|
+
scene.environmentTexture = envTexture;
|
|
283
|
+
}
|
|
284
|
+
else if (curEnvTexture && curEnvTexture.rotationY !== rotation) {
|
|
285
|
+
curEnvTexture.rotationY = rotation;
|
|
286
|
+
}
|
|
287
|
+
// 3) dispose existing & set new ENVIRONMENT_BACKGROUND
|
|
288
|
+
var curDome = scene.getNodeByName(backgroundDomeName);
|
|
289
|
+
var backgroundUrlChanged = envDef.environmentBackground !== (curDome === null || curDome === void 0 ? void 0 : curDome.texture.url);
|
|
290
|
+
if (curDome && (!envDef.environmentBackground || backgroundUrlChanged)) {
|
|
291
|
+
curDome.dispose();
|
|
292
|
+
}
|
|
293
|
+
var rotationPhotoDome = -1 * rotation;
|
|
294
|
+
if (envDef.environmentBackground && backgroundUrlChanged) {
|
|
295
|
+
var textureUrl = envDef.environmentBackground;
|
|
296
|
+
var dome = new photoDome_1.PhotoDome(backgroundDomeName, textureUrl, { resolution: 32, size: 450 }, scene);
|
|
297
|
+
// Rotate submesh to get them in line with environment texture
|
|
298
|
+
dome.getChildMeshes(true)[0].rotation.y = tools_1.Tools.ToRadians(90);
|
|
299
|
+
dome.rotation.y = rotationPhotoDome;
|
|
300
|
+
}
|
|
301
|
+
else if (curDome && curDome.rotation.y !== rotationPhotoDome) {
|
|
302
|
+
curDome.rotation.y = rotationPhotoDome;
|
|
303
|
+
}
|
|
304
|
+
// 4) dispose existing & set new ENVIRONMENT_USEDEFAULT (only if no background is set)
|
|
305
|
+
var curEnvHelper = (_b = scene.metadata) === null || _b === void 0 ? void 0 : _b[envHelperMetadataName];
|
|
306
|
+
if (curEnvHelper && (!envDef.environmentUseDefault || envDef.environmentBackground)) {
|
|
307
|
+
curEnvHelper.dispose();
|
|
308
|
+
}
|
|
309
|
+
if (useDefaultEnv && !curEnvHelper) {
|
|
310
|
+
var envHelper = scene.createDefaultEnvironment({ sizeAuto: true });
|
|
311
|
+
envHelper === null || envHelper === void 0 ? void 0 : envHelper.setMainColor(math_color_1.Color3.FromArray(scene.clearColor.asArray()));
|
|
312
|
+
if (envHelper) {
|
|
313
|
+
scene.metadata = lodash_es_1.merge({}, scene.metadata, (_a = {}, _a[envHelperMetadataName] = envHelper, _a));
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
// 5) set ENVIRONMENT_INTENSITY
|
|
317
|
+
if (envDef.environmentIntensity !== undefined) {
|
|
318
|
+
scene.environmentIntensity = envDef.environmentIntensity;
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
exports.changeEnvironment = changeEnvironment;
|
|
322
|
+
/**
|
|
323
|
+
* @param node
|
|
324
|
+
* @param material
|
|
325
|
+
* @param deep
|
|
326
|
+
*/
|
|
327
|
+
var setMaterial = function (node, material, deep) {
|
|
328
|
+
if (deep === void 0) { deep = true; }
|
|
329
|
+
if (node instanceof abstractMesh_1.AbstractMesh) {
|
|
330
|
+
node.material = material;
|
|
331
|
+
}
|
|
332
|
+
if (deep) {
|
|
333
|
+
node.getChildTransformNodes(true).forEach(function (child) { return setMaterial(child, material, deep); });
|
|
334
|
+
}
|
|
335
|
+
};
|
|
336
|
+
exports.setMaterial = setMaterial;
|
|
337
|
+
/**
|
|
338
|
+
* !!! Warning !!!
|
|
339
|
+
* This function is not public API. Whilst it can help solving certain problems, it only works reliably in well defined
|
|
340
|
+
* situations and can cause unwanted side effects under some conditions. Use carefully at your own risk!
|
|
341
|
+
*
|
|
342
|
+
* See https://combeenation.myjetbrains.com/youtrack/issue/CB-5906 for further details regarding this warning.
|
|
343
|
+
*
|
|
344
|
+
* Set material of an instanced meshes source mesh.
|
|
345
|
+
* Changes the material of all instanced meshes which have the same source mesh.
|
|
346
|
+
*
|
|
347
|
+
* @param node
|
|
348
|
+
* @param material
|
|
349
|
+
* @param deep
|
|
350
|
+
*
|
|
351
|
+
* @ignore
|
|
352
|
+
*/
|
|
353
|
+
var setSourceNodeMaterial = function (node, material, deep) {
|
|
354
|
+
if (deep === void 0) { deep = true; }
|
|
355
|
+
var warn = "\tYou're using \"setSourceNodeMaterial\" which is not public API.\n\tWhilst it can help solving certain problems, it only works reliably in well defined situations and can cause unwanted side effects under some conditions.\n\tUse carefully at your own risk!";
|
|
356
|
+
console.warn("!!! Warning !!!\n" + warn);
|
|
357
|
+
if (node instanceof instancedMesh_1.InstancedMesh) {
|
|
358
|
+
node.sourceMesh.material = material;
|
|
359
|
+
}
|
|
360
|
+
if (deep) {
|
|
361
|
+
node.getChildTransformNodes(true).forEach(function (child) { return setSourceNodeMaterial(child, material, deep); });
|
|
362
|
+
}
|
|
363
|
+
};
|
|
364
|
+
exports.setSourceNodeMaterial = setSourceNodeMaterial;
|
|
365
|
+
/**
|
|
366
|
+
* @param node
|
|
367
|
+
* @param color
|
|
368
|
+
* @param deep
|
|
369
|
+
*/
|
|
370
|
+
var setMaterialColor = function (node, color, deep) {
|
|
371
|
+
if (deep === void 0) { deep = true; }
|
|
372
|
+
if (node instanceof abstractMesh_1.AbstractMesh && node.material) {
|
|
373
|
+
var materialCls = node.material.getClassName();
|
|
374
|
+
switch (materialCls) {
|
|
375
|
+
case 'PBRMaterial':
|
|
376
|
+
node.material.albedoColor = color.toLinearSpace();
|
|
377
|
+
break;
|
|
378
|
+
case 'StandardMaterial':
|
|
379
|
+
node.material.diffuseColor = color;
|
|
380
|
+
break;
|
|
381
|
+
default:
|
|
382
|
+
throw new Error("Setting color for material of instance \"" + materialCls + "\" not implemented (yet).");
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
if (deep) {
|
|
386
|
+
node.getChildTransformNodes(true).forEach(function (child) { return setMaterialColor(child, color, deep); });
|
|
387
|
+
}
|
|
388
|
+
};
|
|
389
|
+
exports.setMaterialColor = setMaterialColor;
|
|
390
|
+
/**
|
|
391
|
+
* @param node
|
|
392
|
+
* @param texture
|
|
393
|
+
* @param deep
|
|
394
|
+
*/
|
|
395
|
+
var setMaterialTexture = function (node, texture, deep) {
|
|
396
|
+
if (deep === void 0) { deep = true; }
|
|
397
|
+
if (node instanceof abstractMesh_1.AbstractMesh && node.material) {
|
|
398
|
+
var materialCls = node.material.getClassName();
|
|
399
|
+
switch (materialCls) {
|
|
400
|
+
case 'PBRMaterial':
|
|
401
|
+
node.material.albedoTexture = texture;
|
|
402
|
+
break;
|
|
403
|
+
case 'StandardMaterial':
|
|
404
|
+
node.material.diffuseTexture = texture;
|
|
405
|
+
break;
|
|
406
|
+
default:
|
|
407
|
+
throw new Error("Setting texture for material of instance \"" + materialCls + "\" not implemented (yet).");
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
if (deep) {
|
|
411
|
+
node.getChildTransformNodes(true).forEach(function (child) { return setMaterialTexture(child, texture, deep); });
|
|
412
|
+
}
|
|
413
|
+
};
|
|
414
|
+
exports.setMaterialTexture = setMaterialTexture;
|
|
415
|
+
/**
|
|
416
|
+
* @param node
|
|
417
|
+
* @param metallness
|
|
418
|
+
* @param deep
|
|
419
|
+
*/
|
|
420
|
+
var setMaterialMetallness = function (node, metallness, deep) {
|
|
421
|
+
if (deep === void 0) { deep = true; }
|
|
422
|
+
if (node instanceof abstractMesh_1.AbstractMesh && node.material) {
|
|
423
|
+
var materialCls = node.material.getClassName();
|
|
424
|
+
switch (materialCls) {
|
|
425
|
+
case 'PBRMaterial':
|
|
426
|
+
node.material.metallic = metallness;
|
|
427
|
+
break;
|
|
428
|
+
default:
|
|
429
|
+
throw new Error("Setting metallness for material of instance \"" + materialCls + "\" not implemented (yet).");
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
if (deep) {
|
|
433
|
+
node.getChildTransformNodes(true).forEach(function (child) { return setMaterialMetallness(child, metallness, deep); });
|
|
434
|
+
}
|
|
435
|
+
};
|
|
436
|
+
exports.setMaterialMetallness = setMaterialMetallness;
|
|
437
|
+
/**
|
|
438
|
+
* @param node
|
|
439
|
+
* @param roughness
|
|
440
|
+
* @param deep
|
|
441
|
+
*/
|
|
442
|
+
var setMaterialRoughness = function (node, roughness, deep) {
|
|
443
|
+
if (deep === void 0) { deep = true; }
|
|
444
|
+
if (node instanceof abstractMesh_1.AbstractMesh && node.material) {
|
|
445
|
+
var materialCls = node.material.getClassName();
|
|
446
|
+
switch (materialCls) {
|
|
447
|
+
case 'PBRMaterial':
|
|
448
|
+
node.material.roughness = roughness;
|
|
449
|
+
break;
|
|
450
|
+
case 'StandardMaterial':
|
|
451
|
+
node.material.roughness = roughness;
|
|
452
|
+
break;
|
|
453
|
+
default:
|
|
454
|
+
throw new Error("Setting roughness for material of instance \"" + materialCls + "\" not implemented (yet).");
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
if (deep) {
|
|
458
|
+
node.getChildTransformNodes(true).forEach(function (child) { return setMaterialRoughness(child, roughness, deep); });
|
|
459
|
+
}
|
|
460
|
+
};
|
|
461
|
+
exports.setMaterialRoughness = setMaterialRoughness;
|
|
462
|
+
/**
|
|
463
|
+
* @param node
|
|
464
|
+
* @param layer
|
|
465
|
+
* @param color
|
|
466
|
+
* @param deep
|
|
467
|
+
*/
|
|
468
|
+
var addToHighlightLayer = function (layer, color, node, deep) {
|
|
469
|
+
if (deep === void 0) { deep = true; }
|
|
470
|
+
if (node instanceof abstractMesh_1.AbstractMesh) {
|
|
471
|
+
layer.addMesh(node, color);
|
|
472
|
+
}
|
|
473
|
+
if (deep) {
|
|
474
|
+
node.getChildTransformNodes(true).forEach(function (child) { return addToHighlightLayer(layer, color, child, deep); });
|
|
475
|
+
}
|
|
476
|
+
};
|
|
477
|
+
exports.addToHighlightLayer = addToHighlightLayer;
|
|
478
|
+
/**
|
|
479
|
+
* @param node
|
|
480
|
+
* @param layer
|
|
481
|
+
* @param deep
|
|
482
|
+
*/
|
|
483
|
+
var removeFromHighlightLayer = function (layer, node, deep) {
|
|
484
|
+
if (deep === void 0) { deep = true; }
|
|
485
|
+
if (node instanceof abstractMesh_1.AbstractMesh) {
|
|
486
|
+
layer.removeMesh(node);
|
|
487
|
+
}
|
|
488
|
+
if (deep) {
|
|
489
|
+
node.getChildTransformNodes(true).forEach(function (child) { return removeFromHighlightLayer(layer, child, deep); });
|
|
490
|
+
}
|
|
491
|
+
};
|
|
492
|
+
exports.removeFromHighlightLayer = removeFromHighlightLayer;
|
|
493
|
+
/**
|
|
494
|
+
* @param node
|
|
495
|
+
* @param receiveShadows
|
|
496
|
+
* @param deep
|
|
497
|
+
*/
|
|
498
|
+
var setReceiveShadows = function (node, receiveShadows, deep) {
|
|
499
|
+
if (deep === void 0) { deep = true; }
|
|
500
|
+
if (node instanceof abstractMesh_1.AbstractMesh) {
|
|
501
|
+
node.receiveShadows = receiveShadows;
|
|
502
|
+
}
|
|
503
|
+
if (deep) {
|
|
504
|
+
node.getChildTransformNodes(true).forEach(function (child) { return setReceiveShadows(child, receiveShadows, deep); });
|
|
505
|
+
}
|
|
506
|
+
};
|
|
507
|
+
exports.setReceiveShadows = setReceiveShadows;
|
|
508
|
+
/**
|
|
509
|
+
* @param node
|
|
510
|
+
* @param generator
|
|
511
|
+
* @param deep
|
|
512
|
+
*/
|
|
513
|
+
var addToShadowGenerator = function (generator, node, deep) {
|
|
514
|
+
if (deep === void 0) { deep = true; }
|
|
515
|
+
if (node instanceof abstractMesh_1.AbstractMesh) {
|
|
516
|
+
// We have to remove the node because there's no duplicate check in babylon
|
|
517
|
+
generator.removeShadowCaster(node, false);
|
|
518
|
+
generator.addShadowCaster(node, false);
|
|
519
|
+
}
|
|
520
|
+
if (deep) {
|
|
521
|
+
node.getChildTransformNodes(true).forEach(function (child) { return addToShadowGenerator(generator, child, deep); });
|
|
522
|
+
}
|
|
523
|
+
};
|
|
524
|
+
exports.addToShadowGenerator = addToShadowGenerator;
|
|
525
|
+
/**
|
|
526
|
+
* @param node
|
|
527
|
+
* @param generator
|
|
528
|
+
* @param deep
|
|
529
|
+
*/
|
|
530
|
+
var removeFromShadowGenerator = function (generator, node, deep) {
|
|
531
|
+
if (deep === void 0) { deep = true; }
|
|
532
|
+
if (node instanceof abstractMesh_1.AbstractMesh) {
|
|
533
|
+
generator.removeShadowCaster(node, false);
|
|
534
|
+
}
|
|
535
|
+
if (deep) {
|
|
536
|
+
node.getChildTransformNodes(true).forEach(function (child) { return removeFromShadowGenerator(generator, child, deep); });
|
|
537
|
+
}
|
|
538
|
+
};
|
|
539
|
+
exports.removeFromShadowGenerator = removeFromShadowGenerator;
|
|
540
|
+
/**
|
|
541
|
+
* https://forum.babylonjs.com/t/get-mesh-bounding-box-position-and-size-in-2d-screen-coordinates/1058/3
|
|
542
|
+
* @param mesh
|
|
543
|
+
* @param scene
|
|
544
|
+
* @param canvas
|
|
545
|
+
*/
|
|
546
|
+
var getClientRectFromMesh = function (mesh, scene, canvas) {
|
|
547
|
+
// get bounding box of the mesh
|
|
548
|
+
var meshVectors = mesh.getBoundingInfo().boundingBox.vectors;
|
|
549
|
+
// get the matrix and viewport needed to project the vectors onto the screen
|
|
550
|
+
var worldMatrix = mesh.getWorldMatrix();
|
|
551
|
+
var transformMatrix = scene.getTransformMatrix();
|
|
552
|
+
var viewport = scene.activeCamera.viewport;
|
|
553
|
+
// loop though all the vectors and project them against the current camera viewport to get a set of coordinates
|
|
554
|
+
var coordinates = meshVectors.map(function (vector) {
|
|
555
|
+
var projection = math_vector_1.Vector3.Project(vector, worldMatrix, transformMatrix, viewport);
|
|
556
|
+
projection.x = projection.x * canvas.clientWidth;
|
|
557
|
+
projection.y = projection.y * canvas.clientHeight;
|
|
558
|
+
return projection;
|
|
559
|
+
});
|
|
560
|
+
// get the min and max for all the coordinates so we can calculate the largest possible screen size
|
|
561
|
+
var maxX = Math.max.apply(Math, coordinates.map(function (o) { return o.x; }));
|
|
562
|
+
var minX = Math.min.apply(Math, coordinates.map(function (o) { return o.x; }));
|
|
563
|
+
var maxY = Math.max.apply(Math, coordinates.map(function (o) { return o.y; }));
|
|
564
|
+
var minY = Math.min.apply(Math, coordinates.map(function (o) { return o.y; }));
|
|
565
|
+
// return a ClientRect from this
|
|
566
|
+
return {
|
|
567
|
+
width: maxX - minX,
|
|
568
|
+
height: maxY - minY,
|
|
569
|
+
left: minX,
|
|
570
|
+
top: minY,
|
|
571
|
+
right: maxX,
|
|
572
|
+
bottom: maxY,
|
|
573
|
+
};
|
|
574
|
+
};
|
|
575
|
+
exports.getClientRectFromMesh = getClientRectFromMesh;
|
|
498
576
|
//# sourceMappingURL=babylonHelper.js.map
|