@combeenation/3d-viewer 17.1.0 → 18.0.0-beta2

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 (58) hide show
  1. package/dist/lib-cjs/buildinfo.json +1 -1
  2. package/dist/lib-cjs/commonjs.tsconfig.tsbuildinfo +1 -1
  3. package/dist/lib-cjs/index.d.ts +8 -0
  4. package/dist/lib-cjs/index.js +8 -0
  5. package/dist/lib-cjs/index.js.map +1 -1
  6. package/dist/lib-cjs/internal/asset-helper.d.ts +32 -0
  7. package/dist/lib-cjs/internal/asset-helper.js +105 -0
  8. package/dist/lib-cjs/internal/asset-helper.js.map +1 -0
  9. package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.d.ts +18 -0
  10. package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.js +22 -3
  11. package/dist/lib-cjs/internal/cbn-custom-babylon-loader-plugin.js.map +1 -1
  12. package/dist/lib-cjs/internal/cloning-helper.js +1 -1
  13. package/dist/lib-cjs/internal/cloning-helper.js.map +1 -1
  14. package/dist/lib-cjs/internal/texture-parameter-helper.js +26 -7
  15. package/dist/lib-cjs/internal/texture-parameter-helper.js.map +1 -1
  16. package/dist/lib-cjs/manager/camera-manager.d.ts +23 -2
  17. package/dist/lib-cjs/manager/camera-manager.js +91 -24
  18. package/dist/lib-cjs/manager/camera-manager.js.map +1 -1
  19. package/dist/lib-cjs/manager/debug-manager.d.ts +1 -1
  20. package/dist/lib-cjs/manager/debug-manager.js +3 -3
  21. package/dist/lib-cjs/manager/debug-manager.js.map +1 -1
  22. package/dist/lib-cjs/manager/dimension-line-manager.d.ts +126 -0
  23. package/dist/lib-cjs/manager/dimension-line-manager.js +138 -0
  24. package/dist/lib-cjs/manager/dimension-line-manager.js.map +1 -0
  25. package/dist/lib-cjs/manager/html-anchor-manager.d.ts +93 -0
  26. package/dist/lib-cjs/manager/html-anchor-manager.js +228 -0
  27. package/dist/lib-cjs/manager/html-anchor-manager.js.map +1 -0
  28. package/dist/lib-cjs/manager/model-manager.d.ts +11 -34
  29. package/dist/lib-cjs/manager/model-manager.js +47 -107
  30. package/dist/lib-cjs/manager/model-manager.js.map +1 -1
  31. package/dist/lib-cjs/manager/parameter-manager.d.ts +17 -12
  32. package/dist/lib-cjs/manager/parameter-manager.js +78 -69
  33. package/dist/lib-cjs/manager/parameter-manager.js.map +1 -1
  34. package/dist/lib-cjs/manager/scene-manager.d.ts +111 -5
  35. package/dist/lib-cjs/manager/scene-manager.js +276 -10
  36. package/dist/lib-cjs/manager/scene-manager.js.map +1 -1
  37. package/dist/lib-cjs/viewer-error.d.ts +1 -0
  38. package/dist/lib-cjs/viewer-error.js +1 -0
  39. package/dist/lib-cjs/viewer-error.js.map +1 -1
  40. package/dist/lib-cjs/viewer.d.ts +9 -14
  41. package/dist/lib-cjs/viewer.js +16 -38
  42. package/dist/lib-cjs/viewer.js.map +1 -1
  43. package/package.json +22 -12
  44. package/src/index.ts +8 -0
  45. package/src/internal/asset-helper.ts +115 -0
  46. package/src/internal/cbn-custom-babylon-loader-plugin.ts +30 -3
  47. package/src/internal/cloning-helper.ts +1 -1
  48. package/src/internal/texture-parameter-helper.ts +25 -8
  49. package/src/manager/camera-manager.ts +153 -39
  50. package/src/manager/debug-manager.ts +3 -3
  51. package/src/manager/dimension-line-manager.ts +255 -0
  52. package/src/manager/html-anchor-manager.ts +332 -0
  53. package/src/manager/model-manager.ts +55 -138
  54. package/src/manager/parameter-manager.ts +94 -75
  55. package/src/manager/scene-manager.ts +375 -10
  56. package/src/viewer-error.ts +1 -0
  57. package/src/viewer.ts +30 -56
  58. package/src/dev.ts +0 -47
@@ -1,16 +1,25 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.SceneManager = void 0;
4
13
  const index_1 = require("../index");
14
+ const asset_helper_1 = require("../internal/asset-helper");
15
+ const geometry_helper_1 = require("../internal/geometry-helper");
5
16
  const lodash_es_1 = require("lodash-es");
6
17
  /**
7
18
  * Manager for tasks related to the Babylon.js scene.\
8
- * This contains creating or loading (WIP: Scene Asset) scenes with certain settings for lighting, cameras and
9
- * appearance in genereal.
10
- *
11
- * @internal
19
+ * This contains creating or loading scenes with certain settings for lighting, cameras and appearance in genereal.
12
20
  */
13
21
  class SceneManager {
22
+ /** @internal */
14
23
  constructor(viewer, defaultSceneSettings) {
15
24
  this.viewer = viewer;
16
25
  // default scene settings
@@ -33,33 +42,290 @@ class SceneManager {
33
42
  intensity: 1,
34
43
  },
35
44
  };
45
+ this._sceneAssets = {};
46
+ this._defaultSceneAsset = {
47
+ name: SceneManager._DEFAULT_SCENE_ASSET_NAME,
48
+ url: '',
49
+ state: 'loaded',
50
+ assetContainer: new index_1.AssetContainer(),
51
+ settings: {},
52
+ };
53
+ this._activeSceneAssetName = '';
54
+ this._loadSceneAssetPromises = {};
55
+ this._setSceneAssetCallId = 0;
36
56
  (0, lodash_es_1.merge)(this._defaultSceneSettings, defaultSceneSettings);
37
57
  }
