@shapediver/viewer.rendering-engine.rendering-engine-threejs 3.10.0 → 3.11.1

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 (76) hide show
  1. package/dist/RenderingEngine.d.ts +12 -20
  2. package/dist/RenderingEngine.d.ts.map +1 -1
  3. package/dist/RenderingEngine.js +63 -477
  4. package/dist/RenderingEngine.js.map +1 -1
  5. package/dist/interfaces/IRenderingEngine.d.ts +1 -0
  6. package/dist/interfaces/IRenderingEngine.d.ts.map +1 -1
  7. package/dist/loaders/EnvironmentMapLoader.d.ts.map +1 -1
  8. package/dist/loaders/EnvironmentMapLoader.js +13 -3
  9. package/dist/loaders/EnvironmentMapLoader.js.map +1 -1
  10. package/dist/loaders/GeometryLoader.d.ts.map +1 -1
  11. package/dist/loaders/GeometryLoader.js +2 -0
  12. package/dist/loaders/GeometryLoader.js.map +1 -1
  13. package/dist/loaders/HTMLElementAnchorLoader.d.ts.map +1 -1
  14. package/dist/loaders/HTMLElementAnchorLoader.js +4 -2
  15. package/dist/loaders/HTMLElementAnchorLoader.js.map +1 -1
  16. package/dist/loaders/MaterialLoader.d.ts +2 -2
  17. package/dist/loaders/MaterialLoader.d.ts.map +1 -1
  18. package/dist/loaders/MaterialLoader.js +13 -17
  19. package/dist/loaders/MaterialLoader.js.map +1 -1
  20. package/dist/managers/ARManager.d.ts +18 -0
  21. package/dist/managers/ARManager.d.ts.map +1 -0
  22. package/dist/managers/ARManager.js +129 -0
  23. package/dist/managers/ARManager.js.map +1 -0
  24. package/dist/managers/FlagManager.d.ts +20 -0
  25. package/dist/managers/FlagManager.d.ts.map +1 -0
  26. package/dist/managers/FlagManager.js +144 -0
  27. package/dist/managers/FlagManager.js.map +1 -0
  28. package/dist/managers/RenderingManager.d.ts.map +1 -1
  29. package/dist/managers/RenderingManager.js +5 -2
  30. package/dist/managers/RenderingManager.js.map +1 -1
  31. package/dist/managers/SceneTracingManager.d.ts +8 -0
  32. package/dist/managers/SceneTracingManager.d.ts.map +1 -1
  33. package/dist/managers/SceneTracingManager.js +13 -6
  34. package/dist/managers/SceneTracingManager.js.map +1 -1
  35. package/dist/managers/SceneTreeManager.d.ts +1 -7
  36. package/dist/managers/SceneTreeManager.d.ts.map +1 -1
  37. package/dist/managers/SceneTreeManager.js +40 -198
  38. package/dist/managers/SceneTreeManager.js.map +1 -1
  39. package/dist/managers/SettingsManager.d.ts +29 -0
  40. package/dist/managers/SettingsManager.d.ts.map +1 -0
  41. package/dist/managers/SettingsManager.js +285 -0
  42. package/dist/managers/SettingsManager.js.map +1 -0
  43. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js +2 -2
  44. package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js.map +1 -1
  45. package/dist/managers/sceneTree/SDTFUtils.d.ts +7 -0
  46. package/dist/managers/sceneTree/SDTFUtils.d.ts.map +1 -0
  47. package/dist/managers/sceneTree/SDTFUtils.js +51 -0
  48. package/dist/managers/sceneTree/SDTFUtils.js.map +1 -0
  49. package/dist/managers/sceneTree/SceenTreeManagerUtils.d.ts +10 -0
  50. package/dist/managers/sceneTree/SceenTreeManagerUtils.d.ts.map +1 -0
  51. package/dist/managers/sceneTree/SceenTreeManagerUtils.js +174 -0
  52. package/dist/managers/sceneTree/SceenTreeManagerUtils.js.map +1 -0
  53. package/dist/shaders/PCSS.d.ts +1 -1
  54. package/dist/shaders/PCSS.d.ts.map +1 -1
  55. package/dist/shaders/PCSS.js +1 -1
  56. package/package.json +17 -17
  57. package/dist/managers/environmentGeometry/GroundProjection.d.ts +0 -19
  58. package/dist/managers/environmentGeometry/GroundProjection.d.ts.map +0 -1
  59. package/dist/managers/environmentGeometry/GroundProjection.js +0 -66
  60. package/dist/managers/environmentGeometry/GroundProjection.js.map +0 -1
  61. package/dist/managers/environmentGeometry/SkyBottom.d.ts +0 -1
  62. package/dist/managers/environmentGeometry/SkyBottom.d.ts.map +0 -1
  63. package/dist/managers/environmentGeometry/SkyBottom.js +0 -2
  64. package/dist/managers/environmentGeometry/SkyBottom.js.map +0 -1
  65. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.d.ts +0 -2
  66. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.d.ts.map +0 -1
  67. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.js +0 -99
  68. package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.js.map +0 -1
  69. package/dist/managers/postprocessing/effects/ToneMappingEffect.d.ts +0 -1
  70. package/dist/managers/postprocessing/effects/ToneMappingEffect.d.ts.map +0 -1
  71. package/dist/managers/postprocessing/effects/ToneMappingEffect.js +0 -2
  72. package/dist/managers/postprocessing/effects/ToneMappingEffect.js.map +0 -1
  73. package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingPass.d.ts +0 -1
  74. package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingPass.d.ts.map +0 -1
  75. package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingPass.js +0 -160
  76. package/dist/managers/postprocessing/effects/tone-mapping/ToneMappingPass.js.map +0 -1
