@combeenation/3d-viewer 14.1.0 → 15.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.
Files changed (30) hide show
  1. package/dist/lib-cjs/buildinfo.json +1 -1
  2. package/dist/lib-cjs/commonjs.tsconfig.tsbuildinfo +1 -1
  3. package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.js.map +1 -1
  4. package/dist/lib-cjs/internal/paintable-helper.js +2 -54
  5. package/dist/lib-cjs/internal/paintable-helper.js.map +1 -1
  6. package/dist/lib-cjs/internal/svg-helper.d.ts +4 -0
  7. package/dist/lib-cjs/internal/svg-helper.js +67 -0
  8. package/dist/lib-cjs/internal/svg-helper.js.map +1 -0
  9. package/dist/lib-cjs/internal/tags-helper.d.ts +1 -1
  10. package/dist/lib-cjs/internal/tags-helper.js +10 -8
  11. package/dist/lib-cjs/internal/tags-helper.js.map +1 -1
  12. package/dist/lib-cjs/internal/texture-parameter-helper.d.ts +37 -0
  13. package/dist/lib-cjs/internal/texture-parameter-helper.js +287 -0
  14. package/dist/lib-cjs/internal/texture-parameter-helper.js.map +1 -0
  15. package/dist/lib-cjs/manager/parameter-manager.d.ts +19 -1
  16. package/dist/lib-cjs/manager/parameter-manager.js +66 -7
  17. package/dist/lib-cjs/manager/parameter-manager.js.map +1 -1
  18. package/dist/lib-cjs/viewer-error.d.ts +1 -0
  19. package/dist/lib-cjs/viewer-error.js +1 -0
  20. package/dist/lib-cjs/viewer-error.js.map +1 -1
  21. package/dist/lib-cjs/viewer.js.map +1 -1
  22. package/package.json +13 -10
  23. package/src/internal/cbn-custom-babylon-loader-plugin.ts +1 -1
  24. package/src/internal/paintable-helper.ts +2 -54
  25. package/src/internal/svg-helper.ts +52 -0
  26. package/src/internal/tags-helper.ts +9 -7
  27. package/src/internal/texture-parameter-helper.ts +353 -0
  28. package/src/manager/parameter-manager.ts +84 -6
  29. package/src/viewer-error.ts +1 -0
  30. package/src/viewer.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"cbn-custom-babylon-loader-plugin.js","sourceRoot":"","sources":["../../../src/internal/cbn-custom-babylon-loader-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cbn-custom-babylon-loader-plugin.js","sourceRoot":"","sources":["../../../src/internal/cbn-custom-babylon-loader-plugin.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.parsePaintable = exports.paintableParameterObserver = void 0;
27
27
  const index_1 = require("../index");
28
+ const svg_helper_1 = require("./svg-helper");
28
29
  const is_svg_1 = __importDefault(require("is-svg"));
29
30
  const lodash_es_1 = require("lodash-es");
30
31
  /**
@@ -193,7 +194,7 @@ function _drawPaintableOnMaterial(material, imageSource, scene, options) {
193
194
  function _createImageFromSvg(svgSrc) {
194
195
  return __awaiter(this, void 0, void 0, function* () {
195
196
  // replace assets with their base64 versions in svg source code
196
- const svgWithAssetsEmbedded = yield _embedAssets(svgSrc);
197
+ const svgWithAssetsEmbedded = yield (0, svg_helper_1.embedAssets)(svgSrc);
197
198
  // create data string which can be used as an image source
198
199
  const svgEncoded = 'data:image/svg+xml,' + encodeURIComponent(svgWithAssetsEmbedded);
199
200
  return _createImageFromImgSrc(svgEncoded);
@@ -231,57 +232,4 @@ function _createImageFromImgSrc(imgSrc) {
231
232
  return img;
232
233
  });
233
234
  }
234
- /**
235
- * Replaces all supported image & font URLs in the given SVG with their base64 representation.
236
- */
237
- function _embedAssets(svgSrc) {
238
- return __awaiter(this, void 0, void 0, function* () {
239
- const _imageExtensions = ['png', 'gif', 'jpg', 'jpeg', 'svg', 'bmp'];
240
- const _fontExtensions = ['woff2', 'woff', 'ttf', 'otf'];
241
- const _assetExtensions = [..._imageExtensions, ..._fontExtensions];
242
- // Regex copied from https://stackoverflow.com/a/8943487/1273551, not "stress tested"...
243
- const urlRegex = /(\bhttps?:\/\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])/gi;
244
- const allUrls = svgSrc.match(urlRegex);
245
- const assetUrls = allUrls.filter(url => {
246
- const indexParam = url.indexOf('?');
247
- // remove url parameter to recognize extension
248
- if (indexParam > -1) {
249
- url = url.substring(0, indexParam);
250
- }
251
- return _assetExtensions.some(extension => url.toLowerCase().endsWith(`.${extension}`));
252
- });
253
- const assetBase64Fetcher = assetUrls.map(_fetchBase64AssetUrl);
254
- const assetFetcherResults = yield Promise.all(assetBase64Fetcher);
255
- return assetFetcherResults.reduce((svgSrc, x) => svgSrc.replace(x.url, x.base64), svgSrc);
256
- });
257
- }
258
- /**
259
- * Fetch asset (image or font) and convert it to base64 string representation.
260
- */
261
- function _fetchBase64AssetUrl(assetUrl) {
262
- return __awaiter(this, void 0, void 0, function* () {
263
- // TODO WTT: Cache known base64 representation and only fetch/convert when not already known.
264
- // Usually the fetch shouldn't hit the network but the browser cache since the SVG was already drawn..
265
- const resp = yield fetch(assetUrl);
266
- const blob = yield resp.blob();
267
- return new Promise((resolve, reject) => {
268
- const reader = new FileReader();
269
- reader.onloadend = (event) => {
270
- const target = event.target;
271
- if (!target) {
272
- return reject(`Asset with URL "${assetUrl}" could not be loaded.`);
273
- }
274
- const result = target.result;
275
- if (!result) {
276
- return reject(`Asset with URL "${assetUrl}" returned an empty result.`);
277
- }
278
- resolve({
279
- url: assetUrl,
280
- base64: result.toString(),
281
- });
282
- };
283
- reader.readAsDataURL(blob);
284
- });
285
- });
286
- }
287
235
  //# sourceMappingURL=paintable-helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paintable-helper.js","sourceRoot":"","sources":["../../../src/internal/paintable-helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paintable-helper.js","sourceRoot":"","sources":["../../../src/internal/paintable-helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Replaces all supported image & font URLs in the given SVG with their base64 representation.
3
+ */
4
+ export declare function embedAssets(svgSrc: string): Promise<string>;
@@ -0,0 +1,67 @@
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.embedAssets = void 0;
13
+ /**
14
+ * Replaces all supported image & font URLs in the given SVG with their base64 representation.
15
+ */
16
+ function embedAssets(svgSrc) {
17
+ return __awaiter(this, void 0, void 0, function* () {
18
+ const _imageExtensions = ['png', 'gif', 'jpg', 'jpeg', 'svg', 'bmp'];
19
+ const _fontExtensions = ['woff2', 'woff', 'ttf', 'otf'];
20
+ const _assetExtensions = [..._imageExtensions, ..._fontExtensions];
21
+ // Regex copied from https://stackoverflow.com/a/8943487/1273551, not "stress tested"...
22
+ const urlRegex = /(\bhttps?:\/\/[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])/gi;
23
+ const allUrls = svgSrc.match(urlRegex);
24
+ const assetUrls = allUrls.filter(url => {
25
+ const indexParam = url.indexOf('?');
26
+ // remove url parameter to recognize extension
27
+ if (indexParam > -1) {
28
+ url = url.substring(0, indexParam);
29
+ }
30
+ return _assetExtensions.some(extension => url.toLowerCase().endsWith(`.${extension}`));
31
+ });
32
+ const assetBase64Fetcher = assetUrls.map(_fetchBase64AssetUrl);
33
+ const assetFetcherResults = yield Promise.all(assetBase64Fetcher);
34
+ return assetFetcherResults.reduce((svgSrc, x) => svgSrc.replace(x.url, x.base64), svgSrc);
35
+ });
36
+ }
37
+ exports.embedAssets = embedAssets;
38
+ /**
39
+ * Fetch asset (image or font) and convert it to base64 string representation.
40
+ */
41
+ function _fetchBase64AssetUrl(assetUrl) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ // TODO WTT: Cache known base64 representation and only fetch/convert when not already known.
44
+ // Usually the fetch shouldn't hit the network but the browser cache since the SVG was already drawn..
45
+ const resp = yield fetch(assetUrl);
46
+ const blob = yield resp.blob();
47
+ return new Promise((resolve, reject) => {
48
+ const reader = new FileReader();
49
+ reader.onloadend = (event) => {
50
+ const target = event.target;
51
+ if (!target) {
52
+ return reject(`Asset with URL "${assetUrl}" could not be loaded.`);
53
+ }
54
+ const result = target.result;
55
+ if (!result) {
56
+ return reject(`Asset with URL "${assetUrl}" returned an empty result.`);
57
+ }
58
+ resolve({
59
+ url: assetUrl,
60
+ base64: result.toString(),
61
+ });
62
+ };
63
+ reader.readAsDataURL(blob);
64
+ });
65
+ });
66
+ }
67
+ //# sourceMappingURL=svg-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"svg-helper.js","sourceRoot":"","sources":["../../../src/internal/svg-helper.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA;;GAEG;AACH,SAAsB,WAAW,CAAC,MAAc;;QAC9C,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACxD,MAAM,gBAAgB,GAAG,CAAC,GAAG,gBAAgB,EAAE,GAAG,eAAe,CAAC,CAAC;QACnE,wFAAwF;QACxF,MAAM,QAAQ,GAAG,gEAAgE,CAAC;QAClF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAa,CAAC;QAEnD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YACrC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpC,8CAA8C;YAC9C,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;gBACnB,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;aACpC;YACD,OAAO,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;QACH,MAAM,kBAAkB,GAAG,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC/D,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAClE,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5F,CAAC;CAAA;AAnBD,kCAmBC;AAED;;GAEG;AACH,SAAe,oBAAoB,CAAC,QAAgB;;QAClD,6FAA6F;QAC7F,gHAAgH;QAChH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAE/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,CAAC,SAAS,GAAG,CAAC,KAAK,EAAQ,EAAE;gBACjC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC5B,IAAI,CAAC,MAAM,EAAE;oBACX,OAAO,MAAM,CAAC,mBAAmB,QAAQ,wBAAwB,CAAC,CAAC;iBACpE;gBACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;gBAC7B,IAAI,CAAC,MAAM,EAAE;oBACX,OAAO,MAAM,CAAC,mBAAmB,QAAQ,6BAA6B,CAAC,CAAC;iBACzE;gBACD,OAAO,CAAC;oBACN,GAAG,EAAE,QAAQ;oBACb,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAY;iBACpC,CAAC,CAAC;YACL,CAAC,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC;CAAA"}
@@ -6,7 +6,7 @@ declare type TagTarget = Node | Material;
6
6
  export declare function hasTag(object: TagTarget, tag: string): boolean;
