@shapediver/viewer.rendering-engine.rendering-engine-threejs 3.16.7 → 3.16.9

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 (181) hide show
  1. package/dist/RenderingEngine.d.ts +294 -294
  2. package/dist/RenderingEngine.js +987 -977
  3. package/dist/RenderingEngine.js.map +1 -1
  4. package/dist/index.d.ts +16 -16
  5. package/dist/index.js +57 -57
  6. package/dist/injectors/TextureUnifierInjector.d.ts +13 -13
  7. package/dist/injectors/TextureUnifierInjector.js +181 -171
  8. package/dist/injectors/TextureUnifierInjector.js.map +1 -1
  9. package/dist/interfaces/ILoader.d.ts +3 -3
  10. package/dist/interfaces/ILoader.js +2 -2
  11. package/dist/interfaces/IRenderingEngine.d.ts +45 -45
  12. package/dist/interfaces/IRenderingEngine.js +2 -2
  13. package/dist/loaders/EnvironmentMapLoader.d.ts +119 -119
  14. package/dist/loaders/EnvironmentMapLoader.js +512 -502
  15. package/dist/loaders/EnvironmentMapLoader.js.map +1 -1
  16. package/dist/loaders/GeometryLoader.d.ts +39 -39
  17. package/dist/loaders/GeometryLoader.d.ts.map +1 -1
  18. package/dist/loaders/GeometryLoader.js +603 -593
  19. package/dist/loaders/GeometryLoader.js.map +1 -1
  20. package/dist/loaders/HTMLElementAnchorLoader.d.ts +15 -15
  21. package/dist/loaders/HTMLElementAnchorLoader.js +98 -98
  22. package/dist/loaders/HTMLElementAnchorLoader.js.map +1 -1
  23. package/dist/loaders/LightLoader.d.ts +19 -19
  24. package/dist/loaders/LightLoader.js +197 -187
  25. package/dist/loaders/LightLoader.js.map +1 -1
  26. package/dist/loaders/MaterialLoader.d.ts +115 -115
  27. package/dist/loaders/MaterialLoader.d.ts.map +1 -1
  28. package/dist/loaders/MaterialLoader.js +1612 -1602
  29. package/dist/loaders/MaterialLoader.js.map +1 -1
  30. package/dist/managers/ARManager.d.ts +17 -17
  31. package/dist/managers/ARManager.js +128 -128
  32. package/dist/managers/ARManager.js.map +1 -1
  33. package/dist/managers/CameraManager.d.ts +19 -19
  34. package/dist/managers/CameraManager.js +244 -234
  35. package/dist/managers/CameraManager.js.map +1 -1
  36. package/dist/managers/EnvironmentGeometryManager.d.ts +32 -32
  37. package/dist/managers/EnvironmentGeometryManager.js +114 -114
  38. package/dist/managers/EnvironmentGeometryManager.js.map +1 -1
  39. package/dist/managers/FlagManager.d.ts +19 -19
  40. package/dist/managers/FlagManager.js +143 -143
  41. package/dist/managers/FlagManager.js.map +1 -1
  42. package/dist/managers/PostProcessingManager.d.ts +1019 -1019
  43. package/dist/managers/PostProcessingManager.js +1306 -1296
  44. package/dist/managers/PostProcessingManager.js.map +1 -1
  45. package/dist/managers/RenderingManager.d.ts +84 -84
  46. package/dist/managers/RenderingManager.d.ts.map +1 -1
  47. package/dist/managers/RenderingManager.js +679 -669
  48. package/dist/managers/RenderingManager.js.map +1 -1
  49. package/dist/managers/SceneTracingManager.d.ts +28 -28
  50. package/dist/managers/SceneTracingManager.js +160 -150
  51. package/dist/managers/SceneTracingManager.js.map +1 -1
  52. package/dist/managers/SceneTreeManager.d.ts +81 -81
  53. package/dist/managers/SceneTreeManager.d.ts.map +1 -1
  54. package/dist/managers/SceneTreeManager.js +500 -490
  55. package/dist/managers/SceneTreeManager.js.map +1 -1
  56. package/dist/managers/SettingsManager.d.ts +28 -28
  57. package/dist/managers/SettingsManager.js +284 -284
  58. package/dist/managers/SettingsManager.js.map +1 -1
  59. package/dist/managers/environmentGeometry/ContactShadow.d.ts +42 -42
  60. package/dist/managers/environmentGeometry/ContactShadow.js +295 -285
  61. package/dist/managers/environmentGeometry/ContactShadow.js.map +1 -1
  62. package/dist/managers/environmentGeometry/Grid.d.ts +20 -20
  63. package/dist/managers/environmentGeometry/Grid.js +110 -100
  64. package/dist/managers/environmentGeometry/Grid.js.map +1 -1
  65. package/dist/managers/environmentGeometry/GroundPlane.d.ts +21 -21
  66. package/dist/managers/environmentGeometry/GroundPlane.js +105 -95
  67. package/dist/managers/environmentGeometry/GroundPlane.js.map +1 -1
  68. package/dist/managers/environmentGeometry/GroundPlaneShadow.d.ts +21 -21
  69. package/dist/managers/environmentGeometry/GroundPlaneShadow.js +96 -86
  70. package/dist/managers/environmentGeometry/GroundPlaneShadow.js.map +1 -1
  71. package/dist/managers/environmentGeometry/IEnvironmentGeometry.d.ts +8 -8
  72. package/dist/managers/environmentGeometry/IEnvironmentGeometry.js +2 -2
  73. package/dist/managers/postprocessing/GodRaysManager.d.ts +12 -12
  74. package/dist/managers/postprocessing/GodRaysManager.js +73 -63
  75. package/dist/managers/postprocessing/GodRaysManager.js.map +1 -1
  76. package/dist/managers/postprocessing/OutlineManager.d.ts +15 -15
  77. package/dist/managers/postprocessing/OutlineManager.js +86 -76
  78. package/dist/managers/postprocessing/OutlineManager.js.map +1 -1
  79. package/dist/managers/postprocessing/SSAARenderPass.d.ts +53 -53
  80. package/dist/managers/postprocessing/SSAARenderPass.js +281 -281
  81. package/dist/managers/postprocessing/SSAARenderPass.js.map +1 -1
  82. package/dist/managers/postprocessing/SelectiveBloomManager.d.ts +14 -14
  83. package/dist/managers/postprocessing/SelectiveBloomManager.js +76 -66
  84. package/dist/managers/postprocessing/SelectiveBloomManager.js.map +1 -1
  85. package/dist/managers/postprocessing/ao/ao/AOEffect.d.ts +46 -46
  86. package/dist/managers/postprocessing/ao/ao/AOEffect.js +142 -142
  87. package/dist/managers/postprocessing/ao/ao/AOEffect.js.map +1 -1
  88. package/dist/managers/postprocessing/ao/ao/AOPass.d.ts +12 -12
  89. package/dist/managers/postprocessing/ao/ao/AOPass.js +108 -108
  90. package/dist/managers/postprocessing/ao/ao/AOPass.js.map +1 -1
  91. package/dist/managers/postprocessing/ao/ao/shader/ao_compose.d.ts +1 -1
  92. package/dist/managers/postprocessing/ao/ao/shader/ao_compose.js +4 -4
  93. package/dist/managers/postprocessing/ao/ao/shader/ao_utils.d.ts +1 -1
  94. package/dist/managers/postprocessing/ao/ao/shader/ao_utils.js +4 -4
  95. package/dist/managers/postprocessing/ao/hbao/HBAOEffect.d.ts +14 -14
  96. package/dist/managers/postprocessing/ao/hbao/HBAOEffect.js +24 -24
  97. package/dist/managers/postprocessing/ao/hbao/shader/hbao.d.ts +1 -1
  98. package/dist/managers/postprocessing/ao/hbao/shader/hbao.js +4 -4
  99. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.d.ts +33 -33
  100. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js +211 -211
  101. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js.map +1 -1
  102. package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.d.ts +1 -1
  103. package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.js +4 -4
  104. package/dist/managers/postprocessing/ao/ssao/SSAOEffect.d.ts +14 -14
  105. package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js +82 -82
  106. package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js.map +1 -1
  107. package/dist/managers/postprocessing/ao/ssao/shader/ssao.d.ts +1 -1
  108. package/dist/managers/postprocessing/ao/ssao/shader/ssao.js +4 -4
  109. package/dist/managers/postprocessing/ao/utils/shader/basic.d.ts +1 -1
  110. package/dist/managers/postprocessing/ao/utils/shader/basic.js +4 -4
  111. package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.d.ts +1 -1
  112. package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.js +4 -4
  113. package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingEffect.d.ts +165 -165
  114. package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingEffect.js +299 -299
  115. package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingEffect.js.map +1 -1
  116. package/dist/managers/postprocessing/effects/tone-mapping/tone-mapping.d.ts +1 -1
  117. package/dist/managers/postprocessing/effects/tone-mapping/tone-mapping.js +4 -4
  118. package/dist/managers/postprocessing/utils/CopyMaterial.d.ts +37 -37
  119. package/dist/managers/postprocessing/utils/CopyMaterial.js +69 -69
  120. package/dist/managers/postprocessing/utils/CopyShader.d.ts +13 -13
  121. package/dist/managers/postprocessing/utils/CopyShader.js +12 -12
  122. package/dist/managers/postprocessing/utils/FullScreenQuad.d.ts +9 -9
  123. package/dist/managers/postprocessing/utils/FullScreenQuad.js +28 -28
  124. package/dist/managers/postprocessing/utils/NormalPass.d.ts +87 -87
  125. package/dist/managers/postprocessing/utils/NormalPass.js +156 -156
  126. package/dist/managers/postprocessing/utils/NormalPass.js.map +1 -1
  127. package/dist/managers/postprocessing/utils/RenderPass.d.ts +114 -114
  128. package/dist/managers/postprocessing/utils/RenderPass.js +259 -259
  129. package/dist/managers/postprocessing/utils/RenderPass.js.map +1 -1
  130. package/dist/managers/sceneTree/SDTFUtils.d.ts +6 -6
  131. package/dist/managers/sceneTree/SDTFUtils.d.ts.map +1 -1
  132. package/dist/managers/sceneTree/SDTFUtils.js +50 -50
  133. package/dist/managers/sceneTree/SDTFUtils.js.map +1 -1
  134. package/dist/managers/sceneTree/SceenTreeManagerUtils.d.ts +7 -7
  135. package/dist/managers/sceneTree/SceenTreeManagerUtils.d.ts.map +1 -1
  136. package/dist/managers/sceneTree/SceenTreeManagerUtils.js +175 -165
  137. package/dist/managers/sceneTree/SceenTreeManagerUtils.js.map +1 -1
  138. package/dist/managers/sceneTree/ThreeJsDataUtils.d.ts +6 -6
  139. package/dist/managers/sceneTree/ThreeJsDataUtils.d.ts.map +1 -1
  140. package/dist/managers/sceneTree/ThreeJsDataUtils.js +80 -70
  141. package/dist/managers/sceneTree/ThreeJsDataUtils.js.map +1 -1
  142. package/dist/materials/GemMaterial.d.ts +37 -37
  143. package/dist/materials/GemMaterial.js +262 -252
  144. package/dist/materials/GemMaterial.js.map +1 -1
  145. package/dist/materials/MeshUnlitMaterialParameters.d.ts +3 -3
  146. package/dist/materials/MeshUnlitMaterialParameters.js +2 -2
  147. package/dist/materials/MultiPointsMaterial.d.ts +93 -93
  148. package/dist/materials/MultiPointsMaterial.js +577 -567
  149. package/dist/materials/MultiPointsMaterial.js.map +1 -1
  150. package/dist/materials/SpecularGlossinessMaterial.d.ts +13 -13
  151. package/dist/materials/SpecularGlossinessMaterial.js +171 -161
  152. package/dist/materials/SpecularGlossinessMaterial.js.map +1 -1
  153. package/dist/objects/SDColor.d.ts +16 -16
  154. package/dist/objects/SDColor.js +52 -52
  155. package/dist/objects/SDColor.js.map +1 -1
  156. package/dist/objects/SDObject.d.ts +27 -27
  157. package/dist/objects/SDObject.js +112 -102
  158. package/dist/objects/SDObject.js.map +1 -1
  159. package/dist/shaders/PCSS.d.ts +2 -2
  160. package/dist/shaders/PCSS.js +5 -5
  161. package/dist/shaders/gem.d.ts +2 -2
  162. package/dist/shaders/gem.js +5 -5
  163. package/dist/shaders/multi_points.d.ts +2 -2
  164. package/dist/shaders/multi_points.js +5 -5
  165. package/dist/styling/viewport-css.d.ts +1 -1
  166. package/dist/styling/viewport-css.js +4 -4
  167. package/dist/three/CSS2DRenderer.d.ts +31 -31
  168. package/dist/three/CSS2DRenderer.d.ts.map +1 -1
  169. package/dist/three/CSS2DRenderer.js +152 -152
  170. package/dist/three/CSS2DRenderer.js.map +1 -1
  171. package/dist/three/geometries/TextGeometry.d.ts +21 -21
  172. package/dist/three/geometries/TextGeometry.js +45 -45
  173. package/dist/three/geometries/TextGeometry.js.map +1 -1
  174. package/dist/three/loaders/RGBELoader.d.ts +23 -23
  175. package/dist/three/loaders/RGBELoader.js +311 -311
  176. package/dist/three/loaders/RGBELoader.js.map +1 -1
  177. package/dist/types/IThreejsData.d.ts +6 -6
  178. package/dist/types/IThreejsData.js +2 -2
  179. package/dist/types/ThreejsData.d.ts +10 -10
  180. package/dist/types/ThreejsData.js +41 -41
  181. package/package.json +18 -18
