@crystaldesign/real-time-viewer 24.12.0-beta.2 → 24.12.0-beta.20

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 (131) hide show
  1. package/build/esm/index.js +242 -100
  2. package/build/types/real-time-viewer/src/CustomMaterial/index.d.ts.map +1 -1
  3. package/build/types/real-time-viewer/src/SelectionHandler/index.d.ts.map +1 -1
  4. package/build/types/real-time-viewer/src/ViewpointGui.d.ts +3 -2
  5. package/build/types/real-time-viewer/src/ViewpointGui.d.ts.map +1 -1
  6. package/build/types/real-time-viewer/src/context.d.ts +4 -1
  7. package/build/types/real-time-viewer/src/context.d.ts.map +1 -1
  8. package/build/types/real-time-viewer/src/controls/index.d.ts.map +1 -1
  9. package/build/types/real-time-viewer/src/index.d.ts +5 -2
  10. package/build/types/real-time-viewer/src/index.d.ts.map +1 -1
  11. package/build/types/real-time-viewer/src/parser/buildScene/index.d.ts +1 -1
  12. package/build/types/real-time-viewer/src/parser/buildScene/index.d.ts.map +1 -1
  13. package/build/types/real-time-viewer/src/parser/createCams/index.d.ts +1 -0
  14. package/build/types/real-time-viewer/src/parser/createCams/index.d.ts.map +1 -1
  15. package/build/types/real-time-viewer/src/parser/index.d.ts.map +1 -1
  16. package/build/types/real-time-viewer/src/store/GridStore.d.ts.map +1 -1
  17. package/build/types/real-time-viewer/src/store/SceneStore.d.ts +9 -0
  18. package/build/types/real-time-viewer/src/store/SceneStore.d.ts.map +1 -1
  19. package/build/types/real-time-viewer/src/store/UIStore.d.ts +11 -3
  20. package/build/types/real-time-viewer/src/store/UIStore.d.ts.map +1 -1
  21. package/build/types/real-time-viewer/src/store/UtilStore.d.ts +6 -0
  22. package/build/types/real-time-viewer/src/store/UtilStore.d.ts.map +1 -1
  23. package/build/types/real-time-viewer/src/useRealTimeRenderData.d.ts +0 -1
  24. package/build/types/real-time-viewer/src/useRealTimeRenderData.d.ts.map +1 -1
  25. package/build/umd/{689.real-time-viewer.umd.min.js → 105.real-time-viewer.umd.min.js} +2 -2
  26. package/build/umd/105.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  27. package/build/umd/153.real-time-viewer.umd.min.js +2 -0
  28. package/build/umd/153.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  29. package/build/umd/229.real-time-viewer.umd.min.js +2 -0
  30. package/build/umd/229.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  31. package/build/umd/240.real-time-viewer.umd.min.js +2 -0
  32. package/build/umd/240.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  33. package/build/umd/243.real-time-viewer.umd.min.js +2 -0
  34. package/build/umd/243.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  35. package/build/umd/276.real-time-viewer.umd.min.js +2 -0
  36. package/build/umd/276.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  37. package/build/umd/334.real-time-viewer.umd.min.js +2 -0
  38. package/build/umd/334.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  39. package/build/umd/{951.real-time-viewer.umd.min.js → 351.real-time-viewer.umd.min.js} +2 -2
  40. package/build/umd/351.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  41. package/build/umd/357.real-time-viewer.umd.min.js +2 -0
  42. package/build/umd/357.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  43. package/build/umd/439.real-time-viewer.umd.min.js +2 -0
  44. package/build/umd/439.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  45. package/build/umd/{145.real-time-viewer.umd.min.js → 483.real-time-viewer.umd.min.js} +2 -2
  46. package/build/umd/483.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  47. package/build/umd/499.real-time-viewer.umd.min.js +2 -0
  48. package/build/umd/499.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  49. package/build/umd/522.real-time-viewer.umd.min.js +2 -0
  50. package/build/umd/522.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  51. package/build/umd/526.real-time-viewer.umd.min.js +2 -0
  52. package/build/umd/526.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  53. package/build/umd/607.real-time-viewer.umd.min.js +2 -0
  54. package/build/umd/607.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  55. package/build/umd/631.real-time-viewer.umd.min.js +2 -0
  56. package/build/umd/631.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  57. package/build/umd/632.real-time-viewer.umd.min.js +2 -0
  58. package/build/umd/632.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  59. package/build/umd/653.real-time-viewer.umd.min.js +2 -0
  60. package/build/umd/653.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  61. package/build/umd/{964.real-time-viewer.umd.min.js → 669.real-time-viewer.umd.min.js} +2 -2
  62. package/build/umd/669.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  63. package/build/umd/{595.real-time-viewer.umd.min.js → 754.real-time-viewer.umd.min.js} +2 -2
  64. package/build/umd/754.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  65. package/build/umd/815.real-time-viewer.umd.min.js +2 -0
  66. package/build/umd/815.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  67. package/build/umd/829.real-time-viewer.umd.min.js +2 -0
  68. package/build/umd/829.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  69. package/build/umd/896.real-time-viewer.umd.min.js +2 -0
  70. package/build/umd/896.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  71. package/build/umd/91.real-time-viewer.umd.min.js +2 -0
  72. package/build/umd/91.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  73. package/build/umd/913.real-time-viewer.umd.min.js +2 -0
  74. package/build/umd/913.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  75. package/build/umd/945.real-time-viewer.umd.min.js +2 -0
  76. package/build/umd/945.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  77. package/build/umd/95.real-time-viewer.umd.min.js +2 -0
  78. package/build/umd/95.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  79. package/build/umd/real-time-viewer.umd.min.js +1 -1
  80. package/build/umd/real-time-viewer.umd.min.js.LICENSE.txt +2 -7
  81. package/build/umd/report.html +1 -1
  82. package/package.json +9 -9
  83. package/build/umd/100.real-time-viewer.umd.min.js +0 -2
  84. package/build/umd/100.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  85. package/build/umd/132.real-time-viewer.umd.min.js +0 -2
  86. package/build/umd/132.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  87. package/build/umd/145.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  88. package/build/umd/152.real-time-viewer.umd.min.js +0 -2
  89. package/build/umd/152.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  90. package/build/umd/173.real-time-viewer.umd.min.js +0 -2
  91. package/build/umd/173.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  92. package/build/umd/190.real-time-viewer.umd.min.js +0 -2
  93. package/build/umd/190.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  94. package/build/umd/224.real-time-viewer.umd.min.js +0 -2
  95. package/build/umd/224.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  96. package/build/umd/292.real-time-viewer.umd.min.js +0 -2
  97. package/build/umd/292.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  98. package/build/umd/333.real-time-viewer.umd.min.js +0 -2
  99. package/build/umd/333.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  100. package/build/umd/360.real-time-viewer.umd.min.js +0 -2
  101. package/build/umd/360.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  102. package/build/umd/508.real-time-viewer.umd.min.js +0 -2
  103. package/build/umd/508.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  104. package/build/umd/552.real-time-viewer.umd.min.js +0 -2
  105. package/build/umd/552.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  106. package/build/umd/593.real-time-viewer.umd.min.js +0 -2
  107. package/build/umd/593.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  108. package/build/umd/595.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  109. package/build/umd/662.real-time-viewer.umd.min.js +0 -2
  110. package/build/umd/662.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  111. package/build/umd/664.real-time-viewer.umd.min.js +0 -2
  112. package/build/umd/664.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  113. package/build/umd/67.real-time-viewer.umd.min.js +0 -2
  114. package/build/umd/67.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  115. package/build/umd/689.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  116. package/build/umd/691.real-time-viewer.umd.min.js +0 -2
  117. package/build/umd/691.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  118. package/build/umd/856.real-time-viewer.umd.min.js +0 -2
  119. package/build/umd/856.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  120. package/build/umd/882.real-time-viewer.umd.min.js +0 -2
  121. package/build/umd/882.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  122. package/build/umd/934.real-time-viewer.umd.min.js +0 -2
  123. package/build/umd/934.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  124. package/build/umd/942.real-time-viewer.umd.min.js +0 -2
  125. package/build/umd/942.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  126. package/build/umd/951.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  127. package/build/umd/964.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  128. package/build/umd/974.real-time-viewer.umd.min.js +0 -2
  129. package/build/umd/974.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  130. package/build/umd/98.real-time-viewer.umd.min.js +0 -2
  131. package/build/umd/98.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