7
7
  export declare function getTags(object: TagTarget): string[];
8
8
  export declare function setTags(object: TagTarget, tags: string[]): void;
9
- export declare function deleteAllTags(object: TagTarget): void;
10
9
  export declare function setTagsAsString(object: TagTarget, tagsString: string): void;
11
10
  export declare function cloneTags(sourceObject: TagTarget, destinationObject: TagTarget): void;
11
+ export declare function deleteAllTags(object: TagTarget): void;
12
12
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cloneTags = exports.setTagsAsString = exports.deleteAllTags = exports.setTags = exports.getTags = exports.hasTag = void 0;
3
+ exports.deleteAllTags = exports.cloneTags = exports.setTagsAsString = exports.setTags = exports.getTags = exports.hasTag = void 0;
4
4
  const tags_1 = require("@babylonjs/core/Misc/tags");
5
5
  function hasTag(object, tag) {
6
6
  return tags_1.Tags.MatchesQuery(object, tag);
@@ -14,18 +14,13 @@ function getTags(object) {
14
14
  }
15
15
  exports.getTags = getTags;
16
16
  function setTags(object, tags) {
17
+ deleteAllTags(object);
17
18
  const tagsString = tags.join(' ');
18
19
  tags_1.Tags.AddTagsTo(object, tagsString);
19
20
  }
20
21
  exports.setTags = setTags;
21
- function deleteAllTags(object) {
22
- const curTags = tags_1.Tags.GetTags(object);
23
- if (curTags) {
24
- tags_1.Tags.RemoveTagsFrom(object, curTags);
25
- }
26
- }
27
- exports.deleteAllTags = deleteAllTags;
28
22
  function setTagsAsString(object, tagsString) {
23
+ deleteAllTags(object);
29
24
  tags_1.Tags.AddTagsTo(object, tagsString);
30
25
  }
31
26
  exports.setTagsAsString = setTagsAsString;
@@ -35,4 +30,11 @@ function cloneTags(sourceObject, destinationObject) {
35
30
  }
36
31
  }