@@ -36,59 +36,48 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
36
36
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
37
37
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
38
38
  };
39
- var _RenderingEngine_defaultLogo, _RenderingEngine_defaultLogoStatic, _RenderingEngine_defaultSpinner, _RenderingEngine_animations, _RenderingEngine_flags;
39
+ var _RenderingEngine_defaultLogo, _RenderingEngine_defaultSpinner;
40
40
  Object.defineProperty(exports, "__esModule", { value: true });
41
41
  exports.RenderingEngine = void 0;
42
+ const THREE = __importStar(require("three"));
42
43
  const viewer_rendering_engine_animation_engine_1 = require("@shapediver/viewer.rendering-engine.animation-engine");
43
44
  const viewer_rendering_engine_camera_engine_1 = require("@shapediver/viewer.rendering-engine.camera-engine");
44
45
  const viewer_rendering_engine_canvas_engine_1 = require("@shapediver/viewer.rendering-engine.canvas-engine");
45
- const viewer_rendering_engine_intersection_engine_1 = require("@shapediver/viewer.rendering-engine.intersection-engine");
46
46
  const viewer_rendering_engine_light_engine_1 = require("@shapediver/viewer.rendering-engine.light-engine");
47
47
  const viewer_shared_node_tree_1 = require("@shapediver/viewer.shared.node-tree");
48
48
  const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
49
49
  const viewer_shared_types_1 = require("@shapediver/viewer.shared.types");
50
50
  const gl_matrix_1 = require("gl-matrix");
51
- const THREE = __importStar(require("three"));
52
51
  const EnvironmentMapLoader_1 = require("./loaders/EnvironmentMapLoader");
53
52
  const GeometryLoader_1 = require("./loaders/GeometryLoader");
54
53
  const HTMLElementAnchorLoader_1 = require("./loaders/HTMLElementAnchorLoader");
55
54
  const LightLoader_1 = require("./loaders/LightLoader");
56
55
  const MaterialLoader_1 = require("./loaders/MaterialLoader");
56
+ const ARManager_1 = require("./managers/ARManager");
57
57
  const CameraManager_1 = require("./managers/CameraManager");
58
58
  const EnvironmentGeometryManager_1 = require("./managers/EnvironmentGeometryManager");
59
+ const FlagManager_1 = require("./managers/FlagManager");
59
60
  const PostProcessingManager_1 = require("./managers/PostProcessingManager");
60
61
  const RenderingManager_1 = require("./managers/RenderingManager");
61
62
  const SceneTracingManager_1 = require("./managers/SceneTracingManager");
62
63
  const SceneTreeManager_1 = require("./managers/SceneTreeManager");
64
+ const SettingsManager_1 = require("./managers/SettingsManager");
63
65
  const SDColor_1 = require("./objects/SDColor");
64
66
  const viewport_css_1 = require("./styling/viewport-css");