58
+ /**
59
+ * Register scene assets for 3d viewer, this is required for each scene asset before it can be loaded/shown.\
60
+ * The "viewer control" inside the Combeenation framework calls this function automatically with all assigned
61
+ * scene assets.
62
+ */
63
+ registerSceneAssets(sceneAssets) {
64
+ for (const { name, url } of sceneAssets) {
65
+ const existingSceneAsset = this._sceneAssets[name];
66
+ if (existingSceneAsset) {
67
+ console.warn(`Scene asset "${name}" is already registered`);
68
+ return;
69
+ }
70
+ const sceneAsset = {
71
+ name,
72
+ url,
73
+ state: 'notLoaded',
74
+ assetContainer: new index_1.AssetContainer(),
75
+ settings: {},
76
+ };
77
+ this._sceneAssets[name] = sceneAsset;
78
+ }
79
+ }
80
+ /**
81
+ * Set desired scene asset as active and loads the content of the associated asset container (e.g. ground mesh).\
82
+ * This also deactivates the currently active scene asset, as only one scene asset can be active at a time.
83
+ */
84
+ setSceneAsset(name, skipPreparation) {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ const sceneAsset = this._getSceneAsset(name);
87
+ if (!sceneAsset) {
88
+ throw new index_1.ViewerError({
89
+ id: index_1.ViewerErrorIds.SceneAssetNotRegistered,
90
+ message: `Can't set scene asset "${name}" as scene asset is not registered`,
91
+ });
92
+ }
93
+ this._setSceneAssetCallId++;
94
+ const curSetSceneAssetCallId = this._setSceneAssetCallId;
95
+ if (sceneAsset.state === 'notLoaded') {
96
+ yield this._loadSceneAsset(sceneAsset);
97
+ }
98
+ else if (sceneAsset.state === 'loading') {
99
+ yield this._loadSceneAssetPromises[name];
100
+ }
101
+ else if (sceneAsset.state === 'inScene') {
102
+ console.warn(`Scene asset ${name} is already active`);
103
+ return;
104
+ }
105
+ // a new `setSceneAsset` call has been fired
106
+ if (curSetSceneAssetCallId !== this._setSceneAssetCallId) {
107
+ return;
108
+ }
109
+ if (!skipPreparation) {
110
+ yield (0, asset_helper_1.prepareAssetForScene)(sceneAsset, this.viewer);
111
+ }
112
+ sceneAsset.assetContainer.addToScene();
113
+ const firstCam = sceneAsset.assetContainer.cameras[0];
114
+ if (firstCam) {
115
+ this.viewer.scene.activeCamera = firstCam;
116
+ this.viewer.scene.activeCamera.attachControl(undefined, true);
117
+ }
118
+ if (sceneAsset.assetContainer.environmentTexture) {
119
+ this.viewer.scene.environmentTexture = sceneAsset.assetContainer.environmentTexture;
120
+ }
121
+ if (sceneAsset.settings.clearColor) {
122
+ this.viewer.scene.clearColor = sceneAsset.settings.clearColor;
123
+ }
124
+ if (sceneAsset.settings.environmentIntensity !== undefined) {
125
+ this.viewer.scene.environmentIntensity = sceneAsset.settings.environmentIntensity;
126
+ }
127
+ sceneAsset.state = 'inScene';
128
+ // now hide old scene asset
129
+ // it's important that this is done after setting the new one to active, as there might be a render cycle with no
130
+ // cameras instead
131
+ const activeSceneAsset = this._getSceneAsset(this._activeSceneAssetName);
132
+ if (activeSceneAsset) {
133
+ this._hideSceneAsset(activeSceneAsset);
134
+ }
135
+ // finally set new scene asset as active
136
+ this._activeSceneAssetName = name;
137
+ });
138
+ }
139
+ /**
140
+ * Activate default scene asset
141
+ */
142
+ setDefaultSceneAsset() {
143
+ // NOTE: this function is not async because:
144
+ // - `setDefaultSceneAsset` is part of the viewers "bootstrapping" process which is synchronous
145
+ // - default scene asset only adjusts some setting but doesn't load anything
146
+ this.setSceneAsset(SceneManager._DEFAULT_SCENE_ASSET_NAME, true);
147
+ }
148
+ /**
149
+ * Loads and returns the asset container of a certain scene asset.\
150
+ * This can be used to access the scene asset content without having to add it to the scene.
151
+ */
152
+ getAssetContainerOfSceneAsset(name) {
153
+ return __awaiter(this, void 0, void 0, function* () {
154
+ const sceneAsset = this._getSceneAsset(name);
155
+ if (!sceneAsset) {
156
+ throw new index_1.ViewerError({
157
+ id: index_1.ViewerErrorIds.SceneAssetNotRegistered,
158
+ message: `Can't get asset container of scene asset "${name}" as scene asset is not registered`,
159
+ });
160
+ }
161
+ if (sceneAsset.state === 'notLoaded') {
162
+ yield this._loadSceneAsset(sceneAsset);
163
+ }
164
+ else if (sceneAsset.state === 'loading') {
165
+ yield this._loadSceneAssetPromises[sceneAsset.name];
166
+ }
167
+ if (sceneAsset.state !== 'inScene') {
168
+ yield (0, asset_helper_1.prepareAssetForScene)(sceneAsset, this.viewer);
169
+ }
170
+ return sceneAsset.assetContainer;
171
+ });
172
+ }
173
+ /**
174
+ * Calculates size of the current scene.\
175
+ * Only takes meshes into considerations that:
176
+ * - are visible
177
+ * - are not excluded by "excludeGeometry" parameter
178
+ * - do not have a material of type "BackgroundMaterial"
179
+ * - do not have an infinite distance (like sky boxes)
180
+ */
181
+ calculateBoundingInfo(excludeGeometry) {
182
+ // CB-6062: workaround for BoundingBox not respecting render loop
183
+ this.viewer.scene.render();
184
+ const { max, min } = this.viewer.scene.meshes
185
+ .filter(mesh => {
186
+ const isEnabled = mesh.isEnabled();
187
+ // ignore meshes with invalid bounding infos
188
+ const hasValidBBoxInfo = mesh.getBoundingInfo().boundingSphere.radius > 0;
189
+ // ignore meshes with infinite distance, typically these are sky boxes
190
+ const hasInfiniteDistance = mesh.infiniteDistance;
191
+ // ignore meshes with "BackgroundMaterial" - usually a ground or skybox
192
+ const hasBackgroundMaterial = mesh.material instanceof index_1.BackgroundMaterial;
193
+ // ignore dummy meshes for html anchor occlusion check
194
+ const isHtmlAnchorMesh = this.viewer.htmlAnchorManager.isHtmlAnchorMesh(mesh);
195
+ // ignore excluded meshes
196
+ const isExcluded = excludeGeometry ? (0, geometry_helper_1.isNodeExcluded)(mesh, excludeGeometry) : false;
197
+ return (isEnabled &&
198
+ hasValidBBoxInfo &&
199
+ !hasInfiniteDistance &&
200
+ !hasBackgroundMaterial &&
201
+ !isHtmlAnchorMesh &&
202
+ !isExcluded);
203
+ })
204
+ .reduce((accBBoxMinMax, curMesh, idx) => {
205
+ curMesh.refreshBoundingInfo(true, true);
206
+ const bBox = curMesh.getBoundingInfo().boundingBox;
207
+ // use the first entry in the array as default value and get the resulting maximum/minimum values
208
+ const max = idx === 0 ? bBox.maximumWorld : index_1.Vector3.Maximize(accBBoxMinMax.max, bBox.maximumWorld);
209
+ const min = idx === 0 ? bBox.minimumWorld : index_1.Vector3.Minimize(accBBoxMinMax.min, bBox.minimumWorld);
210
+ return { max, min };
211
+ }, { max: new index_1.Vector3(), min: new index_1.Vector3() });
212
+ const boundingInfo = new index_1.BoundingInfo(min, max);
213
+ return boundingInfo;
214
+ }
215
+ /**
216
+ * Adjusts position and scaling of a dedicated "ground" meshes according to the bounding sphere of the current scene
217
+ * content.\
218
+ * This function is designed to adjust the ground that is created via `scene.createDefaultEnvironment`, but any other
219
+ * plane mesh can be used as well.
220
+ */
221
+ updateGround(settings) {
222
+ var _a, _b;
223
+ const bboxInfo = this.calculateBoundingInfo(settings === null || settings === void 0 ? void 0 : settings.excludeGeometry);
224
+ const groundMesh = (_a = settings === null || settings === void 0 ? void 0 : settings.groundMesh) !== null && _a !== void 0 ? _a : this.viewer.scene.getMeshByName(SceneManager._DEFAULT_GROUND_PLANE_NAME);
225
+ if (!groundMesh) {
226
+ console.warn("Can't update ground, as no ground mesh is available");
227
+ return;
228
+ }
229
+ // 2: conversion from radius to diameter
230
+ const factor = bboxInfo.boundingSphere.radius * 2 * ((_b = settings === null || settings === void 0 ? void 0 : settings.factor) !== null && _b !== void 0 ? _b : SceneManager._DEFAULT_GROUND_SIZING_FACTOR);
231
+ const position = bboxInfo.boundingSphere.centerWorld;
232
+ groundMesh.scaling = new index_1.Vector3(factor, factor, 1);
233
+ groundMesh.position = new index_1.Vector3(position.x, 0, position.z);
234
+ }
235
+ /**
236
+ * Assigns available meshes in scene as shadow receiver and shadow casters of dedicated shadow generators, as defined
237
+ * in settings
238
+ */
239
+ updateShadows(settings) {
240
+ var _a;
241
+ const shadowGenerators = (_a = settings === null || settings === void 0 ? void 0 : settings.shadowGenerators) !== null && _a !== void 0 ? _a : this.viewer.scene.lights.map(light => light.getShadowGenerator()).filter(Boolean);
242
+ const shadowCasterMeshes = [];
243
+ this.viewer.scene.meshes.forEach(mesh => {
244
+ const isShadowReceiver = (settings === null || settings === void 0 ? void 0 : settings.excludeReceiver) ? !(0, geometry_helper_1.isNodeExcluded)(mesh, settings.excludeReceiver) : true;
245
+ if (isShadowReceiver) {
246
+ mesh.receiveShadows = true;
247
+ }
248
+ // excluding background meshes like ground or walls from shadow casters is benefitial to reduce the size of the
249
+ // poisson filters auto shadow plane calculation, which will result in better shadow resolution
250
+ const hasBackgroundMaterial = mesh.material instanceof index_1.BackgroundMaterial;
251
+ const isShadowCaster = (settings === null || settings === void 0 ? void 0 : settings.excludeCaster) ? !(0, geometry_helper_1.isNodeExcluded)(mesh, settings.excludeCaster) : true;
252
+ if (isShadowCaster && !hasBackgroundMaterial) {
253
+ shadowCasterMeshes.push(mesh);
254
+ }
255
+ });
256
+ shadowGenerators.forEach(shadowGen => {
257
+ const shadowMap = shadowGen.getShadowMap();
258
+ if (!shadowMap) {
259
+ return;
260
+ }
261
+ shadowMap.renderList = [...shadowCasterMeshes];
262
+ shadowGen.recreateShadowMap();
263
+ });
264
+ }
38
265
  /**
39
266
  * Creates a camera and minimum lighting, so that the scene is set up good enough to show content.\
40
267
  * Settings can be overwritten in the constructor.
268
+ *
269
+ * @internal
41
270
  */