37
32
  exports.cloneTags = cloneTags;
33
+ function deleteAllTags(object) {
34
+ const curTags = tags_1.Tags.GetTags(object);
35
+ if (curTags) {
36
+ tags_1.Tags.RemoveTagsFrom(object, curTags);
37
+ }
38
+ }
39
+ exports.deleteAllTags = deleteAllTags;
38
40
  //# sourceMappingURL=tags-helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tags-helper.js","sourceRoot":"","sources":["../../../src/internal/tags-helper.ts"],"names":[],"mappings":";;;AACA,oDAAiD;AAQjD,SAAgB,MAAM,CAAC,MAAiB,EAAE,GAAW;IACnD,OAAO,WAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC;AAFD,wBAEC;AAED,SAAgB,OAAO,CAAC,MAAiB;;IACvC,MAAM,UAAU,GAAG,MAAA,WAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,mCAAI,EAAE,CAAC;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAErC,OAAO,IAAI,CAAC;AACd,CAAC;AALD,0BAKC;AAED,SAAgB,OAAO,CAAC,MAAiB,EAAE,IAAc;IACvD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,WAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACrC,CAAC;AAHD,0BAGC;AAED,SAAgB,aAAa,CAAC,MAAiB;IAC7C,MAAM,OAAO,GAAG,WAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,OAAO,EAAE;QACX,WAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC;AACH,CAAC;AALD,sCAKC;AAED,SAAgB,eAAe,CAAC,MAAiB,EAAE,UAAkB;IACnE,WAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACrC,CAAC;AAFD,0CAEC;AAED,SAAgB,SAAS,CAAC,YAAuB,EAAE,iBAA4B;IAC7E,IAAI,WAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QAC9B,WAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,WAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;KACrE;AACH,CAAC;AAJD,8BAIC"}
