@combeenation/3d-viewer 12.4.1 → 13.0.0
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 +63 -63
- package/dist/lib-cjs/index.js +81 -114
- package/dist/lib-cjs/index.js.map +1 -1
- package/dist/lib-cjs/internal/cbnCustomBabylonLoaderPlugin.d.ts +10 -0
- package/dist/lib-cjs/internal/cbnCustomBabylonLoaderPlugin.js +124 -0
- package/dist/lib-cjs/internal/cbnCustomBabylonLoaderPlugin.js.map +1 -0
- package/dist/lib-cjs/internal/cloningHelper.d.ts +19 -0
- package/dist/lib-cjs/internal/cloningHelper.js +165 -0
- package/dist/lib-cjs/internal/cloningHelper.js.map +1 -0
- package/dist/lib-cjs/internal/deviceHelper.d.ts +9 -0
- package/dist/lib-cjs/{api/util → internal}/deviceHelper.js +6 -10
- package/dist/lib-cjs/internal/deviceHelper.js.map +1 -0
- package/dist/lib-cjs/internal/geometryHelper.d.ts +21 -0
- package/dist/lib-cjs/{api/util → internal}/geometryHelper.js +57 -24
- package/dist/lib-cjs/internal/geometryHelper.js.map +1 -0
- package/dist/lib-cjs/internal/metadataHelper.d.ts +26 -0
- package/dist/lib-cjs/internal/metadataHelper.js +51 -0
- package/dist/lib-cjs/internal/metadataHelper.js.map +1 -0
- package/dist/lib-cjs/internal/paintableHelper.d.ts +40 -0
- package/dist/lib-cjs/internal/paintableHelper.js +287 -0
- package/dist/lib-cjs/internal/paintableHelper.js.map +1 -0
- package/dist/lib-cjs/internal/tagsHelper.d.ts +12 -0
- package/dist/lib-cjs/internal/tagsHelper.js +38 -0
- package/dist/lib-cjs/internal/tagsHelper.js.map +1 -0
- package/dist/lib-cjs/manager/cameraManager.d.ts +51 -0
- package/dist/lib-cjs/manager/cameraManager.js +154 -0
- package/dist/lib-cjs/manager/cameraManager.js.map +1 -0
- package/dist/lib-cjs/manager/debugManager.d.ts +60 -0
- package/dist/lib-cjs/manager/debugManager.js +218 -0
- package/dist/lib-cjs/manager/debugManager.js.map +1 -0
- package/dist/lib-cjs/manager/eventManager.d.ts +52 -0
- package/dist/lib-cjs/manager/eventManager.js +72 -0
- package/dist/lib-cjs/manager/eventManager.js.map +1 -0
- package/dist/lib-cjs/{api/manager → manager}/gltfExportManager.d.ts +29 -34
- package/dist/lib-cjs/{api/manager → manager}/gltfExportManager.js +99 -120
- package/dist/lib-cjs/manager/gltfExportManager.js.map +1 -0
- package/dist/lib-cjs/manager/materialManager.d.ts +35 -0
- package/dist/lib-cjs/manager/materialManager.js +126 -0
- package/dist/lib-cjs/manager/materialManager.js.map +1 -0
- package/dist/lib-cjs/manager/modelManager.d.ts +145 -0
- package/dist/lib-cjs/manager/modelManager.js +381 -0
- package/dist/lib-cjs/manager/modelManager.js.map +1 -0
- package/dist/lib-cjs/manager/parameterManager.d.ts +210 -0
- package/dist/lib-cjs/manager/parameterManager.js +515 -0
- package/dist/lib-cjs/manager/parameterManager.js.map +1 -0
- package/dist/lib-cjs/manager/sceneManager.d.ts +45 -0
- package/dist/lib-cjs/manager/sceneManager.js +65 -0
- package/dist/lib-cjs/manager/sceneManager.js.map +1 -0
- package/dist/lib-cjs/manager/screenshotManager.d.ts +36 -0
- package/dist/lib-cjs/manager/screenshotManager.js +40 -0
- package/dist/lib-cjs/manager/screenshotManager.js.map +1 -0
- package/dist/lib-cjs/manager/textureManager.d.ts +12 -0
- package/dist/lib-cjs/manager/textureManager.js +44 -0
- package/dist/lib-cjs/manager/textureManager.js.map +1 -0
- package/dist/lib-cjs/viewer.d.ts +117 -0
- package/dist/lib-cjs/viewer.js +222 -0
- package/dist/lib-cjs/viewer.js.map +1 -0
- package/dist/lib-cjs/{api/classes/viewerError.d.ts → viewerError.d.ts} +6 -1
- package/dist/lib-cjs/{api/classes/viewerError.js → viewerError.js} +6 -1
- package/dist/lib-cjs/viewerError.js.map +1 -0
- package/package.json +10 -11
- package/src/dev.ts +14 -37
- package/src/{types.d.ts → globalTypes.d.ts} +8 -18
- package/src/index.ts +79 -113
- package/src/internal/cbnCustomBabylonLoaderPlugin.ts +149 -0
- package/src/internal/cloningHelper.ts +225 -0
- package/src/internal/deviceHelper.ts +25 -0
- package/src/{api/util → internal}/geometryHelper.ts +63 -24
- package/src/internal/metadataHelper.ts +63 -0
- package/src/internal/paintableHelper.ts +310 -0
- package/src/internal/tagsHelper.ts +41 -0
- package/src/manager/cameraManager.ts +236 -0
- package/src/manager/debugManager.ts +245 -0
- package/src/manager/eventManager.ts +72 -0
- package/src/{api/manager → manager}/gltfExportManager.ts +132 -125
- package/src/manager/materialManager.ts +135 -0
- package/src/manager/modelManager.ts +456 -0
- package/src/manager/parameterManager.ts +652 -0
- package/src/manager/sceneManager.ts +101 -0
- package/src/manager/screenshotManager.ts +59 -0
- package/src/manager/textureManager.ts +32 -0
- package/src/viewer.ts +296 -0
- package/src/{api/classes/viewerError.ts → viewerError.ts} +6 -1
- package/dist/lib-cjs/api/classes/animationInterface.d.ts +0 -8
- package/dist/lib-cjs/api/classes/animationInterface.js +0 -3
- package/dist/lib-cjs/api/classes/animationInterface.js.map +0 -1
- package/dist/lib-cjs/api/classes/dottedPath.d.ts +0 -79
- package/dist/lib-cjs/api/classes/dottedPath.js +0 -167
- package/dist/lib-cjs/api/classes/dottedPath.js.map +0 -1
- package/dist/lib-cjs/api/classes/element.d.ts +0 -153
- package/dist/lib-cjs/api/classes/element.js +0 -703
- package/dist/lib-cjs/api/classes/element.js.map +0 -1
- package/dist/lib-cjs/api/classes/event.d.ts +0 -401
- package/dist/lib-cjs/api/classes/event.js +0 -425
- package/dist/lib-cjs/api/classes/event.js.map +0 -1
- package/dist/lib-cjs/api/classes/eventBroadcaster.d.ts +0 -26
- package/dist/lib-cjs/api/classes/eventBroadcaster.js +0 -50
- package/dist/lib-cjs/api/classes/eventBroadcaster.js.map +0 -1
- package/dist/lib-cjs/api/classes/fuzzyMap.d.ts +0 -7
- package/dist/lib-cjs/api/classes/fuzzyMap.js +0 -22
- package/dist/lib-cjs/api/classes/fuzzyMap.js.map +0 -1
- package/dist/lib-cjs/api/classes/parameter.d.ts +0 -410
- package/dist/lib-cjs/api/classes/parameter.js +0 -643
- package/dist/lib-cjs/api/classes/parameter.js.map +0 -1
- package/dist/lib-cjs/api/classes/parameterObservable.d.ts +0 -36
- package/dist/lib-cjs/api/classes/parameterObservable.js +0 -73
- package/dist/lib-cjs/api/classes/parameterObservable.js.map +0 -1
- package/dist/lib-cjs/api/classes/parameterizable.d.ts +0 -15
- package/dist/lib-cjs/api/classes/parameterizable.js +0 -103
- package/dist/lib-cjs/api/classes/parameterizable.js.map +0 -1
- package/dist/lib-cjs/api/classes/placementAnimation.d.ts +0 -45
- package/dist/lib-cjs/api/classes/placementAnimation.js +0 -177
- package/dist/lib-cjs/api/classes/placementAnimation.js.map +0 -1
- package/dist/lib-cjs/api/classes/variant.d.ts +0 -261
- package/dist/lib-cjs/api/classes/variant.js +0 -873
- package/dist/lib-cjs/api/classes/variant.js.map +0 -1
- package/dist/lib-cjs/api/classes/variantInstance.d.ts +0 -53
- package/dist/lib-cjs/api/classes/variantInstance.js +0 -126
- package/dist/lib-cjs/api/classes/variantInstance.js.map +0 -1
- package/dist/lib-cjs/api/classes/variantParameterizable.d.ts +0 -17
- package/dist/lib-cjs/api/classes/variantParameterizable.js +0 -87
- package/dist/lib-cjs/api/classes/variantParameterizable.js.map +0 -1
- package/dist/lib-cjs/api/classes/viewer.d.ts +0 -215
- package/dist/lib-cjs/api/classes/viewer.js +0 -709
- package/dist/lib-cjs/api/classes/viewer.js.map +0 -1
- package/dist/lib-cjs/api/classes/viewerError.js.map +0 -1
- package/dist/lib-cjs/api/classes/viewerLight.d.ts +0 -66
- package/dist/lib-cjs/api/classes/viewerLight.js +0 -345
- package/dist/lib-cjs/api/classes/viewerLight.js.map +0 -1
- package/dist/lib-cjs/api/internal/lensRendering.d.ts +0 -8
- package/dist/lib-cjs/api/internal/lensRendering.js +0 -12
- package/dist/lib-cjs/api/internal/lensRendering.js.map +0 -1
- package/dist/lib-cjs/api/internal/sceneSetup.d.ts +0 -13
- package/dist/lib-cjs/api/internal/sceneSetup.js +0 -228
- package/dist/lib-cjs/api/internal/sceneSetup.js.map +0 -1
- package/dist/lib-cjs/api/manager/animationManager.d.ts +0 -30
- package/dist/lib-cjs/api/manager/animationManager.js +0 -127
- package/dist/lib-cjs/api/manager/animationManager.js.map +0 -1
- package/dist/lib-cjs/api/manager/gltfExportManager.js.map +0 -1
- package/dist/lib-cjs/api/manager/sceneManager.d.ts +0 -33
- package/dist/lib-cjs/api/manager/sceneManager.js +0 -129
- package/dist/lib-cjs/api/manager/sceneManager.js.map +0 -1
- package/dist/lib-cjs/api/manager/tagManager.d.ts +0 -118
- package/dist/lib-cjs/api/manager/tagManager.js +0 -531
- package/dist/lib-cjs/api/manager/tagManager.js.map +0 -1
- package/dist/lib-cjs/api/manager/textureLoadManager.d.ts +0 -22
- package/dist/lib-cjs/api/manager/textureLoadManager.js +0 -108
- package/dist/lib-cjs/api/manager/textureLoadManager.js.map +0 -1
- package/dist/lib-cjs/api/manager/variantInstanceManager.d.ts +0 -106
- package/dist/lib-cjs/api/manager/variantInstanceManager.js +0 -291
- package/dist/lib-cjs/api/manager/variantInstanceManager.js.map +0 -1
- package/dist/lib-cjs/api/store/specStorage.d.ts +0 -32
- package/dist/lib-cjs/api/store/specStorage.js +0 -66
- package/dist/lib-cjs/api/store/specStorage.js.map +0 -1
- package/dist/lib-cjs/api/util/babylonHelper.d.ts +0 -238
- package/dist/lib-cjs/api/util/babylonHelper.js +0 -826
- package/dist/lib-cjs/api/util/babylonHelper.js.map +0 -1
- package/dist/lib-cjs/api/util/debugHelper.d.ts +0 -9
- package/dist/lib-cjs/api/util/debugHelper.js +0 -94
- package/dist/lib-cjs/api/util/debugHelper.js.map +0 -1
- package/dist/lib-cjs/api/util/deviceHelper.d.ts +0 -9
- package/dist/lib-cjs/api/util/deviceHelper.js.map +0 -1
- package/dist/lib-cjs/api/util/geometryHelper.d.ts +0 -17
- package/dist/lib-cjs/api/util/geometryHelper.js.map +0 -1
- package/dist/lib-cjs/api/util/globalTypes.d.ts +0 -490
- package/dist/lib-cjs/api/util/globalTypes.js +0 -2
- package/dist/lib-cjs/api/util/globalTypes.js.map +0 -1
- package/dist/lib-cjs/api/util/resourceHelper.d.ts +0 -58
- package/dist/lib-cjs/api/util/resourceHelper.js +0 -215
- package/dist/lib-cjs/api/util/resourceHelper.js.map +0 -1
- package/dist/lib-cjs/api/util/sceneLoaderHelper.d.ts +0 -58
- package/dist/lib-cjs/api/util/sceneLoaderHelper.js +0 -229
- package/dist/lib-cjs/api/util/sceneLoaderHelper.js.map +0 -1
- package/dist/lib-cjs/api/util/stringHelper.d.ts +0 -13
- package/dist/lib-cjs/api/util/stringHelper.js +0 -33
- package/dist/lib-cjs/api/util/stringHelper.js.map +0 -1
- package/dist/lib-cjs/api/util/structureHelper.d.ts +0 -9
- package/dist/lib-cjs/api/util/structureHelper.js +0 -58
- package/dist/lib-cjs/api/util/structureHelper.js.map +0 -1
- package/src/api/classes/animationInterface.ts +0 -10
- package/src/api/classes/dottedPath.ts +0 -181
- package/src/api/classes/element.ts +0 -766
- package/src/api/classes/event.ts +0 -457
- package/src/api/classes/eventBroadcaster.ts +0 -52
- package/src/api/classes/fuzzyMap.ts +0 -21
- package/src/api/classes/parameter.ts +0 -686
- package/src/api/classes/parameterObservable.ts +0 -73
- package/src/api/classes/parameterizable.ts +0 -87
- package/src/api/classes/placementAnimation.ts +0 -162
- package/src/api/classes/variant.ts +0 -965
- package/src/api/classes/variantInstance.ts +0 -123
- package/src/api/classes/variantParameterizable.ts +0 -83
- package/src/api/classes/viewer.ts +0 -751
- package/src/api/classes/viewerLight.ts +0 -335
- package/src/api/internal/debugViewer.ts +0 -90
- package/src/api/internal/lensRendering.ts +0 -9
- package/src/api/internal/sceneSetup.ts +0 -208
- package/src/api/manager/animationManager.ts +0 -143
- package/src/api/manager/sceneManager.ts +0 -134
- package/src/api/manager/tagManager.ts +0 -572
- package/src/api/manager/textureLoadManager.ts +0 -107
- package/src/api/manager/variantInstanceManager.ts +0 -306
- package/src/api/store/specStorage.ts +0 -68
- package/src/api/util/babylonHelper.ts +0 -915
- package/src/api/util/debugHelper.ts +0 -121
- package/src/api/util/deviceHelper.ts +0 -31
- package/src/api/util/globalTypes.ts +0 -566
- package/src/api/util/resourceHelper.ts +0 -201
- package/src/api/util/sceneLoaderHelper.ts +0 -247
- package/src/api/util/stringHelper.ts +0 -30
- package/src/api/util/structureHelper.ts +0 -62
|
@@ -0,0 +1,515 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ParameterManager = exports.BuiltInParameter = void 0;
|
|
13
|
+
const index_1 = require("../index");
|
|
14
|
+
const metadataHelper_1 = require("../internal/metadataHelper");
|
|
15
|
+
const paintableHelper_1 = require("../internal/paintableHelper");
|
|
16
|
+
const tagsHelper_1 = require("../internal/tagsHelper");
|
|
17
|
+
const lodash_es_1 = require("lodash-es");
|
|
18
|
+
/**
|
|
19
|
+
* Parameters with a built in observer implementation
|
|
20
|
+
*/
|
|
21
|
+
exports.BuiltInParameter = {
|
|
22
|
+
Visible: 'visible',
|
|
23
|
+
Material: 'material',
|
|
24
|
+
Position: 'position',
|
|
25
|
+
Rotation: 'rotation',
|
|
26
|
+
Scaling: 'scaling',
|
|
27
|
+
Color: 'color',
|
|
28
|
+
Roughness: 'roughness',
|
|
29
|
+
Metallic: 'metallic',
|
|
30
|
+
Paintable: 'paintable',
|
|
31
|
+
};
|
|
32
|
+
const isTagParameterSubject = (subject) => 'tagName' in subject && !!subject.tagName;
|
|
33
|
+
const isNodeParameterSubject = (subject) => 'nodeName' in subject && !!subject.nodeName;
|
|
34
|
+
const isMaterialParameterSubject = (subject) => 'materialName' in subject && !!subject.materialName;
|
|
35
|
+
class ParameterManager {
|
|
36
|
+
constructor(viewer) {
|
|
37
|
+
this.viewer = viewer;
|
|
38
|
+
this._parameterEntries = [];
|
|
39
|
+
this._parameterObserver = {};
|
|
40
|
+
this._addBuiltInParameterObservers();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Parses and converts input to a boolean value, valid values are:
|
|
44
|
+
* - true / false
|
|
45
|
+
* - 1 / 0
|
|
46
|
+
*/
|
|
47
|
+
static parseBoolean(value) {
|
|
48
|
+
if (value.toString() === 'true' || value.toString() === '1') {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
else if (value.toString() === 'false' || value.toString() === '0') {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
throw new index_1.ViewerError({
|
|
55
|
+
id: index_1.ViewerErrorIds.InvalidParameterValue,
|
|
56
|
+
message: `Unable to parse "${value}" to a boolean`,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Parses and converts input to a number value
|
|
61
|
+
*/
|
|
62
|
+
static parseNumber(value) {
|
|
63
|
+
return parseFloat(value.toString());
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Parses and converts input to a string value
|
|
67
|
+
*/
|
|
68
|
+
static parseString(value) {
|
|
69
|
+
return value.toString();
|
|
70
|
+
}
|
|
71
|
+
// TODO WTT: enable setting Vector3 on the input directly
|
|
72
|
+
/**
|
|
73
|
+
* Parses a string of format "(x,y,z)"" to a "Vector3".
|
|
74
|
+
*/
|
|
75
|
+
static parseVector(value) {
|
|
76
|
+
if (!(0, lodash_es_1.isString)(value)) {
|
|
77
|
+
throw new index_1.ViewerError({
|
|
78
|
+
id: index_1.ViewerErrorIds.InvalidParameterValue,
|
|
79
|
+
message: `Unable to parse "${value}" to a vector: not a string`,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
let cleanedValue = value.split(' ').join('');
|
|
83
|
+
if (cleanedValue.startsWith('(') && cleanedValue.endsWith(')')) {
|
|
84
|
+
cleanedValue = cleanedValue.substring(1, cleanedValue.length - 1);
|
|
85
|
+
const [x, y, z] = cleanedValue.split(',').map(value => parseFloat(value));
|
|
86
|
+
return new index_1.Vector3(x, y, z);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
throw new index_1.ViewerError({
|
|
90
|
+
id: index_1.ViewerErrorIds.InvalidParameterValue,
|
|
91
|
+
message: `Unable to parse "${value}" to a vector: expected "(x,y,z)"`,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// TODO WTT: enable setting Vector3 on the input directly (maybe quaternion as well)
|
|
96
|
+
/**
|
|
97
|
+
* Parses a string of format `'(x,y,z)'` with angular degrees to a `Vector3` with rotation information in radians.
|
|
98
|
+
*/
|
|
99
|
+
static parseRotation(value) {
|
|
100
|
+
const rotation = ParameterManager.parseVector(value);
|
|
101
|
+
const deg2rad = (deg) => {
|
|
102
|
+
return (deg * Math.PI) / 180;
|
|
103
|
+
};
|
|
104
|
+
return rotation.set(deg2rad(rotation.x), deg2rad(rotation.y), deg2rad(rotation.z));
|
|
105
|
+
}
|
|
106
|
+
// TODO WTT: enable setting Color3 on the input directly
|
|
107
|
+
/**
|
|
108
|
+
* Parses a string of format `'#rrggbb'` or `'(r,g,b)'` to a `Color3`.
|
|
109
|
+
*/
|
|
110
|
+
static parseColor(value) {
|
|
111
|
+
const cleanedValue = value.toString().split(' ').join('');
|
|
112
|
+
if (cleanedValue.startsWith('#')) {
|
|
113
|
+
return index_1.Color3.FromHexString(value.toString());
|
|
114
|
+
}
|
|
115
|
+
if (cleanedValue.startsWith('(') && cleanedValue.endsWith(')')) {
|
|
116
|
+
const rgb = cleanedValue.substring(1, cleanedValue.length - 1);
|
|
117
|
+
const [r, g, b] = rgb.split(',').map(value => parseFloat(value));
|
|
118
|
+
return index_1.Color3.FromInts(r, g, b);
|
|
119
|
+
}
|
|
120
|
+
const humanReadable = (0, lodash_es_1.capitalize)(cleanedValue);
|
|
121
|
+
if (Object.prototype.hasOwnProperty.call(index_1.Color3, humanReadable)) {
|
|
122
|
+
return index_1.Color3[humanReadable]();
|
|
123
|
+
}
|
|
124
|
+
throw new index_1.ViewerError({
|
|
125
|
+
id: index_1.ViewerErrorIds.InvalidParameterValue,
|
|
126
|
+
message: `Unable to parse "${value}" to a color: expected "#rrggbb", "(r,g,b)" or any human readable (e.g. Red) property implemented in Color3`,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Set parameter value for a certain node and calls the corresponding observer if the value has changed
|
|
131
|
+
*
|
|
132
|
+
* @returns "true" if parameter value has changed
|
|
133
|
+
*/
|
|
134
|
+
setNodeParameterValue(nodeName, parameterName, value) {
|
|
135
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
136
|
+
const valueChanged = this._addParameterValue({ nodeName }, parameterName, value);
|
|
137
|
+
if (valueChanged) {
|
|
138
|
+
yield this._applyParameterValue({ nodeName }, parameterName);
|
|
139
|
+
}
|
|
140
|
+
return valueChanged;
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Set parameter value for a certain material and calls the corresponding observer if the value has changed
|
|
145
|
+
*
|
|
146
|
+
* @returns "true" if parameter value has changed
|
|
147
|
+
*/
|
|
148
|
+
setMaterialParameterValue(materialName, parameterName, value) {
|
|
149
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
150
|
+
const valueChanged = this._addParameterValue({ materialName }, parameterName, value);
|
|
151
|
+
if (valueChanged) {
|
|
152
|
+
yield this._applyParameterValue({ materialName }, parameterName);
|
|
153
|
+
}
|
|
154
|
+
return valueChanged;
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Set parameter value for a certain tag and calls the corresponding observer if the value has changed.\
|
|
159
|
+
* Setting a parameter value on a tag can affect multiple nodes and tags, depending which of these objects contains
|
|
160
|
+
* the desired tag.
|
|
161
|
+
*
|
|
162
|
+
* @returns "true" if parameter value has changed
|
|
163
|
+
*/
|
|
164
|
+
setTagParameterValue(tagName, parameterName, value) {
|
|
165
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
166
|
+
const valueChanged = this._addParameterValue({ tagName }, parameterName, value);
|
|
167
|
+
if (valueChanged) {
|
|
168
|
+
yield this._applyParameterValue({ tagName }, parameterName);
|
|
169
|
+
}
|
|
170
|
+
return valueChanged;
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Set multiple parameter values simultaniously.\
|
|
175
|
+
* Tag parameters are applied before node and material parameters, node and materials are more specific and should
|
|
176
|
+
* have priority.
|
|
177
|
+
*
|
|
178
|
+
* @returns Array of parameters, which have changed values
|
|
179
|
+
*/
|
|
180
|
+
setParameterValues(values) {
|
|
181
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
182
|
+
const parameterEntries = values.map(valueEntry => {
|
|
183
|
+
const subject = isNodeParameterSubject(valueEntry)
|
|
184
|
+
? { nodeName: valueEntry.nodeName }
|
|
185
|
+
: isMaterialParameterSubject(valueEntry)
|
|
186
|
+
? { materialName: valueEntry.materialName }
|
|
187
|
+
: { tagName: valueEntry.tagName };
|
|
188
|
+
return { subject, parameterName: valueEntry.parameterName, value: valueEntry.value, oldValue: undefined };
|
|
189
|
+
});
|
|
190
|
+
const changedParameterEntries = parameterEntries.filter(paramEntry => this._addParameterValue(paramEntry.subject, paramEntry.parameterName, paramEntry.value));
|
|
191
|
+
yield this._applyParameterValues(changedParameterEntries);
|
|
192
|
+
// convert back to original typing
|
|
193
|
+
const changedParameterValues = changedParameterEntries.map(paramEntry => {
|
|
194
|
+
return Object.assign(Object.assign({}, paramEntry.subject), { parameterName: paramEntry.parameterName, value: paramEntry.value });
|
|
195
|
+
});
|
|
196
|
+
return changedParameterValues;
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* @returns desired parameter value or "undefined" if parameter entry is not available.
|
|
201
|
+
*/
|
|
202
|
+
getParameterValue(subject, parameterName) {
|
|
203
|
+
const entry = this._getEntry(subject, parameterName);
|
|
204
|
+
return entry === null || entry === void 0 ? void 0 : entry.value;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Define observer callback for certain parameter.\
|
|
208
|
+
* There can only be one observer for a certain parameter name.\
|
|
209
|
+
* Parameter observers can not be overwritten once they are defined, this also includes system observers for
|
|
210
|
+
* {@link BuiltInParameter}.
|
|
211
|
+
*/
|
|
212
|
+
setParameterObserver(parameterName, observer) {
|
|
213
|
+
if (this._parameterObserver[parameterName]) {
|
|
214
|
+
console.warn(`Observer for parameter "${parameterName}" already set`);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
this._parameterObserver[parameterName] = observer;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Print all parameter entries in table format into the console
|
|
221
|
+
*/
|
|
222
|
+
printAllParameters() {
|
|
223
|
+
const printable = this._parameterEntries.map(entry => (Object.assign(Object.assign({}, entry), { subject: JSON.stringify(entry.subject) })));
|
|
224
|
+
console.table(printable);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Applies all existing parameter entries to a certain "model", as defined in the {@link ModelManager}.\
|
|
228
|
+
* This can be usefull when updating the model before showing it in the scene.
|
|
229
|
+
*
|
|
230
|
+
* @internal
|
|
231
|
+
*/
|
|
232
|
+
applyAllParameterValuesToModel(model) {
|
|
233
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
234
|
+
const parameterEntriesToApply = this._parameterEntries;
|
|
235
|
+
yield this._applyParameterValues(parameterEntriesToApply, model);
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Applies all parameter values which are targeting a material.\
|
|
240
|
+
* This can be usefull when updating a material definition before creating it.
|
|
241
|
+
*
|
|
242
|
+
* @internal
|
|
243
|
+
*/
|
|
244
|
+
applyParameterValuesToMaterial(material) {
|
|
245
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
246
|
+
const tags = (0, tagsHelper_1.getTags)(material);
|
|
247
|
+
const parameterEntriesToApply = [];
|
|
248
|
+
tags.forEach(tagName => {
|
|
249
|
+
const tagParamEntries = this._getEntriesOfSubject({ tagName });
|
|
250
|
+
parameterEntriesToApply.push(...tagParamEntries);
|
|
251
|
+
});
|
|
252
|
+
const materialParamEntries = this._getEntriesOfSubject({ materialName: material.id });
|
|
253
|
+
parameterEntriesToApply.push(...materialParamEntries);
|
|
254
|
+
yield this._applyParameterValues(parameterEntriesToApply);
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* @returns Desired parameter value of a certain node.
|
|
259
|
+
* Tags are considered as well but have lower priority than node parameters, as these are more specific.
|
|
260
|
+
*
|
|
261
|
+
* @internal
|
|
262
|
+
*/
|
|
263
|
+
getParameterValueOfNode(node, parameterName) {
|
|
264
|
+
const nodeParamValue = this.getParameterValue({ nodeName: node.name }, parameterName);
|
|
265
|
+
if (nodeParamValue !== undefined) {
|
|
266
|
+
return nodeParamValue;
|
|
267
|
+
}
|
|
268
|
+
const tags = (0, tagsHelper_1.getTags)(node);
|
|
269
|
+
const tagParamValue = tags.reduce((accValue, curTag) => {
|
|
270
|
+
// NOTE: it is possible that values are available for multiple tags
|
|
271
|
+
// in this case the resulting parameter value is quite "random" as the last tag in the tag string of the node has
|
|
272
|
+
// priority
|
|
273
|
+
const tagParamValue = this.getParameterValue({ tagName: curTag }, parameterName);
|
|
274
|
+
return accValue !== null && accValue !== void 0 ? accValue : tagParamValue;
|
|
275
|
+
}, undefined);
|
|
276
|
+
return tagParamValue;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* @returns Desired parameter value of a certain material.
|
|
280
|
+
* Tags are considered as well but have lower priority than material parameters, as these are more specific.
|
|
281
|
+
* Unused ATM, but added for consistency as counter part for {@link getParameterValueOfNode}
|
|
282
|
+
*
|
|
283
|
+
* @internal
|
|
284
|
+
*/
|
|
285
|
+
getParameterValueOfMaterial(material, parameterName) {
|
|
286
|
+
const materialParamValue = this.getParameterValue({ materialName: material.name }, parameterName);
|
|
287
|
+
if (materialParamValue !== undefined) {
|
|
288
|
+
return materialParamValue;
|
|
289
|
+
}
|
|
290
|
+
const tags = (0, tagsHelper_1.getTags)(material);
|
|
291
|
+
const tagParamValue = tags.reduce((accValue, curTag) => {
|
|
292
|
+
const tagParamValue = this.getParameterValue({ tagName: curTag }, parameterName);
|
|
293
|
+
return accValue !== null && accValue !== void 0 ? accValue : tagParamValue;
|
|
294
|
+
}, undefined);
|
|
295
|
+
return tagParamValue;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Parameter observer implementation of default parameters
|
|
299
|
+
*/
|
|
300
|
+
_addBuiltInParameterObservers() {
|
|
301
|
+
this.setParameterObserver(exports.BuiltInParameter.Visible, ({ nodes, newValue }) => __awaiter(this, void 0, void 0, function* () {
|
|
302
|
+
const visible = ParameterManager.parseBoolean(newValue);
|
|
303
|
+
for (const node of nodes) {
|
|
304
|
+
if (visible) {
|
|
305
|
+
const deferredMaterial = (0, metadataHelper_1.getInternalMetadataValue)(node, 'deferredMaterial');
|
|
306
|
+
if (deferredMaterial) {
|
|
307
|
+
yield this.viewer.materialManager.setMaterialOnMesh(deferredMaterial, node);
|
|
308
|
+
}
|
|
309
|
+
node.setEnabled(true);
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
node.setEnabled(false);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}));
|
|
316
|
+
this.setParameterObserver(exports.BuiltInParameter.Material, ({ nodes, newValue }) => __awaiter(this, void 0, void 0, function* () {
|
|
317
|
+
const material = ParameterManager.parseString(newValue);
|
|
318
|
+
for (const node of nodes) {
|
|
319
|
+
// NOTE: don't use node.isEnabled() as visibility observer is probably called in same cycle but later
|
|
320
|
+
// however the parameter value is already correct at this stage
|
|
321
|
+
const rawVisibleValue = this.getParameterValueOfNode(node, exports.BuiltInParameter.Visible);
|
|
322
|
+
const visible = rawVisibleValue !== undefined ? ParameterManager.parseBoolean(rawVisibleValue) : node.isEnabled();
|
|
323
|
+
if (visible) {
|
|
324
|
+
// TODO WTT: check mesh type and throw error if it doesn't fit
|
|
325
|
+
// think of creating a framework with type guards (isMesh, canHaveMaterial, ...) around this
|
|
326
|
+
yield this.viewer.materialManager.setMaterialOnMesh(material, node);
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
(0, metadataHelper_1.setInternalMetadataValue)(node, 'deferredMaterial', material);
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}));
|
|
333
|
+
this.setParameterObserver(exports.BuiltInParameter.Position, ({ nodes, newValue }) => __awaiter(this, void 0, void 0, function* () {
|
|
334
|
+
const position = ParameterManager.parseVector(newValue);
|
|
335
|
+
for (const node of nodes) {
|
|
336
|
+
node.position = position;
|
|
337
|
+
}
|
|
338
|
+
}));
|
|
339
|
+
this.setParameterObserver(exports.BuiltInParameter.Rotation, ({ nodes, newValue }) => __awaiter(this, void 0, void 0, function* () {
|
|
340
|
+
const rotation = ParameterManager.parseRotation(newValue);
|
|
341
|
+
for (const node of nodes) {
|
|
342
|
+
node.rotation = rotation;
|
|
343
|
+
}
|
|
344
|
+
}));
|
|
345
|
+
this.setParameterObserver(exports.BuiltInParameter.Scaling, ({ nodes, newValue }) => __awaiter(this, void 0, void 0, function* () {
|
|
346
|
+
const scaling = ParameterManager.parseVector(newValue);
|
|
347
|
+
for (const node of nodes) {
|
|
348
|
+
node.scaling = scaling;
|
|
349
|
+
}
|
|
350
|
+
}));
|
|
351
|
+
this.setParameterObserver(exports.BuiltInParameter.Color, ({ materials, newValue }) => __awaiter(this, void 0, void 0, function* () {
|
|
352
|
+
const color = ParameterManager.parseColor(newValue);
|
|
353
|
+
for (const material of materials) {
|
|
354
|
+
const materialCls = material.getClassName();
|
|
355
|
+
switch (materialCls) {
|
|
356
|
+
case 'PBRMaterial':
|
|
357
|
+
material.albedoColor = color.toLinearSpace();
|
|
358
|
+
break;
|
|
359
|
+
case 'StandardMaterial':
|
|
360
|
+
material.diffuseColor = color;
|
|
361
|
+
break;
|
|
362
|
+
default:
|
|
363
|
+
throw new Error(`Setting color for material of instance "${materialCls}" not implemented`);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
}));
|
|
367
|
+
this.setParameterObserver(exports.BuiltInParameter.Roughness, ({ materials, newValue }) => __awaiter(this, void 0, void 0, function* () {
|
|
368
|
+
const roughness = ParameterManager.parseNumber(newValue);
|
|
369
|
+
for (const material of materials) {
|
|
370
|
+
const materialCls = material.getClassName();
|
|
371
|
+
switch (materialCls) {
|
|
372
|
+
case 'PBRMaterial':
|
|
373
|
+
material.roughness = roughness;
|
|
374
|
+
break;
|
|
375
|
+
case 'StandardMaterial':
|
|
376
|
+
material.roughness = roughness;
|
|
377
|
+
break;
|
|
378
|
+
default:
|
|
379
|
+
throw new Error(`Setting rougness for material of instance "${materialCls}" not implemented`);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}));
|
|
383
|
+
this.setParameterObserver(exports.BuiltInParameter.Metallic, ({ materials, newValue }) => __awaiter(this, void 0, void 0, function* () {
|
|
384
|
+
const metallic = ParameterManager.parseNumber(newValue);
|
|
385
|
+
for (const material of materials) {
|
|
386
|
+
const materialCls = material.getClassName();
|
|
387
|
+
switch (materialCls) {
|
|
388
|
+
case 'PBRMaterial':
|
|
389
|
+
material.metallic = metallic;
|
|
390
|
+
break;
|
|
391
|
+
default:
|
|
392
|
+
throw new Error(`Setting metallic for material of instance "${materialCls}" not implemented`);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}));
|
|
396
|
+
this.setParameterObserver(exports.BuiltInParameter.Paintable, ({ newValue, materials }) => __awaiter(this, void 0, void 0, function* () {
|
|
397
|
+
(0, paintableHelper_1.paintableParameterObserver)(newValue, materials, this.viewer.scene);
|
|
398
|
+
}));
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Change parameter value in array of existing parameter entries or create a new entry
|
|
402
|
+
*
|
|
403
|
+
* @returns "true" if parameter has changed or wasn't available before
|
|
404
|
+
*/
|
|
405
|
+
_addParameterValue(subject, parameterName, value) {
|
|
406
|
+
const existingEntry = this._getEntry(subject, parameterName);
|
|
407
|
+
if ((existingEntry === null || existingEntry === void 0 ? void 0 : existingEntry.value) === value) {
|
|
408
|
+
return false;
|
|
409
|
+
}
|
|
410
|
+
if (existingEntry) {
|
|
411
|
+
existingEntry.oldValue = existingEntry.value;
|
|
412
|
+
existingEntry.value = value;
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
this._parameterEntries.push({ subject, parameterName, value, oldValue: undefined });
|
|
416
|
+
}
|
|
417
|
+
return true;
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Call parameter observer of desired parameter which usually apply the new values to the scene.
|
|
421
|
+
*
|
|
422
|
+
* @param assetContainer Asset container in which to look for the paramter entries subjects (e.g. the nodes and
|
|
423
|
+
* materials to which the parameter values should be applied to).\
|
|
424
|
+
* Defaults to `viewer.scene`.
|
|
425
|
+
*/
|
|
426
|
+
_applyParameterValues(parameterEntries, assetContainer) {
|
|
427
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
428
|
+
const tagParamEntries = parameterEntries.filter(entry => isTagParameterSubject(entry.subject));
|
|
429
|
+
const nonTagParamEntries = parameterEntries.filter(entry => !isTagParameterSubject(entry.subject));
|
|
430
|
+
for (const entry of tagParamEntries) {
|
|
431
|
+
yield this._applyParameterValue(entry.subject, entry.parameterName, assetContainer);
|
|
432
|
+
}
|
|
433
|
+
for (const entry of nonTagParamEntries) {
|
|
434
|
+
yield this._applyParameterValue(entry.subject, entry.parameterName, assetContainer);
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Call parameter observer of desired parameter
|
|
440
|
+
*
|
|
441
|
+
* @param assetContainer Optionally add an "asset container", which actually represents a model in the
|
|
442
|
+
* {@link ModelManager}. Viewer scene is used if left empty.
|
|
443
|
+
*/
|
|
444
|
+
_applyParameterValue(subject, parameterName, assetContainer) {
|
|
445
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
446
|
+
const parameterEntry = this._getEntry(subject, parameterName);
|
|
447
|
+
const observer = this._parameterObserver[parameterName];
|
|
448
|
+
if (!parameterEntry || !observer) {
|
|
449
|
+
return;
|
|
450
|
+
}
|
|
451
|
+
const nodes = this._getAffectedNodes(subject, assetContainer);
|
|
452
|
+
const materials = this._getAffectedMaterials(subject, assetContainer);
|
|
453
|
+
yield observer({
|
|
454
|
+
subject,
|
|
455
|
+
newValue: parameterEntry.value,
|
|
456
|
+
oldValue: parameterEntry.oldValue,
|
|
457
|
+
nodes,
|
|
458
|
+
materials,
|
|
459
|
+
});
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
_getAffectedMaterials(subject, assetContainer) {
|
|
463
|
+
assetContainer = assetContainer !== null && assetContainer !== void 0 ? assetContainer : this.viewer.scene;
|
|
464
|
+
let materials = [];
|
|
465
|
+
// materials have priority over tags
|
|
466
|
+
if (isMaterialParameterSubject(subject)) {
|
|
467
|
+
materials = assetContainer.materials.filter(material => material.name === subject.materialName);
|
|
468
|
+
if (materials.length > 1) {
|
|
469
|
+
console.warn(`Multiple materials for material name "${subject.materialName}" have been found`);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
else if (isTagParameterSubject(subject)) {
|
|
473
|
+
materials = assetContainer.materials.filter(material => (0, tagsHelper_1.hasTag)(material, subject.tagName));
|
|
474
|
+
}
|
|
475
|
+
return materials;
|
|
476
|
+
}
|
|
477
|
+
_getAffectedNodes(subject, assetContainer) {
|
|
478
|
+
assetContainer = assetContainer !== null && assetContainer !== void 0 ? assetContainer : this.viewer.scene;
|
|
479
|
+
const allNodes = [...assetContainer.meshes, ...assetContainer.transformNodes];
|
|
480
|
+
let nodes = [];
|
|
481
|
+
// nodes have priority over tags
|
|
482
|
+
if (isNodeParameterSubject(subject)) {
|
|
483
|
+
nodes = allNodes.filter(node => node.name === subject.nodeName);
|
|
484
|
+
if (nodes.length > 1) {
|
|
485
|
+
console.warn(`Multiple nodes for node name "${subject.nodeName}" have been found`);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
else if (isTagParameterSubject(subject)) {
|
|
489
|
+
nodes = allNodes.filter(node => (0, tagsHelper_1.hasTag)(node, subject.tagName));
|
|
490
|
+
}
|
|
491
|
+
return nodes;
|
|
492
|
+
}
|
|
493
|
+
_getEntry(subject, parameterName) {
|
|
494
|
+
const entriesOfSubject = this._getEntriesOfSubject(subject);
|
|
495
|
+
const entry = entriesOfSubject.find(entry => entry.parameterName === parameterName);
|
|
496
|
+
return entry;
|
|
497
|
+
}
|
|
498
|
+
_getEntriesOfSubject(subject) {
|
|
499
|
+
const entries = this._parameterEntries.filter(entry => {
|
|
500
|
+
const nodeNameMatches = isNodeParameterSubject(entry.subject) &&
|
|
501
|
+
isNodeParameterSubject(subject) &&
|
|
502
|
+
entry.subject.nodeName === subject.nodeName;
|
|
503
|
+
const materialNameMatches = isMaterialParameterSubject(entry.subject) &&
|
|
504
|
+
isMaterialParameterSubject(subject) &&
|
|
505
|
+
entry.subject.materialName === subject.materialName;
|
|
506
|
+
const tagNameMatches = isTagParameterSubject(entry.subject) &&
|
|
507
|
+
isTagParameterSubject(subject) &&
|
|
508
|
+
entry.subject.tagName === subject.tagName;
|
|
509
|
+
return nodeNameMatches || materialNameMatches || tagNameMatches;
|
|
510
|
+
});
|
|
511
|
+
return entries;
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
exports.ParameterManager = ParameterManager;
|
|
515
|
+
//# sourceMappingURL=parameterManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parameterManager.js","sourceRoot":"","sources":["../../../src/manager/parameterManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Color4, Vector3, Viewer } from '../index';
|
|
2
|
+
/**
|
|
3
|
+
* Settings for creating the default scene
|
|
4
|
+
*/
|
|
5
|
+
export declare type DefaultSceneSettings = {
|
|
6
|
+
backgroundColor: Color4;
|
|
7
|
+
camera: {
|
|
8
|
+
create: boolean;
|
|
9
|
+
initialPosition: {
|
|
10
|
+
alpha: number;
|
|
11
|
+
beta: number;
|
|
12
|
+
radius: number;
|
|
13
|
+
target: Vector3;
|
|
14
|
+
};
|
|
15
|
+
settings: {
|
|
16
|
+
minZ: number;
|
|
17
|
+
lowerRadiusLimit: number;
|
|
18
|
+
wheelPrecision: number;
|
|
19
|
+
panningSensibility: number;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
environment: {
|
|
23
|
+
create: boolean;
|
|
24
|
+
url: string;
|
|
25
|
+
intensity: number;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Manager for tasks related to the Babylon.js scene.\
|
|
30
|
+
* This contains creating or loading (WIP: Scene Asset) scenes with certain settings for lighting, cameras and
|
|
31
|
+
* appearance in genereal.
|
|
32
|
+
*
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
export declare class SceneManager {
|
|
36
|
+
protected viewer: Viewer;
|
|
37
|
+
protected static _DEFAULT_SCENE_NAME: string;
|
|
38
|
+
protected _defaultSceneSettings: DefaultSceneSettings;
|
|
39
|
+
constructor(viewer: Viewer, defaultSceneSettings?: DeepPartial<DefaultSceneSettings>);
|
|
40
|
+
/**
|
|
41
|
+
* Creates a camera and minimum lighting, so that the scene is set up good enough to show content.\
|
|
42
|
+
* Settings can be overwritten in the constructor.
|
|
43
|
+
*/
|
|
44
|
+
applyDefaultSettingsToScene(): void;
|
|
45
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SceneManager = void 0;
|
|
4
|
+
const index_1 = require("../index");
|
|
5
|
+
const lodash_es_1 = require("lodash-es");
|
|
6
|
+
/**
|
|
7
|
+
* Manager for tasks related to the Babylon.js scene.\
|
|
8
|
+
* This contains creating or loading (WIP: Scene Asset) scenes with certain settings for lighting, cameras and
|
|
9
|
+
* appearance in genereal.
|
|
10
|
+
*
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
class SceneManager {
|
|
14
|
+
constructor(viewer, defaultSceneSettings) {
|
|
15
|
+
this.viewer = viewer;
|
|
16
|
+
// default scene settings
|
|
17
|
+
// will be overwritten in the constructor
|
|
18
|
+
this._defaultSceneSettings = {
|
|
19
|
+
backgroundColor: new index_1.Color4(0, 0, 0, 0),
|
|
20
|
+
camera: {
|
|
21
|
+
create: true,
|
|
22
|
+
initialPosition: index_1.CameraManager.DEFAULT_CAMERA_POSITION,
|
|
23
|
+
settings: {
|
|
24
|
+
minZ: 0.1,
|
|
25
|
+
lowerRadiusLimit: 2,
|
|
26
|
+
wheelPrecision: 100,
|
|
27
|
+
panningSensibility: 5000,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
environment: {
|
|
31
|
+
create: true,
|
|
32
|
+
url: 'https://assets.babylonjs.com/environments/environmentSpecular.env',
|
|
33
|
+
intensity: 1,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
(0, lodash_es_1.merge)(this._defaultSceneSettings, defaultSceneSettings);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Creates a camera and minimum lighting, so that the scene is set up good enough to show content.\
|
|
40
|
+
* Settings can be overwritten in the constructor.
|
|
41
|
+
*/
|
|
42
|
+
applyDefaultSettingsToScene() {
|
|
43
|
+
const cameraSettings = this._defaultSceneSettings.camera;
|
|
44
|
+
const envSettings = this._defaultSceneSettings.environment;
|
|
45
|
+
this.viewer.scene.clearColor = this._defaultSceneSettings.backgroundColor;
|
|
46
|
+
// camera
|
|
47
|
+
if (cameraSettings.create) {
|
|
48
|
+
const camera = new index_1.ArcRotateCamera(`${SceneManager._DEFAULT_SCENE_NAME}.camera`, cameraSettings.initialPosition.alpha, cameraSettings.initialPosition.beta, cameraSettings.initialPosition.radius, cameraSettings.initialPosition.target, this.viewer.scene);
|
|
49
|
+
camera.attachControl(this.viewer.engine._workingCanvas, true);
|
|
50
|
+
camera.minZ = cameraSettings.settings.minZ;
|
|
51
|
+
camera.lowerRadiusLimit = cameraSettings.settings.lowerRadiusLimit;
|
|
52
|
+
camera.wheelPrecision = cameraSettings.settings.wheelPrecision;
|
|
53
|
+
camera.panningSensibility = cameraSettings.settings.panningSensibility;
|
|
54
|
+
}
|
|
55
|
+
// environment
|
|
56
|
+
if (envSettings.create) {
|
|
57
|
+
const envTexture = index_1.CubeTexture.CreateFromPrefilteredData(envSettings.url, this.viewer.scene);
|
|
58
|
+
this.viewer.scene.environmentTexture = envTexture;
|
|
59
|
+
this.viewer.scene.environmentIntensity = envSettings.intensity;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.SceneManager = SceneManager;
|
|
64
|
+
SceneManager._DEFAULT_SCENE_NAME = '__defaultScene__';
|
|
65
|
+
//# sourceMappingURL=sceneManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sceneManager.js","sourceRoot":"","sources":["../../../src/manager/sceneManager.ts"],"names":[],"mappings":";;;AAAA,oCAAgG;AAChG,yCAAkC;AA6BlC;;;;;;GAMG;AACH,MAAa,YAAY;IAyBvB,YAA6B,MAAc,EAAE,oBAAwD;QAAxE,WAAM,GAAN,MAAM,CAAQ;QAtB3C,yBAAyB;QACzB,yCAAyC;QAC/B,0BAAqB,GAAyB;YACtD,eAAe,EAAE,IAAI,cAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,eAAe,EAAE,qBAAa,CAAC,uBAAuB;gBACtD,QAAQ,EAAE;oBACR,IAAI,EAAE,GAAG;oBACT,gBAAgB,EAAE,CAAC;oBACnB,cAAc,EAAE,GAAG;oBACnB,kBAAkB,EAAE,IAAI;iBACzB;aACF;YAED,WAAW,EAAE;gBACX,MAAM,EAAE,IAAI;gBACZ,GAAG,EAAE,mEAAmE;gBACxE,SAAS,EAAE,CAAC;aACb;SACF,CAAC;QAGA,IAAA,iBAAK,EAAC,IAAI,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACI,2BAA2B;QAChC,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC;QAE3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC;QAE1E,SAAS;QACT,IAAI,cAAc,CAAC,MAAM,EAAE;YACzB,MAAM,MAAM,GAAG,IAAI,uBAAe,CAChC,GAAG,YAAY,CAAC,mBAAmB,SAAS,EAC5C,cAAc,CAAC,eAAe,CAAC,KAAK,EACpC,cAAc,CAAC,eAAe,CAAC,IAAI,EACnC,cAAc,CAAC,eAAe,CAAC,MAAM,EACrC,cAAc,CAAC,eAAe,CAAC,MAAM,EACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAClB,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YAC9D,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC3C,MAAM,CAAC,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACnE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC/D,MAAM,CAAC,kBAAkB,GAAG,cAAc,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SACxE;QAED,cAAc;QACd,IAAI,WAAW,CAAC,MAAM,EAAE;YACtB,MAAM,UAAU,GAAG,mBAAW,CAAC,yBAAyB,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,UAAU,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,GAAG,WAAW,CAAC,SAAS,CAAC;SAChE;IACH,CAAC;;AA9DH,oCA+DC;AA9DkB,gCAAmB,GAAG,kBAAkB,CAAC"}
|