@shapediver/viewer.rendering-engine.rendering-engine-threejs 3.16.8 → 3.16.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/RenderingEngine.d.ts +294 -294
- package/dist/RenderingEngine.js +987 -977
- package/dist/RenderingEngine.js.map +1 -1
- package/dist/index.d.ts +16 -16
- package/dist/index.js +57 -57
- package/dist/injectors/TextureUnifierInjector.d.ts +13 -13
- package/dist/injectors/TextureUnifierInjector.js +181 -171
- package/dist/injectors/TextureUnifierInjector.js.map +1 -1
- package/dist/interfaces/ILoader.d.ts +3 -3
- package/dist/interfaces/ILoader.js +2 -2
- package/dist/interfaces/IRenderingEngine.d.ts +45 -45
- package/dist/interfaces/IRenderingEngine.js +2 -2
- package/dist/loaders/EnvironmentMapLoader.d.ts +119 -119
- package/dist/loaders/EnvironmentMapLoader.js +512 -502
- package/dist/loaders/EnvironmentMapLoader.js.map +1 -1
- package/dist/loaders/GeometryLoader.d.ts +39 -39
- package/dist/loaders/GeometryLoader.d.ts.map +1 -1
- package/dist/loaders/GeometryLoader.js +603 -593
- package/dist/loaders/GeometryLoader.js.map +1 -1
- package/dist/loaders/HTMLElementAnchorLoader.d.ts +15 -15
- package/dist/loaders/HTMLElementAnchorLoader.js +98 -98
- package/dist/loaders/HTMLElementAnchorLoader.js.map +1 -1
- package/dist/loaders/LightLoader.d.ts +19 -19
- package/dist/loaders/LightLoader.js +197 -187
- package/dist/loaders/LightLoader.js.map +1 -1
- package/dist/loaders/MaterialLoader.d.ts +115 -115
- package/dist/loaders/MaterialLoader.d.ts.map +1 -1
- package/dist/loaders/MaterialLoader.js +1612 -1602
- package/dist/loaders/MaterialLoader.js.map +1 -1
- package/dist/managers/ARManager.d.ts +17 -17
- package/dist/managers/ARManager.js +128 -128
- package/dist/managers/ARManager.js.map +1 -1
- package/dist/managers/CameraManager.d.ts +19 -19
- package/dist/managers/CameraManager.js +244 -234
- package/dist/managers/CameraManager.js.map +1 -1
- package/dist/managers/EnvironmentGeometryManager.d.ts +32 -32
- package/dist/managers/EnvironmentGeometryManager.js +114 -114
- package/dist/managers/EnvironmentGeometryManager.js.map +1 -1
- package/dist/managers/FlagManager.d.ts +19 -19
- package/dist/managers/FlagManager.js +143 -143
- package/dist/managers/FlagManager.js.map +1 -1
- package/dist/managers/PostProcessingManager.d.ts +1019 -1019
- package/dist/managers/PostProcessingManager.js +1306 -1296
- package/dist/managers/PostProcessingManager.js.map +1 -1
- package/dist/managers/RenderingManager.d.ts +84 -84
- package/dist/managers/RenderingManager.d.ts.map +1 -1
- package/dist/managers/RenderingManager.js +679 -669
- package/dist/managers/RenderingManager.js.map +1 -1
- package/dist/managers/SceneTracingManager.d.ts +28 -28
- package/dist/managers/SceneTracingManager.js +160 -150
- package/dist/managers/SceneTracingManager.js.map +1 -1
- package/dist/managers/SceneTreeManager.d.ts +81 -81
- package/dist/managers/SceneTreeManager.d.ts.map +1 -1
- package/dist/managers/SceneTreeManager.js +500 -490
- package/dist/managers/SceneTreeManager.js.map +1 -1
- package/dist/managers/SettingsManager.d.ts +28 -28
- package/dist/managers/SettingsManager.js +284 -284
- package/dist/managers/SettingsManager.js.map +1 -1
- package/dist/managers/environmentGeometry/ContactShadow.d.ts +42 -42
- package/dist/managers/environmentGeometry/ContactShadow.js +295 -285
- package/dist/managers/environmentGeometry/ContactShadow.js.map +1 -1
- package/dist/managers/environmentGeometry/Grid.d.ts +20 -20
- package/dist/managers/environmentGeometry/Grid.js +110 -100
- package/dist/managers/environmentGeometry/Grid.js.map +1 -1
- package/dist/managers/environmentGeometry/GroundPlane.d.ts +21 -21
- package/dist/managers/environmentGeometry/GroundPlane.js +105 -95
- package/dist/managers/environmentGeometry/GroundPlane.js.map +1 -1
- package/dist/managers/environmentGeometry/GroundPlaneShadow.d.ts +21 -21
- package/dist/managers/environmentGeometry/GroundPlaneShadow.js +96 -86
- package/dist/managers/environmentGeometry/GroundPlaneShadow.js.map +1 -1
- package/dist/managers/environmentGeometry/IEnvironmentGeometry.d.ts +8 -8
- package/dist/managers/environmentGeometry/IEnvironmentGeometry.js +2 -2
- package/dist/managers/postprocessing/GodRaysManager.d.ts +12 -12
- package/dist/managers/postprocessing/GodRaysManager.js +73 -63
- package/dist/managers/postprocessing/GodRaysManager.js.map +1 -1
- package/dist/managers/postprocessing/OutlineManager.d.ts +15 -15
- package/dist/managers/postprocessing/OutlineManager.js +86 -76
- package/dist/managers/postprocessing/OutlineManager.js.map +1 -1
- package/dist/managers/postprocessing/SSAARenderPass.d.ts +53 -53
- package/dist/managers/postprocessing/SSAARenderPass.js +281 -281
- package/dist/managers/postprocessing/SSAARenderPass.js.map +1 -1
- package/dist/managers/postprocessing/SelectiveBloomManager.d.ts +14 -14
- package/dist/managers/postprocessing/SelectiveBloomManager.js +76 -66
- package/dist/managers/postprocessing/SelectiveBloomManager.js.map +1 -1
- package/dist/managers/postprocessing/ao/ao/AOEffect.d.ts +46 -46
- package/dist/managers/postprocessing/ao/ao/AOEffect.js +142 -142
- package/dist/managers/postprocessing/ao/ao/AOEffect.js.map +1 -1
- package/dist/managers/postprocessing/ao/ao/AOPass.d.ts +12 -12
- package/dist/managers/postprocessing/ao/ao/AOPass.js +108 -108
- package/dist/managers/postprocessing/ao/ao/AOPass.js.map +1 -1
- package/dist/managers/postprocessing/ao/ao/shader/ao_compose.d.ts +1 -1
- package/dist/managers/postprocessing/ao/ao/shader/ao_compose.js +4 -4
- package/dist/managers/postprocessing/ao/ao/shader/ao_utils.d.ts +1 -1
- package/dist/managers/postprocessing/ao/ao/shader/ao_utils.js +4 -4
- package/dist/managers/postprocessing/ao/hbao/HBAOEffect.d.ts +14 -14
- package/dist/managers/postprocessing/ao/hbao/HBAOEffect.js +24 -24
- package/dist/managers/postprocessing/ao/hbao/shader/hbao.d.ts +1 -1
- package/dist/managers/postprocessing/ao/hbao/shader/hbao.js +4 -4
- package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.d.ts +33 -33
- package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js +211 -211
- package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js.map +1 -1
- package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.d.ts +1 -1
- package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.js +4 -4
- package/dist/managers/postprocessing/ao/ssao/SSAOEffect.d.ts +14 -14
- package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js +82 -82
- package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js.map +1 -1
- package/dist/managers/postprocessing/ao/ssao/shader/ssao.d.ts +1 -1
- package/dist/managers/postprocessing/ao/ssao/shader/ssao.js +4 -4
- package/dist/managers/postprocessing/ao/utils/shader/basic.d.ts +1 -1
- package/dist/managers/postprocessing/ao/utils/shader/basic.js +4 -4
- package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.d.ts +1 -1
- package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.js +4 -4
- package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingEffect.d.ts +165 -165
- package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingEffect.js +299 -299
- package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingEffect.js.map +1 -1
- package/dist/managers/postprocessing/effects/tone-mapping/tone-mapping.d.ts +1 -1
- package/dist/managers/postprocessing/effects/tone-mapping/tone-mapping.js +4 -4
- package/dist/managers/postprocessing/utils/CopyMaterial.d.ts +37 -37
- package/dist/managers/postprocessing/utils/CopyMaterial.js +69 -69
- package/dist/managers/postprocessing/utils/CopyShader.d.ts +13 -13
- package/dist/managers/postprocessing/utils/CopyShader.js +12 -12
- package/dist/managers/postprocessing/utils/FullScreenQuad.d.ts +9 -9
- package/dist/managers/postprocessing/utils/FullScreenQuad.js +28 -28
- package/dist/managers/postprocessing/utils/NormalPass.d.ts +87 -87
- package/dist/managers/postprocessing/utils/NormalPass.js +156 -156
- package/dist/managers/postprocessing/utils/NormalPass.js.map +1 -1
- package/dist/managers/postprocessing/utils/RenderPass.d.ts +114 -114
- package/dist/managers/postprocessing/utils/RenderPass.js +259 -259
- package/dist/managers/postprocessing/utils/RenderPass.js.map +1 -1
- package/dist/managers/sceneTree/SDTFUtils.d.ts +6 -6
- package/dist/managers/sceneTree/SDTFUtils.d.ts.map +1 -1
- package/dist/managers/sceneTree/SDTFUtils.js +50 -50
- package/dist/managers/sceneTree/SDTFUtils.js.map +1 -1
- package/dist/managers/sceneTree/SceenTreeManagerUtils.d.ts +7 -7
- package/dist/managers/sceneTree/SceenTreeManagerUtils.d.ts.map +1 -1
- package/dist/managers/sceneTree/SceenTreeManagerUtils.js +175 -165
- package/dist/managers/sceneTree/SceenTreeManagerUtils.js.map +1 -1
- package/dist/managers/sceneTree/ThreeJsDataUtils.d.ts +6 -6
- package/dist/managers/sceneTree/ThreeJsDataUtils.d.ts.map +1 -1
- package/dist/managers/sceneTree/ThreeJsDataUtils.js +80 -70
- package/dist/managers/sceneTree/ThreeJsDataUtils.js.map +1 -1
- package/dist/materials/GemMaterial.d.ts +37 -37
- package/dist/materials/GemMaterial.js +262 -252
- package/dist/materials/GemMaterial.js.map +1 -1
- package/dist/materials/MeshUnlitMaterialParameters.d.ts +3 -3
- package/dist/materials/MeshUnlitMaterialParameters.js +2 -2
- package/dist/materials/MultiPointsMaterial.d.ts +93 -93
- package/dist/materials/MultiPointsMaterial.js +577 -567
- package/dist/materials/MultiPointsMaterial.js.map +1 -1
- package/dist/materials/SpecularGlossinessMaterial.d.ts +13 -13
- package/dist/materials/SpecularGlossinessMaterial.js +171 -161
- package/dist/materials/SpecularGlossinessMaterial.js.map +1 -1
- package/dist/objects/SDColor.d.ts +16 -16
- package/dist/objects/SDColor.js +52 -52
- package/dist/objects/SDColor.js.map +1 -1
- package/dist/objects/SDObject.d.ts +27 -27
- package/dist/objects/SDObject.js +112 -102
- package/dist/objects/SDObject.js.map +1 -1
- package/dist/shaders/PCSS.d.ts +2 -2
- package/dist/shaders/PCSS.js +5 -5
- package/dist/shaders/gem.d.ts +2 -2
- package/dist/shaders/gem.js +5 -5
- package/dist/shaders/multi_points.d.ts +2 -2
- package/dist/shaders/multi_points.js +5 -5
- package/dist/styling/viewport-css.d.ts +1 -1
- package/dist/styling/viewport-css.js +4 -4
- package/dist/three/CSS2DRenderer.d.ts +31 -31
- package/dist/three/CSS2DRenderer.d.ts.map +1 -1
- package/dist/three/CSS2DRenderer.js +152 -152
- package/dist/three/CSS2DRenderer.js.map +1 -1
- package/dist/three/geometries/TextGeometry.d.ts +21 -21
- package/dist/three/geometries/TextGeometry.js +45 -45
- package/dist/three/geometries/TextGeometry.js.map +1 -1
- package/dist/three/loaders/RGBELoader.d.ts +23 -23
- package/dist/three/loaders/RGBELoader.js +311 -311
- package/dist/three/loaders/RGBELoader.js.map +1 -1
- package/dist/types/IThreejsData.d.ts +6 -6
- package/dist/types/IThreejsData.js +2 -2
- package/dist/types/ThreejsData.d.ts +10 -10
- package/dist/types/ThreejsData.js +41 -41
- package/package.json +18 -18
- package/dist/managers/InstanceGroupManager.d.ts +0 -58
- package/dist/managers/InstanceGroupManager.d.ts.map +0 -1
- package/dist/managers/InstanceGroupManager.js +0 -372
- package/dist/managers/InstanceGroupManager.js.map +0 -1
|
@@ -1,491 +1,501 @@
|
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
this.
|
|
53
|
-
this.
|
|
54
|
-
this.
|
|
55
|
-
this._scene
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
dataChild
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
this.
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
this.
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
//
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
this.
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
if (this.
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
this.
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
this.
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
rootTreeNode.
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
this.
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.SceneTreeManager = void 0;
|
|
37
|
+
const THREE = __importStar(require("three"));
|
|
38
|
+
const viewer_rendering_engine_camera_engine_1 = require("@shapediver/viewer.rendering-engine.camera-engine");
|
|
39
|
+
const viewer_rendering_engine_light_engine_1 = require("@shapediver/viewer.rendering-engine.light-engine");
|
|
40
|
+
const viewer_shared_math_1 = require("@shapediver/viewer.shared.math");
|
|
41
|
+
const viewer_shared_node_tree_1 = require("@shapediver/viewer.shared.node-tree");
|
|
42
|
+
const viewer_shared_types_1 = require("@shapediver/viewer.shared.types");
|
|
43
|
+
const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
|
|
44
|
+
const gl_matrix_1 = require("gl-matrix");
|
|
45
|
+
const SDObject_1 = require("../objects/SDObject");
|
|
46
|
+
const ThreejsData_1 = require("../types/ThreejsData");
|
|
47
|
+
const SceenTreeManagerUtils_1 = require("./sceneTree/SceenTreeManagerUtils");
|
|
48
|
+
const SDTFUtils_1 = require("./sceneTree/SDTFUtils");
|
|
49
|
+
const ThreeJsDataUtils_1 = require("./sceneTree/ThreeJsDataUtils");
|
|
50
|
+
class SceneTreeManager {
|
|
51
|
+
constructor(_renderingEngine) {
|
|
52
|
+
this._renderingEngine = _renderingEngine;
|
|
53
|
+
this._eventEngine = viewer_shared_services_1.EventEngine.instance;
|
|
54
|
+
this._performanceEvaluator = viewer_shared_services_1.PerformanceEvaluator.instance;
|
|
55
|
+
this._scene = new THREE.Scene();
|
|
56
|
+
this._stateEngine = viewer_shared_services_1.StateEngine.instance;
|
|
57
|
+
this._tree = viewer_shared_node_tree_1.Tree.instance;
|
|
58
|
+
this._boundingBox = new viewer_shared_math_1.Box();
|
|
59
|
+
this._directionalLightData = [];
|
|
60
|
+
this._hiddenCamera = new THREE.PerspectiveCamera();
|
|
61
|
+
this._lastRendererType = viewer_shared_types_1.RENDERER_TYPE.STANDARD;
|
|
62
|
+
this._lastRootVersion = "";
|
|
63
|
+
this._newRendererType = false;
|
|
64
|
+
this._suspendSceneUpdates = false;
|
|
65
|
+
this._scene.background = new THREE.Color("#ffffff");
|
|
66
|
+
}
|
|
67
|
+
get boundingBox() {
|
|
68
|
+
return this._boundingBox;
|
|
69
|
+
}
|
|
70
|
+
get lastRendererType() {
|
|
71
|
+
return this._lastRendererType;
|
|
72
|
+
}
|
|
73
|
+
get lastRootVersion() {
|
|
74
|
+
return this._lastRootVersion;
|
|
75
|
+
}
|
|
76
|
+
get mainNode() {
|
|
77
|
+
return this._mainConvertedObject;
|
|
78
|
+
}
|
|
79
|
+
get scene() {
|
|
80
|
+
return this._scene;
|
|
81
|
+
}
|
|
82
|
+
get suspendSceneUpdates() {
|
|
83
|
+
return this._suspendSceneUpdates;
|
|
84
|
+
}
|
|
85
|
+
set suspendSceneUpdates(value) {
|
|
86
|
+
this._suspendSceneUpdates = value;
|
|
87
|
+
}
|
|
88
|
+
init() { }
|
|
89
|
+
/**
|
|
90
|
+
* Convert the data of the scene graph node into the format of the implementation.
|
|
91
|
+
*
|
|
92
|
+
* @param data the data element
|
|
93
|
+
* @param obj the corresponding type node
|
|
94
|
+
*/
|
|
95
|
+
updateData(treeNodeData, treeNode, convertedObject, filter = { transformationOnly: false }, isVisibleInHierarchy = true) {
|
|
96
|
+
var _a;
|
|
97
|
+
let dataChild;
|
|
98
|
+
if (this._renderingEngine.type === viewer_shared_types_1.RENDERER_TYPE.ATTRIBUTES) {
|
|
99
|
+
if (treeNodeData instanceof viewer_shared_node_tree_1.GeometryData) {
|
|
100
|
+
(0, SDTFUtils_1.injectAttributeData)(this._renderingEngine, this._currentSDTFOverview, treeNode, treeNodeData);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
const sdtfTransform = treeNode.getTransformation("sdtf");
|
|
105
|
+
if (sdtfTransform)
|
|
106
|
+
treeNode.removeTransformation(sdtfTransform);
|
|
107
|
+
if (treeNodeData instanceof viewer_shared_node_tree_1.GeometryData)
|
|
108
|
+
treeNodeData.attributeMaterial = null;
|
|
109
|
+
}
|
|
110
|
+
switch (true) {
|
|
111
|
+
case treeNodeData instanceof viewer_shared_node_tree_1.GeometryData:
|
|
112
|
+
{
|
|
113
|
+
// We search for the instance matrices data in the parent of our current node
|
|
114
|
+
// We are currently at the primitive level and the instance matrices are stored at the mesh level
|
|
115
|
+
const instanceTransformationData = (_a = treeNode.parent) === null || _a === void 0 ? void 0 : _a.data.find((d) => d instanceof viewer_shared_node_tree_1.InstanceData);
|
|
116
|
+
if (filter.transformationOnly === false) {
|
|
117
|
+
dataChild = this._renderingEngine.geometryLoader.load(treeNodeData, instanceTransformationData);
|
|
118
|
+
// Three.js Object3Ds can only have one parent. If the
|
|
119
|
+
// same GeometryData is referenced by multiple tree nodes,
|
|
120
|
+
// the cache returns the same mesh each time. Adding it to
|
|
121
|
+
// a second node silently removes it from the first. Clone
|
|
122
|
+
// only when this would happen (different existing parent).
|
|
123
|
+
if (dataChild.parent !== null &&
|
|
124
|
+
dataChild.parent !== convertedObject) {
|
|
125
|
+
dataChild = dataChild.clone();
|
|
126
|
+
}
|
|
127
|
+
dataChild.userData.SDtype = SDObject_1.SD_DATA_TYPE.GEOMETRY;
|
|
128
|
+
dataChild.userData.SDid = treeNodeData.id;
|
|
129
|
+
dataChild.userData.SDversion = treeNodeData.version;
|
|
130
|
+
convertedObject.add(dataChild);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
break;
|
|
134
|
+
case treeNodeData instanceof ThreejsData_1.ThreejsData:
|
|
135
|
+
{
|
|
136
|
+
dataChild = treeNodeData.obj;
|
|
137
|
+
treeNodeData.obj.userData.SDtype =
|
|
138
|
+
SDObject_1.SD_DATA_TYPE.THREEJS;
|
|
139
|
+
treeNodeData.obj.userData.SDid =
|
|
140
|
+
treeNodeData.id;
|
|
141
|
+
treeNodeData.obj.userData.SDversion =
|
|
142
|
+
treeNodeData.version;
|
|
143
|
+
convertedObject.add(dataChild);
|
|
144
|
+
// set the currently used environment map
|
|
145
|
+
(0, ThreeJsDataUtils_1.assignEnvironmentMapForThreeJsDataObject)(treeNodeData, this._renderingEngine.environmentMapLoader
|
|
146
|
+
.environmentMap, this._renderingEngine.environmentMapLoader.type, this._renderingEngine.environmentMapIntensity, this._renderingEngine.environmentMapRotation);
|
|
147
|
+
}
|
|
148
|
+
break;
|
|
149
|
+
case treeNodeData instanceof viewer_rendering_engine_light_engine_1.AbstractLight:
|
|
150
|
+
if (filter.transformationOnly === false) {
|
|
151
|
+
const threeLight = this._renderingEngine.lightLoader.load(treeNodeData, convertedObject);
|
|
152
|
+
if (threeLight) {
|
|
153
|
+
dataChild = threeLight;
|
|
154
|
+
dataChild.userData.SDtype = SDObject_1.SD_DATA_TYPE.LIGHT;
|
|
155
|
+
dataChild.userData.SDid = treeNodeData.id;
|
|
156
|
+
dataChild.userData.SDversion = treeNodeData.version;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (treeNodeData instanceof viewer_rendering_engine_light_engine_1.DirectionalLight &&
|
|
160
|
+
treeNodeData.useNodeData === false)
|
|
161
|
+
this._directionalLightData.push(treeNodeData);
|
|
162
|
+
break;
|
|
163
|
+
case treeNodeData instanceof viewer_rendering_engine_camera_engine_1.AbstractCamera:
|
|
164
|
+
if (filter.transformationOnly === false) {
|
|
165
|
+
const threeCamera = this._renderingEngine.cameraManager.load(treeNodeData, convertedObject);
|
|
166
|
+
if (threeCamera) {
|
|
167
|
+
dataChild = threeCamera;
|
|
168
|
+
dataChild.userData.SDtype = SDObject_1.SD_DATA_TYPE.CAMERA;
|
|
169
|
+
dataChild.userData.SDid = treeNodeData.id;
|
|
170
|
+
dataChild.userData.SDversion = treeNodeData.version;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
break;
|
|
174
|
+
case treeNodeData instanceof viewer_shared_node_tree_1.HTMLElementAnchorData:
|
|
175
|
+
if (filter.transformationOnly === false) {
|
|
176
|
+
this._renderingEngine.htmlElementAnchorLoader.load(treeNode, treeNodeData, isVisibleInHierarchy);
|
|
177
|
+
const existingAnchor = convertedObject.children.find((o) => !(o instanceof SDObject_1.SDObject) &&
|
|
178
|
+
o.userData.SDtype ===
|
|
179
|
+
SDObject_1.SD_DATA_TYPE.HTML_ELEMENT_ANCHOR &&
|
|
180
|
+
o.userData.SDid === treeNodeData.id &&
|
|
181
|
+
o.userData.SDversion === treeNodeData.version);
|
|
182
|
+
if (!existingAnchor) {
|
|
183
|
+
const dataChild = new THREE.Object3D();
|
|
184
|
+
dataChild.userData.SDtype =
|
|
185
|
+
SDObject_1.SD_DATA_TYPE.HTML_ELEMENT_ANCHOR;
|
|
186
|
+
dataChild.userData.SDid = treeNodeData.id;
|
|
187
|
+
dataChild.userData.SDversion = treeNodeData.version;
|
|
188
|
+
convertedObject.add(dataChild);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
break;
|
|
192
|
+
default:
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
if (dataChild)
|
|
196
|
+
(0, SceenTreeManagerUtils_1.assignBoundingBox)(treeNode, treeNodeData, this._renderingEngine.id, dataChild);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Update the current node via the scene graph node.
|
|
200
|
+
* Convert the data if needed.
|
|
201
|
+
*
|
|
202
|
+
* @param treeNode the scene graph node
|
|
203
|
+
* @param obj the current type object
|
|
204
|
+
*/
|
|
205
|
+
updateNode(treeNode = this._tree.root, obj, filter = { transformationOnly: false }, visibleInHierarchy = true) {
|
|
206
|
+
// Resolve the converted object if not provided
|
|
207
|
+
if (obj === undefined) {
|
|
208
|
+
obj = this.resolveConvertedObject(treeNode, filter, visibleInHierarchy);
|
|
209
|
+
if (!obj)
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
const convertedObject = obj;
|
|
213
|
+
// reset bounding boxes
|
|
214
|
+
this.resetBoundingBoxes(treeNode);
|
|
215
|
+
// cleanup obsolete data and children
|
|
216
|
+
if (filter.transformationOnly === false) {
|
|
217
|
+
this.cleanupObsoleteData(treeNode, convertedObject);
|
|
218
|
+
this.cleanupObsoleteChildren(treeNode, convertedObject);
|
|
219
|
+
}
|
|
220
|
+
const isVisible = this.isNodeVisible(treeNode);
|
|
221
|
+
const isVisibleInHierarchy = visibleInHierarchy && isVisible;
|
|
222
|
+
// convert all data items of the current node
|
|
223
|
+
// old versions will be replaced by new ones
|
|
224
|
+
// Create a lookup map for efficient access to converted children
|
|
225
|
+
const convertedChildrenMap = new Map();
|
|
226
|
+
for (const child of convertedObject.children) {
|
|
227
|
+
if (child instanceof SDObject_1.SDObject) {
|
|
228
|
+
convertedChildrenMap.set(child.SDid, child);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
for (let i = 0, len = treeNode.data.length; i < len; i++) {
|
|
232
|
+
const dataItem = treeNode.data[i];
|
|
233
|
+
const convertedObjectData = convertedChildrenMap.get(dataItem.id);
|
|
234
|
+
if (!convertedObjectData ||
|
|
235
|
+
convertedObjectData.SDversion !== dataItem.version ||
|
|
236
|
+
this._newRendererType) {
|
|
237
|
+
this.updateData(dataItem, treeNode, convertedObject, filter, isVisibleInHierarchy);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
(0, SceenTreeManagerUtils_1.assignBoundingBox)(treeNode, dataItem, this._renderingEngine.id, convertedObjectData);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Update or create child nodes
|
|
244
|
+
for (let i = 0, len = treeNode.children.length; i < len; i++) {
|
|
245
|
+
const treeNodeChild = treeNode.children[i];
|
|
246
|
+
const childConvertedObject = convertedChildrenMap.get(treeNodeChild.id);
|
|
247
|
+
this.processChildTreeNode(treeNodeChild, convertedObject, childConvertedObject, filter, isVisibleInHierarchy);
|
|
248
|
+
this.unionChildBoundingBoxes(treeNode, treeNodeChild, isVisible);
|
|
249
|
+
}
|
|
250
|
+
convertedObject.visible = isVisible;
|
|
251
|
+
convertedObject.applyTransformation(treeNode.nodeMatrix);
|
|
252
|
+
}
|
|
253
|
+
updateSceneTree(rootTreeNode) {
|
|
254
|
+
var _a, _b;
|
|
255
|
+
// check if we currently have the same root version
|
|
256
|
+
if (this._tree.root.version === this._lastRootVersion &&
|
|
257
|
+
this._renderingEngine.type === this._lastRendererType)
|
|
258
|
+
return;
|
|
259
|
+
// check if scene tree updates are currently suspended
|
|
260
|
+
if (this._suspendSceneUpdates)
|
|
261
|
+
return;
|
|
262
|
+
this._lastRootVersion = this._tree.root.version;
|
|
263
|
+
this._newRendererType =
|
|
264
|
+
this._renderingEngine.type !== this._lastRendererType;
|
|
265
|
+
this._lastRendererType = this._renderingEngine.type;
|
|
266
|
+
if (this._renderingEngine.closed)
|
|
267
|
+
return;
|
|
268
|
+
this._performanceEvaluator.startSection("sceneTreeUpdate." + this._lastRootVersion);
|
|
269
|
+
const oldBB = this._boundingBox.clone();
|
|
270
|
+
this._boundingBox = new viewer_shared_math_1.Box();
|
|
271
|
+
this._renderingEngine.lightLoader.shadowMapCount = 0;
|
|
272
|
+
if (!this._mainConvertedObject) {
|
|
273
|
+
this._mainConvertedObject = new SDObject_1.SDObject(rootTreeNode.id, rootTreeNode.version);
|
|
274
|
+
const oldObj = rootTreeNode.convertedObject[this._renderingEngine.id];
|
|
275
|
+
rootTreeNode.convertedObject[this._renderingEngine.id] =
|
|
276
|
+
this._mainConvertedObject;
|
|
277
|
+
if (rootTreeNode.updateCallbackConvertedObject)
|
|
278
|
+
rootTreeNode.updateCallbackConvertedObject(this._mainConvertedObject, oldObj, this._renderingEngine.id);
|
|
279
|
+
this._scene.add(this._mainConvertedObject);
|
|
280
|
+
}
|
|
281
|
+
this._currentSDTFOverview = (0, SDTFUtils_1.createSDTFOverview)(rootTreeNode);
|
|
282
|
+
this.updateNode(rootTreeNode, this._mainConvertedObject);
|
|
283
|
+
this._boundingBox =
|
|
284
|
+
rootTreeNode.boundingBoxViewport[this._renderingEngine.id].clone();
|
|
285
|
+
// directional lights need to be with the bounding box
|
|
286
|
+
this._directionalLightData.forEach((dl) => {
|
|
287
|
+
var _a;
|
|
288
|
+
// check if the data has stored converted object
|
|
289
|
+
const convertedObject = ((_a = ((dl.convertedObject[this._renderingEngine.id]))) === null || _a === void 0 ? void 0 : _a.parent);
|
|
290
|
+
if (!convertedObject)
|
|
291
|
+
return;
|
|
292
|
+
this._renderingEngine.lightLoader.adjustToBoundingBox(dl, convertedObject, this._boundingBox);
|
|
293
|
+
});
|
|
294
|
+
this._directionalLightData = [];
|
|
295
|
+
const bbChanged = this._boundingBox.min[0] !== oldBB.min[0] ||
|
|
296
|
+
this._boundingBox.min[1] !== oldBB.min[1] ||
|
|
297
|
+
this._boundingBox.min[2] !== oldBB.min[2] ||
|
|
298
|
+
this._boundingBox.max[0] !== oldBB.max[0] ||
|
|
299
|
+
this._boundingBox.max[1] !== oldBB.max[1] ||
|
|
300
|
+
this._boundingBox.max[2] !== oldBB.max[2];
|
|
301
|
+
if (bbChanged) {
|
|
302
|
+
if (!((_a = this._stateEngine.viewportEngines[this._renderingEngine.id]) === null || _a === void 0 ? void 0 : _a.boundingBoxCreated.resolved) &&
|
|
303
|
+
!this._boundingBox.isEmpty())
|
|
304
|
+
(_b = this._stateEngine.viewportEngines[this._renderingEngine.id]) === null || _b === void 0 ? void 0 : _b.boundingBoxCreated.resolve(true);
|
|
305
|
+
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.SCENE.SCENE_BOUNDING_BOX_CHANGE, {
|
|
306
|
+
viewportId: this._renderingEngine.id,
|
|
307
|
+
boundingBox: {
|
|
308
|
+
min: gl_matrix_1.vec3.clone(this._boundingBox.min),
|
|
309
|
+
max: gl_matrix_1.vec3.clone(this._boundingBox.max),
|
|
310
|
+
},
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
if (this._boundingBox.isEmpty()) {
|
|
314
|
+
// check if all outputs that should be loaded at the start of a session are loaded
|
|
315
|
+
// if the bounding box is empty then, emit the event
|
|
316
|
+
if (Object.values(this._stateEngine.sessionEngines).every((s) => s && s.initialOutputsLoaded.resolved === true)) {
|
|
317
|
+
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.SCENE.SCENE_BOUNDING_BOX_EMPTY, {
|
|
318
|
+
viewportId: this._renderingEngine.id,
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
this._renderingEngine.renderingManager.evaluateTextureUnitCount(this._renderingEngine.lightLoader.shadowMapCount +
|
|
323
|
+
this._renderingEngine.materialLoader.maxMapCount);
|
|
324
|
+
/**
|
|
325
|
+
*
|
|
326
|
+
* Three.js texture upload and compiling
|
|
327
|
+
* This step is needed as three.js would compile the shaders and initialize the texture on the first render call instead.
|
|
328
|
+
*
|
|
329
|
+
*/
|
|
330
|
+
// we initialize all texture and then clear the cache
|
|
331
|
+
const threeJsTextureCache = this._renderingEngine.materialLoader.threeJsTextureCache;
|
|
332
|
+
for (const key in threeJsTextureCache) {
|
|
333
|
+
if (threeJsTextureCache[key].usage === 0) {
|
|
334
|
+
threeJsTextureCache[key].texture.dispose();
|
|
335
|
+
delete threeJsTextureCache[key];
|
|
336
|
+
}
|
|
337
|
+
else if (threeJsTextureCache[key].initialized === false) {
|
|
338
|
+
this._renderingEngine.renderer.initTexture(threeJsTextureCache[key].texture);
|
|
339
|
+
threeJsTextureCache[key].initialized = true;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
// we compile the shaders
|
|
343
|
+
this._renderingEngine.renderer.compile(this._renderingEngine.scene, this._hiddenCamera);
|
|
344
|
+
this._performanceEvaluator.endSection("sceneTreeUpdate." + this._lastRootVersion);
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Remove obsolete child nodes from the converted object
|
|
348
|
+
*/
|
|
349
|
+
cleanupObsoleteChildren(treeNode, convertedObject) {
|
|
350
|
+
// remove all child nodes in the transformed object that do not exist anymore
|
|
351
|
+
// the filter goes also through the data items as they were already added
|
|
352
|
+
const nodeIds = new Set(treeNode.children
|
|
353
|
+
.filter((d) => !d.excludeViewports.includes(this._renderingEngine.id))
|
|
354
|
+
.map((d) => d.id));
|
|
355
|
+
const childrenToRemove = convertedObject.children.filter((oc) => {
|
|
356
|
+
if (oc instanceof SDObject_1.SDObject && oc.SDtype === SDObject_1.SD_DATA_TYPE.OBJECT) {
|
|
357
|
+
return !nodeIds.has(oc.SDid);
|
|
358
|
+
}
|
|
359
|
+
else {
|
|
360
|
+
return false;
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
childrenToRemove.forEach((cTR) => {
|
|
364
|
+
cTR.traverse((o) => {
|
|
365
|
+
if (o instanceof SDObject_1.SDObject && o.SDtype !== SDObject_1.SD_DATA_TYPE.OBJECT) {
|
|
366
|
+
(0, SceenTreeManagerUtils_1.removeData)(this._renderingEngine, o);
|
|
367
|
+
}
|
|
368
|
+
else if (!(o instanceof SDObject_1.SDObject) &&
|
|
369
|
+
o.userData.SDtype !== undefined) {
|
|
370
|
+
(0, SceenTreeManagerUtils_1.removeData)(this._renderingEngine, o);
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
convertedObject.remove(cTR);
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Remove obsolete data items from the converted object
|
|
378
|
+
*/
|
|
379
|
+
cleanupObsoleteData(treeNode, convertedObject) {
|
|
380
|
+
// remove all data items that do not exist anymore
|
|
381
|
+
const dataMap = new Map(treeNode.data.map((d) => [d.id, d.version]));
|
|
382
|
+
const dataToRemove = convertedObject.children.filter((oc) => {
|
|
383
|
+
if (!(oc instanceof SDObject_1.SDObject)) {
|
|
384
|
+
const version = dataMap.get(oc.userData.SDid);
|
|
385
|
+
if (version !== undefined) {
|
|
386
|
+
if (version !== oc.userData.SDversion) {
|
|
387
|
+
// version is different
|
|
388
|
+
return true;
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
return false;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
// id not included anymore
|
|
396
|
+
return true;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
return false;
|
|
401
|
+
}
|
|
402
|
+
});
|
|
403
|
+
dataToRemove.forEach((dTR) => {
|
|
404
|
+
(0, SceenTreeManagerUtils_1.removeData)(this._renderingEngine, dTR);
|
|
405
|
+
convertedObject.remove(dTR);
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Check if a node is visible in the current viewport
|
|
410
|
+
*/
|
|
411
|
+
isNodeVisible(treeNode) {
|
|
412
|
+
return (treeNode.visible &&
|
|
413
|
+
!treeNode.excludeViewports.includes(this._renderingEngine.id) &&
|
|
414
|
+
!(treeNode.restrictViewports.length > 0 &&
|
|
415
|
+
!treeNode.restrictViewports.includes(this._renderingEngine.id)));
|
|
416
|
+
}
|
|
417
|
+
/**
|
|
418
|
+
* Process a child node by creating it if needed, updating it, and syncing bounding boxes
|
|
419
|
+
*/
|
|
420
|
+
processChildTreeNode(treeNodeChild, convertedObject, childConvertedObject, filter, isVisibleInHierarchy) {
|
|
421
|
+
if (!childConvertedObject) {
|
|
422
|
+
const newChild = new SDObject_1.SDObject(treeNodeChild.id, treeNodeChild.version);
|
|
423
|
+
const oldChild = treeNodeChild.convertedObject[this._renderingEngine.id];
|
|
424
|
+
treeNodeChild.convertedObject[this._renderingEngine.id] = newChild;
|
|
425
|
+
if (treeNodeChild.updateCallbackConvertedObject)
|
|
426
|
+
treeNodeChild.updateCallbackConvertedObject(newChild, oldChild, this._renderingEngine.id);
|
|
427
|
+
convertedObject.add(newChild);
|
|
428
|
+
this.updateNode(treeNodeChild, newChild, filter, isVisibleInHierarchy);
|
|
429
|
+
}
|
|
430
|
+
else if (childConvertedObject.SDversion !== treeNodeChild.version ||
|
|
431
|
+
this._newRendererType) {
|
|
432
|
+
// if the version is different, update the child
|
|
433
|
+
this.updateNode(treeNodeChild, childConvertedObject, filter, isVisibleInHierarchy);
|
|
434
|
+
childConvertedObject.SDversion = treeNodeChild.version;
|
|
435
|
+
}
|
|
436
|
+
else {
|
|
437
|
+
this.updateNode(treeNodeChild, childConvertedObject, filter, isVisibleInHierarchy);
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Reset and initialize bounding boxes for a node
|
|
442
|
+
*/
|
|
443
|
+
resetBoundingBoxes(treeNode) {
|
|
444
|
+
// reset the general bounding box of the current node
|
|
445
|
+
// it will be recomputed in the following steps
|
|
446
|
+
treeNode.boundingBox.reset();
|
|
447
|
+
// create the specific BB if it doesn't exist yet
|
|
448
|
+
if (!treeNode.boundingBoxViewport[this._renderingEngine.id])
|
|
449
|
+
treeNode.boundingBoxViewport[this._renderingEngine.id] = new viewer_shared_math_1.Box();
|
|
450
|
+
// reset the specific bounding box of the current node
|
|
451
|
+
// it will be recomputed in the following steps
|
|
452
|
+
treeNode.boundingBoxViewport[this._renderingEngine.id].reset();
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Resolves the converted object for a node, handling cases where it doesn't exist
|
|
456
|
+
*/
|
|
457
|
+
resolveConvertedObject(treeNode, filter, visibleInHierarchy) {
|
|
458
|
+
// check if there is a converted object
|
|
459
|
+
if (treeNode.convertedObject[this._renderingEngine.id]) {
|
|
460
|
+
return treeNode.convertedObject[this._renderingEngine.id];
|
|
461
|
+
}
|
|
462
|
+
else {
|
|
463
|
+
// the node has not been converted yet
|
|
464
|
+
// go up the hierarchy until a converted object is found
|
|
465
|
+
let parent = treeNode.parent;
|
|
466
|
+
while (parent) {
|
|
467
|
+
if (parent.convertedObject[this._renderingEngine.id]) {
|
|
468
|
+
this.updateNode(parent, parent.convertedObject[this._renderingEngine.id], filter, visibleInHierarchy);
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
else {
|
|
472
|
+
parent = parent.parent;
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
// no converted object found in the hierarchy
|
|
476
|
+
// update the whole scene tree
|
|
477
|
+
this.updateSceneTree(this._tree.root);
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Union child bounding boxes with parent bounding boxes
|
|
483
|
+
*/
|
|
484
|
+
unionChildBoundingBoxes(treeNode, treeNodeChild, isVisible) {
|
|
485
|
+
// adjust the general BB
|
|
486
|
+
if (!treeNodeChild.boundingBox.isEmpty())
|
|
487
|
+
treeNode.boundingBox.union(treeNodeChild.boundingBox);
|
|
488
|
+
// adjust the specific BB
|
|
489
|
+
if (treeNodeChild.boundingBoxViewport[this._renderingEngine.id] &&
|
|
490
|
+
!treeNodeChild.boundingBoxViewport[this._renderingEngine.id].isEmpty()) {
|
|
491
|
+
// only do this if the node is
|
|
492
|
+
// 1. visible
|
|
493
|
+
// 2. no included in the "excludeViewports"
|
|
494
|
+
// 3. if there are "restrictViewports", it needs to be in them
|
|
495
|
+
if (isVisible)
|
|
496
|
+
treeNode.boundingBoxViewport[this._renderingEngine.id].union(treeNodeChild.boundingBoxViewport[this._renderingEngine.id]);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
exports.SceneTreeManager = SceneTreeManager;
|
|
491
501
|
//# sourceMappingURL=SceneTreeManager.js.map
|