1
+ {"version":3,"file":"tags-helper.js","sourceRoot":"","sources":["../../../src/internal/tags-helper.ts"],"names":[],"mappings":";;;AACA,oDAAiD;AAQjD,SAAgB,MAAM,CAAC,MAAiB,EAAE,GAAW;IACnD,OAAO,WAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC;AAFD,wBAEC;AAED,SAAgB,OAAO,CAAC,MAAiB;;IACvC,MAAM,UAAU,GAAG,MAAA,WAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,mCAAI,EAAE,CAAC;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAErC,OAAO,IAAI,CAAC;AACd,CAAC;AALD,0BAKC;AAED,SAAgB,OAAO,CAAC,MAAiB,EAAE,IAAc;IACvD,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,WAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACrC,CAAC;AAJD,0BAIC;AAED,SAAgB,eAAe,CAAC,MAAiB,EAAE,UAAkB;IACnE,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,WAAI,CAAC,SAAS,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACrC,CAAC;AAHD,0CAGC;AAED,SAAgB,SAAS,CAAC,YAAuB,EAAE,iBAA4B;IAC7E,IAAI,WAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;QAC9B,WAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,WAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;KACrE;AACH,CAAC;AAJD,8BAIC;AAED,SAAgB,aAAa,CAAC,MAAiB;IAC7C,MAAM,OAAO,GAAG,WAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,OAAO,EAAE;QACX,WAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC;AACH,CAAC;AALD,sCAKC"}
@@ -0,0 +1,37 @@
1
+ import { Scene } from '..';
2
+ import { ParameterManager } from '../manager/parameter-manager';
3
+ /**
4
+ * Texture parameters are a combination of the channel (e.g. albedo, bump, AO) and the "sub" parameter (e.g. uScale).
5
+ * Each parameter is available in each texture, that's why these textures parameter are defined as dotted path
6
+ * `albedoTexture.uScale`
7
+ * - channel: albedoTexture
8
+ * - parameter: uScale
9
+ * The consumer doesn't have to know this as there is `BuiltInParameters.createTextureParameter(channel, parameter)`,
10
+ * which composes this string internally
11
+ */
12
+ export declare const BuiltInTextureParameter: {
13
+ image: string;
14
+ uOffset: string;
15
+ vOffset: string;
16
+ uScale: string;
17
+ vScale: string;
18
+ uAng: string;
19
+ vAng: string;
20
+ wAng: string;
21
+ clampU: string;
22
+ clampV: string;
23
+ uvSet: string;
24
+ };
25
+ export declare type BuiltInTextureParameterKeys = keyof typeof BuiltInTextureParameter;
26
+ export declare const ParameterTextureChannels: {
27
+ albedoTexture: string;
28
+ metallicRoughnessTexture: string;
29
+ bumpTexture: string;
30
+ emissiveTexture: string;
31
+ opacityTexture: string;
32
+ ambientTexture: string;
33
+ lightmapTexture: string;
34
+ detailmapTexture: string;
35
+ };
36
+ export declare type ParameterTextureChannelsKeys = keyof typeof ParameterTextureChannels;
37
+ export declare function createBuiltInTextureParameter(parameterManager: ParameterManager, scene: Scene): void;
@@ -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":"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"}