65
67
  class RenderingEngine {
66
- // #endregion Properties (76)
67
- // #region Constructors (1)
68
68
  constructor(properties) {
69
- // #region Properties (76)
70
- _RenderingEngine_defaultLogo.set(this, "https://viewer.shapediver.com/v3/graphics/logo_animated_breath.svg");
71
- _RenderingEngine_defaultLogoStatic.set(this, "https://viewer.shapediver.com/v3/graphics/logo.png");
72
- _RenderingEngine_defaultSpinner.set(this, "https://viewer.shapediver.com/v3/graphics/spinner_ripple.svg");
73
69
  this._animationEngine = viewer_rendering_engine_animation_engine_1.AnimationEngine.instance;
74
70
  this._canvasEngine = viewer_rendering_engine_canvas_engine_1.CanvasEngine.instance;
75
71
  this._colorCache = [];
76
72
  // utils
77
73
  this._converter = viewer_shared_services_1.Converter.instance;
78
- this._eventEngine = viewer_shared_services_1.EventEngine.instance;
79
- this._intersectionManager = viewer_rendering_engine_intersection_engine_1.IntersectionEngine.instance;
80
74
  this._logger = viewer_shared_services_1.Logger.instance;
75
+ this._eventEngine = viewer_shared_services_1.EventEngine.instance;
81
76
  this._stateEngine = viewer_shared_services_1.StateEngine.instance;
82
77
  this._systemInfo = viewer_shared_services_1.SystemInfo.instance;
83
78
  this._tree = viewer_shared_node_tree_1.Tree.instance;
84
- this._uuidGenerator = viewer_shared_services_1.UuidGenerator.instance;
85
- _RenderingEngine_animations.set(this, {});
86
- _RenderingEngine_flags.set(this, {
87
- [viewer_shared_types_1.FLAG_TYPE.CAMERA_FREEZE]: [],
88
- [viewer_shared_types_1.FLAG_TYPE.CONTINUOUS_RENDERING]: [],
89
- [viewer_shared_types_1.FLAG_TYPE.CONTINUOUS_SHADOW_MAP_UPDATE]: [],
90
- [viewer_shared_types_1.FLAG_TYPE.SUSPEND_SCENE_UPDATES]: [],
91
- });
79
+ _RenderingEngine_defaultLogo.set(this, "https://viewer.shapediver.com/v3/graphics/logo_animated_breath.svg");
80
+ _RenderingEngine_defaultSpinner.set(this, "https://viewer.shapediver.com/v3/graphics/spinner_ripple.svg");
92
81
  // settings
93
82
  this._arRotation = gl_matrix_1.vec3.create();
94
83
  this._arScale = gl_matrix_1.vec3.fromValues(1, 1, 1);
@@ -142,9 +131,6 @@ class RenderingEngine {
142
131
  this._id = prop.id || viewer_shared_services_1.UuidGenerator.instance.create();
143
132
  this._visibilitySessionIds = prop.visibilitySessionIds;
144
133
  this._visibility = prop.visibility || viewer_shared_types_1.VISIBILITY_MODE.SESSION;
145
- this._sessionSettingsMode =
146
- prop.sessionSettingsMode || viewer_shared_services_1.SESSION_SETTINGS_MODE.FIRST;
147
- this._sessionSettingsId = prop.sessionSettingsId;
148
134
  this._branding = {
149
135
  logo: branding.logo === undefined ? __classPrivateFieldGet(this, _RenderingEngine_defaultLogo, "f") : branding.logo,
150
136
  backgroundColor: branding.backgroundColor || "#393a45FF",
@@ -167,6 +153,14 @@ class RenderingEngine {
167
153
  this._sceneTreeManager = new SceneTreeManager_1.SceneTreeManager(this);
168
154
  this._renderingManager = new RenderingManager_1.RenderingManager(this);
169
155
  this._postProcessingManager = new PostProcessingManager_1.PostProcessingManager(this);
156
+ this._settingsManager = new SettingsManager_1.SettingsManager(this, {
157
+ sessionSettingsMode: prop.sessionSettingsMode || viewer_shared_services_1.SESSION_SETTINGS_MODE.FIRST,
158
+ sessionSettingsId: prop.sessionSettingsId,
159
+ });
160
+ this._arManager = new ARManager_1.ARManager(this);
161
+ this._flagManager = new FlagManager_1.FlagManager(this, {
162
+ flags: prop.flags,
163
+ });
170
164
  // loaders
171
165
  this._environmentMapLoader = new EnvironmentMapLoader_1.EnvironmentMapLoader(this);
172
166
  this._materialLoader = new MaterialLoader_1.MaterialLoader(this);
@@ -184,18 +178,15 @@ class RenderingEngine {
184
178
  this._sceneTreeManager.init();
185
179
  this._renderingManager.init();
186
180
  this._postProcessingManager.init();
181
+ this._settingsManager.init();
182
+ this._arManager.init();
187
183
  // loaders
188
184
  this._environmentMapLoader.init();
189
185
  this._materialLoader.init();
190
186
  this._geometryLoader.init();
191
187
  this._htmlElementAnchorLoader.init();
192
188
  this._lightLoader.init();
193
- for (const token in prop.flags) {
194
- this.addFlag(prop.flags[token], token);
195
- }
196
189
  }
197
- // #endregion Constructors (1)
198
- // #region Public Getters And Setters (146)
199
190
  get arRotation() {
200
191
  return this._arRotation;
201
192
  }
@@ -269,9 +260,6 @@ class RenderingEngine {
269
260
  get canvas() {
270
261
  return this._canvas.canvasElement;
271
262
  }
272
- get canvasEngine() {
273
- return this._canvasEngine;
274
- }
275
263
  get clearAlpha() {
276
264
  return this._clearAlpha;
277
265
  }
@@ -332,12 +320,6 @@ class RenderingEngine {
332
320
  set continuousShadowMapUpdate(value) {
333
321
  this._renderingManager.continuousShadowMapUpdate = value;
334
322
  }
335
- get suspendSceneUpdates() {
336
- return this._sceneTreeManager.suspendSceneUpdates;
337
- }
338
- set suspendSceneUpdates(value) {
339
- this._sceneTreeManager.suspendSceneUpdates = value;
340
- }
341
323
  get defaultLineMaterial() {
342
324
  return this.materialLoader.defaultLineMaterialData;
343
325
  }
@@ -383,8 +365,18 @@ class RenderingEngine {
383
365
  return this._environmentMap;
384
366
  }
385
367
  set environmentMap(value) {
368
+ const previous = this._environmentMap;
386
369
  this._environmentMap = value;
387
- this._environmentMapLoader.load(this.environmentMap);
370
+ this._environmentMapLoader.load(this.environmentMap).catch((error) => {
371
+ if (error instanceof viewer_shared_services_1.ShapeDiverViewerEnvironmentMapError) {
372
+ this._logger.error(error.message);
373
+ }
374
+ else {
375
+ this._logger.error(`RenderingEngine.environmentMap: Error while loading environment map ${value}: ${error}`);
376
+ }
377
+ this._environmentMap = previous;
378
+ this._environmentMapLoader.load(this.environmentMap);
379
+ });
388
380
  }
389
381
  get environmentMapAsBackground() {
390
382
  return this._environmentMapAsBackground;
@@ -432,9 +424,6 @@ class RenderingEngine {
432
424
  this._environmentMapRotation = value;
433
425
  this._materialLoader.assignEnvironmentMapRotation(value);
434
426
  }
435
- get eventEngine() {
436
- return this._eventEngine;
437
- }
438
427
  get geometryLoader() {
439
428
  return this._geometryLoader;
440
429
  }
@@ -484,9 +473,6 @@ class RenderingEngine {
484
473
  get id() {
485
474
  return this._id;
486
475
  }
487
- get visibilitySessionIds() {
488
- return this._visibilitySessionIds;
489
- }
490
476
  get lightEngine() {
491
477
  return this._lightEngine;
492
478
  }
@@ -509,6 +495,12 @@ class RenderingEngine {
509
495
  set lights(value) {
510
496
  this._lights = value;
511
497
  }
498
+ get loadDefaultCameras() {
499
+ return this._cameraEngine.loadDefaultCameras;
500
+ }
501
+ set loadDefaultCameras(value) {
502
+ this._cameraEngine.loadDefaultCameras = value;
503
+ }
512
504
  get logoDivElement() {
513
505
  return this._logoDivElement;
514
506
  }
@@ -600,22 +592,13 @@ class RenderingEngine {
600
592
  return this._sceneTreeManager;
601
593
  }
602
594
  get sessionSettingsId() {
603
- return this._sessionSettingsId;
604
- }
605
- set sessionSettingsId(value) {
606
- this._sessionSettingsId = value;
595
+ return this._settingsManager.sessionSettingsId;
607
596
  }
608
597
  get sessionSettingsMode() {
609
- return this._sessionSettingsMode;
610
- }
611
- set sessionSettingsMode(value) {
612
- this._sessionSettingsMode = value;
598
+ return this._settingsManager.sessionSettingsMode;
613
599
  }
614
600
  get settingsEngine() {
615
- return this._settingsEngine;
616
- }
617
- set settingsEngine(value) {
618
- this._settingsEngine = value;
601
+ return this._settingsManager.settingsEngine;
619
602
  }
620
603
  get shadows() {
621
604
  return this._shadows;
@@ -644,8 +627,11 @@ class RenderingEngine {
644
627
  get spinnerDivElement() {
645
628
  return this._spinnerDivElement;
646
629
  }
647
- get stateEngine() {
648
- return this._stateEngine;
630
+ get suspendSceneUpdates() {
631
+ return this._sceneTreeManager.suspendSceneUpdates;
632
+ }
633
+ set suspendSceneUpdates(value) {
634
+ this._sceneTreeManager.suspendSceneUpdates = value;
649
635
  }
650
636
  get textureEncoding() {
651
637
  switch (this.materialLoader.textureEncoding) {
@@ -714,25 +700,17 @@ class RenderingEngine {
714
700
  get visibility() {
715
701
  return this._visibility;
716
702
  }
703
+ get visibilitySessionIds() {
704
+ return this._visibilitySessionIds;
705
+ }
717
706
  get visualizeAttributes() {
718
707
  return this._visualizeAttributes;
719
708
  }
720
709
  set visualizeAttributes(value) {
721
710
  this._visualizeAttributes = value;
722
711
  }
723
- // #endregion Public Getters And Setters (146)
724
- // #region Public Methods (25)
725
712
  addFlag(flag, inputToken) {
726
- var _a;
727
- const token = inputToken || this._uuidGenerator.create();
728
- if (flag === viewer_shared_types_1.FLAG_TYPE.BUSY_MODE) {
729
- (_a = this.stateEngine.viewportEngines[this.id]) === null || _a === void 0 ? void 0 : _a.busy.push(token);
730
- }
731
- else {
732
- __classPrivateFieldGet(this, _RenderingEngine_flags, "f")[flag].push(token);
733
- }
734
- this.evaluateFlagState();
735
- return token;
713
+ return this._flagManager.addFlag(flag, inputToken);
736
714
  }
737
715
  applySettings(sections = {
738
716
  ar: true,
@@ -744,56 +722,11 @@ class RenderingEngine {
744
722
  postprocessing: true,
745
723
  }, settingsEngine, updateViewport = true) {
746
724
  return __awaiter(this, void 0, void 0, function* () {
747
- settingsEngine = settingsEngine || this._settingsEngine;
748
- if (!settingsEngine)
749
- return;
750
- if (sections.environment) {
751
- const promises = [];
752
- promises.push(this._postProcessingManager.initialize());
753
- // as the environment map is the only thing that needs time to load, load it first
754
- promises.push(new Promise((resolve, reject) => {
755
- var _a;
756
- (_a = this._stateEngine.viewportEngines[this.id]) === null || _a === void 0 ? void 0 : _a.environmentMapLoaded.then(() => {
757
- try {
758
- if (!settingsEngine)
759
- return;
760
- this.environmentMapAsBackground =
761
- settingsEngine.environment.mapAsBackground;
762
- this.clearAlpha =
763
- settingsEngine.environment.clearAlpha;
764
- this.clearColor = this._converter.toHexColor(settingsEngine.environment.clearColor);
765
- this.environmentMapRotation = [
766
- settingsEngine.environment.rotation.x,
767
- settingsEngine.environment.rotation.y,
768
- settingsEngine.environment.rotation.z,
769
- settingsEngine.environment.rotation.w,
770
- ];
771
- this.environmentMapBlurriness =
772
- settingsEngine.environment.blurriness;
773
- this.environmentMapIntensity =
774
- settingsEngine.environment.intensity;
775
- this.applySyncSettings(sections, settingsEngine, updateViewport);
776
- this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE_VIEWPORT.VIEWPORT_SETTINGS_LOADED, { viewportId: this.id });
777
- resolve();
778
- }
779
- catch (e) {
780
- reject(e);
781
- }
782
- }).catch((e) => reject(e));
783
- // set it like this to not trigger the loading
784
- this.environmentMap =
785
- this.environmentMapLoader.reconstructSavedEnvironmentMapContent(settingsEngine.environment.map);
786
- }));
787
- yield Promise.all(promises);
788
- }
789
- else {
790
- this.applySyncSettings(sections, settingsEngine, updateViewport);
791
- this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE_VIEWPORT.VIEWPORT_SETTINGS_LOADED, { viewportId: this.id });
792
- }
725
+ return this._settingsManager.applySettings(sections, settingsEngine, updateViewport);
793
726
  });
794
727
  }
795
728
  assignSettingsEngine(settingsEngine) {
796
- this._settingsEngine = settingsEngine;
729
+ this._settingsManager.assignSettingsEngine(settingsEngine);
797
730
  }
798
731
  close() {
799
732
  var _a, _b, _c;
@@ -846,80 +779,7 @@ class RenderingEngine {
846
779
  d.appendChild(p);
847
780
  }
848
781
  evaluateFlagState() {
849
- // busy
850
- {
851
- const currentBusyState = this.busy;
852
- if (this.stateEngine.viewportEngines[this.id] &&
853
- this.stateEngine.viewportEngines[this.id].busy.length > 0) {
854
- if (!currentBusyState) {
855
- this.busy = true;
856
- this._renderingManager.render();
857
- this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.VIEWPORT.BUSY_MODE_ON, { viewportId: this.id });
858
- }
859
- }
860
- else {
861
- if (currentBusyState) {
862
- this.busy = false;
863
- this._renderingManager.render();
864
- this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.VIEWPORT.BUSY_MODE_OFF, { viewportId: this.id });
865
- }
866
- }
867
- }
868
- // camera freeze
869
- {
870
- if (__classPrivateFieldGet(this, _RenderingEngine_flags, "f")[viewer_shared_types_1.FLAG_TYPE.CAMERA_FREEZE].length > 0) {
871
- this.cameraEngine.deactivateCameraEvents();
872
- }
873
- else {
874
- this.cameraEngine.activateCameraEvents();
875
- }
876
- }
877
- // continuous rendering
878
- {
879
- const currentContinuousRenderingState = this.continuousRendering;
880
- if (__classPrivateFieldGet(this, _RenderingEngine_flags, "f")[viewer_shared_types_1.FLAG_TYPE.CONTINUOUS_RENDERING].length > 0) {
881
- if (!currentContinuousRenderingState) {
882
- this.continuousRendering = true;
883
- this._renderingManager.render();
884
- }
885
- }
886
- else {
887
- if (currentContinuousRenderingState) {
888
- this.continuousRendering = false;
889
- }
890
- }
891
- }
892
- // continuous shadow map update
893
- {
894
- const currentShadowMapUpdateState = this.continuousShadowMapUpdate;
895
- if (__classPrivateFieldGet(this, _RenderingEngine_flags, "f")[viewer_shared_types_1.FLAG_TYPE.CONTINUOUS_SHADOW_MAP_UPDATE].length > 0) {
896
- if (!currentShadowMapUpdateState) {
897
- this.continuousShadowMapUpdate = true;
898
- this._renderingManager.render();
899
- }
900
- }
901
- else {
902
- if (currentShadowMapUpdateState) {
903
- this.continuousShadowMapUpdate = false;
904
- }
905
- }
906
- }
907
- // suspend scene updates
908
- {
909
- const currentSuspendSceneUpdatesState = this.suspendSceneUpdates;
910
- if (currentSuspendSceneUpdatesState) {
911
- if (__classPrivateFieldGet(this, _RenderingEngine_flags, "f")[viewer_shared_types_1.FLAG_TYPE.SUSPEND_SCENE_UPDATES].length === 0) {
912
- this.suspendSceneUpdates = false;
913
- this.update("suspendSceneUpdates: false");
914
- this._renderingManager.render();
915
- }
916
- }
917
- else {
918
- if (__classPrivateFieldGet(this, _RenderingEngine_flags, "f")[viewer_shared_types_1.FLAG_TYPE.SUSPEND_SCENE_UPDATES].length > 0) {
919
- this.suspendSceneUpdates = true;
920
- }
921
- }
922
- }
782
+ this._flagManager.evaluateFlagState();
923
783
  }
924
784
  getEnvironmentMapImageUrl() {
925
785
  return this._environmentMapLoader.getEnvironmentMapImageUrl(this.environmentMap);
@@ -928,19 +788,7 @@ class RenderingEngine {
928
788
  return this._renderingManager.getScreenshot(type, encoderOptions);
929
789
  }
930
790
  isMobileDeviceWithoutBrowserARSupport() {
931
- // has to be a mobile device (duh)
932
- if (this._systemInfo.isIOS === false &&
933
- this._systemInfo.isAndroid === false)
934
- return false;
935
- // no Firefox on Android
936
- if (this._systemInfo.isAndroid === true &&
937
- this._systemInfo.isFirefox === true)
938
- return true;
939
- // no Instagram on iOS
940
- if (this._systemInfo.isIOS === true &&
941
- this._systemInfo.isInstagram === true)
942
- return true;
943
- return false;
791
+ return this._arManager.isMobileDeviceWithoutBrowserARSupport();
944
792
  }
945
793
  pauseRendering() {
946
794
  this._pause = true;
@@ -949,37 +797,10 @@ class RenderingEngine {
949
797
  return this._sceneTracingManager.pointerEventToRay(event);
950
798
  }
951
799
  raytraceScene(origin, direction, filterCriteria) {
952
- const intersect = this._intersectionManager.intersect({ origin, direction }, this.id, filterCriteria);
953
- return intersect.map((i) => {
954
- return {
955
- distance: i.distance,
956
- node: i.node,
957
- data: i.geometryData,
958
- };
959
- });
800
+ return this._sceneTracingManager.raytraceScene(origin, direction, filterCriteria);
960
801
  }
961
802
  removeFlag(token) {
962
- let success = false;
963
- const Flags = Object.values(viewer_shared_types_1.FLAG_TYPE);
964
- for (const f of Flags) {
965
- if (f === viewer_shared_types_1.FLAG_TYPE.BUSY_MODE) {
966
- if (this.stateEngine.viewportEngines[this.id] &&
967
- this.stateEngine.viewportEngines[this.id].busy.includes(token)) {
968
- this.stateEngine.viewportEngines[this.id].busy.splice(this.stateEngine.viewportEngines[this.id].busy.indexOf(token), 1);
969
- success = true;
970
- break;
971
- }
972
- }
973
- else {
974
- if (__classPrivateFieldGet(this, _RenderingEngine_flags, "f")[f].includes(token)) {
975
- __classPrivateFieldGet(this, _RenderingEngine_flags, "f")[f].splice(__classPrivateFieldGet(this, _RenderingEngine_flags, "f")[f].indexOf(token), 1);
976
- success = true;
977
- break;
978
- }
979
- }
980
- }
981
- this.evaluateFlagState();
982
- return success;
803
+ return this._flagManager.removeFlag(token);
983
804
  }
984
805
  reset() {
985
806
  var _a, _b, _c, _d;
@@ -995,84 +816,7 @@ class RenderingEngine {
995
816
  this._renderingManager.render();
996
817
  }
997
818
  saveSettings(settingsEngine) {
998
- settingsEngine = settingsEngine || this._settingsEngine;
999
- if (!settingsEngine)
1000
- return;
1001
- this.lightEngine.saveSettings(settingsEngine);
1002
- this.cameraEngine.saveSettings(settingsEngine);
1003
- this.postProcessingManager.saveSettings(settingsEngine);
1004
- settingsEngine.ar.enable = this.enableAR;
1005
- settingsEngine.environment.mapResolution =
1006
- this.environmentMapResolution;
1007
- settingsEngine.environment.map =
1008
- this._environmentMapLoader.createSaveableEnvironmentMapContent(this.environmentMap);
1009
- settingsEngine.environment.mapAsBackground =
1010
- this.environmentMapAsBackground;
1011
- settingsEngine.environment.clearAlpha = this.clearAlpha;
1012
- settingsEngine.environment.clearColor = this._converter.toHexColor(this.clearColor);
1013
- settingsEngine.environment.rotation = {
1014
- x: this.environmentMapRotation[0],
1015
- y: this.environmentMapRotation[1],
1016
- z: this.environmentMapRotation[2],
1017
- w: this.environmentMapRotation[3],
1018
- };
1019
- settingsEngine.environment.blurriness = this.environmentMapBlurriness;
1020
- settingsEngine.environment.intensity = this.environmentMapIntensity;
1021
- settingsEngine.environmentGeometry.gridVisibility = this.gridVisibility;
1022
- settingsEngine.environmentGeometry.groundPlaneVisibility =
1023
- this.groundPlaneVisibility;
1024
- settingsEngine.environmentGeometry.groundPlaneShadowVisibility =
1025
- this.groundPlaneShadowVisibility;
1026
- settingsEngine.environmentGeometry.gridColor =
1027
- this._converter.toHexColor(this.gridColor);
1028
- settingsEngine.environmentGeometry.groundPlaneColor =
1029
- this._converter.toHexColor(this.groundPlaneColor);
1030
- settingsEngine.environmentGeometry.groundPlaneShadowColor =
1031
- this._converter.toHexColor(this.groundPlaneShadowColor);
1032
- settingsEngine.environmentGeometry.contactShadowBlur =
1033
- this.contactShadowBlur;
1034
- settingsEngine.environmentGeometry.contactShadowDarkness =
1035
- this.contactShadowDarkness;
1036
- settingsEngine.environmentGeometry.contactShadowHeight =
1037
- this.contactShadowHeight;
1038
- settingsEngine.environmentGeometry.contactShadowOpacity =
1039
- this.contactShadowOpacity;
1040
- settingsEngine.environmentGeometry.contactShadowVisibility =
1041
- this.contactShadowVisibility;
1042
- settingsEngine.general.pointSize = this.pointSize;
1043
- settingsEngine.general.transformation.rotation = {
1044
- x: this.arRotation[0],
1045
- y: this.arRotation[1],
1046
- z: this.arRotation[2],
1047
- };
1048
- settingsEngine.general.transformation.translation = {
1049
- x: this.arTranslation[0],
1050
- y: this.arTranslation[1],
1051
- z: this.arTranslation[2],
1052
- };
1053
- settingsEngine.general.transformation.scale = {
1054
- x: this.arScale[0],
1055
- y: this.arScale[1],
1056
- z: this.arScale[2],
1057
- };
1058
- settingsEngine.material.defaultMaterialColor =
1059
- this._converter.toHexColor(this.defaultMaterialColor);
1060
- settingsEngine.material.materialOverrideType =
1061
- this.materialOverrideType;
1062
- settingsEngine.rendering.automaticColorAdjustment =
1063
- this.automaticColorAdjustment;
1064
- settingsEngine.rendering.lights = this.lights;
1065
- settingsEngine.rendering.outputEncoding = this.outputEncoding;
1066
- settingsEngine.rendering.physicallyCorrectLights =
1067
- this.physicallyCorrectLights;
1068
- settingsEngine.rendering.textureEncoding = this.textureEncoding;
1069
- settingsEngine.rendering.toneMapping = this.toneMapping;
1070
- settingsEngine.rendering.toneMappingExposure = this.toneMappingExposure;
1071
- settingsEngine.rendering.beautyRenderBlendingDuration =
1072
- this.beautyRenderBlendingDuration;
1073
- settingsEngine.rendering.beautyRenderDelay = this.beautyRenderDelay;
1074
- settingsEngine.rendering.shadows = this.shadows;
1075
- settingsEngine.rendering.softShadows = this.softShadows;
819
+ this._settingsManager.saveSettings(settingsEngine);
1076
820
  }
1077
821
  start() {
1078
822
  var _a;
@@ -1080,7 +824,8 @@ class RenderingEngine {
1080
824
  (_a = this._stateEngine.viewportEngines[this.id]) === null || _a === void 0 ? void 0 : _a.boundingBoxCreated.then(() => {
1081
825
  this._environmentGeometryManager.changeSceneExtents(this._sceneTreeManager.boundingBox);
1082
826
  });
1083
- if (this._sessionSettingsMode === viewer_shared_services_1.SESSION_SETTINGS_MODE.NONE) {
827
+ if (this._settingsManager.sessionSettingsMode ===
828
+ viewer_shared_services_1.SESSION_SETTINGS_MODE.NONE) {
1084
829
  this.environmentMap = "photo_studio";
1085
830
  }
1086
831
  }
@@ -1094,179 +839,20 @@ class RenderingEngine {
1094
839
  this._renderingManager.updateShadowMap();
1095
840
  this._animationEngine.updateAnimationData();
1096
841
  this._renderingManager.render();
1097
- this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE_VIEWPORT.VIEWPORT_UPDATED, { viewportId: this.id });
842
+ this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE_VIEWPORT.VIEWPORT_UPDATED, {
843
+ viewportId: this.id,
844
+ });
1098
845
  }
1099
846
  updateEnvironmentGeometry() {
1100
847
  this._environmentGeometryManager.updateEnvironmentGeometryPosition();
1101
848
  }
1102
- viewInAR(file, options = { arScale: "auto", arPlacement: "floor", xrEnvironment: false }) {
1103
- return __awaiter(this, void 0, void 0, function* () {
1104
- const eventId = this._uuidGenerator.create();
1105
- const event = {
1106
- type: viewer_shared_types_1.TASK_TYPE.AR_LOADING,
1107
- id: eventId,
1108
- progress: 0,
1109
- status: "Loading AR scene",
1110
- };
1111
- this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_START, event);
1112
- // if this is not a supported device, throw an error
1113
- if (this.viewableInAR() === false) {
1114
- const event = {
1115
- type: viewer_shared_types_1.TASK_TYPE.AR_LOADING,
1116
- id: eventId,
1117
- progress: 1,
1118
- status: "Stopped AR loading due to an error",
1119
- };
1120
- this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_CANCEL, event);
1121
- throw new viewer_shared_services_1.ShapeDiverViewerArError('Api.viewInAR: The device or browser is not supported for this functionality, please call "viewableInAR" for more information.');
1122
- }
1123
- const arScale = options.arScale !== "auto" ? "fixed" : "auto";
1124
- // const arPlacement = options.arPlacement !== 'wall' ? 'floor' : 'wall';
1125
- // const xrEnvironment = options.xrEnvironment !== true ? false : true;
1126
- // let arEnvironment = '';
1127
- // const envMapUrl = this.getEnvironmentMapImageUrl();
1128
- // if (envMapUrl !== '') {
1129
- // if (envMapUrl.endsWith('.hdr')) {
1130
- // arEnvironment = 'skybox-image=' + envMapUrl;
1131
- // } else {
1132
- // arEnvironment = 'environment-image=' + envMapUrl;
1133
- // }
1134
- // }
1135
- if (this._systemInfo.isIOS) {
1136
- // create the link and click it
1137
- const a = document.createElement("a");
1138
- a.href =
1139
- file +
1140
- (arScale === "fixed"
1141
- ? ".usdz_allowsContentScaling=0"
1142
- : ".usdz");
1143
- a.rel = "ar";
1144
- const img = document.createElement("img");
1145
- img.src = __classPrivateFieldGet(this, _RenderingEngine_defaultLogoStatic, "f");
1146
- a.appendChild(img);
1147
- a.click();
1148
- }
1149
- else {
1150
- const a = document.createElement("a");
1151
- a.href = `intent://arvr.google.com/scene-viewer/1.0?resizable=${arScale === "fixed" ? "false" : "true"}&file=${file}&mode=ar_only#Intent;scheme=https;package=com.google.ar.core;action=android.intent.action.VIEW;end;`;
1152
- a.click();
1153
- }
1154
- const event2 = {
1155
- type: viewer_shared_types_1.TASK_TYPE.AR_LOADING,
1156
- id: eventId,
1157
- progress: 1,
1158
- status: "Done loading AR scene, launching AR",
1159
- };
1160
- this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_END, event2);
1161
- });
849
+ viewInAR(file, options) {
850
+ return this._arManager.viewInAR(file, options);
1162
851
  }
1163
852
  viewableInAR() {
1164
- // has to be a mobile device (duh)
1165
- if (this._systemInfo.isIOS === false &&
1166
- this._systemInfo.isAndroid === false)
1167
- return false;
1168
- // no Firefox on Android
1169
- if (this._systemInfo.isAndroid === true &&
1170
- this._systemInfo.isFirefox === true)
1171
- return false;
1172
- // no Firefox on iOS
1173
- if (this._systemInfo.isIOS === true &&
1174
- this._systemInfo.isFirefox === true)
1175
- return false;
1176
- // no Instagram on iOS
1177
- if (this._systemInfo.isIOS === true &&
1178
- this._systemInfo.isInstagram === true)
1179
- return false;
1180
- return true;
1181
- }
1182
- // #endregion Public Methods (25)
1183
- // #region Private Methods (1)
1184
- applySyncSettings(sections = {
1185
- ar: true,
1186
- scene: true,
1187
- camera: true,
1188
- light: true,
1189
- environment: true,
1190
- general: true,
1191
- postprocessing: true,
1192
- }, settingsEngine, updateViewport = true) {
1193
- var _a;
1194
- settingsEngine = settingsEngine || this._settingsEngine;
1195
- if (!settingsEngine)
1196
- return;
1197
- if (sections.ar) {
1198
- this.enableAR = settingsEngine.ar.enable;
1199
- this.arScale = [
1200
- settingsEngine.general.transformation.scale.x,
1201
- settingsEngine.general.transformation.scale.y,
1202
- settingsEngine.general.transformation.scale.z,
1203
- ];
1204
- this.arTranslation = [
1205
- settingsEngine.general.transformation.translation.x,
1206
- settingsEngine.general.transformation.translation.y,
1207
- settingsEngine.general.transformation.translation.z,
1208
- ];
1209
- this.arRotation = [
1210
- settingsEngine.general.transformation.rotation.x,
1211
- settingsEngine.general.transformation.rotation.y,
1212
- settingsEngine.general.transformation.rotation.z,
1213
- ];
1214
- }
1215
- if (sections.scene) {
1216
- this.gridColor = settingsEngine.environmentGeometry.gridColor;
1217
- this.gridVisibility =
1218
- settingsEngine.environmentGeometry.gridVisibility;
1219
- this.groundPlaneColor =
1220
- settingsEngine.environmentGeometry.groundPlaneColor;
1221
- this.groundPlaneVisibility =
1222
- settingsEngine.environmentGeometry.groundPlaneVisibility;
1223
- this.groundPlaneShadowColor =
1224
- settingsEngine.environmentGeometry.groundPlaneShadowColor;
1225
- this.groundPlaneShadowVisibility =
1226
- settingsEngine.environmentGeometry.groundPlaneShadowVisibility;
1227
- this.contactShadowBlur =
1228
- settingsEngine.environmentGeometry.contactShadowBlur;
1229
- this.contactShadowDarkness =
1230
- settingsEngine.environmentGeometry.contactShadowDarkness;
1231
- this.contactShadowHeight =
1232
- settingsEngine.environmentGeometry.contactShadowHeight;
1233
- this.contactShadowOpacity =
1234
- settingsEngine.environmentGeometry.contactShadowOpacity;
1235
- this.contactShadowVisibility =
1236
- settingsEngine.environmentGeometry.contactShadowVisibility;
1237
- this.shadows = settingsEngine.rendering.shadows;
1238
- this.softShadows = settingsEngine.rendering.softShadows;
1239
- this.lights = settingsEngine.rendering.lights;
1240
- this.automaticColorAdjustment =
1241
- settingsEngine.rendering.automaticColorAdjustment;
1242
- this.textureEncoding = (settingsEngine.rendering.textureEncoding);
1243
- this.outputEncoding = (settingsEngine.rendering.outputEncoding);
1244
- this.physicallyCorrectLights =
1245
- settingsEngine.rendering.physicallyCorrectLights;
1246
- this.toneMapping = (settingsEngine.rendering.toneMapping);
1247
- this.toneMappingExposure =
1248
- settingsEngine.rendering.toneMappingExposure;
1249
- }
1250
- if (sections.general) {
1251
- this.defaultMaterialColor =
1252
- settingsEngine.material.defaultMaterialColor;
1253
- this.materialOverrideType = settingsEngine.material
1254
- .materialOverrideType;
1255
- this.pointSize = settingsEngine.general.pointSize;
1256
- }
1257
- if (sections.light)
1258
- this.lightEngine.applySettings(settingsEngine);
1259
- if (sections.camera)
1260
- this.cameraEngine.applySettings(settingsEngine);
1261
- if (sections.postprocessing)
1262
- this.postProcessingManager.applySettings(settingsEngine);
1263
- // call adjust camera to load the three.js camera objects
1264
- this.cameraManager.adjustCamera(1);
1265
- (_a = this._stateEngine.viewportEngines[this.id]) === null || _a === void 0 ? void 0 : _a.settingsAssigned.resolve(true);
1266
- if (updateViewport)
1267
- this.update("RenderingEngine.applySyncSettings");
853
+ return this._arManager.viewableInAR();
1268
854
  }
1269
855
  }
1270
856
  exports.RenderingEngine = RenderingEngine;
1271
- _RenderingEngine_defaultLogo = new WeakMap(), _RenderingEngine_defaultLogoStatic = new WeakMap(), _RenderingEngine_defaultSpinner = new WeakMap(), _RenderingEngine_animations = new WeakMap(), _RenderingEngine_flags = new WeakMap();
857
+ _RenderingEngine_defaultLogo = new WeakMap(), _RenderingEngine_defaultSpinner = new WeakMap();
1272
858
  //# sourceMappingURL=RenderingEngine.js.map