42
271
  applyDefaultSettingsToScene() {
43
272
  const cameraSettings = this._defaultSceneSettings.camera;
44
273
  const envSettings = this._defaultSceneSettings.environment;
45
- this.viewer.scene.clearColor = this._defaultSceneSettings.backgroundColor;
274
+ // NOTE: default scene asset doesn't load anything, in this way the viewers "bootstrapping" process can remain
275
+ // synchronous
276
+ this._defaultSceneAsset = {
277
+ name: SceneManager._DEFAULT_SCENE_ASSET_NAME,
278
+ url: '',
279
+ state: 'loaded',
280
+ assetContainer: new index_1.AssetContainer(),
281
+ settings: {},
282
+ };
283
+ this._defaultSceneAsset.settings.clearColor = this._defaultSceneSettings.backgroundColor;
46
284
  // camera
47
285
  if (cameraSettings.create) {
48
- const camera = new index_1.ArcRotateCamera(`${SceneManager._DEFAULT_SCENE_NAME}.camera`, cameraSettings.initialPosition.alpha, cameraSettings.initialPosition.beta, cameraSettings.initialPosition.radius, cameraSettings.initialPosition.target, this.viewer.scene);
49
- camera.attachControl(this.viewer.engine._workingCanvas, true);
286
+ const camera = new index_1.ArcRotateCamera(`${SceneManager._DEFAULT_SCENE_ASSET_NAME}_camera`, cameraSettings.initialPosition.alpha, cameraSettings.initialPosition.beta, cameraSettings.initialPosition.radius, cameraSettings.initialPosition.target, this.viewer.scene);
50
287
  camera.minZ = cameraSettings.settings.minZ;
51
288
  camera.lowerRadiusLimit = cameraSettings.settings.lowerRadiusLimit;
52
289
  camera.wheelPrecision = cameraSettings.settings.wheelPrecision;
53
290
  camera.panningSensibility = cameraSettings.settings.panningSensibility;
291
+ camera.attachControl(undefined, true);
292
+ this._defaultSceneAsset.assetContainer.cameras.push(camera);
293
+ this.viewer.scene.removeCamera(camera);
54
294
  }
55
295
  // environment
56
296
  if (envSettings.create) {
57
297
  const envTexture = index_1.CubeTexture.CreateFromPrefilteredData(envSettings.url, this.viewer.scene);
58
- this.viewer.scene.environmentTexture = envTexture;
59
- this.viewer.scene.environmentIntensity = envSettings.intensity;
298
+ this._defaultSceneAsset.assetContainer.environmentTexture = envTexture;
299
+ this._defaultSceneAsset.settings.environmentIntensity = envSettings.intensity;
60
300
  }
301
+ this.setDefaultSceneAsset();
302
+ }
303
+ _getSceneAsset(name) {
304
+ if (name === SceneManager._DEFAULT_SCENE_ASSET_NAME) {
305
+ return this._defaultSceneAsset;
306
+ }
307
+ const sceneAsset = this._sceneAssets[name];
308
+ return sceneAsset;
309
+ }
310
+ _loadSceneAsset(sceneAsset) {
311
+ return __awaiter(this, void 0, void 0, function* () {
312
+ const loadSceneAssetPromise = () => __awaiter(this, void 0, void 0, function* () {
313
+ const { sceneSettingsData } = yield (0, asset_helper_1.loadAsset)(sceneAsset, this.viewer);
314
+ sceneAsset.settings = sceneSettingsData !== null && sceneSettingsData !== void 0 ? sceneSettingsData : {};
315
+ delete this._loadSceneAssetPromises[sceneAsset.name];
316
+ });
317
+ this._loadSceneAssetPromises[sceneAsset.name] = loadSceneAssetPromise();
318
+ return this._loadSceneAssetPromises[sceneAsset.name];
319
+ });
320
+ }
321
+ _hideSceneAsset(sceneAsset) {
322
+ sceneAsset.assetContainer.cameras.forEach(camera => camera.detachControl());
323
+ sceneAsset.assetContainer.removeFromScene();
324
+ sceneAsset.state = 'loaded';
61
325
  }
