@combeenation/3d-viewer 17.1.0 → 18.0.0-beta1
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/buildinfo.json +1 -1
- package/dist/lib-cjs/commonjs.tsconfig.tsbuildinfo +1 -1
- package/dist/lib-cjs/index.d.ts +2 -0
- package/dist/lib-cjs/index.js +2 -0
- package/dist/lib-cjs/index.js.map +1 -1
- package/dist/lib-cjs/internal/asset-helper.d.ts +32 -0
- package/dist/lib-cjs/internal/asset-helper.js +105 -0
- package/dist/lib-cjs/internal/asset-helper.js.map +1 -0
- package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.d.ts +18 -0
- package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.js +22 -3
- package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.js.map +1 -1
- package/dist/lib-cjs/internal/texture-parameter-helper.js +26 -7
- package/dist/lib-cjs/internal/texture-parameter-helper.js.map +1 -1
- package/dist/lib-cjs/manager/camera-manager.js +4 -2
- package/dist/lib-cjs/manager/camera-manager.js.map +1 -1
- package/dist/lib-cjs/manager/debug-manager.js +1 -1
- package/dist/lib-cjs/manager/debug-manager.js.map +1 -1
- package/dist/lib-cjs/manager/model-manager.d.ts +11 -33
- package/dist/lib-cjs/manager/model-manager.js +47 -106
- package/dist/lib-cjs/manager/model-manager.js.map +1 -1
- package/dist/lib-cjs/manager/parameter-manager.d.ts +16 -11
- package/dist/lib-cjs/manager/parameter-manager.js +78 -69
- package/dist/lib-cjs/manager/parameter-manager.js.map +1 -1
- package/dist/lib-cjs/manager/scene-manager.d.ts +111 -5
- package/dist/lib-cjs/manager/scene-manager.js +269 -10
- package/dist/lib-cjs/manager/scene-manager.js.map +1 -1
- package/dist/lib-cjs/viewer-error.d.ts +1 -0
- package/dist/lib-cjs/viewer-error.js +1 -0
- package/dist/lib-cjs/viewer-error.js.map +1 -1
- package/dist/lib-cjs/viewer.d.ts +4 -13
- package/dist/lib-cjs/viewer.js +3 -37
- package/dist/lib-cjs/viewer.js.map +1 -1
- package/package.json +21 -12
- package/src/index.ts +2 -0
- package/src/internal/asset-helper.ts +115 -0
- package/src/internal/cbn-custom-babylon-loader-plugin.ts +30 -3
- package/src/internal/texture-parameter-helper.ts +25 -8
- package/src/manager/camera-manager.ts +4 -2
- package/src/manager/debug-manager.ts +1 -1
- package/src/manager/model-manager.ts +55 -137
- package/src/manager/parameter-manager.ts +93 -74
- package/src/manager/scene-manager.ts +366 -10
- package/src/viewer-error.ts +1 -0
- package/src/viewer.ts +13 -55
- package/src/dev.ts +0 -47
|
@@ -9,28 +9,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.ModelManager =
|
|
12
|
+
exports.ModelManager = void 0;
|
|
13
13
|
const index_1 = require("../index");
|
|
14
|
+
const asset_helper_1 = require("../internal/asset-helper");
|
|
14
15
|
const cloning_helper_1 = require("../internal/cloning-helper");
|
|
15
|
-
const metadata_helper_1 = require("../internal/metadata-helper");
|
|
16
16
|
const lodash_es_1 = require("lodash-es");
|
|
17
|
-
/**
|
|
18
|
-
* Contains cbn custom data, like decals.
|
|
19
|
-
* This is just a temporary type, as the `loadAssetContainer` function only returns an asset container, which can be
|
|
20
|
-
* altered by our file loader plugin.
|
|
21
|
-
* After loading the model, `cbnData` is cropped and a pure asset container is available for further processing.
|
|
22
|
-
*
|
|
23
|
-
* @internal
|
|
24
|
-
*/
|
|
25
|
-
class ExtendedAssetContainer extends index_1.AssetContainer {
|
|
26
|
-
}
|
|
27
|
-
exports.ExtendedAssetContainer = ExtendedAssetContainer;
|
|
28
17
|
/**
|
|
29
18
|
* Manager for handling 3d models.\
|
|
30
19
|
* Responsible for loading models and handling their visibility.\
|
|
31
20
|
* Also contains advanced features like model cloning.
|
|
32
21
|
*/
|
|
33
22
|
class ModelManager {
|
|
23
|
+
/** @internal */
|
|
34
24
|
constructor(viewer) {
|
|
35
25
|
this.viewer = viewer;
|
|
36
26
|
this._modelAssets = {};
|
|
@@ -83,7 +73,7 @@ class ModelManager {
|
|
|
83
73
|
for (const { name, url } of modelAssets) {
|
|
84
74
|
const existingModel = this._modelAssets[name];
|
|
85
75
|
if (existingModel) {
|
|
86
|
-
console.warn(`Model ${name} is already registered`);
|
|
76
|
+
console.warn(`Model "${name}" is already registered`);
|
|
87
77
|
return;
|
|
88
78
|
}
|
|
89
79
|
const model = { name, url, state: 'notLoaded', assetContainer: new index_1.AssetContainer(), isClone: false };
|
|
@@ -107,7 +97,7 @@ class ModelManager {
|
|
|
107
97
|
});
|
|
108
98
|
}
|
|
109
99
|
if (model.state !== 'notLoaded') {
|
|
110
|
-
console.warn(`Model ${name} is already loaded or currently loading`);
|
|
100
|
+
console.warn(`Model "${name}" is already loaded or currently loading`);
|
|
111
101
|
return;
|
|
112
102
|
}
|
|
113
103
|
yield this._loadModel(model);
|
|
@@ -121,14 +111,14 @@ class ModelManager {
|
|
|
121
111
|
* @returns Array of changed visibility status, combined with the corresponding model name
|
|
122
112
|
*/
|
|
123
113
|
setModelVisibility(modelVisibility) {
|
|
124
|
-
var _a;
|
|
125
114
|
return __awaiter(this, void 0, void 0, function* () {
|
|
126
|
-
const
|
|
127
|
-
const
|
|
115
|
+
const modelsToShow = [];
|
|
116
|
+
const modelsToHide = [];
|
|
128
117
|
if (!(0, lodash_es_1.isArray)(modelVisibility)) {
|
|
129
118
|
modelVisibility = [modelVisibility];
|
|
130
119
|
}
|
|
131
|
-
|
|
120
|
+
const loadModelProms = modelVisibility.map((entry) => __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
var _a;
|
|
132
122
|
const model = this._getModel(entry.name);
|
|
133
123
|
if (!model) {
|
|
134
124
|
throw new index_1.ViewerError({
|
|
@@ -139,50 +129,61 @@ class ModelManager {
|
|
|
139
129
|
// there can be multiple "setModelVisibility" calls while the model is loading
|
|
140
130
|
// loading can be awaited, but it has to be ensured, that the last call of "setModelVisibility" has priority
|
|
141
131
|
// therefore we store the id of the call in the model
|
|
142
|
-
|
|
143
|
-
model.visibilityCallId
|
|
132
|
+
model.visibilityCallId = ((_a = model.visibilityCallId) !== null && _a !== void 0 ? _a : 0) + 1;
|
|
133
|
+
const curVisibilityCallId = model.visibilityCallId;
|
|
134
|
+
let showModel = false;
|
|
135
|
+
let hideModel = false;
|
|
144
136
|
if (entry.visible) {
|
|
145
137
|
if (model.state === 'notLoaded') {
|
|
146
138
|
yield this._loadModel(model);
|
|
147
139
|
// check if this is still the latest visibility call
|
|
148
140
|
if (model.visibilityCallId === curVisibilityCallId) {
|
|
149
|
-
|
|
141
|
+
showModel = true;
|
|
150
142
|
}
|
|
151
143
|
}
|
|
152
144
|
else if (model.state === 'loading') {
|
|
153
145
|
yield this._loadModelPromises[model.name];
|
|
154
146
|
if (model.visibilityCallId === curVisibilityCallId) {
|
|
155
|
-
|
|
147
|
+
showModel = true;
|
|
156
148
|
}
|
|
157
149
|
}
|
|
158
150
|
else if (model.state === 'loaded') {
|
|
159
|
-
|
|
151
|
+
showModel = true;
|
|
160
152
|
}
|
|
161
153
|
}
|
|
162
154
|
else {
|
|
163
155
|
if (model.state === 'loading') {
|
|
164
156
|
yield this._loadModelPromises[model.name];
|
|
165
157
|
if (model.visibilityCallId === curVisibilityCallId) {
|
|
166
|
-
|
|
158
|
+
hideModel = true;
|
|
167
159
|
}
|
|
168
160
|
}
|
|
169
161
|
else if (model.state === 'inScene') {
|
|
170
|
-
|
|
162
|
+
hideModel = true;
|
|
171
163
|
}
|
|
172
164
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
165
|
+
if (showModel) {
|
|
166
|
+
yield this._prepareModelForScene(model);
|
|
167
|
+
modelsToShow.push(model);
|
|
168
|
+
}
|
|
169
|
+
else if (hideModel) {
|
|
170
|
+
modelsToHide.push(model);
|
|
171
|
+
}
|
|
172
|
+
}));
|
|
173
|
+
// model loading and preparation (e.g. create materials) is done simultaniously for all models to save time
|
|
174
|
+
// model (`ModelManager._loadModelPromises`) and material queues (`MaterialManager._createMaterialPromises`) are
|
|
175
|
+
// responsible for correct loading state handling of these instances
|
|
176
|
+
yield Promise.all(loadModelProms);
|
|
183
177
|
const returnVal = [];
|
|
184
|
-
|
|
185
|
-
|
|
178
|
+
modelsToShow.forEach(model => {
|
|
179
|
+
// show model is not async, as preparation has already been done
|
|
180
|
+
this._showModel(model, true);
|
|
181
|
+
returnVal.push({ name: model.name, visible: true });
|
|
182
|
+
});
|
|
183
|
+
modelsToHide.forEach(model => {
|
|
184
|
+
this._hideModel(model);
|
|
185
|
+
returnVal.push({ name: model.name, visible: false });
|
|
186
|
+
});
|
|
186
187
|
return returnVal;
|
|
187
188
|
});
|
|
188
189
|
}
|
|
@@ -295,7 +296,7 @@ class ModelManager {
|
|
|
295
296
|
* be useful e.g. for alterning decals.
|
|
296
297
|
*/
|
|
297
298
|
getDecalsConfigurationOfModel(name) {
|
|
298
|
-
var _a
|
|
299
|
+
var _a;
|
|
299
300
|
return __awaiter(this, void 0, void 0, function* () {
|
|
300
301
|
const model = this._getModel(name);
|
|
301
302
|
if (!model) {
|
|
@@ -313,14 +314,14 @@ class ModelManager {
|
|
|
313
314
|
if (model.state !== 'inScene') {
|
|
314
315
|
yield this._prepareModelForScene(model);
|
|
315
316
|
}
|
|
316
|
-
return (
|
|
317
|
+
return (_a = model.decals) !== null && _a !== void 0 ? _a : [];
|
|
317
318
|
});
|
|
318
319
|
}
|
|
319
320
|
/**
|
|
320
321
|
* Get model by name
|
|
321
322
|
*/
|
|
322
323
|
_getModel(name) {
|
|
323
|
-
if (name ===
|
|
324
|
+
if (name === ModelManager.CBN_FALLBACK_MODEL_ASSET_NAME) {
|
|
324
325
|
return this._fallbackModelAsset;
|
|
325
326
|
}
|
|
326
327
|
const replacedName = ModelManager._replaceSlashes(name);
|
|
@@ -333,53 +334,12 @@ class ModelManager {
|
|
|
333
334
|
_loadModel(model) {
|
|
334
335
|
return __awaiter(this, void 0, void 0, function* () {
|
|
335
336
|
const loadModelPromise = () => __awaiter(this, void 0, void 0, function* () {
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
const curEnvIntensity = this.viewer.scene.environmentIntensity;
|
|
339
|
-
// CB-9240: Babylon.js doesn't recognize gzipped babylon files (`.babylon.gz`) as such, leading to a warning
|
|
340
|
-
// message, therefore we overwrite the plugin extension actively for such files
|
|
341
|
-
let pluginExtension;
|
|
342
|
-
try {
|
|
343
|
-
// URL constructor can throw for "valid" URL, which happened to be the case for the test asset environment where
|
|
344
|
-
// the urls are relative (starting with ".")
|
|
345
|
-
const urlObj = new URL(model.url);
|
|
346
|
-
if (urlObj.pathname.endsWith('.babylon.gz')) {
|
|
347
|
-
pluginExtension = '.babylon';
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
catch (e) { }
|
|
351
|
-
let assetContainer;
|
|
352
|
-
try {
|
|
353
|
-
const fullContainer = (yield index_1.SceneLoader.LoadAssetContainerAsync('', model.url, this.viewer.scene, undefined, pluginExtension));
|
|
354
|
-
// crop and store custom cbn data from .babylon file
|
|
355
|
-
model.cbnBabylonFileData = fullContainer.cbnData;
|
|
356
|
-
delete fullContainer.cbnData;
|
|
357
|
-
// from here it's a basic asset container again
|
|
358
|
-
assetContainer = fullContainer;
|
|
359
|
-
}
|
|
360
|
-
catch (e) {
|
|
361
|
-
throw new index_1.ViewerError({
|
|
362
|
-
id: index_1.ViewerErrorIds.AssetLoadingFailed,
|
|
363
|
-
message: e.message,
|
|
364
|
-
});
|
|
365
|
-
}
|
|
337
|
+
const { cbnData } = yield (0, asset_helper_1.loadAsset)(model, this.viewer);
|
|
338
|
+
model.decals = cbnData === null || cbnData === void 0 ? void 0 : cbnData.decals;
|
|
366
339
|
// remove all lights and cameras from the asset, as this data should be handled globally in the scene instead of
|
|
367
340
|
// being in a model context
|
|
368
|
-
[...assetContainer.lights].forEach(light => light.dispose());
|
|
369
|
-
[...assetContainer.cameras].forEach(camera => camera.dispose());
|
|
370
|
-
// materials should be a "global" thing and not assigned to an asset container
|
|
371
|
-
// this is not relevant in most of the cases, since materials are cropped from babylon models on the CBN server
|
|
372
|
-
// anyway
|
|
373
|
-
assetContainer.materials.forEach(material => {
|
|
374
|
-
this.viewer.scene.addMaterial(material);
|
|
375
|
-
material._parentContainer = null;
|
|
376
|
-
});
|
|
377
|
-
assetContainer.materials = [];
|
|
378
|
-
// environment texture and intensity has been overwritten by load asset container function
|
|
379
|
-
this.viewer.scene.environmentTexture = curEnvTexture;
|
|
380
|
-
this.viewer.scene.environmentIntensity = curEnvIntensity;
|
|
381
|
-
model.assetContainer = assetContainer;
|
|
382
|
-
model.state = 'loaded';
|
|
341
|
+
[...model.assetContainer.lights].forEach(light => light.dispose());
|
|
342
|
+
[...model.assetContainer.cameras].forEach(camera => camera.dispose());
|
|
383
343
|
delete this._loadModelPromises[model.name];
|
|
384
344
|
});
|
|
385
345
|
this._loadModelPromises[model.name] = loadModelPromise();
|
|
@@ -401,10 +361,7 @@ class ModelManager {
|
|
|
401
361
|
const sourceModel = this._getModel(model.sourceModelName);
|
|
402
362
|
yield this._prepareModelForScene(sourceModel);
|
|
403
363
|
}
|
|
404
|
-
yield
|
|
405
|
-
// parameter manager did his job, now apply the deferred materials to all meshes that are not explicitely hidden by
|
|
406
|
-
// the parameter manager
|
|
407
|
-
yield this._applyDeferredMaterialsForAllVisibleMeshes(model);
|
|
364
|
+
yield (0, asset_helper_1.prepareAssetForScene)(model, this.viewer);
|
|
408
365
|
});
|
|
409
366
|
}
|
|
410
367
|
/**
|
|
@@ -430,22 +387,6 @@ class ModelManager {
|
|
|
430
387
|
model.assetContainer.removeFromScene();
|
|
431
388
|
model.state = 'loaded';
|
|
432
389
|
}
|
|
433
|
-
/**
|
|
434
|
-
* Creates and assigns each "deferred" material to the corresponding mesh, if the mesh is visible.
|
|
435
|
-
* Model should be ready to use immediately after this function has done it's job.
|
|
436
|
-
*/
|
|
437
|
-
_applyDeferredMaterialsForAllVisibleMeshes(model) {
|
|
438
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
439
|
-
for (const mesh of model.assetContainer.meshes) {
|
|
440
|
-
const deferredMaterial = (0, metadata_helper_1.getInternalMetadataValue)(mesh, 'deferredMaterial');
|
|
441
|
-
const rawVisibleValue = this.viewer.parameterManager.getParameterValueOfNode(mesh, index_1.BuiltInParameter.Visible);
|
|
442
|
-
const visible = rawVisibleValue === undefined || index_1.ParameterManager.parseBoolean(rawVisibleValue) === true;
|
|
443
|
-
if (deferredMaterial && visible) {
|
|
444
|
-
yield this.viewer.materialManager.setMaterialOnMesh(deferredMaterial, mesh);
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
});
|
|
448
|
-
}
|
|
449
390
|
}
|
|
450
391
|
exports.ModelManager = ModelManager;
|
|
451
392
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-manager.js","sourceRoot":"","sources":["../../../src/manager/model-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model-manager.js","sourceRoot":"","sources":["../../../src/manager/model-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -124,6 +124,7 @@ export declare class ParameterManager {
|
|
|
124
124
|
protected _parameterObserver: {
|
|
125
125
|
[parameterName: ParameterName]: ParameterObserver;
|
|
126
126
|
};
|
|
127
|
+
/** @internal */
|
|
127
128
|
constructor(viewer: Viewer);
|
|
128
129
|
/**
|
|
129
130
|
* Set parameter value for a certain node and calls the corresponding observer if the value has changed
|
|
@@ -190,20 +191,13 @@ export declare class ParameterManager {
|
|
|
190
191
|
*/
|
|
191
192
|
applyTextureSettingsParameter(material: PBRMaterial, channel: ParameterTextureChannelsKeys): Promise<void>;
|
|
192
193
|
/**
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
*
|
|
196
|
-
* @internal
|
|
197
|
-
*/
|
|
198
|
-
getParameterValueOfNode(node: TransformNode, parameterName: string): ParameterValue | undefined;
|
|
199
|
-
/**
|
|
200
|
-
* @returns Desired parameter value of a certain material.
|
|
201
|
-
* Tags are considered as well but have lower priority than material parameters, as these are more specific.
|
|
202
|
-
* Unused ATM, but added for consistency as counter part for {@link getParameterValueOfNode}
|
|
194
|
+
* Retrieves visibility state of node, considering pending parameter values and node hierarchy.\
|
|
195
|
+
* `node.isEnabled()` alone is insufficient here, as visibility observers for the desired node or one of it's parents
|
|
196
|
+
* may be called in the same cycle, overwriting the visibility state again.
|
|
203
197
|
*
|
|
204
198
|
* @internal
|
|
205
199
|
*/
|
|
206
|
-
|
|
200
|
+
getNestedVisibilityParameterValueOfNode(node: TransformNode): boolean;
|
|
207
201
|
/**
|
|
208
202
|
* Parameter observer implementation of default parameters
|
|
209
203
|
*/
|
|
@@ -233,5 +227,16 @@ export declare class ParameterManager {
|
|
|
233
227
|
protected _getAffectedNodes(subject: ParameterSubject, assetContainer?: IAssetContainer): TransformNode[];
|
|
234
228
|
protected _getEntry(subject: ParameterSubject, parameterName: ParameterName): ParameterEntry | undefined;
|
|
235
229
|
protected _getEntriesOfSubject(subject: ParameterSubject): ParameterEntry[];
|
|
230
|
+
/**
|
|
231
|
+
* @returns Desired parameter value of a certain node.\
|
|
232
|
+
* Tags are considered as well but have lower priority than node parameters, as these are more specific.
|
|
233
|
+
*/
|
|
234
|
+
protected _getParameterValueOfNode(node: TransformNode, parameterName: string): ParameterValue | undefined;
|
|
235
|
+
/**
|
|
236
|
+
* @returns Desired parameter value of a certain material.\
|
|
237
|
+
* Tags are considered as well but have lower priority than material parameters, as these are more specific.\
|
|
238
|
+
* Unused ATM, but added for consistency as counter part for {@link _getParameterValueOfNode}
|
|
239
|
+
*/
|
|
240
|
+
protected _getParameterValueOfMaterial(material: Material, parameterName: string): ParameterValue | undefined;
|
|
236
241
|
}
|
|
237
242
|
export {};
|
|
@@ -45,6 +45,7 @@ const isTagParameterSubject = (subject) => 'tagName' in subject && !!subject.tag
|
|
|
45
45
|
const isNodeParameterSubject = (subject) => 'nodeName' in subject && !!subject.nodeName;
|
|
46
46
|
const isMaterialParameterSubject = (subject) => 'materialName' in subject && !!subject.materialName;
|
|
47
47
|
class ParameterManager {
|
|
48
|
+
/** @internal */
|
|
48
49
|
constructor(viewer) {
|
|
49
50
|
this.viewer = viewer;
|
|
50
51
|
this._parameterEntries = [];
|
|
@@ -340,44 +341,25 @@ class ParameterManager {
|
|
|
340
341
|
});
|
|
341
342
|
}
|
|
342
343
|
/**
|
|
343
|
-
*
|
|
344
|
-
*
|
|
344
|
+
* Retrieves visibility state of node, considering pending parameter values and node hierarchy.\
|
|
345
|
+
* `node.isEnabled()` alone is insufficient here, as visibility observers for the desired node or one of it's parents
|
|
346
|
+
* may be called in the same cycle, overwriting the visibility state again.
|
|
345
347
|
*
|
|
346
348
|
* @internal
|
|
347
349
|
*/
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
// priority
|
|
358
|
-
const tagParamValue = this.getParameterValue({ tagName: curTag }, parameterName);
|
|
359
|
-
return accValue !== null && accValue !== void 0 ? accValue : tagParamValue;
|
|
360
|
-
}, undefined);
|
|
361
|
-
return tagParamValue;
|
|
362
|
-
}
|
|
363
|
-
/**
|
|
364
|
-
* @returns Desired parameter value of a certain material.
|
|
365
|
-
* Tags are considered as well but have lower priority than material parameters, as these are more specific.
|
|
366
|
-
* Unused ATM, but added for consistency as counter part for {@link getParameterValueOfNode}
|
|
367
|
-
*
|
|
368
|
-
* @internal
|
|
369
|
-
*/
|
|
370
|
-
getParameterValueOfMaterial(material, parameterName) {
|
|
371
|
-
const materialParamValue = this.getParameterValue({ materialName: material.name }, parameterName);
|
|
372
|
-
if (materialParamValue !== undefined) {
|
|
373
|
-
return materialParamValue;
|
|
350
|
+
getNestedVisibilityParameterValueOfNode(node) {
|
|
351
|
+
let curNode = node;
|
|
352
|
+
let visibleByParameter = undefined;
|
|
353
|
+
while (curNode && visibleByParameter !== false) {
|
|
354
|
+
const curNodeVisibleByParameter = this._getParameterValueOfNode(curNode, exports.BuiltInParameter.Visible);
|
|
355
|
+
if (curNodeVisibleByParameter !== undefined) {
|
|
356
|
+
visibleByParameter = curNodeVisibleByParameter;
|
|
357
|
+
}
|
|
358
|
+
curNode = curNode.parent;
|
|
374
359
|
}
|
|
375
|
-
|
|
376
|
-
const
|
|
377
|
-
|
|
378
|
-
return accValue !== null && accValue !== void 0 ? accValue : tagParamValue;
|
|
379
|
-
}, undefined);
|
|
380
|
-
return tagParamValue;
|
|
360
|
+
// check state of nested visibility parameter value and fall back to basic node enabled state
|
|
361
|
+
const visible = visibleByParameter !== undefined ? ParameterManager.parseBoolean(visibleByParameter) : node.isEnabled();
|
|
362
|
+
return visible;
|
|
381
363
|
}
|
|
382
364
|
/**
|
|
383
365
|
* Parameter observer implementation of default parameters
|
|
@@ -385,57 +367,50 @@ class ParameterManager {
|
|
|
385
367
|
_addBuiltInParameterObservers() {
|
|
386
368
|
this.setParameterObserver(exports.BuiltInParameter.Visible, ({ nodes, newValue }) => __awaiter(this, void 0, void 0, function* () {
|
|
387
369
|
const visible = ParameterManager.parseBoolean(newValue);
|
|
388
|
-
|
|
389
|
-
|
|
370
|
+
const observerProms = nodes.map((node) => __awaiter(this, void 0, void 0, function* () {
|
|
371
|
+
const visibleNested = this.getNestedVisibilityParameterValueOfNode(node);
|
|
372
|
+
if (visibleNested) {
|
|
390
373
|
// if a mesh gets visible by this operation we have to activate the assigned material which is stored in the
|
|
391
374
|
// internal metadata
|
|
392
375
|
// => consider child meshes as well (CB-10143)
|
|
393
376
|
const activatedNodes = [node, ...node.getChildMeshes(false)];
|
|
394
|
-
|
|
395
|
-
const
|
|
396
|
-
|
|
397
|
-
|
|
377
|
+
const setMaterialProms = activatedNodes.map((an) => __awaiter(this, void 0, void 0, function* () {
|
|
378
|
+
const anVisibleNested = this.getNestedVisibilityParameterValueOfNode(an);
|
|
379
|
+
const anDeferredMaterial = (0, metadata_helper_1.getInternalMetadataValue)(an, 'deferredMaterial');
|
|
380
|
+
// skip applying material if it's already set via the parameter
|
|
381
|
+
const anMaterialParamValue = this._getParameterValueOfNode(an, exports.BuiltInParameter.Material);
|
|
382
|
+
if (anVisibleNested && anDeferredMaterial && !anMaterialParamValue) {
|
|
383
|
+
yield this.viewer.materialManager.setMaterialOnMesh(anDeferredMaterial,
|
|
398
384
|
// this cast is fine, as deferred material can only be set on meshes
|
|
399
|
-
|
|
385
|
+
an);
|
|
400
386
|
}
|
|
401
|
-
}
|
|
402
|
-
|
|
387
|
+
}));
|
|
388
|
+
yield Promise.all(setMaterialProms);
|
|
403
389
|
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
390
|
+
// set enabled state anyway
|
|
391
|
+
node.setEnabled(visible);
|
|
392
|
+
}));
|
|
393
|
+
yield Promise.all(observerProms);
|
|
408
394
|
}));
|
|
409
395
|
this.setParameterObserver(exports.BuiltInParameter.Material, ({ nodes, newValue }) => __awaiter(this, void 0, void 0, function* () {
|
|
410
396
|
const material = ParameterManager.parseString(newValue);
|
|
411
|
-
|
|
397
|
+
const observerProms = nodes.map((node) => __awaiter(this, void 0, void 0, function* () {
|
|
412
398
|
if (!(node instanceof index_1.AbstractMesh)) {
|
|
413
399
|
throw new index_1.ViewerError({
|
|
414
400
|
id: index_1.ViewerErrorIds.InvalidParameterSubject,
|
|
415
401
|
message: `Material can't be set, as the target node "${node.name}" is not a mesh`,
|
|
416
402
|
});
|
|
417
403
|
}
|
|
418
|
-
//
|
|
419
|
-
|
|
420
|
-
// we have to go through all parents as well, because a parent may have been set to false, which also disables
|
|
421
|
-
// this child node
|
|
422
|
-
let curNode = node;
|
|
423
|
-
let visibleByParameter = undefined;
|
|
424
|
-
while (curNode && visibleByParameter !== false) {
|
|
425
|
-
const curNodeVisibleByParameter = this.getParameterValueOfNode(curNode, exports.BuiltInParameter.Visible);
|
|
426
|
-
if (curNodeVisibleByParameter !== undefined) {
|
|
427
|
-
visibleByParameter = curNodeVisibleByParameter;
|
|
428
|
-
}
|
|
429
|
-
curNode = curNode.parent;
|
|
430
|
-
}
|
|
431
|
-
const visible = visibleByParameter !== undefined ? ParameterManager.parseBoolean(visibleByParameter) : node.isEnabled();
|
|
404
|
+
// only set material if the mesh is visible, or gets visible by the parameter update
|
|
405
|
+
const visible = this.getNestedVisibilityParameterValueOfNode(node);
|
|
432
406
|
if (visible) {
|
|
433
407
|
yield this.viewer.materialManager.setMaterialOnMesh(material, node);
|
|
434
408
|
}
|
|
435
409
|
else {
|
|
436
410
|
(0, metadata_helper_1.setInternalMetadataValue)(node, 'deferredMaterial', material);
|
|
437
411
|
}
|
|
438
|
-
}
|
|
412
|
+
}));
|
|
413
|
+
yield Promise.all(observerProms);
|
|
439
414
|
}));
|
|
440
415
|
this.setParameterObserver(exports.BuiltInParameter.Position, ({ nodes, newValue }) => __awaiter(this, void 0, void 0, function* () {
|
|
441
416
|
const position = ParameterManager.parseVector(newValue);
|
|
@@ -561,12 +536,10 @@ class ParameterManager {
|
|
|
561
536
|
return __awaiter(this, void 0, void 0, function* () {
|
|
562
537
|
const tagParamEntries = parameterEntries.filter(entry => isTagParameterSubject(entry.subject));
|
|
563
538
|
const nonTagParamEntries = parameterEntries.filter(entry => !isTagParameterSubject(entry.subject));
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
yield this._applyParameterValue(entry.subject, entry.parameterName, assetContainer);
|
|
569
|
-
}
|
|
539
|
+
const tagParamProms = tagParamEntries.map(entry => this._applyParameterValue(entry.subject, entry.parameterName, assetContainer));
|
|
540
|
+
yield Promise.all(tagParamProms);
|
|
541
|
+
const nonTagParamProms = nonTagParamEntries.map(entry => this._applyParameterValue(entry.subject, entry.parameterName, assetContainer));
|
|
542
|
+
yield Promise.all(nonTagParamProms);
|
|
570
543
|
});
|
|
571
544
|
}
|
|
572
545
|
/**
|
|
@@ -644,6 +617,42 @@ class ParameterManager {
|
|
|
644
617
|
});
|
|
645
618
|
return entries;
|
|
646
619
|
}
|
|
620
|
+
/**
|
|
621
|
+
* @returns Desired parameter value of a certain node.\
|
|
622
|
+
* Tags are considered as well but have lower priority than node parameters, as these are more specific.
|
|
623
|
+
*/
|
|
624
|
+
_getParameterValueOfNode(node, parameterName) {
|
|
625
|
+
const nodeParamValue = this.getParameterValue({ nodeName: node.name }, parameterName);
|
|
626
|
+
if (nodeParamValue !== undefined) {
|
|
627
|
+
return nodeParamValue;
|
|
628
|
+
}
|
|
629
|
+
const tags = (0, tags_helper_1.getTagsAsStrArr)(node);
|
|
630
|
+
const tagParamValue = tags.reduce((accValue, curTag) => {
|
|
631
|
+
// NOTE: it is possible that values are available for multiple tags
|
|
632
|
+
// in this case the resulting parameter value is quite "random" as the last tag in the tag string of the node has
|
|
633
|
+
// priority
|
|
634
|
+
const tagParamValue = this.getParameterValue({ tagName: curTag }, parameterName);
|
|
635
|
+
return accValue !== null && accValue !== void 0 ? accValue : tagParamValue;
|
|
636
|
+
}, undefined);
|
|
637
|
+
return tagParamValue;
|
|
638
|
+
}
|
|
639
|
+
/**
|
|
640
|
+
* @returns Desired parameter value of a certain material.\
|
|
641
|
+
* Tags are considered as well but have lower priority than material parameters, as these are more specific.\
|
|
642
|
+
* Unused ATM, but added for consistency as counter part for {@link _getParameterValueOfNode}
|
|
643
|
+
*/
|
|
644
|
+
_getParameterValueOfMaterial(material, parameterName) {
|
|
645
|
+
const materialParamValue = this.getParameterValue({ materialName: material.name }, parameterName);
|
|
646
|
+
if (materialParamValue !== undefined) {
|
|
647
|
+
return materialParamValue;
|
|
648
|
+
}
|
|
649
|
+
const tags = (0, tags_helper_1.getTagsAsStrArr)(material);
|
|
650
|
+
const tagParamValue = tags.reduce((accValue, curTag) => {
|
|
651
|
+
const tagParamValue = this.getParameterValue({ tagName: curTag }, parameterName);
|
|
652
|
+
return accValue !== null && accValue !== void 0 ? accValue : tagParamValue;
|
|
653
|
+
}, undefined);
|
|
654
|
+
return tagParamValue;
|
|
655
|
+
}
|
|
647
656
|
}
|
|
648
657
|
exports.ParameterManager = ParameterManager;
|
|
649
658
|
//# sourceMappingURL=parameter-manager.js.map
|