@@ -1,503 +1,513 @@
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
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.EnvironmentMapLoader = exports.ENVIRONMENT_MAP_TYPE = exports.ENVIRONMENT_MAP_EMPTY = exports.ENVIRONMENT_MAP = exports.ENVIRONMENT_MAP_CUBE = void 0;
36
- /* eslint-disable @typescript-eslint/no-empty-function */
37
- /* eslint-disable no-async-promise-executor */
38
- const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
39
- const THREE = __importStar(require("three"));
40
- const viewer_shared_types_1 = require("@shapediver/viewer.shared.types");
41
- const ThreeJsDataUtils_1 = require("../managers/sceneTree/ThreeJsDataUtils");
42
- const RGBELoader_1 = require("../three/loaders/RGBELoader");
43
- var ENVIRONMENT_MAP_CUBE;
44
- (function (ENVIRONMENT_MAP_CUBE) {
45
- ENVIRONMENT_MAP_CUBE["DEFAULT"] = "default";
46
- ENVIRONMENT_MAP_CUBE["DEFAULT_BW"] = "default_bw";
47
- ENVIRONMENT_MAP_CUBE["BLURRED_LIGHTS"] = "blurred_lights";
48
- ENVIRONMENT_MAP_CUBE["GEORGENTOR"] = "georgentor";
49
- ENVIRONMENT_MAP_CUBE["GEORGENTOR_BLUR"] = "georgentor_blur";
50
- ENVIRONMENT_MAP_CUBE["GEORGENTOR_BLUE_BLUR"] = "georgentor_blue_blur";
51
- ENVIRONMENT_MAP_CUBE["GEORGENTOR_BW_BLUR"] = "georgentor_bw_blur";
52
- ENVIRONMENT_MAP_CUBE["LEVELSETS"] = "levelsets";
53
- ENVIRONMENT_MAP_CUBE["LYTHWOOD_FIELD"] = "lythwood_field";
54
- ENVIRONMENT_MAP_CUBE["MOUNTAINS"] = "mountains";
55
- ENVIRONMENT_MAP_CUBE["OCEAN"] = "ocean";
56
- ENVIRONMENT_MAP_CUBE["PIAZZA_SAN_MARCO"] = "piazza_san_marco";
57
- ENVIRONMENT_MAP_CUBE["RESIDENTIAL_GARDEN"] = "residential_garden";
58
- ENVIRONMENT_MAP_CUBE["ROOM_ABSTRACT_1"] = "room_abstract_1";
59
- ENVIRONMENT_MAP_CUBE["SKY"] = "sky";
60
- ENVIRONMENT_MAP_CUBE["STORAGE_ROOM"] = "storage_room";
61
- ENVIRONMENT_MAP_CUBE["STORM"] = "storm";
62
- ENVIRONMENT_MAP_CUBE["SUBWAY_ENTRANCE"] = "subway_entrance";
63
- ENVIRONMENT_MAP_CUBE["SUBWAY_ENTRANCE_BW_BLUR"] = "subway_entrance_bw_blur";
64
- ENVIRONMENT_MAP_CUBE["WHITE"] = "white";
65
- ENVIRONMENT_MAP_CUBE["YOKOHAMA"] = "yokohama";
66
- })(ENVIRONMENT_MAP_CUBE = exports.ENVIRONMENT_MAP_CUBE || (exports.ENVIRONMENT_MAP_CUBE = {}));
67
- var ENVIRONMENT_MAP;
68
- (function (ENVIRONMENT_MAP) {
69
- ENVIRONMENT_MAP["DEFAULT_STUDIO"] = "default_studio";
70
- ENVIRONMENT_MAP["FURNITURE_STUDIO"] = "furniture_studio";
71
- ENVIRONMENT_MAP["GEM_STUDIO"] = "gem_studio";
72
- ENVIRONMENT_MAP["HOSPITAL"] = "hospital";
73
- ENVIRONMENT_MAP["JEWELRY_STUDIO"] = "jewelry_studio";
74
- ENVIRONMENT_MAP["ANNIVERSARY_LOUNGE"] = "anniversary_lounge";
75
- ENVIRONMENT_MAP["BALLROOM"] = "ballroom";
76
- ENVIRONMENT_MAP["CANNON_EXTERIOR"] = "cannon_exterior";
77
- ENVIRONMENT_MAP["CAPE_HILL"] = "cape_hill";
78
- ENVIRONMENT_MAP["CHRISTMAS_PHOTO_STUDIO"] = "christmas_photo_studio";
79
- ENVIRONMENT_MAP["CIRCUS_MAXIMUS"] = "circus_maximus";
80
- ENVIRONMENT_MAP["COLORFUL_STUDIO"] = "colorful_studio";
81
- ENVIRONMENT_MAP["COMBINATION_ROOM"] = "combination_room";
82
- ENVIRONMENT_MAP["GREEN_POINT_PARK"] = "green_point_park";
83
- ENVIRONMENT_MAP["HILLTOP_CONSTRUCTION"] = "hilltop_construction";
84
- ENVIRONMENT_MAP["LARGE_CORRIDOR"] = "large_corridor";
85
- ENVIRONMENT_MAP["LYTHWOOD_LOUNGE"] = "lythwood_lounge";
86
- ENVIRONMENT_MAP["NEUTRAL"] = "neutral";
87
- ENVIRONMENT_MAP["OBERER_KUHBERG"] = "oberer_kuhberg";
88
- ENVIRONMENT_MAP["OLD_HALL"] = "old_hall";
89
- ENVIRONMENT_MAP["PAUL_LOBE_HAUS"] = "paul_lobe_haus";
90
- ENVIRONMENT_MAP["PHOTO_STUDIO"] = "photo_studio";
91
- ENVIRONMENT_MAP["PHOTO_STUDIO_BROADWAY_HALL"] = "photo_studio_broadway_hall";
92
- ENVIRONMENT_MAP["SNOWY_FIELD"] = "snowy_field";
93
- ENVIRONMENT_MAP["STUDIO_SMALL"] = "studio_small";
94
- ENVIRONMENT_MAP["SUNFLOWERS"] = "sunflowers";
95
- ENVIRONMENT_MAP["TABLE_MOUNTAIN"] = "table_mountain";
96
- ENVIRONMENT_MAP["VENICE_SUNSET"] = "venice_sunset";
97
- ENVIRONMENT_MAP["WIDE_STREET"] = "wide_street";
98
- })(ENVIRONMENT_MAP = exports.ENVIRONMENT_MAP || (exports.ENVIRONMENT_MAP = {}));
99
- var ENVIRONMENT_MAP_EMPTY;
100
- (function (ENVIRONMENT_MAP_EMPTY) {
101
- ENVIRONMENT_MAP_EMPTY["NONE"] = "none";
102
- ENVIRONMENT_MAP_EMPTY["NULL"] = "null";
103
- })(ENVIRONMENT_MAP_EMPTY = exports.ENVIRONMENT_MAP_EMPTY || (exports.ENVIRONMENT_MAP_EMPTY = {}));
104
- var ENVIRONMENT_MAP_TYPE;
105
- (function (ENVIRONMENT_MAP_TYPE) {
106
- ENVIRONMENT_MAP_TYPE["LDR"] = "ldr";
107
- ENVIRONMENT_MAP_TYPE["HDR"] = "hdr";
108
- ENVIRONMENT_MAP_TYPE["NONE"] = "none";
109
- ENVIRONMENT_MAP_TYPE["NULL"] = "null";
110
- })(ENVIRONMENT_MAP_TYPE = exports.ENVIRONMENT_MAP_TYPE || (exports.ENVIRONMENT_MAP_TYPE = {}));
111
- class EnvironmentMapLoader {
112
- // #endregion Properties (15)
113
- // #region Constructors (1)
114
- constructor(_renderingEngine) {
115
- this._renderingEngine = _renderingEngine;
116
- // #region Properties (15)
117
- this._environmentMapFilenames = [
118
- "px",
119
- "nx",
120
- "pz",
121
- "nz",
122
- "py",
123
- "ny",
124
- ];
125
- this._environmentMapHDR = [];
126
- this._environmentMapNamesHDR = Object.values(ENVIRONMENT_MAP).filter((value) => typeof value === "string");
127
- this._environmentMapNamesHDRCustom = [
128
- "default_studio",
129
- "furniture_studio",
130
- "gem_studio",
131
- "hospital",
132
- "jewelry_studio",
133
- ];
134
- this._environmentMapNamesHDRKhronos = [
135
- "cannon_exterior",
136
- "colorful_studio",
137
- "neutral",
138
- "wide_street",
139
- ];
140
- this._environmentMapNamesJPG = [
141
- "default",
142
- "default_bw",
143
- "blurred_lights",
144
- "georgentor",
145
- "georgentor_blur",
146
- "georgentor_blue_blur",
147
- "georgentor_bw_blur",
148
- "levelsets",
149
- "lythwood_field",
150
- "mountains",
151
- "ocean",
152
- "piazza_san_marco",
153
- "residential_garden",
154
- "room_abstract_1",
155
- "sky",
156
- "storage_room",
157
- "storm",
158
- "subway_entrance",
159
- "subway_entrance_bw_blur",
160
- "white",
161
- "yokohama",
162
- ];
163
- this._environmentMaps = {};
164
- this._eventEngine = viewer_shared_services_1.EventEngine.instance;
165
- this._httpClient = viewer_shared_services_1.HttpClient.instance;
166
- this._stateEngine = viewer_shared_services_1.StateEngine.instance;
167
- this._uuidGenerator = viewer_shared_services_1.UuidGenerator.instance;
168
- this._envMap = null;
169
- this._isHDRMap = false;
170
- this._textureEncoding = THREE.SRGBColorSpace;
171
- this._type = ENVIRONMENT_MAP_TYPE.NULL;
172
- }
173
- // #endregion Constructors (1)
174
- // #region Public Accessors (4)
175
- get environmentMap() {
176
- return this._envMap;
177
- }
178
- get isHDRMap() {
179
- return this._isHDRMap;
180
- }
181
- get textureEncoding() {
182
- return this._textureEncoding;
183
- }
184
- set textureEncoding(value) {
185
- this._textureEncoding = value;
186
- this.assignTextureEncoding();
187
- }
188
- get type() {
189
- return this._type;
190
- }
191
- // #endregion Public Accessors (4)
192
- // #region Public Methods (4)
193
- /**
194
- * Create a JSON.stringified version of an array of urls or a single url to be saved in the environment map content.
195
- *
196
- * @param input
197
- * @returns
198
- */
199
- createSaveableEnvironmentMapContent(input) {
200
- if (Array.isArray(input))
201
- return JSON.stringify(input);
202
- if (this._environmentMapNamesHDRCustom.indexOf(input) >= 0)
203
- return ("https://viewer.shapediver.com/v3/envmaps/custom/" +
204
- input +
205
- ".hdr");
206
- return input;
207
- }
208
- getEnvironmentMapImageUrl(name) {
209
- if (Array.isArray(name))
210
- return "";
211
- if (this._environmentMapNamesHDR.indexOf(name) >= 0) {
212
- let url_hdr = "https://viewer.shapediver.com/v3/envmaps/1k/" +
213
- name +
214
- "_1k.hdr";
215
- if (this._environmentMapNamesHDRCustom.indexOf(name) >= 0)
216
- url_hdr =
217
- "https://viewer.shapediver.com/v3/envmaps/custom/" +
218
- name +
219
- ".hdr";
220
- else if (this._environmentMapNamesHDRKhronos.indexOf(name) >= 0)
221
- url_hdr =
222
- "https://viewer.shapediver.com/v3/envmaps/khronos/" +
223
- name +
224
- ".hdr";
225
- return url_hdr;
226
- }
227
- else if (name.startsWith("https://") || name.startsWith("http://")) {
228
- if (name.endsWith(".hdr") ||
229
- name.endsWith(".jpg") ||
230
- name.endsWith(".png")) {
231
- return name;
232
- }
233
- }
234
- return "";
235
- }
236
- init() {
237
- this._environmentMaps["null"] = {
238
- name: "null",
239
- map: Promise.resolve(null),
240
- type: ENVIRONMENT_MAP_TYPE.NULL,
241
- };
242
- this._environmentMaps["none"] = {
243
- name: "none",
244
- map: Promise.resolve(null),
245
- type: ENVIRONMENT_MAP_TYPE.NONE,
246
- };
247
- this._pmremGenerator = new THREE.PMREMGenerator(this._renderingEngine.renderer);
248
- this._pmremGenerator.compileEquirectangularShader();
249
- }
250
- load(name) {
251
- return __awaiter(this, void 0, void 0, function* () {
252
- const eventId = this._uuidGenerator.create();
253
- try {
254
- const res = this.loadEnvMap(name, eventId);
255
- yield this.assignEnvironmentMap(res.name, res.type, eventId);
256
- }
257
- catch (e) {
258
- if (e instanceof viewer_shared_services_1.ShapeDiverViewerEnvironmentMapError) {
259
- throw e;
260
- }
261
- else {
262
- throw new viewer_shared_services_1.ShapeDiverViewerEnvironmentMapError("EnvironmentMapLoader.load: Was not able to load environment map.", name);
263
- }
264
- }
265
- return true;
266
- });
267
- }
268
- loadEnvMap(name, eId) {
269
- const eventId = eId || this._uuidGenerator.create();
270
- const event = {
271
- type: viewer_shared_types_1.TASK_TYPE.ENVIRONMENT_MAP_LOADING,
272
- id: eventId,
273
- data: { input: name },
274
- progress: 0,
275
- status: "Loading EnvironmentMap",
276
- };
277
- this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_START, event);
278
- if (name === "none" || name === "null")
279
- return this._environmentMaps[name];
280
- let name_internal, name_caching, url;
281
- // check if name is a JSON.stringified version of an array of urls
282
- if (!Array.isArray(name) &&
283
- name.startsWith('["https') &&
284
- name.endsWith('"]'))
285
- try {
286
- name = JSON.parse(name);
287
- }
288
- catch (e) {
289
- this.notify(eventId, true);
290
- throw new viewer_shared_services_1.ShapeDiverViewerEnvironmentMapError("EnvironmentMapLoader.load: Was not able to load environment map.", name);
291
- }
292
- // deal with string or array, define names for loading and caching
293
- if (!Array.isArray(name)) {
294
- name_internal = name.toLowerCase().replace(/ /g, "_");
295
- name_caching =
296
- name_internal + this._renderingEngine.environmentMapResolution;
297
- }
298
- else {
299
- if (name.length !== 6) {
300
- this.notify(eventId, true);
301
- throw new viewer_shared_services_1.ShapeDiverViewerEnvironmentMapError("EnvironmentMapLoader.load: Was not able to load environment map, exactly 6 files are needed in the array.", name);
302
- }
303
- name_internal = JSON.stringify(name, null, 0);
304
- name_caching = name_internal;
305
- }
306
- // check if environment map is already cached
307
- for (const environmentMap in this._environmentMaps)
308
- if (environmentMap === name_caching)
309
- return this._environmentMaps[environmentMap];
310
- try {
311
- // define urls for 6 cube images ourselves
312
- if (!Array.isArray(name)) {
313
- url = [];
314
- let i;
315
- if (this._environmentMapNamesHDR.indexOf(name_internal) >= 0) {
316
- let url_hdr = "https://viewer.shapediver.com/v3/envmaps/1k/" +
317
- name_internal +
318
- "_1k.hdr";
319
- if (this._environmentMapNamesHDRCustom.indexOf(name) >= 0)
320
- url_hdr =
321
- "https://viewer.shapediver.com/v3/envmaps/custom/" +
322
- name +
323
- ".hdr";
324
- else if (this._environmentMapNamesHDRKhronos.indexOf(name_internal) >= 0)
325
- url_hdr =
326
- "https://viewer.shapediver.com/v3/envmaps/khronos/" +
327
- name_internal +
328
- ".hdr";
329
- this._environmentMapHDR.push(url_hdr);
330
- return this.loadEnvironmentMap(name_caching, url_hdr, eventId);
331
- }
332
- else if (this._environmentMapNamesJPG.indexOf(name_internal) >= 0) {
333
- // found in list of available environment maps with file type jpg
334
- for (i = 0; i < this._environmentMapFilenames.length; i++)
335
- url.push("https://viewer.shapediver.com/v2/envmaps/" +
336
- this._renderingEngine.environmentMapResolution +
337
- "/" +
338
- name_internal +
339
- "/" +
340
- this._environmentMapFilenames[i] +
341
- ".jpg");
342
- }
343
- else if (name.startsWith("https://") ||
344
- name.startsWith("http://")) {
345
- if (name.endsWith(".hdr")) {
346
- this._environmentMapHDR.push(name);
347
- return this.loadEnvironmentMap(name_caching, name, eventId);
348
- }
349
- else {
350
- if (!name.endsWith("/"))
351
- name += "/";
352
- for (i = 0; i < this._environmentMapFilenames.length; i++)
353
- url.push(name +
354
- this._environmentMapFilenames[i] +
355
- ".jpg");
356
- }
357
- }
358
- else {
359
- this.notify(eventId, true);
360
- throw new viewer_shared_services_1.ShapeDiverViewerEnvironmentMapError("EnvironmentMapLoader.load: Was not able to load environment map, format not supported.", name);
361
- }
362
- }
363
- else {
364
- url = name;
365
- }
366
- return this.loadEnvironmentMap(name_caching, url, eventId);
367
- }
368
- catch (e) {
369
- this.notify(eventId, true);
370
- throw e;
371
- }
372
- }
373
- /**
374
- * In case one of our new custom HDR environment maps is loaded, the content is an url to the HDR file.
375
- * We extract the name of the environment map from the url and return it.
376
- *
377
- * @param input
378
- * @returns
379
- */
380
- reconstructSavedEnvironmentMapContent(input) {
381
- if (!Array.isArray(input) &&
382
- input.startsWith("https://viewer.shapediver.com/v3/envmaps/custom/") &&
383
- input.endsWith(".hdr")) {
384
- const parts = input.split("/");
385
- const name = parts[parts.length - 1].split(".")[0];
386
- if (this._environmentMapNamesHDRCustom.indexOf(name) >= 0)
387
- return name;
388
- }
389
- return input;
390
- }
391
- // #endregion Public Methods (4)
392
- // #region Private Methods (4)
393
- assignEnvironmentMap(name, type, eventId) {
394
- return __awaiter(this, void 0, void 0, function* () {
395
- if (name in this._environmentMaps === false)
396
- return;
397
- this._type = type;
398
- const map = yield this._environmentMaps[name].map;
399
- // set the environment map in the material loader
400
- this._renderingEngine.materialLoader.assignEnvironmentMap(map, type);
401
- // set the currently used environment map for all ThreejsData in the scene tree
402
- (0, ThreeJsDataUtils_1.assignEnvironmentMapForThreeJsData)(map, type, this._renderingEngine.environmentMapIntensity, this._renderingEngine.environmentMapRotation);
403
- this._envMap = map;
404
- this.notify(eventId);
405
- });
406
- }
407
- assignTextureEncoding() {
408
- for (const e in this._environmentMaps) {
409
- if (this._environmentMaps[e]) {
410
- if (this._environmentMaps[e].resolved === true) {
411
- this._environmentMaps[e].map.then((m) => {
412
- if (m instanceof THREE.Texture) {
413
- m.dispose();
414
- m.colorSpace = this._textureEncoding;
415
- m.needsUpdate = true;
416
- }
417
- });
418
- }
419
- }
420
- }
421
- }
422
- loadEnvironmentMap(name, url, eventId) {
423
- this._environmentMaps[name] = {
424
- name,
425
- type: !Array.isArray(url)
426
- ? ENVIRONMENT_MAP_TYPE.HDR
427
- : ENVIRONMENT_MAP_TYPE.LDR,
428
- map: new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
429
- try {
430
- if (!Array.isArray(url)) {
431
- const response = (yield this._httpClient
432
- .get(url, undefined, true)
433
- .catch(reject));
434
- const arrayBufferView = new Uint8Array(response.data);
435
- const blob = new Blob([arrayBufferView], {
436
- type: response.headers["content-type"],
437
- });
438
- const blobUrl = URL.createObjectURL(blob);
439
- new RGBELoader_1.RGBELoader().load(blobUrl, (texture) => {
440
- const map = this._pmremGenerator.fromEquirectangular(texture).texture;
441
- this._pmremGenerator.dispose();
442
- URL.revokeObjectURL(blobUrl);
443
- this._environmentMaps[name].resolved = true;
444
- resolve(map);
445
- }, () => { }, (error) => reject(error));
446
- }
447
- else {
448
- const promises = [];
449
- url.forEach((u) => promises.push(this._httpClient.get(u, undefined, true)));
450
- const responses = yield Promise.all(promises);
451
- const urls = responses.map((response) => {
452
- const arrayBufferView = new Uint8Array(response.data);
453
- const blob = new Blob([arrayBufferView], {
454
- type: response.headers["content-type"],
455
- });
456
- return URL.createObjectURL(blob);
457
- });
458
- new THREE.CubeTextureLoader().load(urls, (map) => {
459
- map.colorSpace = THREE.SRGBColorSpace;
460
- map.format = THREE.RGBAFormat;
461
- map.mapping = THREE.CubeReflectionMapping;
462
- urls.forEach((u) => URL.revokeObjectURL(u));
463
- this._environmentMaps[name].resolved = true;
464
- resolve(map);
465
- }, () => { }, (error) => reject(error));
466
- }
467
- }
468
- catch (e) {
469
- this.notify(eventId, true);
470
- throw e;
471
- }
472
- })),
473
- };
474
- return this._environmentMaps[name];
475
- }
476
- notify(eventId, failed = false) {
477
- let event;
478
- if (failed) {
479
- event = {
480
- type: viewer_shared_types_1.TASK_TYPE.ENVIRONMENT_MAP_LOADING,
481
- id: eventId,
482
- progress: 1,
483
- status: "Loading of EnvironmentMap failed",
484
- };
485
- this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_CANCEL, event);
486
- }
487
- else {
488
- event = {
489
- type: viewer_shared_types_1.TASK_TYPE.ENVIRONMENT_MAP_LOADING,
490
- id: eventId,
491
- progress: 1,
492
- status: "Loaded EnvironmentMap",
493
- };
494
- if (this._stateEngine.viewportEngines[this._renderingEngine.id]) {
495
- this._stateEngine.viewportEngines[this._renderingEngine.id].environmentMapLoaded.resolve(true);
496
- this._stateEngine.viewportEngines[this._renderingEngine.id].environmentMapLoaded = new viewer_shared_services_1.StatePromise();
497
- }
498
- this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_END, event);
499
- }
500
- }
501
- }
502
- exports.EnvironmentMapLoader = EnvironmentMapLoader;
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 () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.EnvironmentMapLoader = exports.ENVIRONMENT_MAP_TYPE = exports.ENVIRONMENT_MAP_EMPTY = exports.ENVIRONMENT_MAP = exports.ENVIRONMENT_MAP_CUBE = void 0;
46
+ /* eslint-disable @typescript-eslint/no-empty-function */
47
+ /* eslint-disable no-async-promise-executor */
48
+ const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
49
+ const THREE = __importStar(require("three"));
50
+ const viewer_shared_types_1 = require("@shapediver/viewer.shared.types");
51
+ const ThreeJsDataUtils_1 = require("../managers/sceneTree/ThreeJsDataUtils");
52
+ const RGBELoader_1 = require("../three/loaders/RGBELoader");
53
+ var ENVIRONMENT_MAP_CUBE;
54
+ (function (ENVIRONMENT_MAP_CUBE) {
55
+ ENVIRONMENT_MAP_CUBE["DEFAULT"] = "default";
56
+ ENVIRONMENT_MAP_CUBE["DEFAULT_BW"] = "default_bw";
57
+ ENVIRONMENT_MAP_CUBE["BLURRED_LIGHTS"] = "blurred_lights";
58
+ ENVIRONMENT_MAP_CUBE["GEORGENTOR"] = "georgentor";
59
+ ENVIRONMENT_MAP_CUBE["GEORGENTOR_BLUR"] = "georgentor_blur";
60
+ ENVIRONMENT_MAP_CUBE["GEORGENTOR_BLUE_BLUR"] = "georgentor_blue_blur";
61
+ ENVIRONMENT_MAP_CUBE["GEORGENTOR_BW_BLUR"] = "georgentor_bw_blur";
62
+ ENVIRONMENT_MAP_CUBE["LEVELSETS"] = "levelsets";
63
+ ENVIRONMENT_MAP_CUBE["LYTHWOOD_FIELD"] = "lythwood_field";
64
+ ENVIRONMENT_MAP_CUBE["MOUNTAINS"] = "mountains";
65
+ ENVIRONMENT_MAP_CUBE["OCEAN"] = "ocean";
66
+ ENVIRONMENT_MAP_CUBE["PIAZZA_SAN_MARCO"] = "piazza_san_marco";
67
+ ENVIRONMENT_MAP_CUBE["RESIDENTIAL_GARDEN"] = "residential_garden";
68
+ ENVIRONMENT_MAP_CUBE["ROOM_ABSTRACT_1"] = "room_abstract_1";
69
+ ENVIRONMENT_MAP_CUBE["SKY"] = "sky";
70
+ ENVIRONMENT_MAP_CUBE["STORAGE_ROOM"] = "storage_room";
71
+ ENVIRONMENT_MAP_CUBE["STORM"] = "storm";
72
+ ENVIRONMENT_MAP_CUBE["SUBWAY_ENTRANCE"] = "subway_entrance";
73
+ ENVIRONMENT_MAP_CUBE["SUBWAY_ENTRANCE_BW_BLUR"] = "subway_entrance_bw_blur";
74
+ ENVIRONMENT_MAP_CUBE["WHITE"] = "white";
75
+ ENVIRONMENT_MAP_CUBE["YOKOHAMA"] = "yokohama";
76
+ })(ENVIRONMENT_MAP_CUBE || (exports.ENVIRONMENT_MAP_CUBE = ENVIRONMENT_MAP_CUBE = {}));
77
+ var ENVIRONMENT_MAP;
78
+ (function (ENVIRONMENT_MAP) {
79
+ ENVIRONMENT_MAP["DEFAULT_STUDIO"] = "default_studio";
80
+ ENVIRONMENT_MAP["FURNITURE_STUDIO"] = "furniture_studio";
81
+ ENVIRONMENT_MAP["GEM_STUDIO"] = "gem_studio";
82
+ ENVIRONMENT_MAP["HOSPITAL"] = "hospital";
83
+ ENVIRONMENT_MAP["JEWELRY_STUDIO"] = "jewelry_studio";
84
+ ENVIRONMENT_MAP["ANNIVERSARY_LOUNGE"] = "anniversary_lounge";
85
+ ENVIRONMENT_MAP["BALLROOM"] = "ballroom";
86
+ ENVIRONMENT_MAP["CANNON_EXTERIOR"] = "cannon_exterior";
87
+ ENVIRONMENT_MAP["CAPE_HILL"] = "cape_hill";
88
+ ENVIRONMENT_MAP["CHRISTMAS_PHOTO_STUDIO"] = "christmas_photo_studio";
89
+ ENVIRONMENT_MAP["CIRCUS_MAXIMUS"] = "circus_maximus";
90
+ ENVIRONMENT_MAP["COLORFUL_STUDIO"] = "colorful_studio";
91
+ ENVIRONMENT_MAP["COMBINATION_ROOM"] = "combination_room";
92
+ ENVIRONMENT_MAP["GREEN_POINT_PARK"] = "green_point_park";
93
+ ENVIRONMENT_MAP["HILLTOP_CONSTRUCTION"] = "hilltop_construction";
94
+ ENVIRONMENT_MAP["LARGE_CORRIDOR"] = "large_corridor";
95
+ ENVIRONMENT_MAP["LYTHWOOD_LOUNGE"] = "lythwood_lounge";
96
+ ENVIRONMENT_MAP["NEUTRAL"] = "neutral";
97
+ ENVIRONMENT_MAP["OBERER_KUHBERG"] = "oberer_kuhberg";
98
+ ENVIRONMENT_MAP["OLD_HALL"] = "old_hall";
99
+ ENVIRONMENT_MAP["PAUL_LOBE_HAUS"] = "paul_lobe_haus";
100
+ ENVIRONMENT_MAP["PHOTO_STUDIO"] = "photo_studio";
101
+ ENVIRONMENT_MAP["PHOTO_STUDIO_BROADWAY_HALL"] = "photo_studio_broadway_hall";
102
+ ENVIRONMENT_MAP["SNOWY_FIELD"] = "snowy_field";
103
+ ENVIRONMENT_MAP["STUDIO_SMALL"] = "studio_small";
104
+ ENVIRONMENT_MAP["SUNFLOWERS"] = "sunflowers";
105
+ ENVIRONMENT_MAP["TABLE_MOUNTAIN"] = "table_mountain";
106
+ ENVIRONMENT_MAP["VENICE_SUNSET"] = "venice_sunset";
107
+ ENVIRONMENT_MAP["WIDE_STREET"] = "wide_street";
108
+ })(ENVIRONMENT_MAP || (exports.ENVIRONMENT_MAP = ENVIRONMENT_MAP = {}));
109
+ var ENVIRONMENT_MAP_EMPTY;
110
+ (function (ENVIRONMENT_MAP_EMPTY) {
111
+ ENVIRONMENT_MAP_EMPTY["NONE"] = "none";
112
+ ENVIRONMENT_MAP_EMPTY["NULL"] = "null";
113
+ })(ENVIRONMENT_MAP_EMPTY || (exports.ENVIRONMENT_MAP_EMPTY = ENVIRONMENT_MAP_EMPTY = {}));
114
+ var ENVIRONMENT_MAP_TYPE;
115
+ (function (ENVIRONMENT_MAP_TYPE) {
116
+ ENVIRONMENT_MAP_TYPE["LDR"] = "ldr";
117
+ ENVIRONMENT_MAP_TYPE["HDR"] = "hdr";
118
+ ENVIRONMENT_MAP_TYPE["NONE"] = "none";
119
+ ENVIRONMENT_MAP_TYPE["NULL"] = "null";
120
+ })(ENVIRONMENT_MAP_TYPE || (exports.ENVIRONMENT_MAP_TYPE = ENVIRONMENT_MAP_TYPE = {}));
121
+ class EnvironmentMapLoader {
122
+ // #endregion Properties (15)
123
+ // #region Constructors (1)
124
+ constructor(_renderingEngine) {
125
+ this._renderingEngine = _renderingEngine;
126
+ // #region Properties (15)
127
+ this._environmentMapFilenames = [
128
+ "px",
129
+ "nx",
130
+ "pz",
131
+ "nz",
132
+ "py",
133
+ "ny",
134
+ ];
135
+ this._environmentMapHDR = [];
136
+ this._environmentMapNamesHDR = Object.values(ENVIRONMENT_MAP).filter((value) => typeof value === "string");
137
+ this._environmentMapNamesHDRCustom = [
138
+ "default_studio",
139
+ "furniture_studio",
140
+ "gem_studio",
141
+ "hospital",
142
+ "jewelry_studio",
143
+ ];
144
+ this._environmentMapNamesHDRKhronos = [
145
+ "cannon_exterior",
146
+ "colorful_studio",
147
+ "neutral",
148
+ "wide_street",
149
+ ];
150
+ this._environmentMapNamesJPG = [
151
+ "default",
152
+ "default_bw",
153
+ "blurred_lights",
154
+ "georgentor",
155
+ "georgentor_blur",
156
+ "georgentor_blue_blur",
157
+ "georgentor_bw_blur",
158
+ "levelsets",
159
+ "lythwood_field",
160
+ "mountains",
161
+ "ocean",
162
+ "piazza_san_marco",
163
+ "residential_garden",
164
+ "room_abstract_1",
165
+ "sky",
166
+ "storage_room",
167
+ "storm",
168
+ "subway_entrance",
169
+ "subway_entrance_bw_blur",
170
+ "white",
171
+ "yokohama",
172
+ ];
173
+ this._environmentMaps = {};
174
+ this._eventEngine = viewer_shared_services_1.EventEngine.instance;
175
+ this._httpClient = viewer_shared_services_1.HttpClient.instance;
176
+ this._stateEngine = viewer_shared_services_1.StateEngine.instance;
177
+ this._uuidGenerator = viewer_shared_services_1.UuidGenerator.instance;
178
+ this._envMap = null;
179
+ this._isHDRMap = false;
180
+ this._textureEncoding = THREE.SRGBColorSpace;
181
+ this._type = ENVIRONMENT_MAP_TYPE.NULL;
182
+ }
183
+ // #endregion Constructors (1)
184
+ // #region Public Accessors (4)
185
+ get environmentMap() {
186
+ return this._envMap;
187
+ }
188
+ get isHDRMap() {
189
+ return this._isHDRMap;
190
+ }
191
+ get textureEncoding() {
192
+ return this._textureEncoding;
193
+ }
194
+ set textureEncoding(value) {
195
+ this._textureEncoding = value;
196
+ this.assignTextureEncoding();
197
+ }
198
+ get type() {
199
+ return this._type;
200
+ }
201
+ // #endregion Public Accessors (4)
202
+ // #region Public Methods (4)
203
+ /**
204
+ * Create a JSON.stringified version of an array of urls or a single url to be saved in the environment map content.
205
+ *
206
+ * @param input
207
+ * @returns
208
+ */
209
+ createSaveableEnvironmentMapContent(input) {
210
+ if (Array.isArray(input))
211
+ return JSON.stringify(input);
212
+ if (this._environmentMapNamesHDRCustom.indexOf(input) >= 0)
213
+ return ("https://viewer.shapediver.com/v3/envmaps/custom/" +
214
+ input +
215
+ ".hdr");
216
+ return input;
217
+ }
218
+ getEnvironmentMapImageUrl(name) {
219
+ if (Array.isArray(name))
220
+ return "";
221
+ if (this._environmentMapNamesHDR.indexOf(name) >= 0) {
222
+ let url_hdr = "https://viewer.shapediver.com/v3/envmaps/1k/" +
223
+ name +
224
+ "_1k.hdr";
225
+ if (this._environmentMapNamesHDRCustom.indexOf(name) >= 0)
226
+ url_hdr =
227
+ "https://viewer.shapediver.com/v3/envmaps/custom/" +
228
+ name +
229
+ ".hdr";
230
+ else if (this._environmentMapNamesHDRKhronos.indexOf(name) >= 0)
231
+ url_hdr =
232
+ "https://viewer.shapediver.com/v3/envmaps/khronos/" +
233
+ name +
234
+ ".hdr";
235
+ return url_hdr;
236
+ }
237
+ else if (name.startsWith("https://") || name.startsWith("http://")) {
238
+ if (name.endsWith(".hdr") ||
239
+ name.endsWith(".jpg") ||
240
+ name.endsWith(".png")) {
241
+ return name;
242
+ }
243
+ }
244
+ return "";
245
+ }
246
+ init() {
247
+ this._environmentMaps["null"] = {
248
+ name: "null",
249
+ map: Promise.resolve(null),
250
+ type: ENVIRONMENT_MAP_TYPE.NULL,
251
+ };
252
+ this._environmentMaps["none"] = {
253
+ name: "none",
254
+ map: Promise.resolve(null),
255
+ type: ENVIRONMENT_MAP_TYPE.NONE,
256
+ };
257
+ this._pmremGenerator = new THREE.PMREMGenerator(this._renderingEngine.renderer);
258
+ this._pmremGenerator.compileEquirectangularShader();
259
+ }
260
+ load(name) {
261
+ return __awaiter(this, void 0, void 0, function* () {
262
+ const eventId = this._uuidGenerator.create();
263
+ try {
264
+ const res = this.loadEnvMap(name, eventId);
265
+ yield this.assignEnvironmentMap(res.name, res.type, eventId);
266
+ }
267
+ catch (e) {
268
+ if (e instanceof viewer_shared_services_1.ShapeDiverViewerEnvironmentMapError) {
269
+ throw e;
270
+ }
271
+ else {
272
+ throw new viewer_shared_services_1.ShapeDiverViewerEnvironmentMapError("EnvironmentMapLoader.load: Was not able to load environment map.", name);
273
+ }
274
+ }
275
+ return true;
276
+ });
277
+ }
278
+ loadEnvMap(name, eId) {
279
+ const eventId = eId || this._uuidGenerator.create();
280
+ const event = {
281
+ type: viewer_shared_types_1.TASK_TYPE.ENVIRONMENT_MAP_LOADING,
282
+ id: eventId,
283
+ data: { input: name },
284
+ progress: 0,
285
+ status: "Loading EnvironmentMap",
286
+ };
287
+ this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_START, event);
288
+ if (name === "none" || name === "null")
289
+ return this._environmentMaps[name];
290
+ let name_internal, name_caching, url;
291
+ // check if name is a JSON.stringified version of an array of urls
292
+ if (!Array.isArray(name) &&
293
+ name.startsWith('["https') &&
294
+ name.endsWith('"]'))
295
+ try {
296
+ name = JSON.parse(name);
297
+ }
298
+ catch (e) {
299
+ this.notify(eventId, true);
300
+ throw new viewer_shared_services_1.ShapeDiverViewerEnvironmentMapError("EnvironmentMapLoader.load: Was not able to load environment map.", name);
301
+ }
302
+ // deal with string or array, define names for loading and caching
303
+ if (!Array.isArray(name)) {
304
+ name_internal = name.toLowerCase().replace(/ /g, "_");
305
+ name_caching =
306
+ name_internal + this._renderingEngine.environmentMapResolution;
307
+ }
308
+ else {
309
+ if (name.length !== 6) {
310
+ this.notify(eventId, true);
311
+ throw new viewer_shared_services_1.ShapeDiverViewerEnvironmentMapError("EnvironmentMapLoader.load: Was not able to load environment map, exactly 6 files are needed in the array.", name);
312
+ }
313
+ name_internal = JSON.stringify(name, null, 0);
314
+ name_caching = name_internal;
315
+ }
316
+ // check if environment map is already cached
317
+ for (const environmentMap in this._environmentMaps)
318
+ if (environmentMap === name_caching)
319
+ return this._environmentMaps[environmentMap];
320
+ try {
321
+ // define urls for 6 cube images ourselves
322
+ if (!Array.isArray(name)) {
323
+ url = [];
324
+ let i;
325
+ if (this._environmentMapNamesHDR.indexOf(name_internal) >= 0) {
326
+ let url_hdr = "https://viewer.shapediver.com/v3/envmaps/1k/" +
327
+ name_internal +
328
+ "_1k.hdr";
329
+ if (this._environmentMapNamesHDRCustom.indexOf(name) >= 0)
330
+ url_hdr =
331
+ "https://viewer.shapediver.com/v3/envmaps/custom/" +
332
+ name +
333
+ ".hdr";
334
+ else if (this._environmentMapNamesHDRKhronos.indexOf(name_internal) >= 0)
335
+ url_hdr =
336
+ "https://viewer.shapediver.com/v3/envmaps/khronos/" +
337
+ name_internal +
338
+ ".hdr";
339
+ this._environmentMapHDR.push(url_hdr);
340
+ return this.loadEnvironmentMap(name_caching, url_hdr, eventId);
341
+ }
342
+ else if (this._environmentMapNamesJPG.indexOf(name_internal) >= 0) {
343
+ // found in list of available environment maps with file type jpg
344
+ for (i = 0; i < this._environmentMapFilenames.length; i++)
345
+ url.push("https://viewer.shapediver.com/v2/envmaps/" +
346
+ this._renderingEngine.environmentMapResolution +
347
+ "/" +
348
+ name_internal +
349
+ "/" +
350
+ this._environmentMapFilenames[i] +
351
+ ".jpg");
352
+ }
353
+ else if (name.startsWith("https://") ||
354
+ name.startsWith("http://")) {
355
+ if (name.endsWith(".hdr")) {
356
+ this._environmentMapHDR.push(name);
357
+ return this.loadEnvironmentMap(name_caching, name, eventId);
358
+ }
359
+ else {
360
+ if (!name.endsWith("/"))
361
+ name += "/";
362
+ for (i = 0; i < this._environmentMapFilenames.length; i++)
363
+ url.push(name +
364
+ this._environmentMapFilenames[i] +
365
+ ".jpg");
366
+ }
367
+ }
368
+ else {
369
+ this.notify(eventId, true);
370
+ throw new viewer_shared_services_1.ShapeDiverViewerEnvironmentMapError("EnvironmentMapLoader.load: Was not able to load environment map, format not supported.", name);
371
+ }
372
+ }
373
+ else {
374
+ url = name;
375
+ }
376
+ return this.loadEnvironmentMap(name_caching, url, eventId);
377
+ }
378
+ catch (e) {
379
+ this.notify(eventId, true);
380
+ throw e;
381
+ }
382
+ }
383
+ /**
384
+ * In case one of our new custom HDR environment maps is loaded, the content is an url to the HDR file.
385
+ * We extract the name of the environment map from the url and return it.
386
+ *
387
+ * @param input
388
+ * @returns
389
+ */
390
+ reconstructSavedEnvironmentMapContent(input) {
391
+ if (!Array.isArray(input) &&
392
+ input.startsWith("https://viewer.shapediver.com/v3/envmaps/custom/") &&
393
+ input.endsWith(".hdr")) {
394
+ const parts = input.split("/");
395
+ const name = parts[parts.length - 1].split(".")[0];
396
+ if (this._environmentMapNamesHDRCustom.indexOf(name) >= 0)
397
+ return name;
398
+ }
399
+ return input;
400
+ }
401
+ // #endregion Public Methods (4)
402
+ // #region Private Methods (4)
403
+ assignEnvironmentMap(name, type, eventId) {
404
+ return __awaiter(this, void 0, void 0, function* () {
405
+ if (name in this._environmentMaps === false)
406
+ return;
407
+ this._type = type;
408
+ const map = yield this._environmentMaps[name].map;
409
+ // set the environment map in the material loader
410
+ this._renderingEngine.materialLoader.assignEnvironmentMap(map, type);
411
+ // set the currently used environment map for all ThreejsData in the scene tree
412
+ (0, ThreeJsDataUtils_1.assignEnvironmentMapForThreeJsData)(map, type, this._renderingEngine.environmentMapIntensity, this._renderingEngine.environmentMapRotation);
413
+ this._envMap = map;
414
+ this.notify(eventId);
415
+ });
416
+ }
417
+ assignTextureEncoding() {
418
+ for (const e in this._environmentMaps) {
419
+ if (this._environmentMaps[e]) {
420
+ if (this._environmentMaps[e].resolved === true) {
421
+ this._environmentMaps[e].map.then((m) => {
422
+ if (m instanceof THREE.Texture) {
423
+ m.dispose();
424
+ m.colorSpace = this._textureEncoding;
425
+ m.needsUpdate = true;
426
+ }
427
+ });
428
+ }
429
+ }
430
+ }
431
+ }
432
+ loadEnvironmentMap(name, url, eventId) {
433
+ this._environmentMaps[name] = {
434
+ name,
435
+ type: !Array.isArray(url)
436
+ ? ENVIRONMENT_MAP_TYPE.HDR
437
+ : ENVIRONMENT_MAP_TYPE.LDR,
438
+ map: new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
439
+ try {
440
+ if (!Array.isArray(url)) {
441
+ const response = (yield this._httpClient
442
+ .get(url, undefined, true)
443
+ .catch(reject));
444
+ const arrayBufferView = new Uint8Array(response.data);
445
+ const blob = new Blob([arrayBufferView], {
446
+ type: response.headers["content-type"],
447
+ });
448
+ const blobUrl = URL.createObjectURL(blob);
449
+ new RGBELoader_1.RGBELoader().load(blobUrl, (texture) => {
450
+ const map = this._pmremGenerator.fromEquirectangular(texture).texture;
451
+ this._pmremGenerator.dispose();
452
+ URL.revokeObjectURL(blobUrl);
453
+ this._environmentMaps[name].resolved = true;
454
+ resolve(map);
455
+ }, () => { }, (error) => reject(error));
456
+ }
457
+ else {
458
+ const promises = [];
459
+ url.forEach((u) => promises.push(this._httpClient.get(u, undefined, true)));
460
+ const responses = yield Promise.all(promises);
461
+ const urls = responses.map((response) => {
462
+ const arrayBufferView = new Uint8Array(response.data);
463
+ const blob = new Blob([arrayBufferView], {
464
+ type: response.headers["content-type"],
465
+ });
466
+ return URL.createObjectURL(blob);
467
+ });
468
+ new THREE.CubeTextureLoader().load(urls, (map) => {
469
+ map.colorSpace = THREE.SRGBColorSpace;
470
+ map.format = THREE.RGBAFormat;
471
+ map.mapping = THREE.CubeReflectionMapping;
472
+ urls.forEach((u) => URL.revokeObjectURL(u));
473
+ this._environmentMaps[name].resolved = true;
474
+ resolve(map);
475
+ }, () => { }, (error) => reject(error));
476
+ }
477
+ }
478
+ catch (e) {
479
+ this.notify(eventId, true);
480
+ throw e;
481
+ }
482
+ })),
483
+ };
484
+ return this._environmentMaps[name];
485
+ }
486
+ notify(eventId, failed = false) {
487
+ let event;
488
+ if (failed) {
489
+ event = {
490
+ type: viewer_shared_types_1.TASK_TYPE.ENVIRONMENT_MAP_LOADING,
491
+ id: eventId,
492
+ progress: 1,
493
+ status: "Loading of EnvironmentMap failed",
494
+ };
495
+ this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_CANCEL, event);
496
+ }
497
+ else {
498
+ event = {
499
+ type: viewer_shared_types_1.TASK_TYPE.ENVIRONMENT_MAP_LOADING,
500
+ id: eventId,
501
+ progress: 1,
502
+ status: "Loaded EnvironmentMap",
503
+ };
504
+ if (this._stateEngine.viewportEngines[this._renderingEngine.id]) {
505
+ this._stateEngine.viewportEngines[this._renderingEngine.id].environmentMapLoaded.resolve(true);
506
+ this._stateEngine.viewportEngines[this._renderingEngine.id].environmentMapLoaded = new viewer_shared_services_1.StatePromise();
507
+ }
508
+ this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_END, event);
509
+ }
510
+ }
511
+ }
512
+ exports.EnvironmentMapLoader = EnvironmentMapLoader;
503
513
  //# sourceMappingURL=EnvironmentMapLoader.js.map