62
326
  }
63
327
  exports.SceneManager = SceneManager;
64
- SceneManager._DEFAULT_SCENE_NAME = '__defaultScene__';
328
+ SceneManager._DEFAULT_SCENE_ASSET_NAME = '$default';
329
+ SceneManager._DEFAULT_GROUND_PLANE_NAME = 'BackgroundPlane';
330
+ SceneManager._DEFAULT_GROUND_SIZING_FACTOR = 5;
65
331
  //# sourceMappingURL=scene-manager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scene-manager.js","sourceRoot":"","sources":["../../../src/manager/scene-manager.ts"],"names":[],"mappings":";;;AAAA,oCAAgG;AAChG,yCAAkC;AA6BlC;;;;;;GAMG;AACH,MAAa,YAAY;IAyBvB,YAA6B,MAAc,EAAE,oBAAwD;QAAxE,WAAM,GAAN,MAAM,CAAQ;QAtB3C,yBAAyB;QACzB,yCAAyC;QAC/B,0BAAqB,GAAyB;YACtD,eAAe,EAAE,IAAI,cAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,eAAe,EAAE,qBAAa,CAAC,uBAAuB;gBACtD,QAAQ,EAAE;oBACR,IAAI,EAAE,GAAG;oBACT,gBAAgB,EAAE,CAAC;oBACnB,cAAc,EAAE,GAAG;oBACnB,kBAAkB,EAAE,IAAI;iBACzB;aACF;YAED,WAAW,EAAE;gBACX,MAAM,EAAE,IAAI;gBACZ,GAAG,EAAE,mEAAmE;gBACxE,SAAS,EAAE,CAAC;aACb;SACF,CAAC;QAGA,IAAA,iBAAK,EAAC,IAAI,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACI,2BAA2B;QAChC,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC;QAE3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC;QAE1E,SAAS;QACT,IAAI,cAAc,CAAC,MAAM,EAAE;YACzB,MAAM,MAAM,GAAG,IAAI,uBAAe,CAChC,GAAG,YAAY,CAAC,mBAAmB,SAAS,EAC5C,cAAc,CAAC,eAAe,CAAC,KAAK,EACpC,cAAc,CAAC,eAAe,CAAC,IAAI,EACnC,cAAc,CAAC,eAAe,CAAC,MAAM,EACrC,cAAc,CAAC,eAAe,CAAC,MAAM,EACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAClB,CAAC;YACF,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YAC9D,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC3C,MAAM,CAAC,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACnE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC/D,MAAM,CAAC,kBAAkB,GAAG,cAAc,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SACxE;QAED,cAAc;QACd,IAAI,WAAW,CAAC,MAAM,EAAE;YACtB,MAAM,UAAU,GAAG,mBAAW,CAAC,yBAAyB,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,UAAU,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,GAAG,WAAW,CAAC,SAAS,CAAC;SAChE;IACH,CAAC;;AA9DH,oCA+DC;AA9DkB,gCAAmB,GAAG,kBAAkB,CAAC"}
