@combeenation/3d-viewer 14.1.0 → 15.1.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 +1 -1
- package/dist/lib-cjs/index.js +1 -1
- package/dist/lib-cjs/index.js.map +1 -1
- package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.js +0 -16
- package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.js.map +1 -1
- package/dist/lib-cjs/internal/cloning-helper.d.ts +4 -4
- package/dist/lib-cjs/internal/cloning-helper.js +22 -7
- package/dist/lib-cjs/internal/cloning-helper.js.map +1 -1
- package/dist/lib-cjs/internal/paintable-helper.js +2 -54
- package/dist/lib-cjs/internal/paintable-helper.js.map +1 -1
- package/dist/lib-cjs/internal/svg-helper.d.ts +4 -0
- package/dist/lib-cjs/internal/svg-helper.js +67 -0
- package/dist/lib-cjs/internal/svg-helper.js.map +1 -0
- package/dist/lib-cjs/internal/tags-helper.d.ts +1 -1
- package/dist/lib-cjs/internal/tags-helper.js +10 -8
- package/dist/lib-cjs/internal/tags-helper.js.map +1 -1
- package/dist/lib-cjs/internal/texture-parameter-helper.d.ts +37 -0
- package/dist/lib-cjs/internal/texture-parameter-helper.js +287 -0
- package/dist/lib-cjs/internal/texture-parameter-helper.js.map +1 -0
- package/dist/lib-cjs/manager/material-manager.d.ts +22 -1
- package/dist/lib-cjs/manager/material-manager.js +68 -0
- package/dist/lib-cjs/manager/material-manager.js.map +1 -1
- package/dist/lib-cjs/manager/model-manager.d.ts +4 -2
- package/dist/lib-cjs/manager/model-manager.js +7 -1
- package/dist/lib-cjs/manager/model-manager.js.map +1 -1
- package/dist/lib-cjs/manager/parameter-manager.d.ts +40 -8
- package/dist/lib-cjs/manager/parameter-manager.js +88 -11
- package/dist/lib-cjs/manager/parameter-manager.js.map +1 -1
- package/dist/lib-cjs/viewer-error.d.ts +3 -0
- package/dist/lib-cjs/viewer-error.js +3 -0
- package/dist/lib-cjs/viewer-error.js.map +1 -1
- package/dist/lib-cjs/viewer.js.map +1 -1
- package/package.json +13 -10
- package/src/index.ts +1 -1
- package/src/internal/cbn-custom-babylon-loader-plugin.ts +2 -21
- package/src/internal/cloning-helper.ts +29 -5
- package/src/internal/paintable-helper.ts +2 -54
- package/src/internal/svg-helper.ts +52 -0
- package/src/internal/tags-helper.ts +9 -7
- package/src/internal/texture-parameter-helper.ts +353 -0
- package/src/manager/material-manager.ts +62 -0
- package/src/manager/model-manager.ts +11 -5
- package/src/manager/parameter-manager.ts +116 -16
- package/src/viewer-error.ts +3 -0
- package/src/viewer.ts +1 -1
|
@@ -0,0 +1,287 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.createBuiltInTextureParameter = exports.ParameterTextureChannels = exports.BuiltInTextureParameter = void 0;
|
|
16
|
+
const __1 = require("..");
|
|
17
|
+
const parameter_manager_1 = require("../manager/parameter-manager");
|
|
18
|
+
const svg_helper_1 = require("./svg-helper");
|
|
19
|
+
const is_svg_1 = __importDefault(require("is-svg"));
|
|
20
|
+
/**
|
|
21
|
+
* Texture parameters are a combination of the channel (e.g. albedo, bump, AO) and the "sub" parameter (e.g. uScale).
|
|
22
|
+
* Each parameter is available in each texture, that's why these textures parameter are defined as dotted path
|
|
23
|
+
* `albedoTexture.uScale`
|
|
24
|
+
* - channel: albedoTexture
|
|
25
|
+
* - parameter: uScale
|
|
26
|
+
* The consumer doesn't have to know this as there is `BuiltInParameters.createTextureParameter(channel, parameter)`,
|
|
27
|
+
* which composes this string internally
|
|
28
|
+
*/
|
|
29
|
+
exports.BuiltInTextureParameter = {
|
|
30
|
+
image: 'image',
|
|
31
|
+
uOffset: 'uOffset',
|
|
32
|
+
vOffset: 'vOffset',
|
|
33
|
+
uScale: 'uScale',
|
|
34
|
+
vScale: 'vScale',
|
|
35
|
+
uAng: 'uAng',
|
|
36
|
+
vAng: 'vAng',
|
|
37
|
+
wAng: 'wAng',
|
|
38
|
+
clampU: 'clampU',
|
|
39
|
+
clampV: 'clampV',
|
|
40
|
+
uvSet: 'uvSet',
|
|
41
|
+
};
|
|
42
|
+
exports.ParameterTextureChannels = {
|
|
43
|
+
albedoTexture: 'albedoTexture',
|
|
44
|
+
metallicRoughnessTexture: 'metallicRoughnessTexture',
|
|
45
|
+
bumpTexture: 'bumpTexture',
|
|
46
|
+
emissiveTexture: 'emissiveTexture',
|
|
47
|
+
opacityTexture: 'opacityTexture',
|
|
48
|
+
ambientTexture: 'ambientTexture',
|
|
49
|
+
lightmapTexture: 'lightmapTexture',
|
|
50
|
+
detailmapTexture: 'detailmapTexture',
|
|
51
|
+
};
|
|
52
|
+
function createBuiltInTextureParameter(parameterManager, scene) {
|
|
53
|
+
// create parameter observer for each channel
|
|
54
|
+
Object.values(exports.ParameterTextureChannels).forEach(channel => {
|
|
55
|
+
parameterManager.setParameterObserver(`${channel}.${exports.BuiltInTextureParameter.image}`, ({ newValue, materials }) => __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
var _a;
|
|
57
|
+
const image = parameter_manager_1.ParameterManager.parseString(newValue);
|
|
58
|
+
let url = image;
|
|
59
|
+
const imageIsSvg = (0, is_svg_1.default)(image);
|
|
60
|
+
if (imageIsSvg) {
|
|
61
|
+
// NOTE: image can also be provided as "svg", which is more or less the successor of the "paintable"
|
|
62
|
+
// parameter. It misses the UV parameters, but we now have dedicated parameters for this.
|
|
63
|
+
// We used "Dynamic Textures" for paintables because we didn't know better I guess?
|
|
64
|
+
// However the rescaling functionality of "Dynamic Textures" is not required and therefore it can be
|
|
65
|
+
// implemented as a plain "Texture"
|
|
66
|
+
const svgWithAssetsEmbedded = yield (0, svg_helper_1.embedAssets)(image);
|
|
67
|
+
// convert into a base64 string, as this can be directly interpreted as "url", at least for Babylon.js
|
|
68
|
+
url = 'data:image/svg+xml;base64,' + btoa(svgWithAssetsEmbedded);
|
|
69
|
+
}
|
|
70
|
+
else if (image.includes('<svg') && image.includes('</svg>')) {
|
|
71
|
+
// seems like the user tried to use a SVG string, as <svg> tags are used
|
|
72
|
+
// inform the user that this is not a valid SVG string
|
|
73
|
+
throw new __1.ViewerError({
|
|
74
|
+
id: __1.ViewerErrorIds.InvalidParameterValue,
|
|
75
|
+
message: `Invalid value for parameter "image" given:\nsource string is no valid SVG string\nGiven value: ${image}`,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
for (const material of materials) {
|
|
79
|
+
const pbrMaterial = _assertAndConvertPBRMaterial(material, channel, exports.BuiltInTextureParameter.image);
|
|
80
|
+
const texture = _getTextureFromParameterChannel(pbrMaterial, channel);
|
|
81
|
+
if (texture) {
|
|
82
|
+
// create a clone of the texture, in this way we can load the image before assigning it to the material
|
|
83
|
+
// channel
|
|
84
|
+
const clonedTexture = texture.clone();
|
|
85
|
+
// update texture and await loading time right away
|
|
86
|
+
yield new Promise(resolve => clonedTexture.updateURL(url, undefined, resolve));
|
|
87
|
+
_assignTextureParameterChannel(clonedTexture, pbrMaterial, channel);
|
|
88
|
+
// dispose old texture
|
|
89
|
+
texture.dispose();
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// no texture, or wrong type => create texture from scratch
|
|
93
|
+
// first we check if some settings were provided in the material definition
|
|
94
|
+
const addMatSettings = yield ((_a = window.Cbn) === null || _a === void 0 ? void 0 : _a.Assets.getMaterial(pbrMaterial.id));
|
|
95
|
+
const textureSettings = addMatSettings ? _getTextureObjFromParameterChannel(addMatSettings, channel) : {};
|
|
96
|
+
// overwrite the name with the url, as this is what the texture parser expects
|
|
97
|
+
textureSettings.name = url;
|
|
98
|
+
// use parser instead of constructor to keep the original texture settings
|
|
99
|
+
const newTexture = __1.Texture.Parse(textureSettings, scene, '');
|
|
100
|
+
if (!newTexture) {
|
|
101
|
+
throw new __1.ViewerError({
|
|
102
|
+
id: __1.ViewerErrorIds.TextureCouldNotBeParsed,
|
|
103
|
+
message: `Texture with url "${url}" could not be parsed`,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
// await loading of texture
|
|
107
|
+
yield new Promise(resolve => __1.BaseTexture.WhenAllReady([newTexture], resolve));
|
|
108
|
+
_assignTextureParameterChannel(newTexture, pbrMaterial, channel);
|
|
109
|
+
// apply texture settings, which have been set before the texture creation
|
|
110
|
+
yield parameterManager.applyTextureSettingsParameter(pbrMaterial, channel);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}));
|
|
114
|
+
parameterManager.setParameterObserver(`${channel}.${exports.BuiltInTextureParameter.uOffset}`, ({ newValue, materials }) => __awaiter(this, void 0, void 0, function* () {
|
|
115
|
+
const uOffset = parameter_manager_1.ParameterManager.parseNumber(newValue);
|
|
116
|
+
for (const material of materials) {
|
|
117
|
+
const pbrMaterial = _assertAndConvertPBRMaterial(material, channel, exports.BuiltInTextureParameter.uOffset);
|
|
118
|
+
_setUVTextureSetting('uOffset', uOffset, pbrMaterial, channel);
|
|
119
|
+
}
|
|
120
|
+
}));
|
|
121
|
+
parameterManager.setParameterObserver(`${channel}.${exports.BuiltInTextureParameter.vOffset}`, ({ newValue, materials }) => __awaiter(this, void 0, void 0, function* () {
|
|
122
|
+
const vOffset = parameter_manager_1.ParameterManager.parseNumber(newValue);
|
|
123
|
+
for (const material of materials) {
|
|
124
|
+
const pbrMaterial = _assertAndConvertPBRMaterial(material, channel, exports.BuiltInTextureParameter.vOffset);
|
|
125
|
+
_setUVTextureSetting('vOffset', vOffset, pbrMaterial, channel);
|
|
126
|
+
}
|
|
127
|
+
}));
|
|
128
|
+
parameterManager.setParameterObserver(`${channel}.${exports.BuiltInTextureParameter.uScale}`, ({ newValue, materials }) => __awaiter(this, void 0, void 0, function* () {
|
|
129
|
+
const uScale = parameter_manager_1.ParameterManager.parseNumber(newValue);
|
|
130
|
+
for (const material of materials) {
|
|
131
|
+
const pbrMaterial = _assertAndConvertPBRMaterial(material, channel, exports.BuiltInTextureParameter.uScale);
|
|
132
|
+
_setUVTextureSetting('uScale', uScale, pbrMaterial, channel);
|
|
133
|
+
}
|
|
134
|
+
}));
|
|
135
|
+
parameterManager.setParameterObserver(`${channel}.${exports.BuiltInTextureParameter.vScale}`, ({ newValue, materials }) => __awaiter(this, void 0, void 0, function* () {
|
|
136
|
+
const vScale = parameter_manager_1.ParameterManager.parseNumber(newValue);
|
|
137
|
+
for (const material of materials) {
|
|
138
|
+
const pbrMaterial = _assertAndConvertPBRMaterial(material, channel, exports.BuiltInTextureParameter.vScale);
|
|
139
|
+
_setUVTextureSetting('vScale', vScale, pbrMaterial, channel);
|
|
140
|
+
}
|
|
141
|
+
}));
|
|
142
|
+
parameterManager.setParameterObserver(`${channel}.${exports.BuiltInTextureParameter.uAng}`, ({ newValue, materials }) => __awaiter(this, void 0, void 0, function* () {
|
|
143
|
+
const uAng = parameter_manager_1.ParameterManager.parseNumber(newValue);
|
|
144
|
+
for (const material of materials) {
|
|
145
|
+
const pbrMaterial = _assertAndConvertPBRMaterial(material, channel, exports.BuiltInTextureParameter.uAng);
|
|
146
|
+
_setUVTextureSetting('uAng', uAng, pbrMaterial, channel);
|
|
147
|
+
}
|
|
148
|
+
}));
|
|
149
|
+
parameterManager.setParameterObserver(`${channel}.${exports.BuiltInTextureParameter.vAng}`, ({ newValue, materials }) => __awaiter(this, void 0, void 0, function* () {
|
|
150
|
+
const vAng = parameter_manager_1.ParameterManager.parseNumber(newValue);
|
|
151
|
+
for (const material of materials) {
|
|
152
|
+
const pbrMaterial = _assertAndConvertPBRMaterial(material, channel, exports.BuiltInTextureParameter.vAng);
|
|
153
|
+
_setUVTextureSetting('vAng', vAng, pbrMaterial, channel);
|
|
154
|
+
}
|
|
155
|
+
}));
|
|
156
|
+
parameterManager.setParameterObserver(`${channel}.${exports.BuiltInTextureParameter.wAng}`, ({ newValue, materials }) => __awaiter(this, void 0, void 0, function* () {
|
|
157
|
+
const wAng = parameter_manager_1.ParameterManager.parseNumber(newValue);
|
|
158
|
+
for (const material of materials) {
|
|
159
|
+
const pbrMaterial = _assertAndConvertPBRMaterial(material, channel, exports.BuiltInTextureParameter.wAng);
|
|
160
|
+
_setUVTextureSetting('wAng', wAng, pbrMaterial, channel);
|
|
161
|
+
}
|
|
162
|
+
}));
|
|
163
|
+
parameterManager.setParameterObserver(`${channel}.${exports.BuiltInTextureParameter.clampU}`, ({ newValue, materials }) => __awaiter(this, void 0, void 0, function* () {
|
|
164
|
+
const clampU = parameter_manager_1.ParameterManager.parseBoolean(newValue);
|
|
165
|
+
for (const material of materials) {
|
|
166
|
+
const pbrMaterial = _assertAndConvertPBRMaterial(material, channel, exports.BuiltInTextureParameter.clampU);
|
|
167
|
+
// we don't use _setUVTextureSetting here as the parameter ("clampU" - boolean) doesn't align with the actual
|
|
168
|
+
// texture setting ("wrapU" - enumeration)
|
|
169
|
+
const texture = _getTextureFromParameterChannel(pbrMaterial, channel);
|
|
170
|
+
if (texture) {
|
|
171
|
+
texture.wrapU = clampU ? __1.Texture.CLAMP_ADDRESSMODE : __1.Texture.WRAP_ADDRESSMODE;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}));
|
|
175
|
+
parameterManager.setParameterObserver(`${channel}.${exports.BuiltInTextureParameter.clampV}`, ({ newValue, materials }) => __awaiter(this, void 0, void 0, function* () {
|
|
176
|
+
const clampV = parameter_manager_1.ParameterManager.parseBoolean(newValue);
|
|
177
|
+
for (const material of materials) {
|
|
178
|
+
const pbrMaterial = _assertAndConvertPBRMaterial(material, channel, exports.BuiltInTextureParameter.clampV);
|
|
179
|
+
const texture = _getTextureFromParameterChannel(pbrMaterial, channel);
|
|
180
|
+
if (texture) {
|
|
181
|
+
texture.wrapV = clampV ? __1.Texture.CLAMP_ADDRESSMODE : __1.Texture.WRAP_ADDRESSMODE;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}));
|
|
185
|
+
parameterManager.setParameterObserver(`${channel}.${exports.BuiltInTextureParameter.uvSet}`, ({ newValue, materials }) => __awaiter(this, void 0, void 0, function* () {
|
|
186
|
+
const uvSet = parameter_manager_1.ParameterManager.parseNumber(newValue);
|
|
187
|
+
for (const material of materials) {
|
|
188
|
+
const pbrMaterial = _assertAndConvertPBRMaterial(material, channel, exports.BuiltInTextureParameter.uvSet);
|
|
189
|
+
const texture = _getTextureFromParameterChannel(pbrMaterial, channel);
|
|
190
|
+
if (texture) {
|
|
191
|
+
texture.coordinatesIndex = uvSet;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}));
|
|
195
|
+
});
|
|
196
|
+
// this parameter is required for activating the detailmap texture, as only assigning the texture is not enough
|
|
197
|
+
parameterManager.setParameterObserver(parameter_manager_1.BuiltInParameter.UseDetailmap, ({ newValue, materials }) => __awaiter(this, void 0, void 0, function* () {
|
|
198
|
+
const useDetailmap = parameter_manager_1.ParameterManager.parseBoolean(newValue);
|
|
199
|
+
for (const material of materials) {
|
|
200
|
+
const materialCls = material.getClassName();
|
|
201
|
+
if (materialCls !== 'PBRMaterial') {
|
|
202
|
+
throw new Error(`Enabling detailmap for material of instance "${materialCls}" not implemented`);
|
|
203
|
+
}
|
|
204
|
+
const pbrMaterial = material;
|
|
205
|
+
pbrMaterial.detailMap.isEnabled = useDetailmap;
|
|
206
|
+
}
|
|
207
|
+
}));
|
|
208
|
+
}
|
|
209
|
+
exports.createBuiltInTextureParameter = createBuiltInTextureParameter;
|
|
210
|
+
/**
|
|
211
|
+
* Help function for casting a material into a PBRMaterial type.\
|
|
212
|
+
* Only works if the class name confirms that this is a PBR material, throws an error for any other material type.
|
|
213
|
+
*
|
|
214
|
+
* @param channel only used for error message
|
|
215
|
+
* @param parameter only used for error message
|
|
216
|
+
*/
|
|
217
|
+
function _assertAndConvertPBRMaterial(material, channel, parameter) {
|
|
218
|
+
const materialCls = material.getClassName();
|
|
219
|
+
if (materialCls !== 'PBRMaterial') {
|
|
220
|
+
throw new Error(`Setting ${channel} ${parameter} for material of instance "${materialCls}" not implemented`);
|
|
221
|
+
}
|
|
222
|
+
return material;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Help function for adjusting "simple" UV texture settings, as described in the typing of `setting`
|
|
226
|
+
*/
|
|
227
|
+
function _setUVTextureSetting(setting, value, pbrMaterial, channel) {
|
|
228
|
+
const texture = _getTextureFromParameterChannel(pbrMaterial, channel);
|
|
229
|
+
if (texture) {
|
|
230
|
+
texture[setting] = value;
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
// this is fine, the texture may be created in a later step
|
|
234
|
+
// texture settings are applied automatically after the creation is done
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Get the runtime texture object from a certain channel in the material.\
|
|
239
|
+
* Only returns the texture if it's from type "Texture".
|
|
240
|
+
*/
|
|
241
|
+
function _getTextureFromParameterChannel(pbrMaterial, channel) {
|
|
242
|
+
let baseTexture;
|
|
243
|
+
if (channel === 'metallicRoughnessTexture') {
|
|
244
|
+
baseTexture = pbrMaterial.metallicTexture;
|
|
245
|
+
}
|
|
246
|
+
else if (channel === 'detailmapTexture') {
|
|
247
|
+
baseTexture = pbrMaterial.detailMap.texture;
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
// most times it's a direct assignment, special cases are handled above
|
|
251
|
+
baseTexture = pbrMaterial[channel];
|
|
252
|
+
}
|
|
253
|
+
// only return "Texture" types
|
|
254
|
+
return baseTexture instanceof __1.Texture ? baseTexture : undefined;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Assign runtime texture to the dedicated channel in the PBR material
|
|
258
|
+
*/
|
|
259
|
+
function _assignTextureParameterChannel(texture, pbrMaterial, channel) {
|
|
260
|
+
if (channel === 'metallicRoughnessTexture') {
|
|
261
|
+
pbrMaterial.metallicTexture = texture;
|
|
262
|
+
}
|
|
263
|
+
else if (channel === 'detailmapTexture') {
|
|
264
|
+
pbrMaterial.detailMap.texture = texture;
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
pbrMaterial[channel] = texture;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Similar to `_getTextureFromParameterChannel`, whereas the input is a plain JSON object instead of a runtime material
|
|
272
|
+
*/
|
|
273
|
+
function _getTextureObjFromParameterChannel(materialObj, channel) {
|
|
274
|
+
var _a;
|
|
275
|
+
let textureObj;
|
|
276
|
+
if (channel === 'metallicRoughnessTexture') {
|
|
277
|
+
textureObj = materialObj.metallicTexture;
|
|
278
|
+
}
|
|
279
|
+
else if (channel === 'detailmapTexture') {
|
|
280
|
+
textureObj = (_a = materialObj.detailMap) === null || _a === void 0 ? void 0 : _a.texture;
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
textureObj = materialObj[channel];
|
|
284
|
+
}
|
|
285
|
+
return textureObj !== null && textureObj !== void 0 ? textureObj : {};
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=texture-parameter-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"texture-parameter-helper.js","sourceRoot":"","sources":["../../../src/internal/texture-parameter-helper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,0BAAqG;AACrG,oEAAkF;AAClF,6CAA2C;AAC3C,oDAA2B;AAE3B;;;;;;;;GAQG;AAEU,QAAA,uBAAuB,GAAG;IACrC,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;CACf,CAAC;AAGW,QAAA,wBAAwB,GAAG;IACtC,aAAa,EAAE,eAAe;IAC9B,wBAAwB,EAAE,0BAA0B;IACpD,WAAW,EAAE,aAAa;IAC1B,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;CACrC,CAAC;AAGF,SAAgB,6BAA6B,CAAC,gBAAkC,EAAE,KAAY;IAC5F,6CAA6C;IAC5C,MAAM,CAAC,MAAM,CAAC,gCAAwB,CAAoC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC5F,gBAAgB,CAAC,oBAAoB,CACnC,GAAG,OAAO,IAAI,+BAAuB,CAAC,KAAK,EAAE,EAC7C,CAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;;YAChC,MAAM,KAAK,GAAG,oCAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACrD,IAAI,GAAG,GAAG,KAAK,CAAC;YAEhB,MAAM,UAAU,GAAG,IAAA,gBAAK,EAAC,KAAK,CAAC,CAAC;YAChC,IAAI,UAAU,EAAE;gBACd,oGAAoG;gBACpG,yFAAyF;gBACzF,mFAAmF;gBACnF,oGAAoG;gBACpG,mCAAmC;gBACnC,MAAM,qBAAqB,GAAG,MAAM,IAAA,wBAAW,EAAC,KAAK,CAAC,CAAC;gBACvD,sGAAsG;gBACtG,GAAG,GAAG,4BAA4B,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;aAClE;iBAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAC7D,wEAAwE;gBACxE,sDAAsD;gBACtD,MAAM,IAAI,eAAW,CAAC;oBACpB,EAAE,EAAE,kBAAc,CAAC,qBAAqB;oBACxC,OAAO,EAAE,kGAAkG,KAAK,EAAE;iBACnH,CAAC,CAAC;aACJ;YAED,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,WAAW,GAAG,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,+BAAuB,CAAC,KAAK,CAAC,CAAC;gBACnG,MAAM,OAAO,GAAG,+BAA+B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBAEtE,IAAI,OAAO,EAAE;oBACX,uGAAuG;oBACvG,UAAU;oBACV,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;oBACtC,mDAAmD;oBACnD,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;oBAErF,8BAA8B,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;oBAEpE,sBAAsB;oBACtB,OAAO,CAAC,OAAO,EAAE,CAAC;iBACnB;qBAAM;oBACL,2DAA2D;oBAC3D,2EAA2E;oBAC3E,MAAM,cAAc,GAAG,MAAM,CAAA,MAAA,MAAM,CAAC,GAAG,0CAAE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA,CAAC;oBAC5E,MAAM,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC,kCAAkC,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAE1G,8EAA8E;oBAC7E,eAAuB,CAAC,IAAI,GAAG,GAAG,CAAC;oBACpC,0EAA0E;oBAC1E,MAAM,UAAU,GAAG,WAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,CAAY,CAAC;oBAExE,IAAI,CAAC,UAAU,EAAE;wBACf,MAAM,IAAI,eAAW,CAAC;4BACpB,EAAE,EAAE,kBAAc,CAAC,uBAAuB;4BAC1C,OAAO,EAAE,qBAAqB,GAAG,uBAAuB;yBACzD,CAAC,CAAC;qBACJ;oBAED,2BAA2B;oBAC3B,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,eAAW,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;oBACpF,8BAA8B,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;oBAEjE,0EAA0E;oBAC1E,MAAM,gBAAgB,CAAC,6BAA6B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;iBAC5E;aACF;QACH,CAAC,CAAA,CACF,CAAC;QACF,gBAAgB,CAAC,oBAAoB,CACnC,GAAG,OAAO,IAAI,+BAAuB,CAAC,OAAO,EAAE,EAC/C,CAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,oCAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEvD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,WAAW,GAAG,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,+BAAuB,CAAC,OAAO,CAAC,CAAC;gBAErG,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;aAChE;QACH,CAAC,CAAA,CACF,CAAC;QACF,gBAAgB,CAAC,oBAAoB,CACnC,GAAG,OAAO,IAAI,+BAAuB,CAAC,OAAO,EAAE,EAC/C,CAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,oCAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEvD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,WAAW,GAAG,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,+BAAuB,CAAC,OAAO,CAAC,CAAC;gBAErG,oBAAoB,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;aAChE;QACH,CAAC,CAAA,CACF,CAAC;QACF,gBAAgB,CAAC,oBAAoB,CACnC,GAAG,OAAO,IAAI,+BAAuB,CAAC,MAAM,EAAE,EAC9C,CAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,oCAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEtD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,WAAW,GAAG,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,+BAAuB,CAAC,MAAM,CAAC,CAAC;gBAEpG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;aAC9D;QACH,CAAC,CAAA,CACF,CAAC;QACF,gBAAgB,CAAC,oBAAoB,CACnC,GAAG,OAAO,IAAI,+BAAuB,CAAC,MAAM,EAAE,EAC9C,CAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,oCAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEtD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,WAAW,GAAG,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,+BAAuB,CAAC,MAAM,CAAC,CAAC;gBAEpG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;aAC9D;QACH,CAAC,CAAA,CACF,CAAC;QACF,gBAAgB,CAAC,oBAAoB,CACnC,GAAG,OAAO,IAAI,+BAAuB,CAAC,IAAI,EAAE,EAC5C,CAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;YAChC,MAAM,IAAI,GAAG,oCAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEpD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,WAAW,GAAG,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,+BAAuB,CAAC,IAAI,CAAC,CAAC;gBAElG,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;aAC1D;QACH,CAAC,CAAA,CACF,CAAC;QACF,gBAAgB,CAAC,oBAAoB,CACnC,GAAG,OAAO,IAAI,+BAAuB,CAAC,IAAI,EAAE,EAC5C,CAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;YAChC,MAAM,IAAI,GAAG,oCAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEpD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,WAAW,GAAG,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,+BAAuB,CAAC,IAAI,CAAC,CAAC;gBAElG,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;aAC1D;QACH,CAAC,CAAA,CACF,CAAC;QACF,gBAAgB,CAAC,oBAAoB,CACnC,GAAG,OAAO,IAAI,+BAAuB,CAAC,IAAI,EAAE,EAC5C,CAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;YAChC,MAAM,IAAI,GAAG,oCAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEpD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,WAAW,GAAG,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,+BAAuB,CAAC,IAAI,CAAC,CAAC;gBAElG,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;aAC1D;QACH,CAAC,CAAA,CACF,CAAC;QACF,gBAAgB,CAAC,oBAAoB,CACnC,GAAG,OAAO,IAAI,+BAAuB,CAAC,MAAM,EAAE,EAC9C,CAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,oCAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAEvD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,WAAW,GAAG,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,+BAAuB,CAAC,MAAM,CAAC,CAAC;gBAEpG,6GAA6G;gBAC7G,0CAA0C;gBAC1C,MAAM,OAAO,GAAG,+BAA+B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACtE,IAAI,OAAO,EAAE;oBACX,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,WAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAO,CAAC,gBAAgB,CAAC;iBAC/E;aACF;QACH,CAAC,CAAA,CACF,CAAC;QACF,gBAAgB,CAAC,oBAAoB,CACnC,GAAG,OAAO,IAAI,+BAAuB,CAAC,MAAM,EAAE,EAC9C,CAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,oCAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAEvD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,WAAW,GAAG,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,+BAAuB,CAAC,MAAM,CAAC,CAAC;gBAEpG,MAAM,OAAO,GAAG,+BAA+B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACtE,IAAI,OAAO,EAAE;oBACX,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,WAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAO,CAAC,gBAAgB,CAAC;iBAC/E;aACF;QACH,CAAC,CAAA,CACF,CAAC;QACF,gBAAgB,CAAC,oBAAoB,CACnC,GAAG,OAAO,IAAI,+BAAuB,CAAC,KAAK,EAAE,EAC7C,CAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;YAChC,MAAM,KAAK,GAAG,oCAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAErD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAChC,MAAM,WAAW,GAAG,4BAA4B,CAAC,QAAQ,EAAE,OAAO,EAAE,+BAAuB,CAAC,KAAK,CAAC,CAAC;gBAEnG,MAAM,OAAO,GAAG,+BAA+B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACtE,IAAI,OAAO,EAAE;oBACX,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;iBAClC;aACF;QACH,CAAC,CAAA,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,+GAA+G;IAC/G,gBAAgB,CAAC,oBAAoB,CAAC,oCAAgB,CAAC,YAAY,EAAE,CAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;QACrG,MAAM,YAAY,GAAG,oCAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE7D,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC5C,IAAI,WAAW,KAAK,aAAa,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,gDAAgD,WAAW,mBAAmB,CAAC,CAAC;aACjG;YAED,MAAM,WAAW,GAAG,QAAuB,CAAC;YAC5C,WAAW,CAAC,SAAS,CAAC,SAAS,GAAG,YAAY,CAAC;SAChD;IACH,CAAC,CAAA,CAAC,CAAC;AACL,CAAC;AA1ND,sEA0NC;AAED;;;;;;GAMG;AACH,SAAS,4BAA4B,CAAC,QAAkB,EAAE,OAAe,EAAE,SAAiB;IAC1F,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;IAC5C,IAAI,WAAW,KAAK,aAAa,EAAE;QACjC,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,IAAI,SAAS,8BAA8B,WAAW,mBAAmB,CAAC,CAAC;KAC9G;IAED,OAAO,QAAuB,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAC3B,OAAoG,EACpG,KAAa,EACb,WAAwB,EACxB,OAAqC;IAErC,MAAM,OAAO,GAAG,+BAA+B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEtE,IAAI,OAAO,EAAE;QACX,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;KAC1B;SAAM;QACL,2DAA2D;QAC3D,wEAAwE;KACzE;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,+BAA+B,CACtC,WAAwB,EACxB,OAAqC;IAErC,IAAI,WAA+B,CAAC;IAEpC,IAAI,OAAO,KAAK,0BAA0B,EAAE;QAC1C,WAAW,GAAG,WAAW,CAAC,eAAe,CAAC;KAC3C;SAAM,IAAI,OAAO,KAAK,kBAAkB,EAAE;QACzC,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC;KAC7C;SAAM;QACL,uEAAuE;QACvE,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;KACpC;IAED,8BAA8B;IAC9B,OAAO,WAAW,YAAY,WAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,SAAS,8BAA8B,CACrC,OAAgB,EAChB,WAAwB,EACxB,OAAqC;IAErC,IAAI,OAAO,KAAK,0BAA0B,EAAE;QAC1C,WAAW,CAAC,eAAe,GAAG,OAAO,CAAC;KACvC;SAAM,IAAI,OAAO,KAAK,kBAAkB,EAAE;QACzC,WAAW,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;KACzC;SAAM;QACL,WAAW,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;KAChC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,kCAAkC,CAAC,WAAmB,EAAE,OAAqC;;IACpG,IAAI,UAA8B,CAAC;IAEnC,IAAI,OAAO,KAAK,0BAA0B,EAAE;QAC1C,UAAU,GAAI,WAAmB,CAAC,eAAe,CAAC;KACnD;SAAM,IAAI,OAAO,KAAK,kBAAkB,EAAE;QACzC,UAAU,GAAG,MAAC,WAAmB,CAAC,SAAS,0CAAE,OAAO,CAAC;KACtD;SAAM;QACL,UAAU,GAAI,WAAmB,CAAC,OAAO,CAAC,CAAC;KAC5C;IAED,OAAO,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import { AbstractMesh, Material, Viewer } from '../index';
|
|
1
|
+
import { AbstractMesh, Material, TagNamingStrategy, Viewer } from '../index';
|
|
2
|
+
export declare type MaterialCloneOptions = {
|
|
3
|
+
tagNamingStrategy?: TagNamingStrategy;
|
|
4
|
+
};
|
|
2
5
|
/**
|
|
3
6
|
* Manager for material related tasks
|
|
4
7
|
*/
|
|
@@ -9,6 +12,9 @@ export declare class MaterialManager {
|
|
|
9
12
|
* @internal
|
|
10
13
|
*/
|
|
11
14
|
static readonly CBN_FALLBACK_MATERIAL_NAME = "$fallback";
|
|
15
|
+
protected _clonedMaterials: {
|
|
16
|
+
[name: string]: Material;
|
|
17
|
+
};
|
|
12
18
|
protected _createMaterialPromises: {
|
|
13
19
|
[materialId: string]: Promise<Material | null>;
|
|
14
20
|
};
|
|
@@ -31,5 +37,20 @@ export declare class MaterialManager {
|
|
|
31
37
|
* Use {@link setMaterialOnMesh} instead if the material should be applied on the mesh immediately.
|
|
32
38
|
*/
|
|
33
39
|
getOrCreateMaterial(materialId: string, mesh?: AbstractMesh): Promise<Material>;
|
|
40
|
+
/**
|
|
41
|
+
* Creates a clone of a material.\
|
|
42
|
+
* The clones tags will be adjusted according to the "tagNamingStrategy" option.
|
|
43
|
+
* Predefined material parameters will be applied to the material right away.
|
|
44
|
+
*/
|
|
45
|
+
cloneMaterial(materialId: string, newMaterialId: string, options?: MaterialCloneOptions): Promise<Material>;
|
|
46
|
+
/**
|
|
47
|
+
* Removes a cloned material from the scene and from the internal material clone storage.\
|
|
48
|
+
* Also remove all parameter entries from this material.
|
|
49
|
+
*/
|
|
50
|
+
deleteClonedMaterial(materialId: string): void;
|
|
51
|
+
/**
|
|
52
|
+
* Removes all cloned materials from the scene and the internal material clone storage
|
|
53
|
+
*/
|
|
54
|
+
deleteAllClonedMaterials(): void;
|
|
34
55
|
protected _createMaterial(materialId: string, mesh?: AbstractMesh): Promise<Material>;
|
|
35
56
|
}
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -11,6 +34,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
34
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
35
|
exports.MaterialManager = void 0;
|
|
13
36
|
const index_1 = require("../index");
|
|
37
|
+
const CloningHelper = __importStar(require("../internal/cloning-helper"));
|
|
14
38
|
const metadata_helper_1 = require("../internal/metadata-helper");
|
|
15
39
|
/**
|
|
16
40
|
* Manager for material related tasks
|
|
@@ -19,6 +43,7 @@ class MaterialManager {
|
|
|
19
43
|
/** @internal */
|
|
20
44
|
constructor(viewer) {
|
|
21
45
|
this.viewer = viewer;
|
|
46
|
+
this._clonedMaterials = {};
|
|
22
47
|
this._createMaterialPromises = {};
|
|
23
48
|
}
|
|
24
49
|
/**
|
|
@@ -78,6 +103,49 @@ class MaterialManager {
|
|
|
78
103
|
return chosenMaterial;
|
|
79
104
|
});
|
|
80
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Creates a clone of a material.\
|
|
108
|
+
* The clones tags will be adjusted according to the "tagNamingStrategy" option.
|
|
109
|
+
* Predefined material parameters will be applied to the material right away.
|
|
110
|
+
*/
|
|
111
|
+
cloneMaterial(materialId, newMaterialId, options) {
|
|
112
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
113
|
+
const existingMaterial = this._clonedMaterials[newMaterialId];
|
|
114
|
+
if (existingMaterial) {
|
|
115
|
+
throw new index_1.ViewerError({
|
|
116
|
+
id: index_1.ViewerErrorIds.MaterialAlreadyExists,
|
|
117
|
+
message: `Can't create clone as material "${newMaterialId}" already exists`,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
const sourceMaterial = yield this.getOrCreateMaterial(materialId);
|
|
121
|
+
const clonedMaterial = CloningHelper.cloneMaterial(sourceMaterial, newMaterialId, options === null || options === void 0 ? void 0 : options.tagNamingStrategy);
|
|
122
|
+
yield this.viewer.parameterManager.applyParameterValuesToMaterial(clonedMaterial);
|
|
123
|
+
this._clonedMaterials[newMaterialId] = clonedMaterial;
|
|
124
|
+
return clonedMaterial;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Removes a cloned material from the scene and from the internal material clone storage.\
|
|
129
|
+
* Also remove all parameter entries from this material.
|
|
130
|
+
*/
|
|
131
|
+
deleteClonedMaterial(materialId) {
|
|
132
|
+
const material = this._clonedMaterials[materialId];
|
|
133
|
+
if (!material) {
|
|
134
|
+
throw new index_1.ViewerError({
|
|
135
|
+
id: index_1.ViewerErrorIds.NotAClonedMaterial,
|
|
136
|
+
message: `Can't delete material "${materialId}" as there is no cloned material with that id`,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
this.viewer.parameterManager.removeParameterEntriesOfMaterial(material);
|
|
140
|
+
material.dispose(true, true);
|
|
141
|
+
delete this._clonedMaterials[materialId];
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Removes all cloned materials from the scene and the internal material clone storage
|
|
145
|
+
*/
|
|
146
|
+
deleteAllClonedMaterials() {
|
|
147
|
+
Object.keys(this._clonedMaterials).forEach(materialId => this.deleteClonedMaterial(materialId));
|
|
148
|
+
}
|
|
81
149
|
_createMaterial(materialId, mesh) {
|
|
82
150
|
var _a;
|
|
83
151
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material-manager.js","sourceRoot":"","sources":["../../../src/manager/material-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"material-manager.js","sourceRoot":"","sources":["../../../src/manager/material-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -93,15 +93,17 @@ export declare class ModelManager {
|
|
|
93
93
|
*
|
|
94
94
|
* @param show show model immediately after cloning
|
|
95
95
|
* @param options additional options for the cloning procedure, like renaming algorithms
|
|
96
|
+
* @returns asset container for further processing of the clone
|
|
96
97
|
*/
|
|
97
|
-
cloneModel(name: string, newModelName: string, show?: boolean, options?: ModelCloneOptions): Promise<
|
|
98
|
+
cloneModel(name: string, newModelName: string, show?: boolean, options?: ModelCloneOptions): Promise<AssetContainer>;
|
|
98
99
|
/**
|
|
99
100
|
* Removes a cloned model from the scene and from the internal model storage.\
|
|
101
|
+
* Also removes parameter entries from all nodes of the model.\
|
|
100
102
|
* Deleted clones can not be shown again.
|
|
101
103
|
*/
|
|
102
104
|
deleteClonedModel(name: string): void;
|
|
103
105
|
/**
|
|
104
|
-
* Removes all cloned models from the scene and the internal model storage
|
|
106
|
+
* Removes all cloned models from the scene and the internal model storage
|
|
105
107
|
*/
|
|
106
108
|
deleteAllClonedModels(): void;
|
|
107
109
|
/**
|
|
@@ -181,6 +181,7 @@ class ModelManager {
|
|
|
181
181
|
*
|
|
182
182
|
* @param show show model immediately after cloning
|
|
183
183
|
* @param options additional options for the cloning procedure, like renaming algorithms
|
|
184
|
+
* @returns asset container for further processing of the clone
|
|
184
185
|
*/
|
|
185
186
|
cloneModel(name, newModelName, show = true, options) {
|
|
186
187
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -218,10 +219,12 @@ class ModelManager {
|
|
|
218
219
|
if (show) {
|
|
219
220
|
yield this._showModel(clonedModel);
|
|
220
221
|
}
|
|
222
|
+
return clonedModel.assetContainer;
|
|
221
223
|
});
|
|
222
224
|
}
|
|
223
225
|
/**
|
|
224
226
|
* Removes a cloned model from the scene and from the internal model storage.\
|
|
227
|
+
* Also removes parameter entries from all nodes of the model.\
|
|
225
228
|
* Deleted clones can not be shown again.
|
|
226
229
|
*/
|
|
227
230
|
deleteClonedModel(name) {
|
|
@@ -238,11 +241,14 @@ class ModelManager {
|
|
|
238
241
|
message: `Can't delete model "${name}" as model is not a clone`,
|
|
239
242
|
});
|
|
240
243
|
}
|
|
244
|
+
// parameter entries of deleted model can get in the way when recreating a clone with the same node names
|
|
245
|
+
// that's why it's benefitial to wipe the parameter entries of the model as well after removing it
|
|
246
|
+
this.viewer.parameterManager.removeParameterEntriesOfModel(model.assetContainer);
|
|
241
247
|
model.assetContainer.dispose();
|
|
242
248
|
delete this._modelAssets[name];
|
|
243
249
|
}
|
|
244
250
|
/**
|
|
245
|
-
* Removes all cloned models from the scene and the internal model storage
|
|
251
|
+
* Removes all cloned models from the scene and the internal model storage
|
|
246
252
|
*/
|
|
247
253
|
deleteAllClonedModels() {
|
|
248
254
|
const clonedModelNames = Object.values(this._modelAssets)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-manager.js","sourceRoot":"","sources":["../../../src/manager/model-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oCAWkB;AAClB,+DAAsE;AACtE,iEAAuE;AACvE,yCAAoC;AAqCpC;;;;GAIG;AACH,MAAa,YAAY;
|
|
1
|
+
{"version":3,"file":"model-manager.js","sourceRoot":"","sources":["../../../src/manager/model-manager.ts"],"names":[],"mappings":"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"}
|