@@ -26,7 +26,7 @@ import { Tools, Observable, WebRequest } from '@babylonjs/core/Misc';
26
26
  import { SceneOptimizerOptions, ShadowsOptimization, RenderTargetsOptimization, SceneOptimizer } from '@babylonjs/core/Misc/sceneOptimizer';
27
27
  import { getLogger, DivaError } from '@crystaldesign/diva-core';
28
28
  import { TransformNode } from '@babylonjs/core/Meshes/transformNode';
29
- import { Ellipse, Rectangle, Button, TextBlock, Image, AdvancedDynamicTexture } from '@babylonjs/gui';
29
+ import { Ellipse, Rectangle, Button, TextBlock, AdvancedDynamicTexture, Image } from '@babylonjs/gui';
30
30
  import { Matrix as Matrix$1, Vector3 as Vector3$1 } from '@babylonjs/core/Maths/math';
31
31
  import { Engine } from '@babylonjs/core/Engines/engine';
32
32
  import { Scene } from '@babylonjs/core/scene';
@@ -57,13 +57,13 @@ function GetCameraControls(camera) {
57
57
  var previousTouch;
58
58
  var isZooming = false;
59
59
  var initDistance = 0;
60
- var targetCameraPosition = camera.position;
61
60
  function renderLoop() {
62
- if (!sceneStore.doRenderControlLoop) return;
61
+ if (!sceneStore.doRenderControlLoop || sceneStore.isInitializing || uistore.isStaticBg) return;
62
+ if (sceneStore.cameraTargetPosition.x == 0 && sceneStore.cameraTargetPosition.y == 0 && sceneStore.cameraTargetPosition.z == 0) sceneStore.setCameraTarget();
63
63
  uistore.onMove();
64
64
  var stopRender = true;
65
65
  var delta = sceneStore.scene.getEngine().getDeltaTime();
66
- var deltaCamPos = targetCameraPosition.subtract(camera.position).multiplyByFloats(delta / 100, delta / 100, delta / 100);
66
+ var deltaCamPos = sceneStore.targetCameraPosition.subtract(camera.position).multiplyByFloats(delta / 100, delta / 100, delta / 100);
67
67
  var deltaTarget = sceneStore.cameraTargetPosition.subtract(camera.target).multiplyByFloats(delta / 100, delta / 100, delta / 100);
68
68
  if (Math.abs(deltaCamPos.x) + Math.abs(deltaCamPos.y) + Math.abs(deltaCamPos.z) > 0.01) {
69
69
  camera.position = camera.position.addInPlaceFromFloats(deltaCamPos.x, deltaCamPos.y, deltaCamPos.z);
@@ -98,43 +98,43 @@ function GetCameraControls(camera) {
98
98
  var localUp = Vector3.TransformNormal(Vector3.Up(), camera.getWorldMatrix());
99
99
  localRight = localRight.normalize();
100
100
  localUp = localUp.normalize();
101
- targetCameraPosition = targetCameraPosition.add(localUp.scale(deltaY));
102
- targetCameraPosition = targetCameraPosition.add(localRight.scale(-deltaX));
103
- var newCalculatedTarget = targetCameraPosition.add(camera.getForwardRay().direction.scale(Vector3.Distance(targetCameraPosition, sceneStore.cameraTargetPosition)));
101
+ sceneStore.targetCameraPosition = sceneStore.targetCameraPosition.add(localUp.scale(deltaY));
102
+ sceneStore.targetCameraPosition = sceneStore.targetCameraPosition.add(localRight.scale(-deltaX));
103
+ var newCalculatedTarget = sceneStore.targetCameraPosition.add(camera.getForwardRay().direction.scale(Vector3.Distance(sceneStore.targetCameraPosition, sceneStore.cameraTargetPosition)));
104
104
  sceneStore.cameraTargetPosition = newCalculatedTarget;
105
105
  if (newCalculatedTarget.x > maxCamPosition.x) {
106
- targetCameraPosition.x = camera.position.x;
106
+ sceneStore.targetCameraPosition.x = camera.position.x;
107
107
  sceneStore.cameraTargetPosition.x = maxCamPosition.x;
108
108
  }
109
109
  if (newCalculatedTarget.x < -maxCamPosition.x) {
110
- targetCameraPosition.x = camera.position.x;
110
+ sceneStore.targetCameraPosition.x = camera.position.x;
111
111
  sceneStore.cameraTargetPosition.x = -maxCamPosition.x;
112
112
  }
113
113
  if (newCalculatedTarget.z > maxCamPosition.z) {
114
- targetCameraPosition.z = camera.position.z;
114
+ sceneStore.targetCameraPosition.z = camera.position.z;
115
115
  sceneStore.cameraTargetPosition.z = maxCamPosition.z;
116
116
  }
117
117
  if (newCalculatedTarget.z < -maxCamPosition.z) {
118
- targetCameraPosition.z = camera.position.z;
118
+ sceneStore.targetCameraPosition.z = camera.position.z;
119
119
  sceneStore.cameraTargetPosition.z = -maxCamPosition.z;
120
120
  }
121
121
  }
122
122
  function moveCameraAwayFromTarget(distance) {
123
- var directionVector = targetCameraPosition.subtract(camera.target);
123
+ var directionVector = sceneStore.targetCameraPosition.subtract(camera.target);
124
124
  directionVector.normalize();
125
- var previousDistToTarget = Vector3.Distance(sceneStore.cameraTargetPosition, targetCameraPosition);
126
- var newPosition = targetCameraPosition.add(directionVector.scale(distance * previousDistToTarget));
125
+ var previousDistToTarget = Vector3.Distance(sceneStore.cameraTargetPosition, sceneStore.targetCameraPosition);
126
+ var newPosition = sceneStore.targetCameraPosition.add(directionVector.scale(distance * previousDistToTarget));
127
127
  var distToTarget = Vector3.Distance(sceneStore.cameraTargetPosition, newPosition);
128
128
  if (distToTarget < 0.1) return;
129
- if (distToTarget > 15) return;
130
- targetCameraPosition = newPosition;
129
+ if (distToTarget > 75) return;
130
+ sceneStore.targetCameraPosition = newPosition;
131
131
  }
132
132
  function onRotate(deltaX, deltaY) {
133
133
  function rotateUniversalCamera(deltaX, deltaY) {
134
134
  function calculateAngles() {
135
- var dx = targetCameraPosition.x - sceneStore.cameraTargetPosition.x;
136
- var dy = targetCameraPosition.y - sceneStore.cameraTargetPosition.y;
137
- var dz = targetCameraPosition.z - sceneStore.cameraTargetPosition.z;
135
+ var dx = sceneStore.targetCameraPosition.x - sceneStore.cameraTargetPosition.x;
136
+ var dy = sceneStore.targetCameraPosition.y - sceneStore.cameraTargetPosition.y;
137
+ var dz = sceneStore.targetCameraPosition.z - sceneStore.cameraTargetPosition.z;
138
138
  var distance = Math.sqrt(dx * dx + dy * dy + dz * dz);
139
139
  var alpha = Math.atan2(dz, dx); // angle around the y-axis
140
140
  var beta = Math.acos(dy / distance); // elevation angle
@@ -157,7 +157,7 @@ function GetCameraControls(camera) {
157
157
  var x = sceneStore.cameraTargetPosition.x + distance * Math.sin(beta) * Math.cos(alpha);
158
158
  var y = sceneStore.cameraTargetPosition.y + distance * Math.cos(beta);
159
159
  var z = sceneStore.cameraTargetPosition.z + distance * Math.sin(beta) * Math.sin(alpha);
160
- targetCameraPosition = new Vector3(x, y, z);
160
+ sceneStore.targetCameraPosition = new Vector3(x, y, z);
161
161
  }
162
162
  rotateUniversalCamera(deltaX, deltaY);
163
163
  sceneStore.doRenderControlLoop = true;
@@ -833,10 +833,10 @@ var GridStore = /*#__PURE__*/function () {
833
833
  var lightning = function lightning(diva3durl, scene, cams, isMobile, sceneStore) {
834
834
  var environmentTexture = CubeTexture.CreateFromPrefilteredData(diva3durl + 'environment.env', scene);
835
835
  environmentTexture.gammaSpace = false;
836
- environmentTexture.rotationY = 1.45;
836
+ environmentTexture.rotationY = 1.25663706144;
837
837
  scene.environmentTexture = environmentTexture;
838
838
  scene.createDefaultSkybox(environmentTexture);
839
- scene.environmentIntensity = 1;
839
+ scene.environmentIntensity = 0.5;
840
840
  scene.getMaterialByName('skyBox').alpha = 0;
841
841
  var ssao = new SSAO2RenderingPipeline('ssao', scene, {
842
842
  ssaoRatio: 0.5,
@@ -863,8 +863,8 @@ function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymb
863
863
  function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
864
864
  function createCams(scene, activeViewpoint, viewPoints) {
865
865
  var _useUtilStoreContext = useUtilStoreContext(),
866
- degreesToRadians = _useUtilStoreContext.degreesToRadians,
867
- vector3ToBVector3 = _useUtilStoreContext.vector3ToBVector3;
866
+ vector3ToBVector3 = _useUtilStoreContext.vector3ToBVector3,
867
+ degreesToRadians = _useUtilStoreContext.degreesToRadians;
868
868
  function createCam(_ref) {
869
869
  var name = _ref.name,
870
870
  pos = _ref.pos,
@@ -911,11 +911,22 @@ function createCams(scene, activeViewpoint, viewPoints) {
911
911
  parent: undefined
912
912
  })];
913
913
  }
914
+ function updateCam(camera, scene) {
915
+ if (camera.pos.x == 0 && camera.pos.y == 0 && camera.pos.z == 0) return;
916
+ var utilStore = useUtilStoreContext();
917
+ var sceneStore = useSceneStoreContext();
918
+ var cam = scene.getCameraByName('defaultCam');
919
+ var newPos = utilStore.vector3ToBVector3(camera.pos).multiply(new Vector3(-0.01, 0.01, 0.01));
920
+ cam.position = newPos;
921
+ cam.rotation = utilStore.degreesToRadians(utilStore.vector3ToBVector3(_objectSpread$1(_objectSpread$1({}, camera.rot), {}, {
922
+ x: -camera.rot.x
923
+ })));
924
+ sceneStore.targetCameraPosition = newPos;
925
+ }
914
926
 
915
927
  function _createForOfIteratorHelper$7(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$7(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
916
928
  function _unsupportedIterableToArray$7(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$7(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$7(r, a) : void 0; } }
917
929
  function _arrayLikeToArray$7(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
918
-
919
930
  /*
920
931
  SceneStore
921
932
  Wraps the scene with additional data and methods
@@ -931,6 +942,7 @@ var SceneStore = /*#__PURE__*/function () {
931
942
  _defineProperty(this, "_geos", []);
932
943
  _defineProperty(this, "_sceneConstruct", {});
933
944
  _defineProperty(this, "_hasRendered", false);
945
+ _defineProperty(this, "_hasPlanned", false);
934
946
  _defineProperty(this, "_utilStore", void 0);
935
947
  _defineProperty(this, "_cache", []);
936
948
  _defineProperty(this, "_ssao", undefined);
@@ -945,6 +957,7 @@ var SceneStore = /*#__PURE__*/function () {
945
957
  _defineProperty(this, "_renderControlLoop", undefined);
946
958
  _defineProperty(this, "_doRenderControlLoop", false);
947
959
  _defineProperty(this, "_cameraTargetPosition", Vector3.Zero());
960
+ _defineProperty(this, "_targetCameraPosition", Vector3.Zero());
948
961
  _defineProperty(this, "_selectedElement", void 0);
949
962
  _defineProperty(this, "light", undefined);
950
963
  _defineProperty(this, "changedElements", void 0);
@@ -1093,6 +1106,14 @@ var SceneStore = /*#__PURE__*/function () {
1093
1106
  set: function set(pos) {
1094
1107
  this._cameraTargetPosition = pos;
1095
1108
  }
1109
+ }, {
1110
+ key: "targetCameraPosition",
1111
+ get: function get() {
1112
+ return this._targetCameraPosition;
1113
+ },
1114
+ set: function set(pos) {
1115
+ this._targetCameraPosition = pos;
1116
+ }
1096
1117
  }, {
1097
1118
  key: "isInitializing",
1098
1119
  get: function get() {
@@ -1101,6 +1122,12 @@ var SceneStore = /*#__PURE__*/function () {
1101
1122
  set: function set(isInit) {
1102
1123
  this._isInitializing = isInit;
1103
1124
  }
1125
+ }, {
1126
+ key: "enableSSAO",
1127
+ value: function enableSSAO(enable) {
1128
+ if (!this._ssao) return;
1129
+ this._ssao.totalStrength = enable ? 0.7 : 0;
1130
+ }
1104
1131
  }, {
1105
1132
  key: "getElementByName",
1106
1133
  value: function getElementByName(name) {
@@ -1174,6 +1201,15 @@ var SceneStore = /*#__PURE__*/function () {
1174
1201
  if (!value) throw new Error("can't unrender");
1175
1202
  this._hasRendered = value;
1176
1203
  }
1204
+ }, {
1205
+ key: "hasPlanned",
1206
+ get: function get() {
1207
+ return this._hasPlanned;
1208
+ },
1209
+ set: function set(value) {
1210
+ if (!value) throw new Error("can't set has planned to false");
1211
+ this._hasPlanned = value;
1212
+ }
1177
1213
  }, {
1178
1214
  key: "cams",
1179
1215
  get: function get() {
@@ -1233,6 +1269,7 @@ var SceneStore = /*#__PURE__*/function () {
1233
1269
  Tools.fallbackTexture = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='; // blank white image
1234
1270
  this.setResolution(resolutionDiv, gameCanvas, resolution);
1235
1271
  var cams = createCams(this._scene, initViewpoint);
1272
+ this._targetCameraPosition = cams[0].position;
1236
1273
  lightning(diva3durl, this._scene, cams, this._utilStore.isMobile, this);
1237
1274
  }
1238
1275
  }, {
@@ -1272,6 +1309,18 @@ var SceneStore = /*#__PURE__*/function () {
1272
1309
  geos: []
1273
1310
  });
1274
1311
  }
1312
+ }, {
1313
+ key: "removeElement",
1314
+ value: function removeElement(hqs) {
1315
+ var _this$_sceneConstruct8;
1316
+ var set = (_this$_sceneConstruct8 = this._sceneConstruct.root) === null || _this$_sceneConstruct8 === void 0 ? void 0 : _this$_sceneConstruct8.sets[this._sceneConstruct.root.sets.length - 1];
1317
+ if (!set) {
1318
+ throw new Error("can't register sets before root");
1319
+ }
1320
+ set.elements = set.elements.filter(function (el) {
1321
+ return el.hqs.name != hqs.name;
1322
+ });
1323
+ }
1275
1324
  }, {
1276
1325
  key: "shouldExport",
1277
1326
  value: function shouldExport(node) {
@@ -1342,12 +1391,39 @@ var SceneStore = /*#__PURE__*/function () {
1342
1391
  }, {
1343
1392
  key: "setCameraTarget",
1344
1393
  value: function setCameraTarget() {
1345
- var _this$scene$transform;
1346
- var bbox = (_this$scene$transform = this.scene.transformNodes.find(function (transformNode) {
1394
+ var root = this.scene.transformNodes.find(function (transformNode) {
1347
1395
  return transformNode.name == 'Root';
1348
- })) === null || _this$scene$transform === void 0 ? void 0 : _this$scene$transform.getHierarchyBoundingVectors();
1396
+ });
1397
+ if (!root) return;
1398
+ var bbox = root.getHierarchyBoundingVectors();
1399
+ if (root.getChildren()[0].getChildren()[0].getChildren().length == 0) return; // planning is empty
1349
1400
  var pos = new Vector3((bbox.max.x + bbox.min.x) / 2, (bbox.max.y + bbox.min.y) / 2, (bbox.max.z + bbox.min.z) / 2);
1401
+ this.scene.getCameraByName('defaultCam').target = pos;
1350
1402
  this.cameraTargetPosition = pos;
1403
+
1404
+ // this.doRenderControlLoop = true;
1405
+ }
1406
+ }, {
1407
+ key: "focusElement",
1408
+ value: function focusElement(root) {
1409
+ if (!root) root = this.scene.transformNodes.find(function (transformNode) {
1410
+ return transformNode.name == 'Root';
1411
+ });
1412
+ if (!root) return;
1413
+ var engine = this.scene.getEngine();
1414
+ var cam = this.scene.activeCamera;
1415
+ var bbox = root.getHierarchyBoundingVectors();
1416
+ var center = Vector3.Center(bbox.min, bbox.max);
1417
+ var radius = Vector3.Distance(bbox.min, bbox.max) / 2;
1418
+ if (radius == Infinity) return;
1419
+ var aspectRatio = engine.getRenderWidth() / engine.getRenderHeight();
1420
+ var distance = radius / Math.tan(cam.fov * 0.7);
1421
+ var direction = cam.getDirection(Vector3.Backward());
1422
+ if (aspectRatio > 1) distance *= aspectRatio;
1423
+ var newPosition = center.add(direction.scale(distance));
1424
+ if (newPosition.x == 0 && newPosition.y == 0 && newPosition.z == 0) return;
1425
+ this.cameraTargetPosition = center;
1426
+ this.targetCameraPosition = newPosition;
1351
1427
  this.doRenderControlLoop = true;
1352
1428
  }
1353
1429
  }, {
@@ -1372,64 +1448,76 @@ function _unsupportedIterableToArray$6(r, a) { if (r) { if ("string" == typeof r
1372
1448
  function _arrayLikeToArray$6(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
1373
1449
  function SelHandler (_ref) {
1374
1450
  var onElSelected = _ref.onElSelected;
1375
- var utilStore = useUtilStoreContext();
1451
+ useUtilStoreContext();
1376
1452
  var gridStore = useGridStoreContext();
1377
1453
  var sceneStore = useSceneStoreContext();
1378
1454
  var uiStore = useUIStoreContext();
1455
+ var timeoutId;
1379
1456
  var onSelection = function onSelection(evt) {
1380
- if (evt.event.button == 2) return;
1457
+ if (evt.event.button == 2 || !(evt.type == 16 || evt.type == 64)) return;
1381
1458
  var ray = sceneStore.scene.createPickingRay(sceneStore.scene.pointerX, sceneStore.scene.pointerY, Matrix.Identity(), sceneStore.scene.activeCamera);
1382
1459
  var hit = sceneStore.scene.pickWithRay(ray);
1383
1460
  var pickedElement = false;
1384
1461
  var element = hit === null || hit === void 0 ? void 0 : hit.pickedMesh;
1385
- while (element) {
1386
- var _element, _element2;
1387
- element = (_element = element) === null || _element === void 0 ? void 0 : _element.parent;
1388
- if ((_element2 = element) !== null && _element2 !== void 0 && _element2.name.toLowerCase().startsWith('element')) {
1389
- pickedElement = true;
1390
- if (evt.type == 16) {
1391
- onElementSelected(element);
1392
- return;
1462
+ clearTimeout(timeoutId);
1463
+ timeoutId = setTimeout(function () {
1464
+ while (element) {
1465
+ var _element, _element2;
1466
+ element = (_element = element) === null || _element === void 0 ? void 0 : _element.parent;
1467
+ if ((_element2 = element) !== null && _element2 !== void 0 && _element2.name.toLowerCase().startsWith('element')) {
1468
+ pickedElement = true;
1469
+ if (evt.type == 64 && hit !== null && hit !== void 0 && hit.pickedPoint) {
1470
+ onElementSelected(element, hit, true);
1471
+ return;
1472
+ } else if (evt.type == 16 && hit !== null && hit !== void 0 && hit.pickedPoint) {
1473
+ onElementSelected(element, hit);
1474
+ return;
1475
+ }
1393
1476
  }
1394
1477
  }
1395
- }
1396
- if (hit !== null && hit !== void 0 && hit.pickedPoint) {
1397
- var _hit$pickedMesh;
1398
- if (sceneStore.elements) {
1399
- var _iterator = _createForOfIteratorHelper$6(sceneStore.elements),
1400
- _step;
1401
- try {
1402
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
1403
- var _element3 = _step.value;
1404
- var _element3$bbn$getHier = _element3.bbn.getHierarchyBoundingVectors(),
1405
- min = _element3$bbn$getHier.min,
1406
- max = _element3$bbn$getHier.max;
1407
- var point = hit.pickedPoint;
1408
- if (min.x < point.x && min.z < point.y && max.x > point.x && max.z > point.z && evt.type == 16) {
1409
- pickedElement = true;
1410
- onElementSelected(_element3.bbn, true);
1478
+ if (!pickedElement && hit !== null && hit !== void 0 && hit.pickedPoint) {
1479
+ var _hit$pickedMesh;
1480
+ if (sceneStore.elements) {
1481
+ var _iterator = _createForOfIteratorHelper$6(sceneStore.elements),
1482
+ _step;
1483
+ try {
1484
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
1485
+ var _element3 = _step.value;
1486
+ var _element3$bbn$getHier = _element3.bbn.getHierarchyBoundingVectors(),
1487
+ min = _element3$bbn$getHier.min,
1488
+ max = _element3$bbn$getHier.max;
1489
+ var point = hit.pickedPoint;
1490
+ if (min.x < point.x && min.z < point.y && max.x > point.x && max.z > point.z && evt.type == 16) {
1491
+ pickedElement = true;
1492
+ onElementSelected(_element3.bbn, hit);
1493
+ }
1411
1494
  }
1495
+ } catch (err) {
1496
+ _iterator.e(err);
1497
+ } finally {
1498
+ _iterator.f();
1412
1499
  }
1413
- } catch (err) {
1414
- _iterator.e(err);
1415
- } finally {
1416
- _iterator.f();
1417
1500
  }
1501
+ if (!pickedElement && (hit === null || hit === void 0 || (_hit$pickedMesh = hit.pickedMesh) === null || _hit$pickedMesh === void 0 ? void 0 : _hit$pickedMesh.name) == 'ground' && sceneStore.sets && evt.type == 16) onSetSelected(sceneStore.sets[0].bbn);
1418
1502
  }
1419
- if (!pickedElement && (hit === null || hit === void 0 || (_hit$pickedMesh = hit.pickedMesh) === null || _hit$pickedMesh === void 0 ? void 0 : _hit$pickedMesh.name) == 'ground' && sceneStore.sets && evt.type == 16) onSetSelected(sceneStore.sets[0].bbn);
1420
- }
1503
+ }, 200);
1421
1504
  };
1422
1505
  var onSetSelected = function onSetSelected(elem) {
1423
1506
  gridStore.deselectGrids();
1424
- sceneStore.cameraTargetPosition = utilStore.calculateBBoxCenter(elem);
1425
- sceneStore.doRenderControlLoop = true;
1507
+ sceneStore.focusElement(elem);
1426
1508
  };
1427
- var onElementSelected = function onElementSelected(elem, changeViewPoint) {
1509
+ var onElementSelected = function onElementSelected(elem, hit, doubleClick) {
1428
1510
  var elemName = elem.name.slice(-1);
1429
- if (sceneStore.selectedElement == elemName) {
1430
- sceneStore.cameraTargetPosition = utilStore.calculateBBoxCenter(elem);
1431
- sceneStore.doRenderControlLoop = true;
1511
+ if (doubleClick && sceneStore.selectedElement == elemName && hit.pickedMesh) {
1512
+ var _getParent = function getParent(mesh) {
1513
+ var _mesh$parent;
1514
+ if (((_mesh$parent = mesh.parent) === null || _mesh$parent === void 0 ? void 0 : _mesh$parent.getClassName()) == 'TransformNode') return mesh.parent;
1515
+ return _getParent(mesh.parent);
1516
+ };
1517
+ sceneStore.focusElement(_getParent(hit.pickedMesh));
1432
1518
  return;
1519
+ } else if (doubleClick || sceneStore.selectedElement == elemName) {
1520
+ sceneStore.focusElement(elem);
1433
1521
  }
1434
1522
  sceneStore.selectedElement = elemName;
1435
1523
  uiStore.selectElem(elemName);
@@ -1448,7 +1536,7 @@ function _arrayLikeToArray$5(r, a) { (null == a || a > r.length) && (a = r.lengt
1448
1536
  */
1449
1537
 
1450
1538
  var UIStore = /*#__PURE__*/function () {
1451
- function UIStore(scene, utilStore, uiConfig, requestNewOverlayImage, _overlayImage) {
1539
+ function UIStore(scene, enableSSAO, utilStore, uiConfig, requestNewOverlayImage, _overlayImage) {
1452
1540
  var _this = this;
1453
1541
  _classCallCheck(this, UIStore);
1454
1542
  _defineProperty(this, "_utilStore", void 0);
@@ -1457,10 +1545,10 @@ var UIStore = /*#__PURE__*/function () {
1457
1545
  _defineProperty(this, "_overlayImage", void 0);
1458
1546
  _defineProperty(this, "_requestNewOverlayImage", void 0);
1459
1547
  _defineProperty(this, "_timeoutId", void 0);
1460
- _defineProperty(this, "_outstandingImageCount", void 0);
1461
1548
  _defineProperty(this, "_latestViewpoint", void 0);
1462
1549
  _defineProperty(this, "_guiElements", []);
1463
1550
  _defineProperty(this, "_scene", void 0);
1551
+ _defineProperty(this, "_enableSSAO", void 0);
1464
1552
  _defineProperty(this, "_selectionHandler", void 0);
1465
1553
  _defineProperty(this, "_colors", {
1466
1554
  defaultBg: 'rgba(240, 240, 240, 255)',
@@ -1469,20 +1557,17 @@ var UIStore = /*#__PURE__*/function () {
1469
1557
  hoverBg: 'White'
1470
1558
  });
1471
1559
  _defineProperty(this, "_gridGui", void 0);
1560
+ _defineProperty(this, "_isStaticBg", void 0);
1472
1561
  _defineProperty(this, "updateOverlayImage", function (overlayImage) {
1473
- if (!overlayImage || !_this._scene) return;
1474
- _this._outstandingImageCount--;
1475
- if (_this._outstandingImageCount > 0) return;
1476
- if (_this._overlayImage) _this._overlayImage.source = overlayImage;else {
1477
- _this._overlayImage = new Image('overlayImage', overlayImage);
1478
- _this._overlayImage.width = '100%';
1479
- _this._overlayImage.height = '100%';
1480
- _this._overlayImage.alpha = 1;
1481
- _this._gui.addControl(_this._overlayImage);
1482
- }
1562
+ var _this$_overlayImage;
1563
+ if (!overlayImage || !_this._scene || ((_this$_overlayImage = _this._overlayImage) === null || _this$_overlayImage === void 0 ? void 0 : _this$_overlayImage.source) == overlayImage.base64) return;
1564
+ _this._isStaticBg = overlayImage.isStaticBg;
1565
+ _this._overlayImage.source = overlayImage.base64;
1483
1566
  _this._overlayImage.isVisible = true;
1567
+ _this._enableSSAO(false);
1484
1568
  });
1485
1569
  this._scene = scene;
1570
+ this._enableSSAO = enableSSAO;
1486
1571
  this._utilStore = utilStore;
1487
1572
  this._gui = AdvancedDynamicTexture.CreateFullscreenUI('UI');
1488
1573
  this._gui.renderScale = 1;
@@ -1496,10 +1581,24 @@ var UIStore = /*#__PURE__*/function () {
1496
1581
  this._colors.defaultBg = '#dfdfdf';
1497
1582
  this._colors.selectedBg = '#db3433';
1498
1583
  }
1499
- this._outstandingImageCount = 0;
1500
- if (_overlayImage) this.updateOverlayImage(_overlayImage);
1584
+ this._isStaticBg = _overlayImage === null || _overlayImage === void 0 ? void 0 : _overlayImage.isStaticBg;
1585
+ if (_overlayImage) {
1586
+ this._overlayImage = new Image('overlayImage', _overlayImage.base64);
1587
+ this._overlayImage.width = '100%';
1588
+ this._overlayImage.height = '100%';
1589
+ this._overlayImage.alpha = 1;
1590
+ this._gui.addControl(this._overlayImage);
1591
+ this._overlayImage.source = _overlayImage.base64;
1592
+ this._overlayImage.isVisible = true;
1593
+ this._enableSSAO(false);
1594
+ }
1501
1595
  }
1502
1596
  return _createClass(UIStore, [{
1597
+ key: "isStaticBg",
1598
+ get: function get() {
1599
+ return !!this._isStaticBg;
1600
+ }
1601
+ }, {
1503
1602
  key: "initSelectionHandler",
1504
1603
  value: function initSelectionHandler(onElementSelected) {
1505
1604
  var _this2 = this;
@@ -1673,8 +1772,7 @@ var UIStore = /*#__PURE__*/function () {
1673
1772
  dbt.width = this._uiConfig.templateConfig == 'standard' ? '40px' : '60%';
1674
1773
  dbt.height = this._uiConfig.templateConfig == 'standard' ? '40px' : '70%';
1675
1774
  dbt.onPointerClickObservable.add(function () {
1676
- var _this6$_utilStore$vie;
1677
- return (_this6$_utilStore$vie = _this6._utilStore.viewHandler) === null || _this6$_utilStore$vie === void 0 ? void 0 : _this6$_utilStore$vie.viewPlannerHandler.onElementDeleted(setId, elementId);
1775
+ return _this6._utilStore.onElementDeleted(setId, elementId);
1678
1776
  });
1679
1777
  if (this._uiConfig.templateConfig == 'standard') dtarget.linkOffsetY = -48;
1680
1778
  dtarget.addControl(dbt);
@@ -1704,6 +1802,8 @@ var UIStore = /*#__PURE__*/function () {
1704
1802
  value: function onMove() {
1705
1803
  if (!this._overlayImage) return;
1706
1804
  this._overlayImage.isVisible = false;
1805
+ this._enableSSAO(true);
1806
+ this._utilStore.updateCam = false;
1707
1807
  }
1708
1808
  }, {
1709
1809
  key: "requestNewOverlayImage",
@@ -1716,9 +1816,11 @@ var UIStore = /*#__PURE__*/function () {
1716
1816
  var _this7$_requestNewOve;
1717
1817
  if (JSON.stringify(viewpoint) == JSON.stringify(_this7._latestViewpoint)) {
1718
1818
  _this7._overlayImage.isVisible = true;
1819
+ _this7._enableSSAO(false);
1719
1820
  return;
1720
1821
  }
1721
- _this7._outstandingImageCount++;
1822
+ _this7._utilStore.addOutstandingImage();
1823
+ _this7._utilStore.updateCam = true;
1722
1824
  _this7._latestViewpoint = viewpoint;
1723
1825
  (_this7$_requestNewOve = _this7._requestNewOverlayImage) === null || _this7$_requestNewOve === void 0 || _this7$_requestNewOve.call(_this7, viewpoint);
1724
1826
  }, 500);
@@ -1735,6 +1837,8 @@ var UtilStore = /*#__PURE__*/function () {
1735
1837
  _classCallCheck(this, UtilStore);
1736
1838
  _defineProperty(this, "_isMobile", void 0);
1737
1839
  _defineProperty(this, "_rtvAnalyzeData", []);
1840
+ _defineProperty(this, "_outstandingImageCount", void 0);
1841
+ _defineProperty(this, "_updateCam", void 0);
1738
1842
  _defineProperty(this, "_viewHandler", void 0);
1739
1843
  _defineProperty(this, "calculateBBoxCenter", function (ob) {
1740
1844
  var boundingBox = ob.getHierarchyBoundingVectors();
@@ -1758,6 +1862,8 @@ var UtilStore = /*#__PURE__*/function () {
1758
1862
  });
1759
1863
  this._isMobile = !!isMobile;
1760
1864
  this._viewHandler = viewHandler;
1865
+ this._outstandingImageCount = 0;
1866
+ this._updateCam = true;
1761
1867
  }
1762
1868
  return _createClass(UtilStore, [{
1763
1869
  key: "isMobile",
@@ -1775,6 +1881,31 @@ var UtilStore = /*#__PURE__*/function () {
1775
1881
  var _this$_viewHandler;
1776
1882
  return (_this$_viewHandler = this._viewHandler) === null || _this$_viewHandler === void 0 ? void 0 : _this$_viewHandler.tabGroupState.curTabGroup.key;
1777
1883
  }
1884
+ }, {
1885
+ key: "updateCam",
1886
+ set: function set(doUpdateCam) {
1887
+ this._updateCam = doUpdateCam;
1888
+ }
1889
+ }, {
1890
+ key: "updateWithUnityData",
1891
+ get: function get() {
1892
+ var isNotOutStandingImage = this._outstandingImageCount > 0;
1893
+ if (isNotOutStandingImage) this._outstandingImageCount--;
1894
+ return !isNotOutStandingImage && this._updateCam;
1895
+ }
1896
+ }, {
1897
+ key: "onElementDeleted",
1898
+ value: function onElementDeleted(setId, elementId) {
1899
+ var _this$viewHandler;
1900
+ this.addOutstandingImage();
1901
+ (_this$viewHandler = this.viewHandler) === null || _this$viewHandler === void 0 || _this$viewHandler.viewPlannerHandler.onElementDeleted(setId, elementId);
1902
+ this._updateCam = true;
1903
+ }
1904
+ }, {
1905
+ key: "addOutstandingImage",
1906
+ value: function addOutstandingImage() {
1907
+ this._outstandingImageCount++;
1908
+ }
1778
1909
  }, {
1779
1910
  key: "disableElementRows",
1780
1911
  value: function disableElementRows(element, cache) {
@@ -1899,7 +2030,7 @@ var unregisterContext = function unregisterContext() {
1899
2030
  var registerContext = function registerContext(scene, hqRenderScript, apiConfig, jwt, viewHandler, onMissingGeo, requestNewOverlayImage, overlayImage, uiConfig) {
1900
2031
  var utilStore = new UtilStore(false, viewHandler);
1901
2032
  var sceneStore = new SceneStore(scene, hqRenderScript, utilStore, apiConfig, jwt, onMissingGeo);
1902
- var uiStore = new UIStore(scene, utilStore, uiConfig, requestNewOverlayImage, overlayImage);
2033
+ var uiStore = new UIStore(scene, sceneStore.enableSSAO.bind(sceneStore), utilStore, uiConfig, requestNewOverlayImage, overlayImage);
1903
2034
  return _context = {
1904
2035
  utilStore: utilStore,
1905
2036
  sceneStore: sceneStore,
@@ -2676,6 +2807,7 @@ var buildScene = function buildScene(_ref) {
2676
2807
  }
2677
2808
  if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.name) == 'Wohnzimmer') sceneStore.addSet(node, hqsNode);
2678
2809
  if (node !== null && node !== void 0 && node.name.startsWith('Element')) {
2810
+ sceneStore.hasPlanned = true;
2679
2811
  sceneStore.addElement(node, hqsNode);
2680
2812
  curElement = hqsNode;
2681
2813
  }
@@ -2732,7 +2864,6 @@ var buildScene = function buildScene(_ref) {
2732
2864
  }
2733
2865
  }
2734
2866
  recursiveIteration(startNode, parentNode);
2735
- sceneStore.setCameraTarget();
2736
2867
  sceneStore.cache = cachedAssets;
2737
2868
  };
2738
2869
 
@@ -2881,19 +3012,21 @@ function shadow() {
2881
3012
  var parser = /*#__PURE__*/function () {
2882
3013
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
2883
3014
  var _changedElements$upda;
2884
- var sceneStore, hasRendered, hqRenderScript, scene, cache, changedElements, utilStore, _yield$findAssets, cacheGroup, newCache, _changedElements$upda2;
3015
+ var sceneStore, hasRendered, hqRenderScript, scene, cache, changedElements, utilStore, wasPlanned, elementCount, _yield$findAssets, cacheGroup, newCache, _changedElements$upda2;
2885
3016
  return _regeneratorRuntime.wrap(function _callee$(_context) {
2886
3017
  while (1) switch (_context.prev = _context.next) {
2887
3018
  case 0:
2888
3019
  sceneStore = useSceneStoreContext();
2889
3020
  hasRendered = sceneStore.hasRendered, hqRenderScript = sceneStore.hqRenderScript, scene = sceneStore.scene, cache = sceneStore.cache, changedElements = sceneStore.changedElements;
2890
- utilStore = useUtilStoreContext(); //disable elementrows from old cache
3021
+ utilStore = useUtilStoreContext();
3022
+ wasPlanned = sceneStore.hasPlanned;
3023
+ elementCount = sceneStore.elements.length; //disable elementrows from old cache
2891
3024
  changedElements === null || changedElements === void 0 || (_changedElements$upda = changedElements.updatedElements) === null || _changedElements$upda === void 0 || _changedElements$upda.forEach(function (el) {
2892
3025
  return utilStore.disableElementRows(el.name, cache);
2893
3026
  });
2894
- _context.next = 6;
3027
+ _context.next = 8;
2895
3028
  return findAssets(hqRenderScript.assets, cache);
2896
- case 6:
3029
+ case 8:
2897
3030
  _yield$findAssets = _context.sent;
2898
3031
  cacheGroup = _yield$findAssets.cacheGroup;
2899
3032
  newCache = _yield$findAssets.newCache;
@@ -2901,8 +3034,8 @@ var parser = /*#__PURE__*/function () {
2901
3034
  changedElements.deletedElements.forEach(function (deletedElement) {
2902
3035
  var _scene$getTransformNo;
2903
3036
  (_scene$getTransformNo = scene.getTransformNodeByName(deletedElement.name)) === null || _scene$getTransformNo === void 0 || _scene$getTransformNo.dispose();
3037
+ sceneStore.removeElement(deletedElement);
2904
3038
  });
2905
- sceneStore.setCameraTarget();
2906
3039
  }
2907
3040
  if (changedElements && changedElements.updatedElements && changedElements.updatedElements.length > 0) {
2908
3041
  (_changedElements$upda2 = changedElements.updatedElements) === null || _changedElements$upda2 === void 0 || _changedElements$upda2.forEach(function (updatedElement) {
@@ -2930,7 +3063,8 @@ var parser = /*#__PURE__*/function () {
2930
3063
  }
2931
3064
  utilStore.setRTVAnalyzeData();
2932
3065
  deacCache(cacheGroup);
2933
- case 13:
3066
+ if (wasPlanned && elementCount != sceneStore.elements.length) sceneStore.focusElement();
3067
+ case 16:
2934
3068
  case "end":
2935
3069
  return _context.stop();
2936
3070
  }
@@ -3015,7 +3149,7 @@ function useRealTimeRenderData (_ref) {
3015
3149
  return _context2.abrupt("return");
3016
3150
  case 2:
3017
3151
  sceneStore.isInitializing = true;
3018
- actions.toggleLoading('buildScene', false, true);
3152
+ if (!overlayImage) actions.toggleLoading('buildScene', false, true);
3019
3153
  if (sceneStore.hasRendered) {
3020
3154
  _context2.next = 11;
3021
3155
  break;
@@ -3051,7 +3185,7 @@ function useRealTimeRenderData (_ref) {
3051
3185
  break;
3052
3186
  }
3053
3187
  if (elementsInfo) uiStore.initGui(callbacks.onElementSelected, sceneStore.elements, elementsInfo);
3054
- actions.toggleLoading('buildScene', false, false);
3188
+ if (!overlayImage) actions.toggleLoading('buildScene', false, false);
3055
3189
  sceneStore.isInitializing = false;
3056
3190
  return _context2.abrupt("return");
3057
3191
  case 17:
@@ -3083,13 +3217,13 @@ function useRealTimeRenderData (_ref) {
3083
3217
  var _callbacks$setGlb;
3084
3218
  if (res) (_callbacks$setGlb = callbacks.setGlb) === null || _callbacks$setGlb === void 0 || _callbacks$setGlb.call(callbacks, URL.createObjectURL(res.glTFFiles['fileName.glb']));
3085
3219
  });
3220
+ } else {
3221
+ LOG.debug('callbacks.setGlb is undefined');
3086
3222
  }
3087
3223
  if (!sceneStore.hasRendered) {
3088
3224
  sceneStore.scene.getEngine().runRenderLoop(renderLoop);
3089
3225
  sceneStore.hasRendered = true;
3090
3226
  }
3091
-
3092
- // sceneStore.scene.debugLayer?.show();
3093
3227
  sceneStore.scene.onAfterRenderObservable.add(onFirstFrame);
3094
3228
  LOG.successTransaction('BUILD_SCENE');
3095
3229
  case 34:
@@ -3102,9 +3236,10 @@ function useRealTimeRenderData (_ref) {
3102
3236
  }
3103
3237
  function onFirstFrame() {
3104
3238
  var _callbacks$onInitiali2, _sceneStore;
3239
+ // sceneStore.scene.debugLayer!.show();
3105
3240
  sceneStore.isInitializing = false;
3106
3241
  sceneStore.scene.onAfterRenderObservable.removeCallback(onFirstFrame);
3107
- actions.toggleLoading('buildScene', false, false);
3242
+ if (!overlayImage) actions.toggleLoading('buildScene', false, false);
3108
3243
  (_callbacks$onInitiali2 = callbacks.onInitialized) === null || _callbacks$onInitiali2 === void 0 || _callbacks$onInitiali2.call(callbacks);
3109
3244
  (_sceneStore = sceneStore) === null || _sceneStore === void 0 || _sceneStore.optimizeScene();
3110
3245
  }
@@ -3142,7 +3277,8 @@ function useRealTimeRenderData (_ref) {
3142
3277
  }
3143
3278
  engine = new Engine(gameCanvas.current, true, {
3144
3279
  antialias: true,
3145
- stencil: true
3280
+ stencil: false,
3281
+ audioEngine: false
3146
3282
  }, true);
3147
3283
  engine.renderEvenInBackground = renderInBackground;
3148
3284
  engine.disablePerformanceMonitorInBackground = true;
@@ -3168,7 +3304,9 @@ function useRealTimeRenderData (_ref) {
3168
3304
  });
3169
3305
  case 17:
3170
3306
  resize = function resize() {
3171
- scene.getEngine().resize();
3307
+ if (inBackground || !scene || !scene.getEngine()) return;
3308
+ if (sceneStore.hasPlanned) sceneStore.doRenderControlLoop = true;
3309
+ return scene.getEngine().resize();
3172
3310
  };
3173
3311
  if (window) {
3174
3312
  window.addEventListener('resize', resize);
@@ -3194,7 +3332,9 @@ function useRealTimeRenderData (_ref) {
3194
3332
  asyncUseEffect();
3195
3333
  }, []);
3196
3334
  useEffect(function () {
3335
+ if (!utilStore.updateWithUnityData) return;
3197
3336
  if (overlayImage && uiStore) uiStore.updateOverlayImage(overlayImage);
3337
+ if (sceneStore && sceneStore.scene.activeCamera) updateCam(sceneStore.hqRenderScript.cams[0], sceneStore.scene);
3198
3338
  }, [overlayImage]);
3199
3339
  useEffect(function () {
3200
3340
  if (inBackground) {
@@ -3432,8 +3572,9 @@ var RealTimeRenderer = /*#__PURE__*/memo(function (props) {
3432
3572
  ref: resolutionDiv,
3433
3573
  style: {
3434
3574
  position: 'absolute',
3575
+ top: '-70px',
3435
3576
  width: '100%',
3436
- height: '100%',
3577
+ height: 'calc(100% + 70px)',
3437
3578
  backgroundColor: 'white',
3438
3579
  zIndex: 2
3439
3580
  },
@@ -3462,7 +3603,8 @@ var RealTimeRenderer = /*#__PURE__*/memo(function (props) {
3462
3603
  })]
3463
3604
  });
3464
3605
  }, function (prevProps, curProps) {
3465
- if (prevProps.overlayImage != curProps.overlayImage) return false;
3606
+ var _prevProps$overlayIma, _curProps$overlayImag, _prevProps$overlayIma2, _curProps$overlayImag2;
3607
+ if (((_prevProps$overlayIma = prevProps.overlayImage) === null || _prevProps$overlayIma === void 0 ? void 0 : _prevProps$overlayIma.base64) != ((_curProps$overlayImag = curProps.overlayImage) === null || _curProps$overlayImag === void 0 ? void 0 : _curProps$overlayImag.base64) || ((_prevProps$overlayIma2 = prevProps.overlayImage) === null || _prevProps$overlayIma2 === void 0 ? void 0 : _prevProps$overlayIma2.isStaticBg) != ((_curProps$overlayImag2 = curProps.overlayImage) === null || _curProps$overlayImag2 === void 0 ? void 0 : _curProps$overlayImag2.isStaticBg)) return false;
3466
3608
  if (prevProps.renderjob != curProps.renderjob) return false;
3467
3609
  if (JSON.stringify(prevProps.elementsInfo) != JSON.stringify(curProps.elementsInfo)) return false;
3468
3610
  if (prevProps.inBackground != curProps.inBackground) return false;