1
+ {"version":3,"file":"scene-manager.js","sourceRoot":"","sources":["../../../src/manager/scene-manager.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oCAgBkB;AAClB,2DAAsF;AACtF,iEAA6D;AAC7D,yCAAkC;AAmFlC;;;GAGG;AACH,MAAa,YAAY;IAuCvB,gBAAgB;IAChB,YAA6B,MAAc,EAAE,oBAAwD;QAAxE,WAAM,GAAN,MAAM,CAAQ;QAnC3C,yBAAyB;QACzB,yCAAyC;QAC/B,0BAAqB,GAAyB;YACtD,eAAe,EAAE,IAAI,cAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACvC,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,eAAe,EAAE,qBAAa,CAAC,uBAAuB;gBACtD,QAAQ,EAAE;oBACR,IAAI,EAAE,GAAG;oBACT,gBAAgB,EAAE,CAAC;oBACnB,cAAc,EAAE,GAAG;oBACnB,kBAAkB,EAAE,IAAI;iBACzB;aACF;YAED,WAAW,EAAE;gBACX,MAAM,EAAE,IAAI;gBACZ,GAAG,EAAE,mEAAmE;gBACxE,SAAS,EAAE,CAAC;aACb;SACF,CAAC;QAEQ,iBAAY,GAAmC,EAAE,CAAC;QAClD,uBAAkB,GAAe;YACzC,IAAI,EAAE,YAAY,CAAC,yBAAyB;YAC5C,GAAG,EAAE,EAAE;YACP,KAAK,EAAE,QAAQ;YACf,cAAc,EAAE,IAAI,sBAAc,EAAE;YACpC,QAAQ,EAAE,EAAE;SACb,CAAC;QACQ,0BAAqB,GAAW,EAAE,CAAC;QACnC,4BAAuB,GAAgD,EAAE,CAAC;QAC1E,yBAAoB,GAAG,CAAC,CAAC;QAIjC,IAAA,iBAAK,EAAC,IAAI,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC;IAC1D,CAAC;IAED;;;;OAIG;IACI,mBAAmB,CAAC,WAAmC;QAC5D,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,WAAW,EAAE;YACvC,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,kBAAkB,EAAE;gBACtB,OAAO,CAAC,IAAI,CAAC,gBAAgB,IAAI,yBAAyB,CAAC,CAAC;gBAC5D,OAAO;aACR;YAED,MAAM,UAAU,GAAe;gBAC7B,IAAI;gBACJ,GAAG;gBACH,KAAK,EAAE,WAAW;gBAClB,cAAc,EAAE,IAAI,sBAAc,EAAE;gBACpC,QAAQ,EAAE,EAAE;aACb,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;SACtC;IACH,CAAC;IAED;;;OAGG;IACU,aAAa,CAAC,IAAY,EAAE,eAAyB;;YAChE,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,EAAE;gBACf,MAAM,IAAI,mBAAW,CAAC;oBACpB,EAAE,EAAE,sBAAc,CAAC,uBAAuB;oBAC1C,OAAO,EAAE,0BAA0B,IAAI,oCAAoC;iBAC5E,CAAC,CAAC;aACJ;YAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,CAAC;YAEzD,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,EAAE;gBACpC,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;aACxC;iBAAM,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE;gBACzC,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;aAC1C;iBAAM,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE;gBACzC,OAAO,CAAC,IAAI,CAAC,eAAe,IAAI,oBAAoB,CAAC,CAAC;gBACtD,OAAO;aACR;YAED,4CAA4C;YAC5C,IAAI,sBAAsB,KAAK,IAAI,CAAC,oBAAoB,EAAE;gBACxD,OAAO;aACR;YAED,IAAI,CAAC,eAAe,EAAE;gBACpB,MAAM,IAAA,mCAAoB,EAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aACrD;YAED,UAAU,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;YACvC,MAAM,QAAQ,GAAG,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;aAC/D;YAED,IAAI,UAAU,CAAC,cAAc,CAAC,kBAAkB,EAAE;gBAChD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC;aACrF;YACD,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE;gBAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;aAC/D;YACD,IAAI,UAAU,CAAC,QAAQ,CAAC,oBAAoB,KAAK,SAAS,EAAE;gBAC1D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,GAAG,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC;aACnF;YAED,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC;YAE7B,2BAA2B;YAC3B,iHAAiH;YACjH,kBAAkB;YAClB,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzE,IAAI,gBAAgB,EAAE;gBACpB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;aACxC;YAED,wCAAwC;YACxC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACpC,CAAC;KAAA;IAED;;OAEG;IACI,oBAAoB;QACzB,4CAA4C;QAC5C,+FAA+F;QAC/F,4EAA4E;QAC5E,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAED;;;OAGG;IACU,6BAA6B,CAAC,IAAY;;YACrD,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,CAAC,UAAU,EAAE;gBACf,MAAM,IAAI,mBAAW,CAAC;oBACpB,EAAE,EAAE,sBAAc,CAAC,uBAAuB;oBAC1C,OAAO,EAAE,6CAA6C,IAAI,oCAAoC;iBAC/F,CAAC,CAAC;aACJ;YAED,IAAI,UAAU,CAAC,KAAK,KAAK,WAAW,EAAE;gBACpC,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;aACxC;iBAAM,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE;gBACzC,MAAM,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACrD;YAED,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE;gBAClC,MAAM,IAAA,mCAAoB,EAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aACrD;YAED,OAAO,UAAU,CAAC,cAAc,CAAC;QACnC,CAAC;KAAA;IAED;;;;;;;OAOG;IACI,qBAAqB,CAAC,eAAsC;QACjE,iEAAiE;QACjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAE3B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;aAC1C,MAAM,CAAC,IAAI,CAAC,EAAE;YACb,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,4CAA4C;YAC5C,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1E,sEAAsE;YACtE,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAClD,uEAAuE;YACvE,MAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,YAAY,0BAAkB,CAAC;YAC1E,sDAAsD;YACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC9E,yBAAyB;YACzB,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,IAAA,gCAAc,EAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAEnF,OAAO,CACL,SAAS;gBACT,gBAAgB;gBAChB,CAAC,mBAAmB;gBACpB,CAAC,qBAAqB;gBACtB,CAAC,gBAAgB;gBACjB,CAAC,UAAU,CACZ,CAAC;QACJ,CAAC,CAAC;aACD,MAAM,CACL,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE;YAC9B,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC;YACnD,iGAAiG;YACjG,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,eAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACnG,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,eAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACnG,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QACtB,CAAC,EACD,EAAE,GAAG,EAAE,IAAI,eAAO,EAAE,EAAE,GAAG,EAAE,IAAI,eAAO,EAAE,EAAE,CAC3C,CAAC;QAEJ,MAAM,YAAY,GAAG,IAAI,oBAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACI,YAAY,CAAC,QAA+B;;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,CAAC,CAAC;QAEvE,MAAM,UAAU,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,mCAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;QACpH,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACpE,OAAO;SACR;QAED,wCAAwC;QACxC,MAAM,MAAM,GACV,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,mCAAI,YAAY,CAAC,6BAA6B,CAAC,CAAC;QACxG,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC;QACrD,UAAU,CAAC,OAAO,GAAG,IAAI,eAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QACpD,UAAU,CAAC,QAAQ,GAAG,IAAI,eAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACI,aAAa,CAAC,QAAgC;;QACnD,MAAM,gBAAgB,GACpB,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,gBAAgB,mCACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAwB,CAAC;QAE5G,MAAM,kBAAkB,GAAmB,EAAE,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACtC,MAAM,gBAAgB,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,eAAe,EAAC,CAAC,CAAC,CAAC,IAAA,gCAAc,EAAC,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5G,IAAI,gBAAgB,EAAE;gBACpB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC5B;YAED,+GAA+G;YAC/G,+FAA+F;YAC/F,MAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,YAAY,0BAAkB,CAAC;YAC1E,MAAM,cAAc,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,EAAC,CAAC,CAAC,CAAC,IAAA,gCAAc,EAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACtG,IAAI,cAAc,IAAI,CAAC,qBAAqB,EAAE;gBAC5C,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAC/B;QACH,CAAC,CAAC,CAAC;QAEH,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YACnC,MAAM,SAAS,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;YAC3C,IAAI,CAAC,SAAS,EAAE;gBACd,OAAO;aACR;YAED,SAAS,CAAC,UAAU,GAAG,CAAC,GAAG,kBAAkB,CAAC,CAAC;YAC/C,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,2BAA2B;QAChC,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC;QAE3D,8GAA8G;QAC9G,cAAc;QACd,IAAI,CAAC,kBAAkB,GAAG;YACxB,IAAI,EAAE,YAAY,CAAC,yBAAyB;YAC5C,GAAG,EAAE,EAAE;YACP,KAAK,EAAE,QAAQ;YACf,cAAc,EAAE,IAAI,sBAAc,EAAE;YACpC,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC;QAEzF,SAAS;QACT,IAAI,cAAc,CAAC,MAAM,EAAE;YACzB,MAAM,MAAM,GAAG,IAAI,uBAAe,CAChC,GAAG,YAAY,CAAC,yBAAyB,SAAS,EAClD,cAAc,CAAC,eAAe,CAAC,KAAK,EACpC,cAAc,CAAC,eAAe,CAAC,IAAI,EACnC,cAAc,CAAC,eAAe,CAAC,MAAM,EACrC,cAAc,CAAC,eAAe,CAAC,MAAM,EACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAClB,CAAC;YACF,MAAM,CAAC,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC3C,MAAM,CAAC,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACnE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC/D,MAAM,CAAC,kBAAkB,GAAG,cAAc,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACvE,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAEtC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SACxC;QAED,cAAc;QACd,IAAI,WAAW,CAAC,MAAM,EAAE;YACtB,MAAM,UAAU,GAAG,mBAAW,CAAC,yBAAyB,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAE7F,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,kBAAkB,GAAG,UAAU,CAAC;YACvE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,oBAAoB,GAAG,WAAW,CAAC,SAAS,CAAC;SAC/E;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAES,cAAc,CAAC,IAAY;QACnC,IAAI,IAAI,KAAK,YAAY,CAAC,yBAAyB,EAAE;YACnD,OAAO,IAAI,CAAC,kBAAkB,CAAC;SAChC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC;IACpB,CAAC;IAEe,eAAe,CAAC,UAAsB;;YACpD,MAAM,qBAAqB,GAAG,GAAwB,EAAE;gBACtD,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,IAAA,wBAAS,EAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAEvE,UAAU,CAAC,QAAQ,GAAG,iBAAiB,aAAjB,iBAAiB,cAAjB,iBAAiB,GAAI,EAAE,CAAC;gBAE9C,OAAO,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACvD,CAAC,CAAA,CAAC;YAEF,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,qBAAqB,EAAE,CAAC;YACxE,OAAO,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC;KAAA;IAES,eAAe,CAAC,UAAsB;QAC9C,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;QAC5E,UAAU,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;QAC5C,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC;IAC9B,CAAC;;AAtWH,oCAuWC;AAtWkB,sCAAyB,GAAG,UAAU,CAAC;AACvC,uCAA0B,GAAG,iBAAiB,CAAC;AAC/C,0CAA6B,GAAG,CAAC,CAAC"}
@@ -23,6 +23,7 @@ export declare const ViewerErrorIds: {
23
23
  ModelNotRegistered: string;
24
24
  ModelAlreadyExists: string;
25
25
  ModelIsNotAClone: string;
26
+ SceneAssetNotRegistered: string;
26
27
  AssetLoadingFailed: string;
27
28
  MaterialAlreadyExists: string;
28
29
  NotAClonedMaterial: string;
@@ -21,6 +21,7 @@ exports.ViewerErrorIds = {
21
21
  ModelNotRegistered: 'ModelNotRegistered',
22
22
  ModelAlreadyExists: 'ModelAlreadyExists',
23
23
  ModelIsNotAClone: 'ModelIsNotAClone',
24
+ SceneAssetNotRegistered: 'SceneAssetNotRegistered',
24
25
  AssetLoadingFailed: 'AssetLoadingFailed',
25
26
  MaterialAlreadyExists: 'MaterialAlreadyExists',
26
27
  NotAClonedMaterial: 'NotAClonedMaterial',
@@ -1 +1 @@
1
- {"version":3,"file":"viewer-error.js","sourceRoot":"","sources":["../../src/viewer-error.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAQH;;;;;;;;GAQG;AACU,QAAA,cAAc,GAAG;IAC5B,qBAAqB,EAAE,uBAAuB;IAC9C,uBAAuB,EAAE,yBAAyB;IAClD,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,oBAAoB;IACxC,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,yBAAyB,EAAE,2BAA2B;IACtD,iBAAiB,EAAE,mBAAmB;CACvC,CAAC;AAEF,gBAAgB;AAChB,MAAa,WAAY,SAAQ,KAAK;IAGpC,YAAY,IAAqB;QAC/B,mHAAmH;QACnH,oDAAoD;QACpD,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAe;;QACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEzD,SAAS;QACT,2CAA2C;QAC3C,uCAAuC;QACvC,kGAAkG;QAClG,wCAAwC;QACxC,2GAA2G;QAC3G,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,GAAG,QAAQ,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnF,MAAM,EAAE,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,GAAG,KAAI,OAAO,CAAC;QAE3C,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;IACrB,CAAC;CACF;AApCD,kCAoCC"}
1
+ {"version":3,"file":"viewer-error.js","sourceRoot":"","sources":["../../src/viewer-error.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAQH;;;;;;;;GAQG;AACU,QAAA,cAAc,GAAG;IAC5B,qBAAqB,EAAE,uBAAuB;IAC9C,uBAAuB,EAAE,yBAAyB;IAClD,kBAAkB,EAAE,oBAAoB;IACxC,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,uBAAuB,EAAE,yBAAyB;IAClD,kBAAkB,EAAE,oBAAoB;IACxC,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,yBAAyB,EAAE,2BAA2B;IACtD,iBAAiB,EAAE,mBAAmB;CACvC,CAAC;AAEF,gBAAgB;AAChB,MAAa,WAAY,SAAQ,KAAK;IAGpC,YAAY,IAAqB;QAC/B,mHAAmH;QACnH,oDAAoD;QACpD,KAAK,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAe;;QACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEzD,SAAS;QACT,2CAA2C;QAC3C,uCAAuC;QACvC,kGAAkG;QAClG,wCAAwC;QACxC,2GAA2G;QAC3G,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,GAAG,QAAQ,GAAG,eAAe,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnF,MAAM,EAAE,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,0CAAE,GAAG,KAAI,OAAO,CAAC;QAE3C,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;IACrB,CAAC;CACF;AApCD,kCAoCC"}
@@ -1,5 +1,5 @@
1
1
  import * as Index from './index';
2
- import { BoundingInfo, CameraManager, DebugManager, DefaultSceneSettings, Engine, EngineOptions, EventManager, GltfExportManager, MaterialManager, ModelManager, ParameterManager, ParameterSubject, Scene, SceneManager, TextureManager, TransformNode } from './index';
2
+ import { AbstractEngine, CameraManager, DebugManager, DefaultSceneSettings, DimensionLineManager, EngineOptions, EventManager, GltfExportManager, HtmlAnchorManager, MaterialManager, ModelManager, ParameterManager, ParameterSubject, Scene, SceneManager, TextureManager, TransformNode } from './index';
3
3
  /**
4
4
  * Use this to define geometry to be excluded from autofocus, GLB export, etc.
5
5
  */
@@ -46,13 +46,15 @@ export declare type ViewerSettings = {
46
46
  * (e.g. `modelManager` for loading models into the scene)
47
47
  */
48
48
  export declare class Viewer {
49
- readonly canvas: HTMLCanvasElement;
49
+ readonly canvas?: HTMLCanvasElement | undefined;
50
50
  static readonly version: string;
51
51
  protected _scene: Scene;
52
52
  protected _cameraManager: CameraManager;
53
53
  protected _debugManager: DebugManager;
54
+ protected _dimensionLineManager: DimensionLineManager;
54
55
  protected _eventManager: EventManager;
55
56
  protected _gltfExportManager: GltfExportManager;
57
+ protected _htmlAnchorManager: HtmlAnchorManager;
56
58
  protected _materialManager: MaterialManager;
57
59
  protected _modelManager: ModelManager;
58
60
  protected _parameterManager: ParameterManager;
@@ -61,11 +63,13 @@ export declare class Viewer {
61
63
  protected _viewerSettings: ViewerSettings;
62
64
  protected _isRenderLoopPaused: boolean;
63
65
  get scene(): Scene;
64
- get engine(): Engine;
66
+ get engine(): AbstractEngine;
65
67
  get cameraManager(): CameraManager;
66
68
  get debugManager(): DebugManager;
69
+ get dimensionLineManager(): DimensionLineManager;
67
70
  get eventManager(): EventManager;
68
71
  get gltfExportManager(): GltfExportManager;
72
+ get htmlAnchorManager(): HtmlAnchorManager;
69
73
  get materialManager(): MaterialManager;
70
74
  get modelManager(): ModelManager;
71
75
  get parameterManager(): ParameterManager;
@@ -86,9 +90,9 @@ export declare class Viewer {
86
90
  * @param defaultSceneSettings Can be overwritten to tweak settings for the automatically create Babylon.js scene.\
87
91
  * This scene contains a camera and an environment per default.
88
92
  */
89
- constructor(canvas: HTMLCanvasElement, viewerSettings?: DeepPartial<ViewerSettings>, defaultSceneSettings?: DeepPartial<DefaultSceneSettings>);
93
+ constructor(canvas?: HTMLCanvasElement | undefined, viewerSettings?: DeepPartial<ViewerSettings>, defaultSceneSettings?: DeepPartial<DefaultSceneSettings>);
90
94
  /**
91
- * Pause rendering can be usefull when doing internal scene processings that should not be visible to the user,
95
+ * Pause rendering can be useful when doing internal scene processings that should not be visible to the user,
92
96
  * e.g. cloning meshes for gltf export
93
97
  */
94
98
  pauseRendering(): void;
@@ -100,15 +104,6 @@ export declare class Viewer {
100
104
  * Destroys this viewer instance and disposes Babylon.js engine and all scene content
101
105
  */
102
106
  destroy(): void;
103
- /**
104
- * Calculates size of the current scene.\
105
- * Only takes meshes into considerations that:
106
- * - are visible
107
- * - are not excluded by "excludeGeometry" parameter
108
- * - do not have a material of type "BackgroundMaterial"
109
- * - do not have an infinite distance (like sky boxes)
110
- */
111
- calculateBoundingInfo(excludeGeometry?: ExcludedGeometryList): BoundingInfo;
112
107
  /**
113
108
  * Set up viewer (engine and scene) and initialize all managers
114
109
  */
@@ -32,7 +32,6 @@ const Index = __importStar(require("./index"));
32
32
  const index_1 = require("./index");
33
33
  const cbn_custom_babylon_loader_plugin_1 = require("./internal/cbn-custom-babylon-loader-plugin");
34
34
  const device_helper_1 = require("./internal/device-helper");
35
- const geometry_helper_1 = require("./internal/geometry-helper");
36
35
  const lodash_es_1 = require("lodash-es");
37
36
  /**
38
37
  * This is the entry point into the application.\
@@ -85,12 +84,18 @@ class Viewer {
85
84
  get debugManager() {
86
85
  return this._debugManager;
87
86
  }
87
+ get dimensionLineManager() {
88
+ return this._dimensionLineManager;
89
+ }
88
90
  get eventManager() {
89
91
  return this._eventManager;
90
92
  }
91
93
  get gltfExportManager() {
92
94
  return this._gltfExportManager;
93
95
  }
96
+ get htmlAnchorManager() {
97
+ return this._htmlAnchorManager;
98
+ }
94
99
  get materialManager() {
95
100
  return this._materialManager;
96
101
  }
@@ -120,7 +125,7 @@ class Viewer {
120
125
  return Index;
121
126
  }
122
127
  /**
123
- * Pause rendering can be usefull when doing internal scene processings that should not be visible to the user,
128
+ * Pause rendering can be useful when doing internal scene processings that should not be visible to the user,
124
129
  * e.g. cloning meshes for gltf export
125
130
  */
126
131
  pauseRendering() {
@@ -139,41 +144,6 @@ class Viewer {
139
144
  this.eventManager.removeAllListeners();
140
145
  this.engine.dispose();
141
146
  }
142
- /**
143
- * Calculates size of the current scene.\
144
- * Only takes meshes into considerations that:
145
- * - are visible
146
- * - are not excluded by "excludeGeometry" parameter
147
- * - do not have a material of type "BackgroundMaterial"
148
- * - do not have an infinite distance (like sky boxes)
149
- */
150
- calculateBoundingInfo(excludeGeometry) {
151
- // CB-6062: workaround for BoundingBox not respecting render loop
152
- this.scene.render();
153
- const { max, min } = this.scene.meshes
154
- .filter(mesh => {
155
- const isEnabled = mesh.isEnabled();
156
- // ignore meshes with invalid bounding infos
157
- const hasValidBBoxInfo = mesh.getBoundingInfo().boundingSphere.radius > 0;
158
- // ignore meshes with infinite distance, typically these are sky boxes
159
- const hasInfiniteDistance = mesh.infiniteDistance;
160
- // ignore meshes with "BackgroundMaterial" - usually a ground or skybox
161
- const hasBackgroundMaterial = mesh.material instanceof index_1.BackgroundMaterial;
162
- // ignore excluded meshes
163
- const isExcluded = excludeGeometry ? (0, geometry_helper_1.isNodeExcluded)(mesh, excludeGeometry) : false;
164
- return isEnabled && hasValidBBoxInfo && !hasInfiniteDistance && !hasBackgroundMaterial && !isExcluded;
165
- })
166
- .reduce((accBBoxMinMax, curMesh, idx) => {
167
- curMesh.refreshBoundingInfo(true, true);
168
- const bBox = curMesh.getBoundingInfo().boundingBox;
169
- // use the first entry in the array as default value and get the resulting maximum/minimum values
170
- const max = idx === 0 ? bBox.maximumWorld : index_1.Vector3.Maximize(accBBoxMinMax.max, bBox.maximumWorld);
171
- const min = idx === 0 ? bBox.minimumWorld : index_1.Vector3.Minimize(accBBoxMinMax.min, bBox.minimumWorld);
172
- return { max, min };
173
- }, { max: new index_1.Vector3(), min: new index_1.Vector3() });
174
- const boundingInfo = new index_1.BoundingInfo(min, max);
175
- return boundingInfo;
176
- }
177
147
  /**
178
148
  * Set up viewer (engine and scene) and initialize all managers
179
149
  */
@@ -187,7 +157,9 @@ class Viewer {
187
157
  // - `DebugManager.showCoordinateSystem`
188
158
  // - probably dimensions line handling (not implemented yet)
189
159
  index_1.TransformNode.BillboardUseParentOrientation = true;
190
- const engine = new index_1.Engine(this.canvas, this._viewerSettings.antialiasing, (0, lodash_es_1.cloneDeep)(this._viewerSettings.engineOptions), this._viewerSettings.adaptToDeviceRatio);
160
+ const engine = this.canvas
161
+ ? new index_1.Engine(this.canvas, this._viewerSettings.antialiasing, (0, lodash_es_1.cloneDeep)(this._viewerSettings.engineOptions), this._viewerSettings.adaptToDeviceRatio)
162
+ : new index_1.NullEngine();
191
163
  const isScaledDownDevice = (0, device_helper_1.getIsScaledDownDevice)(this._viewerSettings.limitTextureSize);
192
164
  if (this._viewerSettings.limitTextureSize && isScaledDownDevice) {
193
165
  engine.getCaps().maxTextureSize = this._viewerSettings.limitTextureSize.size;
@@ -196,13 +168,19 @@ class Viewer {
196
168
  engine.getCaps().parallelShaderCompile = undefined;
197
169
  }
198
170
  this._scene = new index_1.Scene(engine);
171
+ // NOTE: rendering group id "1" is reserved for occlusion helper sphere (see `HtmlAnchorManager`)
172
+ // rendering group id "1" has the same depth buffer as 0 in order to make this work
173
+ // => use rendering group id "2" or higher for keeping meshes in foreground
174
+ this._scene.setRenderingAutoClearDepthStencil(1, false, false, false);
199
175
  // NOTE: order of manage seems to be a bit counter intuitive as it's sorted alphabetically
200
176
  // semantically one would start with scene manager, etc...
201
177
  // still this is a good test as the order of manager constructors should not matter
202
178
  this._cameraManager = new index_1.CameraManager(this);
203
179
  this._debugManager = new index_1.DebugManager(this);
180
+ this._dimensionLineManager = new index_1.DimensionLineManager(this);
204
181
  this._eventManager = new index_1.EventManager(this);
205
182
  this._gltfExportManager = new index_1.GltfExportManager(this);
183
+ this._htmlAnchorManager = new index_1.HtmlAnchorManager(this);
206
184
  this._materialManager = new index_1.MaterialManager(this);
207
185
  this._modelManager = new index_1.ModelManager(this);
208
186
  this._parameterManager = new index_1.ParameterManager(this);
@@ -1 +1 @@
1
- {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../src/viewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"viewer.js","sourceRoot":"","sources":["../../src/viewer.ts"],"names":[],"mappings":"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"}