@shapediver/viewer.data-engine.material-engine 3.2.1 → 3.2.2

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.
@@ -1,7 +1,7 @@
1
+ import { IMaterialContentDataV1, IMaterialContentDataV2, IMaterialContentDataV3, ITexture } from '@shapediver/viewer.data-engine.shared-types';
1
2
  import { ITreeNode } from '@shapediver/viewer.shared.node-tree';
2
- import { IMaterialAbstractData, IMaterialAbstractDataProperties, MapData, MaterialStandardData } from '@shapediver/viewer.shared.types';
3
3
  import { ShapeDiverResponseOutputContent } from '@shapediver/sdk.geometry-api-sdk-v2';
4
- import { IMaterialContentDataV1, IMaterialContentDataV2, IMaterialContentDataV3, ITexture } from '@shapediver/viewer.data-engine.shared-types';
4
+ import { IMapDataPropertiesDefinition, IMaterialAbstractData, IMaterialAbstractDataProperties, IMaterialAbstractDataPropertiesDefinition, MapData, MaterialStandardData } from '@shapediver/viewer.shared.types';
5
5
  export declare class MaterialEngine {
6
6
  private readonly _converter;
7
7
  private readonly _httpClient;
@@ -15,6 +15,7 @@ export declare class MaterialEngine {
15
15
  * @returns
16
16
  */
17
17
  createMaterialData(materialProperties: IMaterialAbstractDataProperties): IMaterialAbstractData;
18
+ createMaterialDataFromDefinition(definition: IMaterialAbstractDataPropertiesDefinition): Promise<IMaterialAbstractData>;
18
19
  /**
19
20
  * Load the material content into a scene graph node.
20
21
  *
@@ -22,8 +23,15 @@ export declare class MaterialEngine {
22
23
  * @returns the scene graph node
23
24
  */
24
25
  loadContent(content: ShapeDiverResponseOutputContent): Promise<ITreeNode>;
25
- loadMap(url: string, id?: string): Promise<MapData | null>;
26
- loadMapWithProperties(texture: ITexture): Promise<MapData | null>;
26
+ loadMap(url: string, id?: string): Promise<MapData>;
27
+ /**
28
+ * Load a map from a definition.
29
+ *
30
+ * @param definition
31
+ * @returns
32
+ */
33
+ loadMapFromDefinition(definition?: IMapDataPropertiesDefinition): Promise<MapData | undefined>;
34
+ loadMapWithProperties(texture: ITexture): Promise<MapData>;
27
35
  loadMaterialDefinitionV1(data: IMaterialContentDataV1, presetData?: IMaterialContentDataV3): IMaterialContentDataV3;
28
36
  loadMaterialDefinitionV2(data: IMaterialContentDataV2, presetData?: IMaterialContentDataV3): IMaterialContentDataV3;
29
37
  loadMaterialDefinitionV3(data: IMaterialContentDataV3, presetData?: IMaterialContentDataV3): IMaterialContentDataV3;
@@ -1 +1 @@
1
- {"version":3,"file":"MaterialEngine.d.ts","sourceRoot":"","sources":["../src/MaterialEngine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAY,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EACH,qBAAqB,EACrB,+BAA+B,EAC/B,OAAO,EAKP,oBAAoB,EAIvB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,+BAA+B,EAAE,MAAM,qCAAqC,CAAC;AACtF,OAAO,EAAwB,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,EAA6B,QAAQ,EAAE,MAAM,6CAA6C,CAAC;AAEhM,qBAAa,cAAc;IAGvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAC/D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IAEnD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAiB;IAMzC,WAAkB,QAAQ,mBAEzB;IAMD;;;;;OAKG;IACI,kBAAkB,CAAC,kBAAkB,EAAE,+BAA+B,GAAG,qBAAqB;IAcrG;;;;;SAKK;IACQ,WAAW,CAAC,OAAO,EAAE,+BAA+B,GAAG,OAAO,CAAC,SAAS,CAAC;IAoCzE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAgB1D,qBAAqB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAkBvE,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,EAAE,UAAU,GAAE,sBAA2B,GAAG,sBAAsB;IAwCvH,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,EAAE,UAAU,GAAE,sBAA2B,GAAG,sBAAsB;IAqDvH,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,EAAE,UAAU,GAAE,sBAA2B,GAAG,sBAAsB;IA8CjH,cAAc,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAqF3E,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIvE,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB;IAoB3E,OAAO,CAAC,uBAAuB;IAqD/B,OAAO,CAAC,wBAAwB;IAqDhC,OAAO,CAAC,qBAAqB;IAkB7B;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;CAWzB"}
1
+ {"version":3,"file":"MaterialEngine.d.ts","sourceRoot":"","sources":["../src/MaterialEngine.ts"],"names":[],"mappings":"AAMA,OAAO,EAEH,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EAEtB,QAAQ,EACX,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,SAAS,EAAY,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EAAE,+BAA+B,EAAE,MAAM,qCAAqC,CAAC;AAGtF,OAAO,EACH,4BAA4B,EAC5B,qBAAqB,EACrB,+BAA+B,EAC/B,yCAAyC,EASzC,OAAO,EAKP,oBAAoB,EAIvB,MAAM,iCAAiC,CAAC;AAEzC,qBAAa,cAAc;IAGvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAC5D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAC/D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IAEnD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAiB;IAMzC,WAAkB,QAAQ,mBAEzB;IAMD;;;;;OAKG;IACI,kBAAkB,CAAC,kBAAkB,EAAE,+BAA+B,GAAG,qBAAqB;IAcxF,gCAAgC,CAAC,UAAU,EAAE,yCAAyC,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAsMpI;;;;;SAKK;IACQ,WAAW,CAAC,OAAO,EAAE,+BAA+B,GAAG,OAAO,CAAC,SAAS,CAAC;IAoCzE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBhE;;;;;OAKG;IACU,qBAAqB,CAAC,UAAU,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAsB9F,qBAAqB,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBhE,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,EAAE,UAAU,GAAE,sBAA2B,GAAG,sBAAsB;IAwCvH,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,EAAE,UAAU,GAAE,sBAA2B,GAAG,sBAAsB;IAqDvH,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,EAAE,UAAU,GAAE,sBAA2B,GAAG,sBAAsB;IA8CjH,cAAc,CAAC,IAAI,EAAE,sBAAsB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAqF3E,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIvE,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB;IAoB3E,OAAO,CAAC,uBAAuB;IAqD/B,OAAO,CAAC,wBAAwB;IAqDhC,OAAO,CAAC,qBAAqB;IAkB7B;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;CAWzB"}
@@ -10,27 +10,27 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.MaterialEngine = void 0;
13
- /* eslint-disable no-prototype-builtins */
14
- const viewer_shared_node_tree_1 = require("@shapediver/viewer.shared.node-tree");
15
13
  const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
16
- const viewer_shared_types_1 = require("@shapediver/viewer.shared.types");
17
- const gl_matrix_1 = require("gl-matrix");
14
+ const viewer_shared_node_tree_1 = require("@shapediver/viewer.shared.node-tree");
18
15
  const materialDatabase_1 = require("./materialDatabase");
16
+ const gl_matrix_1 = require("gl-matrix");
17
+ /* eslint-disable no-prototype-builtins */
18
+ const viewer_shared_types_1 = require("@shapediver/viewer.shared.types");
19
19
  class MaterialEngine {
20
20
  constructor() {
21
21
  // #region Properties (4)
22
22
  this._converter = viewer_shared_services_1.Converter.instance;
23
23
  this._httpClient = viewer_shared_services_1.HttpClient.instance;
24
24
  this._logger = viewer_shared_services_1.Logger.instance;
25
- // #endregion Private Methods (3)
25
+ // #endregion Private Methods (4)
26
26
  }
27
27
  // #endregion Properties (4)
28
- // #region Public Static Accessors (1)
28
+ // #region Public Static Getters And Setters (1)
29
29
  static get instance() {
30
30
  return this._instance || (this._instance = new this());
31
31
  }
32
- // #endregion Public Static Accessors (1)
33
- // #region Public Methods (9)
32
+ // #endregion Public Static Getters And Setters (1)
33
+ // #region Public Methods (12)
34
34
  /**
35
35
  * Create a material data based on the material properties
36
36
  *
@@ -50,6 +50,220 @@ class MaterialEngine {
50
50
  return new viewer_shared_types_1.MaterialStandardData(materialProperties);
51
51
  }
52
52
  }
53
+ createMaterialDataFromDefinition(definition) {
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ const materialType = definition.type || viewer_shared_types_1.MATERIAL_TYPE.STANDARD;
56
+ const promises = [];
57
+ const abstractProperties = {};
58
+ abstractProperties.alphaCutoff = definition.alphaCutoff;
59
+ promises.push(this.loadMapFromDefinition(definition.alphaMap).then(map => {
60
+ if (map)
61
+ abstractProperties.alphaMap = map;
62
+ return map;
63
+ }));
64
+ abstractProperties.alphaMode = definition.alphaMode;
65
+ promises.push(this.loadMapFromDefinition(definition.aoMap).then(map => {
66
+ if (map)
67
+ abstractProperties.aoMap = map;
68
+ return map;
69
+ }));
70
+ abstractProperties.aoMapIntensity = definition.aoMapIntensity;
71
+ promises.push(this.loadMapFromDefinition(definition.bumpMap).then(map => {
72
+ if (map)
73
+ abstractProperties.bumpMap = map;
74
+ return map;
75
+ }));
76
+ abstractProperties.bumpScale = definition.bumpScale;
77
+ abstractProperties.color = definition.color ? this._converter.toColorArray(definition.color) : undefined;
78
+ abstractProperties.depthTest = definition.depthTest;
79
+ abstractProperties.depthWrite = definition.depthWrite;
80
+ promises.push(this.loadMapFromDefinition(definition.emissiveMap).then(map => {
81
+ if (map)
82
+ abstractProperties.emissiveMap = map;
83
+ return map;
84
+ }));
85
+ abstractProperties.emissiveness = definition.emissiveness ? this._converter.toColorArray(definition.emissiveness) : undefined;
86
+ promises.push(this.loadMapFromDefinition(definition.map).then(map => {
87
+ if (map)
88
+ abstractProperties.map = map;
89
+ return map;
90
+ }));
91
+ abstractProperties.name = definition.name;
92
+ promises.push(this.loadMapFromDefinition(definition.normalMap).then(map => {
93
+ if (map)
94
+ abstractProperties.normalMap = map;
95
+ return map;
96
+ }));
97
+ abstractProperties.normalScale = definition.normalScale;
98
+ abstractProperties.opacity = definition.opacity;
99
+ abstractProperties.shading = definition.shading;
100
+ abstractProperties.side = definition.side;
101
+ abstractProperties.transparent = definition.transparent;
102
+ abstractProperties.type = materialType;
103
+ switch (materialType) {
104
+ case viewer_shared_types_1.MATERIAL_TYPE.SPECULAR_GLOSSINESS:
105
+ {
106
+ const specularGlossinessProperties = abstractProperties;
107
+ const specularGlossinessDefinition = definition;
108
+ specularGlossinessProperties.envMap = specularGlossinessDefinition.envMap;
109
+ specularGlossinessProperties.glossiness = specularGlossinessDefinition.glossiness;
110
+ specularGlossinessProperties.specular = specularGlossinessDefinition.specular;
111
+ if (specularGlossinessDefinition.specularGlossinessMap) {
112
+ promises.push(this.loadMapFromDefinition(specularGlossinessDefinition.specularGlossinessMap).then(map => {
113
+ if (map)
114
+ specularGlossinessProperties.specularGlossinessMap = map;
115
+ return map;
116
+ }));
117
+ }
118
+ else {
119
+ promises.push(this.loadMapFromDefinition(specularGlossinessDefinition.specularMap).then(map => {
120
+ if (map)
121
+ specularGlossinessProperties.specularMap = map;
122
+ return map;
123
+ }));
124
+ promises.push(this.loadMapFromDefinition(specularGlossinessDefinition.glossinessMap).then(map => {
125
+ if (map)
126
+ specularGlossinessProperties.glossinessMap = map;
127
+ return map;
128
+ }));
129
+ }
130
+ yield Promise.all(promises);
131
+ return new viewer_shared_types_1.MaterialSpecularGlossinessData(specularGlossinessProperties);
132
+ }
133
+ case viewer_shared_types_1.MATERIAL_TYPE.UNLIT:
134
+ {
135
+ const unlitProperties = abstractProperties;
136
+ const unlitDefinition = definition;
137
+ unlitProperties.envMap = unlitDefinition.envMap;
138
+ yield Promise.all(promises);
139
+ return new viewer_shared_types_1.MaterialUnlitData(unlitProperties);
140
+ }
141
+ case viewer_shared_types_1.MATERIAL_TYPE.GEM:
142
+ {
143
+ const gemProperties = abstractProperties;
144
+ const gemDefinition = definition;
145
+ gemProperties.brightness = gemDefinition.brightness;
146
+ gemProperties.center = gemDefinition.center;
147
+ gemProperties.colorTransferBegin = gemDefinition.colorTransferBegin;
148
+ gemProperties.colorTransferEnd = gemDefinition.colorTransferEnd;
149
+ gemProperties.contrast = gemDefinition.contrast;
150
+ gemProperties.dispersion = gemDefinition.dispersion;
151
+ gemProperties.envMap = gemDefinition.envMap;
152
+ gemProperties.gamma = gemDefinition.gamma;
153
+ promises.push(this.loadMapFromDefinition(gemDefinition.impurityMap).then(map => {
154
+ if (map)
155
+ gemProperties.impurityMap = map;
156
+ return map;
157
+ }));
158
+ gemProperties.impurityScale = gemDefinition.impurityScale;
159
+ gemProperties.radius = gemDefinition.radius;
160
+ gemProperties.refractionIndex = gemDefinition.refractionIndex;
161
+ promises.push(this.loadMapFromDefinition(gemDefinition.sphericalNormalMap).then(map => {
162
+ if (map)
163
+ gemProperties.sphericalNormalMap = map;
164
+ return map;
165
+ }));
166
+ gemProperties.tracingDepth = gemDefinition.tracingDepth;
167
+ gemProperties.tracingOpacity = gemDefinition.tracingOpacity;
168
+ yield Promise.all(promises);
169
+ return new viewer_shared_types_1.MaterialGemData(gemProperties);
170
+ }
171
+ default:
172
+ {
173
+ const standardProperties = abstractProperties;
174
+ const standardDefinition = definition;
175
+ standardProperties.attenuationColor = standardDefinition.attenuationColor;
176
+ standardProperties.attenuationDistance = standardDefinition.attenuationDistance;
177
+ standardProperties.clearcoat = standardDefinition.clearcoat;
178
+ promises.push(this.loadMapFromDefinition(standardDefinition.clearcoatMap).then(map => {
179
+ if (map)
180
+ standardProperties.clearcoatMap = map;
181
+ return map;
182
+ }));
183
+ promises.push(this.loadMapFromDefinition(standardDefinition.clearcoatNormalMap).then(map => {
184
+ if (map)
185
+ standardProperties.clearcoatNormalMap = map;
186
+ return map;
187
+ }));
188
+ standardProperties.clearcoatRoughness = standardDefinition.clearcoatRoughness;
189
+ promises.push(this.loadMapFromDefinition(standardDefinition.clearcoatRoughnessMap).then(map => {
190
+ if (map)
191
+ standardProperties.clearcoatRoughnessMap = map;
192
+ return map;
193
+ }));
194
+ standardProperties.displacementBias = standardDefinition.displacementBias;
195
+ promises.push(this.loadMapFromDefinition(standardDefinition.displacementMap).then(map => {
196
+ if (map)
197
+ standardProperties.displacementMap = map;
198
+ return map;
199
+ }));
200
+ standardProperties.displacementScale = standardDefinition.displacementScale;
201
+ standardProperties.envMap = standardDefinition.envMap;
202
+ standardProperties.ior = standardDefinition.ior;
203
+ standardProperties.metalness = standardDefinition.metalness;
204
+ if (standardDefinition.metalnessRoughnessMap) {
205
+ promises.push(this.loadMapFromDefinition(standardDefinition.metalnessMap).then(map => {
206
+ if (map)
207
+ standardProperties.metalnessMap = map;
208
+ return map;
209
+ }));
210
+ }
211
+ else {
212
+ promises.push(this.loadMapFromDefinition(standardDefinition.metalnessMap).then(map => {
213
+ if (map)
214
+ standardProperties.metalnessMap = map;
215
+ return map;
216
+ }));
217
+ promises.push(this.loadMapFromDefinition(standardDefinition.roughnessMap).then(map => {
218
+ if (map)
219
+ standardProperties.roughnessMap = map;
220
+ return map;
221
+ }));
222
+ }
223
+ standardProperties.roughness = standardDefinition.roughness;
224
+ standardProperties.sheen = standardDefinition.sheen;
225
+ standardProperties.sheenColor = standardDefinition.sheenColor;
226
+ promises.push(this.loadMapFromDefinition(standardDefinition.sheenColorMap).then(map => {
227
+ if (map)
228
+ standardProperties.sheenColorMap = map;
229
+ return map;
230
+ }));
231
+ standardProperties.sheenRoughness = standardDefinition.sheenRoughness;
232
+ promises.push(this.loadMapFromDefinition(standardDefinition.sheenRoughnessMap).then(map => {
233
+ if (map)
234
+ standardProperties.sheenRoughnessMap = map;
235
+ return map;
236
+ }));
237
+ standardProperties.specularColor = standardDefinition.specularColor;
238
+ promises.push(this.loadMapFromDefinition(standardDefinition.specularColorMap).then(map => {
239
+ if (map)
240
+ standardProperties.specularColorMap = map;
241
+ return map;
242
+ }));
243
+ standardProperties.specularIntensity = standardDefinition.specularIntensity;
244
+ promises.push(this.loadMapFromDefinition(standardDefinition.specularIntensityMap).then(map => {
245
+ if (map)
246
+ standardProperties.specularIntensityMap = map;
247
+ return map;
248
+ }));
249
+ standardProperties.thickness = standardDefinition.thickness;
250
+ promises.push(this.loadMapFromDefinition(standardDefinition.thicknessMap).then(map => {
251
+ if (map)
252
+ standardProperties.thicknessMap = map;
253
+ return map;
254
+ }));
255
+ standardProperties.transmission = standardDefinition.transmission;
256
+ promises.push(this.loadMapFromDefinition(standardDefinition.transmissionMap).then(map => {
257
+ if (map)
258
+ standardProperties.transmissionMap = map;
259
+ return map;
260
+ }));
261
+ yield Promise.all(promises);
262
+ return new viewer_shared_types_1.MaterialStandardData(standardProperties);
263
+ }
264
+ }
265
+ });
266
+ }
53
267
  /**
54
268
  * Load the material content into a scene graph node.
55
269
  *
@@ -112,6 +326,36 @@ class MaterialEngine {
112
326
  }
113
327
  });
114
328
  }
329
+ /**
330
+ * Load a map from a definition.
331
+ *
332
+ * @param definition
333
+ * @returns
334
+ */
335
+ loadMapFromDefinition(definition) {
336
+ return __awaiter(this, void 0, void 0, function* () {
337
+ if (!definition)
338
+ return undefined;
339
+ if (definition.image) {
340
+ if (typeof definition.image === 'string') {
341
+ return this.loadMapWithProperties({
342
+ href: definition.image,
343
+ wrapS: definition.wrapS,
344
+ wrapT: definition.wrapT,
345
+ center: definition.center,
346
+ color: definition.color ? this._converter.toColorArray(definition.color) : undefined,
347
+ offset: definition.offset,
348
+ repeat: definition.repeat,
349
+ rotation: definition.rotation
350
+ });
351
+ }
352
+ else {
353
+ return new viewer_shared_types_1.MapData(definition.image);
354
+ }
355
+ }
356
+ return;
357
+ });
358
+ }
115
359
  loadMapWithProperties(texture) {
116
360
  return __awaiter(this, void 0, void 0, function* () {
117
361
  const response = yield this._httpClient.loadTexture(texture.href);
@@ -317,8 +561,8 @@ class MaterialEngine {
317
561
  }
318
562
  return definition;
319
563
  }
320
- // #endregion Public Methods (9)
321
- // #region Private Methods (3)
564
+ // #endregion Public Methods (12)
565
+ // #region Private Methods (4)
322
566
  assignGeneralDefinition(id, generalDefinition, specificDefinition, definition) {
323
567
  if (generalDefinition.transparencytexture && !specificDefinition.transparencytexture)
324
568
  definition.transparencytexture = {
@@ -1 +1 @@
1
- {"version":3,"file":"MaterialEngine.js","sourceRoot":"","sources":["../src/MaterialEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAA0C;AAC1C,iFAA0E;AAC1E,+EAAwH;AACxH,yEAYyC;AACzC,yCAAuC;AAEvC,yDAAsD;AAItD,MAAa,cAAc;IAA3B;QACI,yBAAyB;QAER,eAAU,GAAc,kCAAS,CAAC,QAAQ,CAAC;QAC3C,gBAAW,GAAe,mCAAU,CAAC,QAAQ,CAAC;QAC9C,YAAO,GAAW,+BAAM,CAAC,QAAQ,CAAC;QAqfnD,iCAAiC;IACrC,CAAC;IAlfG,4BAA4B;IAE5B,sCAAsC;IAE/B,MAAM,KAAK,QAAQ;QACtB,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,yCAAyC;IAEzC,6BAA6B;IAE7B;;;;;OAKG;IACI,kBAAkB,CAAC,kBAAmD;QACzE,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,IAAK,mCAAa,CAAC,QAAQ,CAAC;QACxE,QAAQ,YAAY,EAAE;YAClB,KAAK,mCAAa,CAAC,mBAAmB;gBAClC,OAAO,IAAI,oDAA8B,CAAC,kBAAkB,CAAC,CAAC;YAClE,KAAK,mCAAa,CAAC,KAAK;gBACpB,OAAO,IAAI,uCAAiB,CAAC,kBAAkB,CAAC,CAAC;YACrD,KAAK,mCAAa,CAAC,GAAG;gBAClB,OAAO,IAAI,qCAAe,CAAC,kBAAkB,CAAC,CAAC;YACnD;gBACI,OAAO,IAAI,0CAAoB,CAAC,kBAAkB,CAAC,CAAC;SAC3D;IACL,CAAC;IAED;;;;;SAKK;IACQ,WAAW,CAAC,OAAwC;;YAC7D,MAAM,IAAI,GAAG,IAAI,kCAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC;YACtD,IAAI,CAAC,OAAO;gBACR,MAAM,IAAI,4DAAmC,CAAC,8EAA8E,CAAC,CAAC;YAElI,IAAI,QAAQ,GAAG,IAAI,0CAAoB,EAAE,CAAC;YAE1C,IAAI,OAAO,CAAC,IAAI,EAAE;gBACd,MAAM,IAAI,GAAyB,OAAO,CAAC,IAAI,CAAC;gBAChD,IAAI,UAA8C,CAAC;gBACnD,IAAI,IAAI,CAAC,cAAc;oBACnB,UAAU,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAExE,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,KAAK,UAAU,EAAE;oBACvD,+DAA+D;iBAClE;qBAAM;oBACH,IAAI,IAAI,CAAC,OAAO,EAAE;wBACd,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;4BACxB,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;yBACzF;6BAAM,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;4BAC/B,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;yBACzF;6BAAM,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;4BAC/B,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;yBACzF;6BAAM;4BACH,MAAM,IAAI,4DAAmC,CAAC,kEAAkE,CAAC,CAAC;yBACrH;qBACJ;iBACJ;aACJ;iBAAM;gBACH,MAAM,IAAI,4DAAmC,CAAC,+EAA+E,CAAC,CAAC;aAClI;YAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QAChB,CAAC;KAAA;IAEY,OAAO,CAAC,GAAW,EAAE,EAAW;;YACzC,IAAI,QAAQ,CAAC;YACb,IAAI,CAAC,EAAE,EAAE;gBACL,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aACtD;iBAAM;gBACH,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,kDAAkD,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;aACtH;YAED,IAAG,OAAO,MAAM,KAAK,WAAW,EAAE;gBAC9B,MAAM,KAAK,GAAG,MAAM,kCAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBACjE,OAAO,IAAI,6BAAO,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aAC3D;iBAAM;gBACH,OAAO,IAAI,6BAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aAC1E;QACL,CAAC;KAAA;IAEY,qBAAqB,CAAC,OAAiB;;YAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,IAAK,CAAC,CAAC;YAEnE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,sCAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,sCAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,sCAAgB,CAAC,MAAM,CAAC;YACtJ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,sCAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,sCAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,sCAAgB,CAAC,MAAM,CAAC;YACtJ,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9G,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5K,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9G,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAE9G,IAAG,OAAO,MAAM,KAAK,WAAW,EAAE;gBAC9B,MAAM,KAAK,GAAG,MAAM,kCAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBACjE,OAAO,IAAI,6BAAO,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,uCAAiB,CAAC,oBAAoB,EAAE,SAAS,EAAE,uCAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC;aACjO;iBAAM;gBACH,OAAO,IAAI,6BAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,uCAAiB,CAAC,oBAAoB,EAAE,SAAS,EAAE,uCAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC,CAAC;aAChP;QACL,CAAC;KAAA;IAEM,wBAAwB,CAAC,IAA4B,EAAE,aAAqC,EAAE;QACjG,qBAAqB;QAErB,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;SACxE;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACrB,8BAA8B;YAC9B,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;SAC1E;QAED,sBAAsB;QAEtB,sBAAsB;QAEtB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;YAChC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/C,UAAU,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SACxD;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;YACnC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,YAAa,CAAC;QAEjD,IAAI,IAAI,CAAC,aAAa;YAClB,UAAU,CAAC,aAAa,GAAG;gBACvB,IAAI,EAAE,IAAI,CAAC,aAAa;aAC3B,CAAC;QAEN,IAAI,IAAI,CAAC,WAAW;YAChB,UAAU,CAAC,WAAW,GAAG;gBACrB,IAAI,EAAE,IAAI,CAAC,WAAW;aACzB,CAAC;QAEN,IAAI,IAAI,CAAC,mBAAmB;YACxB,UAAU,CAAC,mBAAmB,GAAG;gBAC7B,IAAI,EAAE,IAAI,CAAC,mBAAmB;aACjC,CAAC;QAEN,OAAO,UAAU,CAAC;IACtB,CAAC;IAEM,wBAAwB,CAAC,IAA4B,EAAE,aAAqC,EAAE;QACjG,qBAAqB;QAErB,IAAI,IAAI,CAAC,KAAK;YACV,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAEzE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAE5B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC;YACtC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAE1C,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC;YACtC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAE1C,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;YACnC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,YAAa,CAAC;QAEjD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC;YAChD,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAEpD,IAAI,IAAI,CAAC,aAAa;YAClB,UAAU,CAAC,aAAa,GAAG;gBACvB,IAAI,EAAE,IAAI,CAAC,aAAa;aAC3B,CAAC;QAEN,IAAI,IAAI,CAAC,gBAAgB;YACrB,UAAU,CAAC,gBAAgB,GAAG;gBAC1B,IAAI,EAAE,IAAI,CAAC,gBAAgB;aAC9B,CAAC;QAEN,IAAI,IAAI,CAAC,gBAAgB;YACrB,UAAU,CAAC,gBAAgB,GAAG;gBAC1B,IAAI,EAAE,IAAI,CAAC,gBAAgB;aAC9B,CAAC;QAEN,IAAI,IAAI,CAAC,WAAW;YAChB,UAAU,CAAC,WAAW,GAAG;gBACrB,IAAI,EAAE,IAAI,CAAC,WAAW;aACzB,CAAC;QAEN,IAAI,IAAI,CAAC,aAAa;YAClB,UAAU,CAAC,aAAa,GAAG;gBACvB,IAAI,EAAE,IAAI,CAAC,aAAa;aAC3B,CAAC;QAEN,IAAI,IAAI,CAAC,mBAAmB;YACxB,UAAU,CAAC,mBAAmB,GAAG;gBAC7B,IAAI,EAAE,IAAI,CAAC,mBAAmB;aACjC,CAAC;QAEN,OAAO,UAAU,CAAC;IACtB,CAAC;IAEM,wBAAwB,CAAC,IAA4B,EAAE,aAAqC,EAAE;QACjG,qBAAqB;QAErB,IAAI,IAAI,CAAC,KAAK;YACV,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QAEzE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAE5B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC;YACtC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAE1C,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC;YACtC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAE1C,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;YACnC,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC,YAAa,CAAC;QAEjD,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC;YAChD,UAAU,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAEpD,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC;YAC9C,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAElD,IAAI,IAAI,CAAC,aAAa;YAClB,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAElD,IAAI,IAAI,CAAC,gBAAgB;YACrB,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAExD,IAAI,IAAI,CAAC,gBAAgB;YACrB,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAExD,IAAI,IAAI,CAAC,WAAW;YAChB,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAE9C,IAAI,IAAI,CAAC,aAAa;YAClB,UAAU,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QAElD,IAAI,IAAI,CAAC,mBAAmB;YACxB,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAE9D,gEAAgE;QAEhE,OAAO,UAAU,CAAC;IACtB,CAAC;IAEY,cAAc,CAAC,IAA4B;;YACpD,MAAM,QAAQ,GAAG,IAAI,0CAAoB,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAA8B,EAAE,CAAC;YAC/C,qBAAqB;YAErB,IAAI,IAAI,CAAC,KAAK;gBACV,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAEhC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,mCAAa,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,mCAAa,CAAC,IAAI,CAAC,CAAC,CAAC,mCAAa,CAAC,MAAM,CAAC;YAE/H,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC;gBACtC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAExC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC;gBACtC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAExC,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;gBACnC,QAAQ,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,YAAa,CAAC;YAE9C,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC;gBAChD,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;YAE/C,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC;gBAC9C,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;YAE5C,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,QAAQ,CAAC,IAAI,CACT,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACtD,IAAI,GAAG;wBAAE,QAAQ,CAAC,GAAG,GAAG,GAAG,CAAC;oBAC5B,OAAO,GAAG,CAAC;gBACf,CAAC,CAAC,CACL,CAAC;aACL;YAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACvB,QAAQ,CAAC,IAAI,CACT,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACzD,IAAI,GAAG;wBAAE,QAAQ,CAAC,YAAY,GAAG,GAAG,CAAC;oBACrC,OAAO,GAAG,CAAC;gBACf,CAAC,CAAC,CACL,CAAC;aACL;YAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACvB,QAAQ,CAAC,IAAI,CACT,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACzD,IAAI,GAAG;wBAAE,QAAQ,CAAC,YAAY,GAAG,GAAG,CAAC;oBACrC,OAAO,GAAG,CAAC;gBACf,CAAC,CAAC,CACL,CAAC;aACL;YAED,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,QAAQ,CAAC,IAAI,CACT,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACpD,IAAI,GAAG;wBAAE,QAAQ,CAAC,OAAO,GAAG,GAAG,CAAC;oBAChC,OAAO,GAAG,CAAC;gBACf,CAAC,CAAC,CACL,CAAC;aACL;YAED,IAAI,IAAI,CAAC,aAAa,EAAE;gBACpB,QAAQ,CAAC,IAAI,CACT,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACtD,IAAI,GAAG;wBAAE,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC;oBAClC,OAAO,GAAG,CAAC;gBACf,CAAC,CAAC,CACL,CAAC;aACL;YAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,QAAQ,CAAC,IAAI,CACT,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;oBAC5D,IAAI,GAAG;wBAAE,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC;oBACjC,OAAO,GAAG,CAAC;gBACf,CAAC,CAAC,CACL,CAAC;aACL;YAED,gEAAgE;YAChE,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAE5B,OAAO,QAAQ,CAAC;QACpB,CAAC;KAAA;IAEY,kBAAkB,CAAC,MAAc;;YAC1C,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,CAAC;KAAA;IAEM,4BAA4B,CAAC,MAAc;QAC9C,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,mCAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,mCAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YAC5F,IAAI,CAAC,wBAAwB,CAAC,SAAS,EAAE,mCAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;YAC5G,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,mCAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,mCAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAAC;SAC5J;aAAM,IAAI,mCAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,mCAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE;YACrF,IAAI,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,mCAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;YAC/H,IAAI,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,mCAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,mCAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;SAC/K;aAAM;YACH,IAAI,CAAC,wBAAwB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,mCAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;YACzG,IAAI,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,mCAAgB,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,mCAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;SAC9I;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,gCAAgC;IAEhC,8BAA8B;IAEtB,uBAAuB,CAAC,EAAuC,EAAE,iBAA4C,EAAE,kBAA6C,EAAE,UAAkC;QACpM,IAAI,iBAAiB,CAAC,mBAAmB,IAAI,CAAC,kBAAkB,CAAC,mBAAmB;YAChF,UAAU,CAAC,mBAAmB,GAAG;gBAC7B,IAAI,EAAE,kDAAkD,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,GAAG,iBAAiB,CAAC,mBAAmB;aACpH,CAAC;QAEN,IAAI,iBAAiB,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,gBAAgB,CAAC;YAC1G,UAAU,CAAC,cAAc,GAAG,iBAAiB,CAAC,cAAc,CAAC;QAEjE,IAAI,iBAAiB,CAAC,WAAW,IAAI,CAAC,kBAAkB,CAAC,WAAW;YAChE,UAAU,CAAC,WAAW,GAAG;gBACrB,IAAI,EAAE,kDAAkD,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,GAAG,iBAAiB,CAAC,WAAW;aAC5G,CAAC;QAEN,IAAI,iBAAiB,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,eAAe,CAAC;YACxG,UAAU,CAAC,aAAa,GAAG,iBAAiB,CAAC,aAAc,CAAC;QAEhE,IAAI,iBAAiB,CAAC,KAAK,IAAI,CAAC,kBAAkB,CAAC,KAAK;YACpD,UAAU,CAAC,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC;QAE/C,IAAI,iBAAiB,CAAC,aAAa,IAAI,CAAC,kBAAkB,CAAC,aAAa;YACpE,UAAU,CAAC,aAAa,GAAG;gBACvB,IAAI,EAAE,kDAAkD,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,GAAG,iBAAiB,CAAC,aAAa;aAC9G,CAAC;QAEN,IAAI,iBAAiB,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,WAAW,CAAC;YAChG,UAAU,CAAC,SAAS,GAAG,iBAAiB,CAAC,SAAU,CAAC;QAExD,IAAI,iBAAiB,CAAC,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,gBAAgB;YAC1E,UAAU,CAAC,gBAAgB,GAAG;gBAC1B,IAAI,EAAE,kDAAkD,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,GAAG,iBAAiB,CAAC,gBAAgB;aACjH,CAAC;QAEN,IAAI,iBAAiB,CAAC,aAAa,IAAI,CAAC,kBAAkB,CAAC,aAAa;YACpE,UAAU,CAAC,aAAa,GAAG;gBACvB,IAAI,EAAE,kDAAkD,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,GAAG,iBAAiB,CAAC,aAAa;aAC9G,CAAC;QAEN,IAAI,iBAAiB,CAAC,cAAc,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC;YACtG,UAAU,CAAC,YAAY,GAAG,iBAAiB,CAAC,YAAY,CAAC;QAE7D,IAAI,iBAAiB,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,WAAW,CAAC;YAChG,UAAU,CAAC,SAAS,GAAG,iBAAiB,CAAC,SAAU,CAAC;QAExD,IAAI,iBAAiB,CAAC,gBAAgB,IAAI,CAAC,kBAAkB,CAAC,gBAAgB;YAC1E,UAAU,CAAC,gBAAgB,GAAG;gBAC1B,IAAI,EAAE,kDAAkD,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,GAAG,iBAAiB,CAAC,gBAAgB;aACjH,CAAC;QAEN,IAAI,iBAAiB,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI;YAClD,UAAU,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC;IACjD,CAAC;IAEO,wBAAwB,CAAC,EAAuC,EAAE,kBAA6C,EAAE,UAAkC;QACvJ,IAAI,kBAAkB,CAAC,mBAAmB;YACtC,UAAU,CAAC,mBAAmB,GAAG;gBAC7B,IAAI,EAAE,kDAAkD,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,GAAG,GAAG,GAAG,kBAAkB,CAAC,mBAAmB;aACzI,CAAC;QAEN,IAAI,kBAAkB,CAAC,cAAc,CAAC,gBAAgB,CAAC;YACnD,UAAU,CAAC,cAAc,GAAG,kBAAkB,CAAC,cAAe,CAAC;QAEnE,IAAI,kBAAkB,CAAC,WAAW;YAC9B,UAAU,CAAC,WAAW,GAAG;gBACrB,IAAI,EAAE,kDAAkD,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,GAAG,GAAG,GAAG,kBAAkB,CAAC,WAAW;aACjI,CAAC;QAEN,IAAI,kBAAkB,CAAC,cAAc,CAAC,eAAe,CAAC;YAClD,UAAU,CAAC,aAAa,GAAG,kBAAkB,CAAC,aAAc,CAAC;QAEjE,IAAI,kBAAkB,CAAC,KAAK;YACxB,UAAU,CAAC,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC;QAEhD,IAAI,kBAAkB,CAAC,aAAa;YAChC,UAAU,CAAC,aAAa,GAAG;gBACvB,IAAI,EAAE,kDAAkD,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,GAAG,GAAG,GAAG,kBAAkB,CAAC,aAAa;aACnI,CAAC;QAEN,IAAI,kBAAkB,CAAC,cAAc,CAAC,WAAW,CAAC;YAC9C,UAAU,CAAC,SAAS,GAAG,kBAAkB,CAAC,SAAU,CAAC;QAEzD,IAAI,kBAAkB,CAAC,gBAAgB;YACnC,UAAU,CAAC,gBAAgB,GAAG;gBAC1B,IAAI,EAAE,kDAAkD,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,GAAG,GAAG,GAAG,kBAAkB,CAAC,gBAAgB;aACtI,CAAC;QAEN,IAAI,kBAAkB,CAAC,aAAa;YAChC,UAAU,CAAC,aAAa,GAAG;gBACvB,IAAI,EAAE,kDAAkD,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,GAAG,GAAG,GAAG,kBAAkB,CAAC,aAAa;aACnI,CAAC;QAEN,IAAI,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC;YACjD,UAAU,CAAC,YAAY,GAAG,kBAAkB,CAAC,YAAa,CAAC;QAE/D,IAAI,kBAAkB,CAAC,cAAc,CAAC,WAAW,CAAC;YAC9C,UAAU,CAAC,SAAS,GAAG,kBAAkB,CAAC,SAAU,CAAC;QAEzD,IAAI,kBAAkB,CAAC,gBAAgB;YACnC,UAAU,CAAC,gBAAgB,GAAG;gBAC1B,IAAI,EAAE,kDAAkD,GAAG,EAAE,CAAC,KAAK,GAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,GAAG,GAAG,GAAG,kBAAkB,CAAC,gBAAgB;aACtI,CAAC;QAEN,IAAI,kBAAkB,CAAC,IAAI;YACvB,UAAU,CAAC,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC;IAClD,CAAC;IAEO,qBAAqB,CAAC,EAAU;QACpC,qIAAqI;QACrI,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC;YAAE,EAAE,IAAI,EAAE,CAAC;QAEvC,gDAAgD;QAChD,IAAI,EAAE,GAAG,EAAE;YAAE,EAAE,IAAI,GAAG,CAAC;QAEvB,MAAM,IAAI,GAAG,CAAC,EAAU,EAAU,EAAE;YAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5B,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC;QAEF,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;YACjC,QAAQ,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;SACpD,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACK,cAAc,CAAC,MAAgB,EAAE,MAAiB;QACtD,IAAI,CAAC,MAAM;YAAE,OAAO,MAAM,CAAC;QAC3B,OAAO;YACH,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;SACnH,CAAC;IACN,CAAC;CAGJ;AA3fD,wCA2fC"}
1
+ {"version":3,"file":"MaterialEngine.js","sourceRoot":"","sources":["../src/MaterialEngine.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shapediver/viewer.data-engine.material-engine",
3
- "version": "3.2.1",
3
+ "version": "3.2.2",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "Michael Oppitz <michael@shapediver.com>",
@@ -40,12 +40,12 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@shapediver/sdk.geometry-api-sdk-v2": "1.10.0",
43
- "@shapediver/viewer.data-engine.shared-types": "3.2.1",
44
- "@shapediver/viewer.shared.node-tree": "3.2.1",
45
- "@shapediver/viewer.shared.services": "3.2.1",
46
- "@shapediver/viewer.shared.types": "3.2.1",
43
+ "@shapediver/viewer.data-engine.shared-types": "3.2.2",
44
+ "@shapediver/viewer.shared.node-tree": "3.2.2",
45
+ "@shapediver/viewer.shared.services": "3.2.2",
46
+ "@shapediver/viewer.shared.types": "3.2.2",
47
47
  "axios": "^1.2.6",
48
48
  "gl-matrix": "3.3.0"
49
49
  },
50
- "gitHead": "00f87aa21c3616bbabf0d06a93f94491324825c5"
50
+ "gitHead": "53949d3be352baa3951ac2e48385472ee7b3b222"
51
51
  }
@@ -1,9 +1,35 @@
1
- /* eslint-disable no-prototype-builtins */
1
+ import {
2
+ Converter,
3
+ HttpClient,
4
+ Logger,
5
+ ShapeDiverViewerDataProcessingError
6
+ } from '@shapediver/viewer.shared.services';
7
+ import {
8
+ IMaterialContentData,
9
+ IMaterialContentDataV1,
10
+ IMaterialContentDataV2,
11
+ IMaterialContentDataV3,
12
+ IPresetMaterialDefinition,
13
+ ITexture
14
+ } from '@shapediver/viewer.data-engine.shared-types';
2
15
  import { ITreeNode, TreeNode } from '@shapediver/viewer.shared.node-tree';
3
- import { Converter, HttpClient, Logger, ShapeDiverViewerDataProcessingError } from '@shapediver/viewer.shared.services';
16
+ import { materialDatabase } from './materialDatabase';
17
+ import { ShapeDiverResponseOutputContent } from '@shapediver/sdk.geometry-api-sdk-v2';
18
+ import { vec2, vec4 } from 'gl-matrix';
19
+ /* eslint-disable no-prototype-builtins */
4
20
  import {
21
+ IMapDataPropertiesDefinition,
5
22
  IMaterialAbstractData,
6
23
  IMaterialAbstractDataProperties,
24
+ IMaterialAbstractDataPropertiesDefinition,
25
+ IMaterialGemDataProperties,
26
+ IMaterialGemDataPropertiesDefinition,
27
+ IMaterialSpecularGlossinessDataProperties,
28
+ IMaterialSpecularGlossinessDataPropertiesDefinition,
29
+ IMaterialStandardDataProperties,
30
+ IMaterialStandardDataPropertiesDefinition,
31
+ IMaterialUnlitDataProperties,
32
+ IMaterialUnlitDataPropertiesDefinition,
7
33
  MapData,
8
34
  MATERIAL_SIDE,
9
35
  MATERIAL_TYPE,
@@ -14,11 +40,6 @@ import {
14
40
  TEXTURE_FILTERING,
15
41
  TEXTURE_WRAPPING,
16
42
  } from '@shapediver/viewer.shared.types';
17
- import { vec2, vec4 } from 'gl-matrix';
18
-
19
- import { materialDatabase } from './materialDatabase';
20
- import { ShapeDiverResponseOutputContent } from '@shapediver/sdk.geometry-api-sdk-v2';
21
- import { IMaterialContentData, IMaterialContentDataV1, IMaterialContentDataV2, IMaterialContentDataV3, IPresetMaterialDefinition, ITexture } from '@shapediver/viewer.data-engine.shared-types';
22
43
 
23
44
  export class MaterialEngine {
24
45
  // #region Properties (4)
@@ -31,15 +52,15 @@ export class MaterialEngine {
31
52
 
32
53
  // #endregion Properties (4)
33
54
 
34
- // #region Public Static Accessors (1)
55
+ // #region Public Static Getters And Setters (1)
35
56
 
36
57
  public static get instance() {
37
58
  return this._instance || (this._instance = new this());
38
59
  }
39
60
 
40
- // #endregion Public Static Accessors (1)
61
+ // #endregion Public Static Getters And Setters (1)
41
62
 
42
- // #region Public Methods (9)
63
+ // #region Public Methods (12)
43
64
 
44
65
  /**
45
66
  * Create a material data based on the material properties
@@ -48,7 +69,7 @@ export class MaterialEngine {
48
69
  * @returns
49
70
  */
50
71
  public createMaterialData(materialProperties: IMaterialAbstractDataProperties): IMaterialAbstractData {
51
- const materialType = materialProperties.type || MATERIAL_TYPE.STANDARD;
72
+ const materialType = materialProperties.type || MATERIAL_TYPE.STANDARD;
52
73
  switch (materialType) {
53
74
  case MATERIAL_TYPE.SPECULAR_GLOSSINESS:
54
75
  return new MaterialSpecularGlossinessData(materialProperties);
@@ -61,6 +82,204 @@ export class MaterialEngine {
61
82
  }
62
83
  }
63
84
 
85
+ public async createMaterialDataFromDefinition(definition: IMaterialAbstractDataPropertiesDefinition): Promise<IMaterialAbstractData> {
86
+ const materialType = definition.type || MATERIAL_TYPE.STANDARD;
87
+
88
+ const promises: Promise<MapData | undefined>[] = [];
89
+
90
+ const abstractProperties: IMaterialAbstractDataProperties = {};
91
+
92
+ abstractProperties.alphaCutoff = definition.alphaCutoff;
93
+ promises.push(this.loadMapFromDefinition(definition.alphaMap).then(map => {
94
+ if (map) abstractProperties.alphaMap = map;
95
+ return map;
96
+ }));
97
+ abstractProperties.alphaMode = definition.alphaMode;
98
+ promises.push(this.loadMapFromDefinition(definition.aoMap).then(map => {
99
+ if (map) abstractProperties.aoMap = map;
100
+ return map;
101
+ }));
102
+ abstractProperties.aoMapIntensity = definition.aoMapIntensity;
103
+ promises.push(this.loadMapFromDefinition(definition.bumpMap).then(map => {
104
+ if (map) abstractProperties.bumpMap = map;
105
+ return map;
106
+ }));
107
+ abstractProperties.bumpScale = definition.bumpScale;
108
+ abstractProperties.color = definition.color ? this._converter.toColorArray(definition.color) : undefined;
109
+ abstractProperties.depthTest = definition.depthTest;
110
+ abstractProperties.depthWrite = definition.depthWrite;
111
+ promises.push(this.loadMapFromDefinition(definition.emissiveMap).then(map => {
112
+ if (map) abstractProperties.emissiveMap = map;
113
+ return map;
114
+ }));
115
+ abstractProperties.emissiveness = definition.emissiveness ? this._converter.toColorArray(definition.emissiveness) : undefined;
116
+ promises.push(this.loadMapFromDefinition(definition.map).then(map => {
117
+ if (map) abstractProperties.map = map;
118
+ return map;
119
+ }));
120
+ abstractProperties.name = definition.name;
121
+ promises.push(this.loadMapFromDefinition(definition.normalMap).then(map => {
122
+ if (map) abstractProperties.normalMap = map;
123
+ return map;
124
+ }));
125
+ abstractProperties.normalScale = definition.normalScale;
126
+ abstractProperties.opacity = definition.opacity;
127
+ abstractProperties.shading = definition.shading;
128
+ abstractProperties.side = definition.side;
129
+ abstractProperties.transparent = definition.transparent;
130
+ abstractProperties.type = materialType;
131
+
132
+ switch (materialType) {
133
+ case MATERIAL_TYPE.SPECULAR_GLOSSINESS:
134
+ {
135
+ const specularGlossinessProperties: IMaterialSpecularGlossinessDataProperties = abstractProperties;
136
+ const specularGlossinessDefinition: IMaterialSpecularGlossinessDataPropertiesDefinition = definition as IMaterialSpecularGlossinessDataPropertiesDefinition;
137
+
138
+ specularGlossinessProperties.envMap = specularGlossinessDefinition.envMap;
139
+ specularGlossinessProperties.glossiness = specularGlossinessDefinition.glossiness;
140
+ specularGlossinessProperties.specular = specularGlossinessDefinition.specular;
141
+
142
+ if (specularGlossinessDefinition.specularGlossinessMap) {
143
+ promises.push(this.loadMapFromDefinition(specularGlossinessDefinition.specularGlossinessMap).then(map => {
144
+ if (map) specularGlossinessProperties.specularGlossinessMap = map;
145
+ return map;
146
+ }));
147
+ } else {
148
+ promises.push(this.loadMapFromDefinition(specularGlossinessDefinition.specularMap).then(map => {
149
+ if (map) specularGlossinessProperties.specularMap = map;
150
+ return map;
151
+ }));
152
+ promises.push(this.loadMapFromDefinition(specularGlossinessDefinition.glossinessMap).then(map => {
153
+ if (map) specularGlossinessProperties.glossinessMap = map;
154
+ return map;
155
+ }));
156
+ }
157
+
158
+ await Promise.all(promises);
159
+ return new MaterialSpecularGlossinessData(specularGlossinessProperties);
160
+ }
161
+ case MATERIAL_TYPE.UNLIT:
162
+ {
163
+ const unlitProperties: IMaterialUnlitDataProperties = abstractProperties;
164
+ const unlitDefinition: IMaterialUnlitDataPropertiesDefinition = definition;
165
+ unlitProperties.envMap = unlitDefinition.envMap;
166
+ await Promise.all(promises);
167
+ return new MaterialUnlitData(unlitProperties);
168
+ }
169
+ case MATERIAL_TYPE.GEM:
170
+ {
171
+ const gemProperties: IMaterialGemDataProperties = abstractProperties;
172
+ const gemDefinition: IMaterialGemDataPropertiesDefinition = definition;
173
+
174
+ gemProperties.brightness = gemDefinition.brightness;
175
+ gemProperties.center = gemDefinition.center;
176
+ gemProperties.colorTransferBegin = gemDefinition.colorTransferBegin;
177
+ gemProperties.colorTransferEnd = gemDefinition.colorTransferEnd;
178
+ gemProperties.contrast = gemDefinition.contrast;
179
+ gemProperties.dispersion = gemDefinition.dispersion;
180
+ gemProperties.envMap = gemDefinition.envMap;
181
+ gemProperties.gamma = gemDefinition.gamma;
182
+ promises.push(this.loadMapFromDefinition(gemDefinition.impurityMap).then(map => {
183
+ if (map) gemProperties.impurityMap = map;
184
+ return map;
185
+ }));
186
+ gemProperties.impurityScale = gemDefinition.impurityScale;
187
+ gemProperties.radius = gemDefinition.radius;
188
+ gemProperties.refractionIndex = gemDefinition.refractionIndex;
189
+ promises.push(this.loadMapFromDefinition(gemDefinition.sphericalNormalMap).then(map => {
190
+ if (map) gemProperties.sphericalNormalMap = map;
191
+ return map;
192
+ }));
193
+ gemProperties.tracingDepth = gemDefinition.tracingDepth;
194
+ gemProperties.tracingOpacity = gemDefinition.tracingOpacity;
195
+
196
+ await Promise.all(promises);
197
+ return new MaterialGemData(gemProperties);
198
+ }
199
+ default:
200
+ {
201
+ const standardProperties: IMaterialStandardDataProperties = abstractProperties;
202
+ const standardDefinition: IMaterialStandardDataPropertiesDefinition = definition;
203
+
204
+ standardProperties.attenuationColor = standardDefinition.attenuationColor;
205
+ standardProperties.attenuationDistance = standardDefinition.attenuationDistance;
206
+ standardProperties.clearcoat = standardDefinition.clearcoat;
207
+ promises.push(this.loadMapFromDefinition(standardDefinition.clearcoatMap).then(map => {
208
+ if (map) standardProperties.clearcoatMap = map;
209
+ return map;
210
+ }));
211
+ promises.push(this.loadMapFromDefinition(standardDefinition.clearcoatNormalMap).then(map => {
212
+ if (map) standardProperties.clearcoatNormalMap = map;
213
+ return map;
214
+ }));
215
+ standardProperties.clearcoatRoughness = standardDefinition.clearcoatRoughness;
216
+ promises.push(this.loadMapFromDefinition(standardDefinition.clearcoatRoughnessMap).then(map => {
217
+ if (map) standardProperties.clearcoatRoughnessMap = map;
218
+ return map;
219
+ }));
220
+ standardProperties.displacementBias = standardDefinition.displacementBias;
221
+ promises.push(this.loadMapFromDefinition(standardDefinition.displacementMap).then(map => {
222
+ if (map) standardProperties.displacementMap = map;
223
+ return map;
224
+ }));
225
+ standardProperties.displacementScale = standardDefinition.displacementScale;
226
+ standardProperties.envMap = standardDefinition.envMap;
227
+ standardProperties.ior = standardDefinition.ior;
228
+ standardProperties.metalness = standardDefinition.metalness;
229
+ if (standardDefinition.metalnessRoughnessMap) {
230
+ promises.push(this.loadMapFromDefinition(standardDefinition.metalnessMap).then(map => {
231
+ if (map) standardProperties.metalnessMap = map;
232
+ return map;
233
+ }));
234
+ } else {
235
+ promises.push(this.loadMapFromDefinition(standardDefinition.metalnessMap).then(map => {
236
+ if (map) standardProperties.metalnessMap = map;
237
+ return map;
238
+ }));
239
+ promises.push(this.loadMapFromDefinition(standardDefinition.roughnessMap).then(map => {
240
+ if (map) standardProperties.roughnessMap = map;
241
+ return map;
242
+ }));
243
+ }
244
+ standardProperties.roughness = standardDefinition.roughness;
245
+ standardProperties.sheen = standardDefinition.sheen;
246
+ standardProperties.sheenColor = standardDefinition.sheenColor;
247
+ promises.push(this.loadMapFromDefinition(standardDefinition.sheenColorMap).then(map => {
248
+ if (map) standardProperties.sheenColorMap = map;
249
+ return map;
250
+ }));
251
+ standardProperties.sheenRoughness = standardDefinition.sheenRoughness;
252
+ promises.push(this.loadMapFromDefinition(standardDefinition.sheenRoughnessMap).then(map => {
253
+ if (map) standardProperties.sheenRoughnessMap = map;
254
+ return map;
255
+ }));
256
+ standardProperties.specularColor = standardDefinition.specularColor;
257
+ promises.push(this.loadMapFromDefinition(standardDefinition.specularColorMap).then(map => {
258
+ if (map) standardProperties.specularColorMap = map;
259
+ return map;
260
+ }));
261
+ standardProperties.specularIntensity = standardDefinition.specularIntensity;
262
+ promises.push(this.loadMapFromDefinition(standardDefinition.specularIntensityMap).then(map => {
263
+ if (map) standardProperties.specularIntensityMap = map;
264
+ return map;
265
+ }));
266
+ standardProperties.thickness = standardDefinition.thickness;
267
+ promises.push(this.loadMapFromDefinition(standardDefinition.thicknessMap).then(map => {
268
+ if (map) standardProperties.thicknessMap = map;
269
+ return map;
270
+ }));
271
+ standardProperties.transmission = standardDefinition.transmission;
272
+ promises.push(this.loadMapFromDefinition(standardDefinition.transmissionMap).then(map => {
273
+ if (map) standardProperties.transmissionMap = map;
274
+ return map;
275
+ }));
276
+
277
+ await Promise.all(promises);
278
+ return new MaterialStandardData(standardProperties);
279
+ }
280
+ }
281
+ }
282
+
64
283
  /**
65
284
  * Load the material content into a scene graph node.
66
285
  *
@@ -103,15 +322,15 @@ export class MaterialEngine {
103
322
  return node;
104
323
  }
105
324
 
106
- public async loadMap(url: string, id?: string): Promise<MapData | null> {
325
+ public async loadMap(url: string, id?: string): Promise<MapData> {
107
326
  let response;
108
327
  if (!id) {
109
328
  response = await this._httpClient.loadTexture(url);
110
329
  } else {
111
330
  response = await this._httpClient.loadTexture('https://viewer.shapediver.com/v2/materials/1024/' + id + '/' + url);
112
331
  }
113
-
114
- if(typeof window !== 'undefined') {
332
+
333
+ if (typeof window !== 'undefined') {
115
334
  const image = await Converter.instance.responseToImage(response);
116
335
  return new MapData(image, { blob: response.data.blob });
117
336
  } else {
@@ -119,7 +338,35 @@ export class MaterialEngine {
119
338
  }
120
339
  }
121
340
 
122
- public async loadMapWithProperties(texture: ITexture): Promise<MapData | null> {
341
+ /**
342
+ * Load a map from a definition.
343
+ *
344
+ * @param definition
345
+ * @returns
346
+ */
347
+ public async loadMapFromDefinition(definition?: IMapDataPropertiesDefinition): Promise<MapData | undefined> {
348
+ if (!definition) return undefined;
349
+
350
+ if (definition.image) {
351
+ if (typeof definition.image === 'string') {
352
+ return this.loadMapWithProperties({
353
+ href: definition.image,
354
+ wrapS: definition.wrapS,
355
+ wrapT: definition.wrapT,
356
+ center: definition.center as number[] | undefined,
357
+ color: definition.color ? this._converter.toColorArray(definition.color) : undefined,
358
+ offset: definition.offset as number[] | undefined,
359
+ repeat: definition.repeat as number[] | undefined,
360
+ rotation: definition.rotation
361
+ });
362
+ } else {
363
+ return new MapData(definition.image);
364
+ }
365
+ }
366
+ return;
367
+ }
368
+
369
+ public async loadMapWithProperties(texture: ITexture): Promise<MapData> {
123
370
  const response = await this._httpClient.loadTexture(texture.href!);
124
371
 
125
372
  const wrapS = texture.wrapS === 1 ? TEXTURE_WRAPPING.CLAMP_TO_EDGE : texture.wrapS === 2 ? TEXTURE_WRAPPING.MIRRORED_REPEAT : TEXTURE_WRAPPING.REPEAT;
@@ -129,7 +376,7 @@ export class MaterialEngine {
129
376
  const offset = texture.offset ? vec2.fromValues(texture.offset[0], texture.offset[1]) : vec2.fromValues(0, 0);
130
377
  const repeat = texture.repeat ? vec2.fromValues(texture.repeat[0], texture.repeat[1]) : vec2.fromValues(1, 1);
131
378
 
132
- if(typeof window !== 'undefined') {
379
+ if (typeof window !== 'undefined') {
133
380
  const image = await Converter.instance.responseToImage(response);
134
381
  return new MapData(image, { blob: response.data.blob, wrapS, wrapT, minFilter: TEXTURE_FILTERING.LINEAR_MIPMAP_LINEAR, magFilter: TEXTURE_FILTERING.LINEAR, center, color, offset, repeat, rotation: texture.rotation || 0 });
135
382
  } else {
@@ -381,9 +628,9 @@ export class MaterialEngine {
381
628
  return definition;
382
629
  }
383
630
 
384
- // #endregion Public Methods (9)
631
+ // #endregion Public Methods (12)
385
632
 
386
- // #region Private Methods (3)
633
+ // #region Private Methods (4)
387
634
 
388
635
  private assignGeneralDefinition(id: { class: string, specific: string }, generalDefinition: IPresetMaterialDefinition, specificDefinition: IPresetMaterialDefinition, definition: IMaterialContentDataV3) {
389
636
  if (generalDefinition.transparencytexture && !specificDefinition.transparencytexture)
@@ -526,5 +773,5 @@ export class MaterialEngine {
526
773
  ];
527
774
  }
528
775
 
529
- // #endregion Private Methods (3)
776
+ // #endregion Private Methods (4)
530
777
  }