@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.
- package/dist/lib-cjs/api/classes/element.js +4 -18
- package/dist/lib-cjs/api/classes/element.js.map +1 -1
- package/dist/lib-cjs/api/classes/variant.js +37 -26
- package/dist/lib-cjs/api/classes/variant.js.map +1 -1
- package/dist/lib-cjs/api/util/babylonHelper.d.ts +2 -2
- package/dist/lib-cjs/api/util/babylonHelper.js +17 -6
- package/dist/lib-cjs/api/util/babylonHelper.js.map +1 -1
- package/dist/lib-cjs/api/util/sceneLoaderHelper.d.ts +8 -1
- package/dist/lib-cjs/api/util/sceneLoaderHelper.js +39 -2
- package/dist/lib-cjs/api/util/sceneLoaderHelper.js.map +1 -1
- package/dist/lib-cjs/buildinfo.json +1 -1
- package/dist/lib-es6/api/classes/animationInterface.d.ts +8 -0
- package/dist/lib-es6/api/classes/animationInterface.js +2 -0
- package/dist/lib-es6/api/classes/animationInterface.js.map +1 -0
- package/dist/lib-es6/api/classes/dottedPath.d.ts +79 -0
- package/dist/lib-es6/api/classes/dottedPath.js +185 -0
- package/dist/lib-es6/api/classes/dottedPath.js.map +1 -0
- package/dist/lib-es6/api/classes/element.d.ts +149 -0
- package/dist/lib-es6/api/classes/element.js +821 -0
- package/dist/lib-es6/api/classes/element.js.map +1 -0
- package/dist/lib-es6/api/classes/event.d.ts +326 -0
- package/dist/lib-es6/api/classes/event.js +369 -0
- package/dist/lib-es6/api/classes/event.js.map +1 -0
- package/dist/lib-es6/api/classes/eventBroadcaster.d.ts +26 -0
- package/dist/lib-es6/api/classes/eventBroadcaster.js +51 -0
- package/dist/lib-es6/api/classes/eventBroadcaster.js.map +1 -0
- package/dist/lib-es6/api/classes/parameter.d.ts +336 -0
- package/dist/lib-es6/api/classes/parameter.js +469 -0
- package/dist/lib-es6/api/classes/parameter.js.map +1 -0
- package/dist/lib-es6/api/classes/parameterObservable.d.ts +36 -0
- package/dist/lib-es6/api/classes/parameterObservable.js +99 -0
- package/dist/lib-es6/api/classes/parameterObservable.js.map +1 -0
- package/dist/lib-es6/api/classes/parameterizable.d.ts +15 -0
- package/dist/lib-es6/api/classes/parameterizable.js +147 -0
- package/dist/lib-es6/api/classes/parameterizable.js.map +1 -0
- package/dist/lib-es6/api/classes/placementAnimation.d.ts +44 -0
- package/dist/lib-es6/api/classes/placementAnimation.js +161 -0
- package/dist/lib-es6/api/classes/placementAnimation.js.map +1 -0
- package/dist/lib-es6/api/classes/variant.d.ts +234 -0
- package/dist/lib-es6/api/classes/variant.js +1199 -0
- package/dist/lib-es6/api/classes/variant.js.map +1 -0
- package/dist/lib-es6/api/classes/variantInstance.d.ts +45 -0
- package/dist/lib-es6/api/classes/variantInstance.js +106 -0
- package/dist/lib-es6/api/classes/variantInstance.js.map +1 -0
- package/dist/lib-es6/api/classes/variantParameterizable.d.ts +17 -0
- package/dist/lib-es6/api/classes/variantParameterizable.js +97 -0
- package/dist/lib-es6/api/classes/variantParameterizable.js.map +1 -0
- package/dist/lib-es6/api/classes/viewer.d.ts +184 -0
- package/dist/lib-es6/api/classes/viewer.js +729 -0
- package/dist/lib-es6/api/classes/viewer.js.map +1 -0
- package/dist/lib-es6/api/classes/viewerLight.d.ts +66 -0
- package/dist/lib-es6/api/classes/viewerLight.js +390 -0
- package/dist/lib-es6/api/classes/viewerLight.js.map +1 -0
- package/dist/lib-es6/api/internal/debugViewer.d.ts +13 -0
- package/dist/lib-es6/api/internal/debugViewer.js +84 -0
- package/dist/lib-es6/api/internal/debugViewer.js.map +1 -0
- package/dist/lib-es6/api/internal/lensRendering.d.ts +8 -0
- package/dist/lib-es6/api/internal/lensRendering.js +9 -0
- package/dist/lib-es6/api/internal/lensRendering.js.map +1 -0
- package/dist/lib-es6/api/internal/sceneSetup.d.ts +13 -0
- package/dist/lib-es6/api/internal/sceneSetup.js +234 -0
- package/dist/lib-es6/api/internal/sceneSetup.js.map +1 -0
- package/dist/lib-es6/api/manager/animationManager.d.ts +29 -0
- package/dist/lib-es6/api/manager/animationManager.js +128 -0
- package/dist/lib-es6/api/manager/animationManager.js.map +1 -0
- package/dist/lib-es6/api/manager/gltfExportManager.d.ts +65 -0
- package/dist/lib-es6/api/manager/gltfExportManager.js +221 -0
- package/dist/lib-es6/api/manager/gltfExportManager.js.map +1 -0
- package/dist/lib-es6/api/manager/sceneManager.d.ts +31 -0
- package/dist/lib-es6/api/manager/sceneManager.js +150 -0
- package/dist/lib-es6/api/manager/sceneManager.js.map +1 -0
- package/dist/lib-es6/api/manager/variantInstanceManager.d.ts +92 -0
- package/dist/lib-es6/api/manager/variantInstanceManager.js +333 -0
- package/dist/lib-es6/api/manager/variantInstanceManager.js.map +1 -0
- package/dist/lib-es6/api/store/specStorage.d.ts +24 -0
- package/dist/lib-es6/api/store/specStorage.js +49 -0
- package/dist/lib-es6/api/store/specStorage.js.map +1 -0
- package/dist/lib-es6/api/util/babylonHelper.d.ts +174 -0
- package/dist/lib-es6/api/util/babylonHelper.js +582 -0
- package/dist/lib-es6/api/util/babylonHelper.js.map +1 -0
- package/dist/lib-es6/api/util/globalTypes.d.ts +366 -0
- package/dist/lib-es6/api/util/globalTypes.js +2 -0
- package/dist/lib-es6/api/util/globalTypes.js.map +1 -0
- package/dist/lib-es6/api/util/resourceHelper.d.ts +58 -0
- package/dist/lib-es6/api/util/resourceHelper.js +248 -0
- package/dist/lib-es6/api/util/resourceHelper.js.map +1 -0
- package/dist/lib-es6/api/util/sceneLoaderHelper.d.ts +35 -0
- package/dist/lib-es6/api/util/sceneLoaderHelper.js +134 -0
- package/dist/lib-es6/api/util/sceneLoaderHelper.js.map +1 -0
- package/dist/lib-es6/api/util/stringHelper.d.ts +9 -0
- package/dist/lib-es6/api/util/stringHelper.js +22 -0
- package/dist/lib-es6/api/util/stringHelper.js.map +1 -0
- package/dist/lib-es6/api/util/structureHelper.d.ts +9 -0
- package/dist/lib-es6/api/util/structureHelper.js +46 -0
- package/dist/lib-es6/api/util/structureHelper.js.map +1 -0
- package/dist/lib-es6/buildinfo.json +3 -0
- package/dist/lib-es6/index.d.ts +49 -0
- package/dist/lib-es6/index.js +51 -0
- package/dist/lib-es6/index.js.map +1 -0
- package/package.json +6 -6
- package/src/api/classes/element.ts +4 -23
- package/src/api/classes/variant.ts +22 -3
- package/src/api/util/babylonHelper.ts +17 -7
- 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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"}
|