@combeenation/3d-viewer 5.1.0-rc3 → 5.1.0-rc4

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