@crystaldesign/real-time-viewer 24.12.0-beta.9 → 24.13.0-beta.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 (224) hide show
  1. package/build/esm/index.js +303 -119
  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/controls/index.d.ts.map +1 -1
  7. package/build/types/real-time-viewer/src/index.d.ts +1 -1
  8. package/build/types/real-time-viewer/src/index.d.ts.map +1 -1
  9. package/build/types/real-time-viewer/src/parser/buildScene/index.d.ts +1 -1
  10. package/build/types/real-time-viewer/src/parser/buildScene/index.d.ts.map +1 -1
  11. package/build/types/real-time-viewer/src/parser/createCams/index.d.ts.map +1 -1
  12. package/build/types/real-time-viewer/src/parser/index.d.ts.map +1 -1
  13. package/build/types/real-time-viewer/src/store/GridStore.d.ts.map +1 -1
  14. package/build/types/real-time-viewer/src/store/SceneStore.d.ts +18 -1
  15. package/build/types/real-time-viewer/src/store/SceneStore.d.ts.map +1 -1
  16. package/build/types/real-time-viewer/src/store/UIStore.d.ts.map +1 -1
  17. package/build/types/real-time-viewer/src/store/UtilStore.d.ts +1 -0
  18. package/build/types/real-time-viewer/src/store/UtilStore.d.ts.map +1 -1
  19. package/build/types/real-time-viewer/src/useRealTimeRenderData.d.ts +0 -1
  20. package/build/types/real-time-viewer/src/useRealTimeRenderData.d.ts.map +1 -1
  21. package/build/umd/1309.real-time-viewer.umd.min.js +2 -0
  22. package/build/umd/1309.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  23. package/build/umd/1447.real-time-viewer.umd.min.js +2 -0
  24. package/build/umd/1447.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  25. package/build/umd/1499.real-time-viewer.umd.min.js +2 -0
  26. package/build/umd/1499.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  27. package/build/umd/1731.real-time-viewer.umd.min.js +2 -0
  28. package/build/umd/1731.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  29. package/build/umd/1781.real-time-viewer.umd.min.js +2 -0
  30. package/build/umd/1781.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  31. package/build/umd/1896.real-time-viewer.umd.min.js +2 -0
  32. package/build/umd/1896.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  33. package/build/umd/2011.real-time-viewer.umd.min.js +2 -0
  34. package/build/umd/2011.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  35. package/build/umd/2439.real-time-viewer.umd.min.js +2 -0
  36. package/build/umd/2439.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  37. package/build/umd/2817.real-time-viewer.umd.min.js +2 -0
  38. package/build/umd/2817.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  39. package/build/umd/2871.real-time-viewer.umd.min.js +2 -0
  40. package/build/umd/2871.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  41. package/build/umd/3116.real-time-viewer.umd.min.js +2 -0
  42. package/build/umd/3116.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  43. package/build/umd/3243.real-time-viewer.umd.min.js +2 -0
  44. package/build/umd/3243.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  45. package/build/umd/3351.real-time-viewer.umd.min.js +2 -0
  46. package/build/umd/3351.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  47. package/build/umd/3456.real-time-viewer.umd.min.js +2 -0
  48. package/build/umd/3456.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  49. package/build/umd/3631.real-time-viewer.umd.min.js +2 -0
  50. package/build/umd/3631.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  51. package/build/umd/3945.real-time-viewer.umd.min.js +2 -0
  52. package/build/umd/3945.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  53. package/build/umd/3956.real-time-viewer.umd.min.js +2 -0
  54. package/build/umd/3956.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  55. package/build/umd/4091.real-time-viewer.umd.min.js +2 -0
  56. package/build/umd/4091.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  57. package/build/umd/410.real-time-viewer.umd.min.js +2 -0
  58. package/build/umd/410.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  59. package/build/umd/4153.real-time-viewer.umd.min.js +2 -0
  60. package/build/umd/4153.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  61. package/build/umd/4248.real-time-viewer.umd.min.js +2 -0
  62. package/build/umd/4248.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  63. package/build/umd/4378.real-time-viewer.umd.min.js +2 -0
  64. package/build/umd/4378.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  65. package/build/umd/4431.real-time-viewer.umd.min.js +2 -0
  66. package/build/umd/4431.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  67. package/build/umd/4542.real-time-viewer.umd.min.js +2 -0
  68. package/build/umd/4542.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  69. package/build/umd/4602.real-time-viewer.umd.min.js +2 -0
  70. package/build/umd/4602.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  71. package/build/umd/4661.real-time-viewer.umd.min.js +2 -0
  72. package/build/umd/4661.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  73. package/build/umd/4669.real-time-viewer.umd.min.js +2 -0
  74. package/build/umd/4669.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  75. package/build/umd/4711.real-time-viewer.umd.min.js +2 -0
  76. package/build/umd/4711.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  77. package/build/umd/4823.real-time-viewer.umd.min.js +2 -0
  78. package/build/umd/4823.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  79. package/build/umd/5462.real-time-viewer.umd.min.js +2 -0
  80. package/build/umd/5462.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  81. package/build/umd/5478.real-time-viewer.umd.min.js +2 -0
  82. package/build/umd/5478.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  83. package/build/umd/5483.real-time-viewer.umd.min.js +2 -0
  84. package/build/umd/5483.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  85. package/build/umd/5555.real-time-viewer.umd.min.js +2 -0
  86. package/build/umd/5555.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  87. package/build/umd/5860.real-time-viewer.umd.min.js +2 -0
  88. package/build/umd/5860.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  89. package/build/umd/5922.real-time-viewer.umd.min.js +2 -0
  90. package/build/umd/5922.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  91. package/build/umd/6095.real-time-viewer.umd.min.js +2 -0
  92. package/build/umd/6095.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  93. package/build/umd/615.real-time-viewer.umd.min.js +2 -0
  94. package/build/umd/615.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  95. package/build/umd/6230.real-time-viewer.umd.min.js +2 -0
  96. package/build/umd/6230.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  97. package/build/umd/6357.real-time-viewer.umd.min.js +2 -0
  98. package/build/umd/6357.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  99. package/build/umd/6373.real-time-viewer.umd.min.js +2 -0
  100. package/build/umd/6373.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  101. package/build/umd/653.real-time-viewer.umd.min.js +2 -0
  102. package/build/umd/653.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  103. package/build/umd/6656.real-time-viewer.umd.min.js +2 -0
  104. package/build/umd/6656.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  105. package/build/umd/6829.real-time-viewer.umd.min.js +2 -0
  106. package/build/umd/6829.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  107. package/build/umd/6912.real-time-viewer.umd.min.js +2 -0
  108. package/build/umd/6912.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  109. package/build/umd/7042.real-time-viewer.umd.min.js +2 -0
  110. package/build/umd/7042.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  111. package/build/umd/710.real-time-viewer.umd.min.js +2 -0
  112. package/build/umd/710.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  113. package/build/umd/7142.real-time-viewer.umd.min.js +2 -0
  114. package/build/umd/7142.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  115. package/build/umd/7229.real-time-viewer.umd.min.js +2 -0
  116. package/build/umd/7229.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  117. package/build/umd/7276.real-time-viewer.umd.min.js +2 -0
  118. package/build/umd/7276.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  119. package/build/umd/7352.real-time-viewer.umd.min.js +2 -0
  120. package/build/umd/7352.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  121. package/build/umd/7501.real-time-viewer.umd.min.js +2 -0
  122. package/build/umd/7501.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  123. package/build/umd/7607.real-time-viewer.umd.min.js +2 -0
  124. package/build/umd/7607.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  125. package/build/umd/7729.real-time-viewer.umd.min.js +2 -0
  126. package/build/umd/7729.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  127. package/build/umd/7751.real-time-viewer.umd.min.js +2 -0
  128. package/build/umd/7751.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  129. package/build/umd/7754.real-time-viewer.umd.min.js +2 -0
  130. package/build/umd/7754.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  131. package/build/umd/8078.real-time-viewer.umd.min.js +2 -0
  132. package/build/umd/8078.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  133. package/build/umd/8105.real-time-viewer.umd.min.js +2 -0
  134. package/build/umd/8105.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  135. package/build/umd/815.real-time-viewer.umd.min.js +2 -0
  136. package/build/umd/815.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  137. package/build/umd/8240.real-time-viewer.umd.min.js +2 -0
  138. package/build/umd/8240.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  139. package/build/umd/8333.real-time-viewer.umd.min.js +2 -0
  140. package/build/umd/8333.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  141. package/build/umd/8526.real-time-viewer.umd.min.js +2 -0
  142. package/build/umd/8526.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  143. package/build/umd/8620.real-time-viewer.umd.min.js +2 -0
  144. package/build/umd/8620.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  145. package/build/umd/8728.real-time-viewer.umd.min.js +2 -0
  146. package/build/umd/8728.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  147. package/build/umd/8729.real-time-viewer.umd.min.js +2 -0
  148. package/build/umd/8729.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  149. package/build/umd/8991.real-time-viewer.umd.min.js +2 -0
  150. package/build/umd/8991.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  151. package/build/umd/9078.real-time-viewer.umd.min.js +2 -0
  152. package/build/umd/9078.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  153. package/build/umd/913.real-time-viewer.umd.min.js +2 -0
  154. package/build/umd/913.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  155. package/build/umd/930.real-time-viewer.umd.min.js +2 -0
  156. package/build/umd/930.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  157. package/build/umd/9334.real-time-viewer.umd.min.js +2 -0
  158. package/build/umd/9334.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  159. package/build/umd/9383.real-time-viewer.umd.min.js +2 -0
  160. package/build/umd/9383.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  161. package/build/umd/9568.real-time-viewer.umd.min.js +2 -0
  162. package/build/umd/9568.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  163. package/build/umd/9712.real-time-viewer.umd.min.js +2 -0
  164. package/build/umd/9712.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  165. package/build/umd/9884.real-time-viewer.umd.min.js +2 -0
  166. package/build/umd/9884.real-time-viewer.umd.min.js.LICENSE.txt +1 -0
  167. package/build/umd/real-time-viewer.umd.min.js +1 -1
  168. package/build/umd/real-time-viewer.umd.min.js.LICENSE.txt +2 -7
  169. package/build/umd/report.html +1 -1
  170. package/package.json +19 -19
  171. package/build/umd/100.real-time-viewer.umd.min.js +0 -2
  172. package/build/umd/100.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  173. package/build/umd/132.real-time-viewer.umd.min.js +0 -2
  174. package/build/umd/132.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  175. package/build/umd/145.real-time-viewer.umd.min.js +0 -2
  176. package/build/umd/145.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  177. package/build/umd/152.real-time-viewer.umd.min.js +0 -2
  178. package/build/umd/152.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  179. package/build/umd/173.real-time-viewer.umd.min.js +0 -2
  180. package/build/umd/173.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  181. package/build/umd/190.real-time-viewer.umd.min.js +0 -2
  182. package/build/umd/190.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  183. package/build/umd/224.real-time-viewer.umd.min.js +0 -2
  184. package/build/umd/224.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  185. package/build/umd/292.real-time-viewer.umd.min.js +0 -2
  186. package/build/umd/292.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  187. package/build/umd/333.real-time-viewer.umd.min.js +0 -2
  188. package/build/umd/333.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  189. package/build/umd/360.real-time-viewer.umd.min.js +0 -2
  190. package/build/umd/360.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  191. package/build/umd/508.real-time-viewer.umd.min.js +0 -2
  192. package/build/umd/508.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  193. package/build/umd/552.real-time-viewer.umd.min.js +0 -2
  194. package/build/umd/552.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  195. package/build/umd/593.real-time-viewer.umd.min.js +0 -2
  196. package/build/umd/593.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  197. package/build/umd/595.real-time-viewer.umd.min.js +0 -2
  198. package/build/umd/595.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  199. package/build/umd/662.real-time-viewer.umd.min.js +0 -2
  200. package/build/umd/662.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  201. package/build/umd/664.real-time-viewer.umd.min.js +0 -2
  202. package/build/umd/664.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  203. package/build/umd/67.real-time-viewer.umd.min.js +0 -2
  204. package/build/umd/67.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  205. package/build/umd/689.real-time-viewer.umd.min.js +0 -2
  206. package/build/umd/689.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  207. package/build/umd/691.real-time-viewer.umd.min.js +0 -2
  208. package/build/umd/691.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  209. package/build/umd/856.real-time-viewer.umd.min.js +0 -2
  210. package/build/umd/856.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  211. package/build/umd/882.real-time-viewer.umd.min.js +0 -2
  212. package/build/umd/882.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  213. package/build/umd/934.real-time-viewer.umd.min.js +0 -2
  214. package/build/umd/934.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  215. package/build/umd/942.real-time-viewer.umd.min.js +0 -2
  216. package/build/umd/942.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  217. package/build/umd/951.real-time-viewer.umd.min.js +0 -2
  218. package/build/umd/951.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  219. package/build/umd/964.real-time-viewer.umd.min.js +0 -2
  220. package/build/umd/964.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  221. package/build/umd/974.real-time-viewer.umd.min.js +0 -2
  222. package/build/umd/974.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
  223. package/build/umd/98.real-time-viewer.umd.min.js +0 -2
  224. package/build/umd/98.real-time-viewer.umd.min.js.LICENSE.txt +0 -1
@@ -27,13 +27,14 @@ import { SceneOptimizerOptions, ShadowsOptimization, RenderTargetsOptimization,
27
27
  import { getLogger, DivaError } from '@crystaldesign/diva-core';
28
28
  import { TransformNode } from '@babylonjs/core/Meshes/transformNode';
29
29
  import { Ellipse, Rectangle, Button, TextBlock, AdvancedDynamicTexture, Image } from '@babylonjs/gui';
30
- import { Matrix as Matrix$1, Vector3 as Vector3$1 } from '@babylonjs/core/Maths/math';
30
+ import { Matrix as Matrix$1, Vector3 as Vector3$1, Frustum } from '@babylonjs/core/Maths/math';
31
31
  import { Engine } from '@babylonjs/core/Engines/engine';
32
32
  import { Scene } from '@babylonjs/core/scene';
33
33
  import { DracoCompression } from '@babylonjs/core/Meshes/Compression/dracoCompression';
34
34
  import { SceneLoader } from '@babylonjs/core/Loading/sceneLoader';
35
35
  import { PBRMetallicRoughnessMaterial } from '@babylonjs/core/Materials/PBR/pbrMetallicRoughnessMaterial';
36
36
  import { DirectionalLight } from '@babylonjs/core/Lights/directionalLight';
37
+ import { BoundingInfo } from '@babylonjs/core/Culling/boundingInfo';
37
38
  import '@babylonjs/loaders/glTF/2.0/';
38
39
  import { jsxs, jsx } from 'react/jsx-runtime';
39
40
 
@@ -59,17 +60,18 @@ function GetCameraControls(camera) {
59
60
  var initDistance = 0;
60
61
  function renderLoop() {
61
62
  if (!sceneStore.doRenderControlLoop || sceneStore.isInitializing || uistore.isStaticBg) return;
63
+ if (sceneStore.cameraTargetPosition.x == 0 && sceneStore.cameraTargetPosition.y == 0 && sceneStore.cameraTargetPosition.z == 0) sceneStore.setCameraTarget();
62
64
  uistore.onMove();
63
65
  var stopRender = true;
64
66
  var delta = sceneStore.scene.getEngine().getDeltaTime();
65
67
  var deltaCamPos = sceneStore.targetCameraPosition.subtract(camera.position).multiplyByFloats(delta / 100, delta / 100, delta / 100);
66
68
  var deltaTarget = sceneStore.cameraTargetPosition.subtract(camera.target).multiplyByFloats(delta / 100, delta / 100, delta / 100);
67
- if (Math.abs(deltaCamPos.x) + Math.abs(deltaCamPos.y) + Math.abs(deltaCamPos.z) > 0.01) {
69
+ if (Math.abs(deltaCamPos.x) + Math.abs(deltaCamPos.y) + Math.abs(deltaCamPos.z) > 0.0001) {
68
70
  camera.position = camera.position.addInPlaceFromFloats(deltaCamPos.x, deltaCamPos.y, deltaCamPos.z);
69
71
  camera.setTarget(sceneStore.cameraTargetPosition);
70
72
  stopRender = false;
71
73
  }
72
- if (Math.abs(deltaTarget.x) + Math.abs(deltaTarget.y) + Math.abs(deltaTarget.z) > 0.01) {
74
+ if (Math.abs(deltaTarget.x) + Math.abs(deltaTarget.y) + Math.abs(deltaTarget.z) > 0.0001) {
73
75
  camera.setTarget(camera.target.addInPlaceFromFloats(deltaTarget.x, deltaTarget.y, deltaTarget.z));
74
76
  stopRender = false;
75
77
  }
@@ -93,6 +95,7 @@ function GetCameraControls(camera) {
93
95
  if (stopRender) sceneStore.doRenderControlLoop = false;
94
96
  }
95
97
  function moveTarget(deltaX, deltaY) {
98
+ sceneStore.isControlledViewpoint = false;
96
99
  var localRight = Vector3.TransformNormal(Vector3.Right(), camera.getWorldMatrix());
97
100
  var localUp = Vector3.TransformNormal(Vector3.Up(), camera.getWorldMatrix());
98
101
  localRight = localRight.normalize();
@@ -125,7 +128,7 @@ function GetCameraControls(camera) {
125
128
  var newPosition = sceneStore.targetCameraPosition.add(directionVector.scale(distance * previousDistToTarget));
126
129
  var distToTarget = Vector3.Distance(sceneStore.cameraTargetPosition, newPosition);
127
130
  if (distToTarget < 0.1) return;
128
- if (distToTarget > 15) return;
131
+ if (distToTarget > 75) return;
129
132
  sceneStore.targetCameraPosition = newPosition;
130
133
  }
131
134
  function onRotate(deltaX, deltaY) {
@@ -338,9 +341,9 @@ function getGridControls(scene, element, selected, elements, selectMesh) {
338
341
  };
339
342
  }
340
343
 
341
- function _createForOfIteratorHelper$8(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$8(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; } } }; }
342
- function _unsupportedIterableToArray$8(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$8(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$8(r, a) : void 0; } }
343
- function _arrayLikeToArray$8(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; }
344
+ function _createForOfIteratorHelper$9(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$9(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; } } }; }
345
+ function _unsupportedIterableToArray$9(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$9(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$9(r, a) : void 0; } }
346
+ function _arrayLikeToArray$9(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; }
344
347
  function Grids () {
345
348
  var utilStore = useUtilStoreContext();
346
349
  var sceneStore = useSceneStoreContext();
@@ -407,7 +410,7 @@ function Grids () {
407
410
  var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2),
408
411
  gridName = _Object$entries2$_i[0];
409
412
  _Object$entries2$_i[1];
410
- var _iterator = _createForOfIteratorHelper$8(plannedPlaceOnGrid.grids[gridName].accessories),
413
+ var _iterator = _createForOfIteratorHelper$9(plannedPlaceOnGrid.grids[gridName].accessories),
411
414
  _step;
412
415
  try {
413
416
  var _loop4 = function _loop4() {
@@ -911,9 +914,11 @@ function createCams(scene, activeViewpoint, viewPoints) {
911
914
  })];
912
915
  }
913
916
  function updateCam(camera, scene) {
917
+ if (camera.pos.x == 0 && camera.pos.y == 0 && camera.pos.z == 0) return;
914
918
  var utilStore = useUtilStoreContext();
915
919
  var sceneStore = useSceneStoreContext();
916
920
  var cam = scene.getCameraByName('defaultCam');
921
+ if (camera.pos.x == cam.position.x && camera.pos.y == cam.position.y && camera.pos.z == camera.pos.z) return;
917
922
  var newPos = utilStore.vector3ToBVector3(camera.pos).multiply(new Vector3(-0.01, 0.01, 0.01));
918
923
  cam.position = newPos;
919
924
  cam.rotation = utilStore.degreesToRadians(utilStore.vector3ToBVector3(_objectSpread$1(_objectSpread$1({}, camera.rot), {}, {
@@ -922,9 +927,9 @@ function updateCam(camera, scene) {
922
927
  sceneStore.targetCameraPosition = newPos;
923
928
  }
924
929
 
925
- 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; } } }; }
926
- 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; } }
927
- 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; }
930
+ function _createForOfIteratorHelper$8(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$8(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; } } }; }
931
+ function _unsupportedIterableToArray$8(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$8(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$8(r, a) : void 0; } }
932
+ function _arrayLikeToArray$8(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; }
928
933
  /*
929
934
  SceneStore
930
935
  Wraps the scene with additional data and methods
@@ -940,6 +945,7 @@ var SceneStore = /*#__PURE__*/function () {
940
945
  _defineProperty(this, "_geos", []);
941
946
  _defineProperty(this, "_sceneConstruct", {});
942
947
  _defineProperty(this, "_hasRendered", false);
948
+ _defineProperty(this, "_hasPlanned", false);
943
949
  _defineProperty(this, "_utilStore", void 0);
944
950
  _defineProperty(this, "_cache", []);
945
951
  _defineProperty(this, "_ssao", undefined);
@@ -956,6 +962,9 @@ var SceneStore = /*#__PURE__*/function () {
956
962
  _defineProperty(this, "_cameraTargetPosition", Vector3.Zero());
957
963
  _defineProperty(this, "_targetCameraPosition", Vector3.Zero());
958
964
  _defineProperty(this, "_selectedElement", void 0);
965
+ _defineProperty(this, "_focusedElement", void 0);
966
+ _defineProperty(this, "_isControlledViewpoint", true);
967
+ // if the current viewpoint should automatically change with the planning
959
968
  _defineProperty(this, "light", undefined);
960
969
  _defineProperty(this, "changedElements", void 0);
961
970
  scene.clearColor = new Color4(1, 1, 1, 1);
@@ -1042,6 +1051,37 @@ var SceneStore = /*#__PURE__*/function () {
1042
1051
  set: function set(element) {
1043
1052
  this._selectedElement = element;
1044
1053
  }
1054
+ }, {
1055
+ key: "focusedElement",
1056
+ get: function get() {
1057
+ var _this$_focusedElement;
1058
+ if (!this._focusedElement) {
1059
+ var root = this.scene.getTransformNodeByName('Root');
1060
+ if (root) {
1061
+ var bbox = root.getHierarchyBoundingVectors();
1062
+ this._focusedElement = {
1063
+ id: this.getId(root),
1064
+ name: 'Root',
1065
+ position: root.absolutePosition,
1066
+ size: Vector3.Distance(bbox.min, bbox.max)
1067
+ };
1068
+ }
1069
+ }
1070
+ return (_this$_focusedElement = this._focusedElement) !== null && _this$_focusedElement !== void 0 ? _this$_focusedElement : {
1071
+ id: 'Root',
1072
+ name: 'Root',
1073
+ position: Vector3.Zero(),
1074
+ size: 0
1075
+ };
1076
+ }
1077
+ }, {
1078
+ key: "isControlledViewpoint",
1079
+ get: function get() {
1080
+ return !!this._isControlledViewpoint;
1081
+ },
1082
+ set: function set(value) {
1083
+ this._isControlledViewpoint = value;
1084
+ }
1045
1085
  }, {
1046
1086
  key: "controlRenderLoop",
1047
1087
  get: function get() {
@@ -1070,12 +1110,12 @@ var SceneStore = /*#__PURE__*/function () {
1070
1110
  var _this$_sceneConstruct2;
1071
1111
  var elms = [];
1072
1112
  if (!((_this$_sceneConstruct2 = this._sceneConstruct.root) !== null && _this$_sceneConstruct2 !== void 0 && _this$_sceneConstruct2.sets)) return [];
1073
- var _iterator = _createForOfIteratorHelper$7(this._sceneConstruct.root.sets),
1113
+ var _iterator = _createForOfIteratorHelper$8(this._sceneConstruct.root.sets),
1074
1114
  _step;
1075
1115
  try {
1076
1116
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
1077
1117
  var set = _step.value;
1078
- var _iterator2 = _createForOfIteratorHelper$7(set.elements),
1118
+ var _iterator2 = _createForOfIteratorHelper$8(set.elements),
1079
1119
  _step2;
1080
1120
  try {
1081
1121
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -1130,12 +1170,12 @@ var SceneStore = /*#__PURE__*/function () {
1130
1170
  value: function getElementByName(name) {
1131
1171
  var _this$_sceneConstruct3, _this$_sceneConstruct4;
1132
1172
  if (!((_this$_sceneConstruct3 = this._sceneConstruct.root) !== null && _this$_sceneConstruct3 !== void 0 && _this$_sceneConstruct3.sets)) return undefined;
1133
- var _iterator3 = _createForOfIteratorHelper$7((_this$_sceneConstruct4 = this._sceneConstruct.root) === null || _this$_sceneConstruct4 === void 0 ? void 0 : _this$_sceneConstruct4.sets),
1173
+ var _iterator3 = _createForOfIteratorHelper$8((_this$_sceneConstruct4 = this._sceneConstruct.root) === null || _this$_sceneConstruct4 === void 0 ? void 0 : _this$_sceneConstruct4.sets),
1134
1174
  _step3;
1135
1175
  try {
1136
1176
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
1137
1177
  var set = _step3.value;
1138
- var _iterator4 = _createForOfIteratorHelper$7(set.elements),
1178
+ var _iterator4 = _createForOfIteratorHelper$8(set.elements),
1139
1179
  _step4;
1140
1180
  try {
1141
1181
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
@@ -1160,12 +1200,12 @@ var SceneStore = /*#__PURE__*/function () {
1160
1200
  value: function getElementNameById(id) {
1161
1201
  var _this$_sceneConstruct5, _this$_sceneConstruct6;
1162
1202
  if (!((_this$_sceneConstruct5 = this._sceneConstruct.root) !== null && _this$_sceneConstruct5 !== void 0 && _this$_sceneConstruct5.sets)) return undefined;
1163
- var _iterator5 = _createForOfIteratorHelper$7((_this$_sceneConstruct6 = this._sceneConstruct.root) === null || _this$_sceneConstruct6 === void 0 ? void 0 : _this$_sceneConstruct6.sets),
1203
+ var _iterator5 = _createForOfIteratorHelper$8((_this$_sceneConstruct6 = this._sceneConstruct.root) === null || _this$_sceneConstruct6 === void 0 ? void 0 : _this$_sceneConstruct6.sets),
1164
1204
  _step5;
1165
1205
  try {
1166
1206
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
1167
1207
  var set = _step5.value;
1168
- var _iterator6 = _createForOfIteratorHelper$7(set.elements),
1208
+ var _iterator6 = _createForOfIteratorHelper$8(set.elements),
1169
1209
  _step6;
1170
1210
  try {
1171
1211
  for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
@@ -1198,6 +1238,15 @@ var SceneStore = /*#__PURE__*/function () {
1198
1238
  if (!value) throw new Error("can't unrender");
1199
1239
  this._hasRendered = value;
1200
1240
  }
1241
+ }, {
1242
+ key: "hasPlanned",
1243
+ get: function get() {
1244
+ return this._hasPlanned;
1245
+ },
1246
+ set: function set(value) {
1247
+ if (!value) throw new Error("can't set has planned to false");
1248
+ this._hasPlanned = value;
1249
+ }
1201
1250
  }, {
1202
1251
  key: "cams",
1203
1252
  get: function get() {
@@ -1297,6 +1346,18 @@ var SceneStore = /*#__PURE__*/function () {
1297
1346
  geos: []
1298
1347
  });
1299
1348
  }
1349
+ }, {
1350
+ key: "removeElement",
1351
+ value: function removeElement(hqs) {
1352
+ var _this$_sceneConstruct8;
1353
+ var set = (_this$_sceneConstruct8 = this._sceneConstruct.root) === null || _this$_sceneConstruct8 === void 0 ? void 0 : _this$_sceneConstruct8.sets[this._sceneConstruct.root.sets.length - 1];
1354
+ if (!set) {
1355
+ throw new Error("can't register sets before root");
1356
+ }
1357
+ set.elements = set.elements.filter(function (el) {
1358
+ return el.hqs.name != hqs.name;
1359
+ });
1360
+ }
1300
1361
  }, {
1301
1362
  key: "shouldExport",
1302
1363
  value: function shouldExport(node) {
@@ -1376,8 +1437,49 @@ var SceneStore = /*#__PURE__*/function () {
1376
1437
  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);
1377
1438
  this.scene.getCameraByName('defaultCam').target = pos;
1378
1439
  this.cameraTargetPosition = pos;
1440
+ this._isControlledViewpoint = true;
1379
1441
  // this.doRenderControlLoop = true;
1380
1442
  }
1443
+ }, {
1444
+ key: "getId",
1445
+ value: function getId(ob) {
1446
+ var id = ob.name;
1447
+ while (ob.parent) {
1448
+ id += '.' + ob.name;
1449
+ ob = ob.parent;
1450
+ }
1451
+ return id;
1452
+ }
1453
+ }, {
1454
+ key: "focusElement",
1455
+ value: function focusElement(root) {
1456
+ if (!root) root = this.scene.transformNodes.find(function (transformNode) {
1457
+ return transformNode.name == 'Root';
1458
+ });
1459
+ if (!root) return;
1460
+ var engine = this.scene.getEngine();
1461
+ var cam = this.scene.activeCamera;
1462
+ var bbox = root.getHierarchyBoundingVectors();
1463
+ var center = Vector3.Center(bbox.min, bbox.max);
1464
+ var radius = Vector3.Distance(bbox.min, bbox.max) / 2;
1465
+ if (radius == Infinity) return;
1466
+ var aspectRatio = engine.getRenderWidth() / engine.getRenderHeight();
1467
+ var distance = radius / Math.tan(cam.fov * 0.8);
1468
+ var direction = cam.getDirection(Vector3.Backward());
1469
+ if (aspectRatio > 1) distance *= aspectRatio;
1470
+ var newPosition = center.add(direction.scale(distance));
1471
+ if (newPosition.x == 0 && newPosition.y == 0 && newPosition.z == 0) return;
1472
+ this.cameraTargetPosition = center;
1473
+ this.targetCameraPosition = newPosition;
1474
+ this.doRenderControlLoop = true;
1475
+ this._isControlledViewpoint = true;
1476
+ this._focusedElement = {
1477
+ id: this.getId(root),
1478
+ name: root.id,
1479
+ position: root.absolutePosition,
1480
+ size: Vector3.Distance(bbox.min, bbox.max)
1481
+ };
1482
+ }
1381
1483
  }, {
1382
1484
  key: "getMaxCamPosition",
1383
1485
  value: function getMaxCamPosition() {
@@ -1395,69 +1497,81 @@ var delButton = "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%
1395
1497
 
1396
1498
  var gdelButton = "data:image/svg+xml,%3Csvg%20width%3D%2216%22%20height%3D%2221%22%20viewBox%3D%220%200%2016%2021%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M15.2784%203.0226H10.9717V2.08029C10.9717%201.35784%2010.4151%200.72963%209.71198%200.72963H6.78229C6.10846%200.72963%205.52252%201.32643%205.52252%202.08029V3.0226H1.21588C0.981506%203.0226%200.776428%203.24248%200.776428%203.49376C0.776428%203.74505%200.981506%203.96492%201.21588%203.96492H2.18268V17.7542C2.18268%2019.0734%203.17877%2020.11%204.37994%2020.11H12.1436C13.3741%2020.11%2014.3409%2019.042%2014.3409%2017.7542V3.93351H15.3077C15.5714%203.93351%2015.7764%203.71364%2015.7764%203.46235C15.7764%203.17966%2015.5421%203.0226%2015.2784%203.0226ZM6.43073%202.08029C6.43073%201.829%206.6358%201.67195%206.78229%201.67195H9.71198C9.94635%201.67195%2010.0928%201.86041%2010.0928%202.08029V3.0226H6.43073V2.08029ZM13.462%2017.7228C13.462%2018.508%2012.876%2019.1363%2012.1436%2019.1363H4.37994C3.64752%2019.1363%203.06158%2018.508%203.06158%2017.7228V3.96492H13.462V17.7228Z%22%20fill%3D%22%234A4A4A%22%2F%3E%3Cpath%20d%3D%22M8.68658%206.82326V16.2464C8.68658%2016.5291%208.5108%2016.749%208.24713%2016.749C7.98346%2016.749%207.80768%2016.5291%207.80768%2016.2464V6.82326C7.80768%206.54056%208.04205%206.3521%208.24713%206.3521C8.48151%206.3521%208.68658%206.57197%208.68658%206.82326Z%22%20fill%3D%22%234A4A4A%22%2F%3E%3Cpath%20d%3D%22M11.6456%206.82326V16.2464C11.6456%2016.5291%2011.4405%2016.749%2011.2061%2016.749C10.9717%2016.749%2010.7667%2016.5291%2010.7667%2016.2464V6.82326C10.7667%206.54056%2010.9717%206.3521%2011.2061%206.3521C11.4405%206.3521%2011.6456%206.57197%2011.6456%206.82326Z%22%20fill%3D%22%234A4A4A%22%2F%3E%3Cpath%20d%3D%22M5.78619%206.82326V16.2464C5.78619%2016.5291%205.58112%2016.749%205.34674%2016.749C5.11237%2016.749%204.87799%2016.5291%204.87799%2016.2464V6.82326C4.87799%206.54056%205.08307%206.3521%205.31744%206.3521C5.55182%206.3521%205.78619%206.57197%205.78619%206.82326Z%22%20fill%3D%22%234A4A4A%22%2F%3E%3C%2Fsvg%3E";
1397
1499
 
1398
- function _createForOfIteratorHelper$6(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$6(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; } } }; }
1399
- function _unsupportedIterableToArray$6(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$6(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$6(r, a) : void 0; } }
1400
- 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; }
1500
+ 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; } } }; }
1501
+ 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; } }
1502
+ 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; }
1401
1503
  function SelHandler (_ref) {
1402
1504
  var onElSelected = _ref.onElSelected;
1403
- var utilStore = useUtilStoreContext();
1505
+ useUtilStoreContext();
1404
1506
  var gridStore = useGridStoreContext();
1405
1507
  var sceneStore = useSceneStoreContext();
1406
1508
  var uiStore = useUIStoreContext();
1509
+ var timeoutId;
1407
1510
  var onSelection = function onSelection(evt) {
1408
- if (evt.event.button == 2) return;
1511
+ if (evt.event.button == 2 || !(evt.type == 16 || evt.type == 64)) return;
1409
1512
  var ray = sceneStore.scene.createPickingRay(sceneStore.scene.pointerX, sceneStore.scene.pointerY, Matrix.Identity(), sceneStore.scene.activeCamera);
1410
1513
  var hit = sceneStore.scene.pickWithRay(ray);
1411
1514
  var pickedElement = false;
1412
1515
  var element = hit === null || hit === void 0 ? void 0 : hit.pickedMesh;
1413
- while (element) {
1414
- var _element, _element2;
1415
- element = (_element = element) === null || _element === void 0 ? void 0 : _element.parent;
1416
- if ((_element2 = element) !== null && _element2 !== void 0 && _element2.name.toLowerCase().startsWith('element')) {
1417
- pickedElement = true;
1418
- if (evt.type == 16 && hit !== null && hit !== void 0 && hit.pickedPoint) {
1419
- onElementSelected(element, hit.pickedPoint);
1420
- return;
1516
+ clearTimeout(timeoutId);
1517
+ timeoutId = setTimeout(function () {
1518
+ while (element) {
1519
+ var _element, _element2;
1520
+ element = (_element = element) === null || _element === void 0 ? void 0 : _element.parent;
1521
+ if ((_element2 = element) !== null && _element2 !== void 0 && _element2.name.toLowerCase().startsWith('element')) {
1522
+ pickedElement = true;
1523
+ if (evt.type == 64 && hit !== null && hit !== void 0 && hit.pickedPoint) {
1524
+ onElementSelected(element, hit, true);
1525
+ return;
1526
+ } else if (evt.type == 16 && hit !== null && hit !== void 0 && hit.pickedPoint) {
1527
+ onElementSelected(element, hit);
1528
+ return;
1529
+ }
1421
1530
  }
1422
1531
  }
1423
- }
1424
- if (hit !== null && hit !== void 0 && hit.pickedPoint) {
1425
- var _hit$pickedMesh;
1426
- if (sceneStore.elements) {
1427
- var _iterator = _createForOfIteratorHelper$6(sceneStore.elements),
1428
- _step;
1429
- try {
1430
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
1431
- var _element3 = _step.value;
1432
- var _element3$bbn$getHier = _element3.bbn.getHierarchyBoundingVectors(),
1433
- min = _element3$bbn$getHier.min,
1434
- max = _element3$bbn$getHier.max;
1435
- var point = hit.pickedPoint;
1436
- if (min.x < point.x && min.z < point.y && max.x > point.x && max.z > point.z && evt.type == 16) {
1437
- pickedElement = true;
1438
- onElementSelected(_element3.bbn, point, true);
1532
+ if (!pickedElement && hit !== null && hit !== void 0 && hit.pickedPoint) {
1533
+ var _hit$pickedMesh;
1534
+ if (sceneStore.elements) {
1535
+ var _iterator = _createForOfIteratorHelper$7(sceneStore.elements),
1536
+ _step;
1537
+ try {
1538
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
1539
+ var _element3 = _step.value;
1540
+ var _element3$bbn$getHier = _element3.bbn.getHierarchyBoundingVectors(),
1541
+ min = _element3$bbn$getHier.min,
1542
+ max = _element3$bbn$getHier.max;
1543
+ var point = hit.pickedPoint;
1544
+ if (min.x < point.x && min.z < point.y && max.x > point.x && max.z > point.z && evt.type == 16) {
1545
+ pickedElement = true;
1546
+ onElementSelected(_element3.bbn, hit);
1547
+ }
1439
1548
  }
1549
+ } catch (err) {
1550
+ _iterator.e(err);
1551
+ } finally {
1552
+ _iterator.f();
1440
1553
  }
1441
- } catch (err) {
1442
- _iterator.e(err);
1443
- } finally {
1444
- _iterator.f();
1445
1554
  }
1555
+ 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);
1446
1556
  }
1447
- 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);
1448
- }
1557
+ }, 200);
1449
1558
  };
1450
1559
  var onSetSelected = function onSetSelected(elem) {
1451
1560
  gridStore.deselectGrids();
1452
- sceneStore.cameraTargetPosition = utilStore.calculateBBoxCenter(elem);
1453
- sceneStore.doRenderControlLoop = true;
1561
+ sceneStore.focusElement(elem);
1454
1562
  };
1455
- var onElementSelected = function onElementSelected(elem, target, changeViewPoint) {
1563
+ var onElementSelected = function onElementSelected(elem, hit, doubleClick) {
1456
1564
  var elemName = elem.name.slice(-1);
1457
- if (sceneStore.selectedElement == elemName) {
1458
- sceneStore.cameraTargetPosition = target;
1459
- sceneStore.doRenderControlLoop = true;
1565
+ if (doubleClick && sceneStore.selectedElement == elemName && hit.pickedMesh) {
1566
+ var _getParent = function getParent(mesh) {
1567
+ var _mesh$parent;
1568
+ if (((_mesh$parent = mesh.parent) === null || _mesh$parent === void 0 ? void 0 : _mesh$parent.getClassName()) == 'TransformNode') return mesh.parent;
1569
+ return _getParent(mesh.parent);
1570
+ };
1571
+ sceneStore.focusElement(_getParent(hit.pickedMesh));
1460
1572
  return;
1573
+ } else if (doubleClick || sceneStore.selectedElement == elemName) {
1574
+ sceneStore.focusElement(elem);
1461
1575
  }
1462
1576
  sceneStore.selectedElement = elemName;
1463
1577
  uiStore.selectElem(elemName);
@@ -1468,9 +1582,9 @@ function SelHandler (_ref) {
1468
1582
  };
1469
1583
  }
1470
1584
 
1471
- function _createForOfIteratorHelper$5(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$5(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; } } }; }
1472
- function _unsupportedIterableToArray$5(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$5(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$5(r, a) : void 0; } }
1473
- function _arrayLikeToArray$5(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; }
1585
+ function _createForOfIteratorHelper$6(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$6(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; } } }; }
1586
+ function _unsupportedIterableToArray$6(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$6(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$6(r, a) : void 0; } }
1587
+ 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; }
1474
1588
  /*
1475
1589
  UIStore
1476
1590
  */
@@ -1626,13 +1740,12 @@ var UIStore = /*#__PURE__*/function () {
1626
1740
  var element = _this4._scene.getTransformNodeByName(emnt.bbn.name);
1627
1741
  if (!element) return 0; // continue
1628
1742
  var guiElemLeftBack = new TransformNode('guiElem_' + elementInfo.elementId, _this4._scene);
1629
- var max = element.getHierarchyBoundingVectors().max;
1630
- var min = element.getHierarchyBoundingVectors().min;
1631
- guiElemLeftBack.position = new Vector3(element.absolutePosition.x, max.y, element.absolutePosition.z);
1743
+ var bbox = element.getHierarchyBoundingVectors();
1744
+ guiElemLeftBack.position = new Vector3(bbox.max.x, bbox.max.y, bbox.min.z);
1632
1745
  guiElemRightBack = undefined;
1633
1746
  if (_this4._uiConfig.posTrashIcon == 'TOP_RIGHT_BACK') {
1634
1747
  guiElemRightBack = new TransformNode('guiElem_' + elementInfo.elementId, _this4._scene);
1635
- var pos = new Vector3(min.x, max.y, min.z);
1748
+ var pos = new Vector3(bbox.min.x, bbox.max.y, bbox.min.z);
1636
1749
  guiElemRightBack.position = pos;
1637
1750
  }
1638
1751
  _this4.createGUIButton(guiElemLeftBack, elementInfo.posNr, elementInfo.active, elementInfo.selectable, element.parent.name, elementInfo.elementId, guiElemRightBack);
@@ -1648,7 +1761,7 @@ var UIStore = /*#__PURE__*/function () {
1648
1761
  key: "selectElem",
1649
1762
  value: function selectElem(name) {
1650
1763
  var _this5 = this;
1651
- var _iterator = _createForOfIteratorHelper$5(this._gui.getControlsByType('ellipse')),
1764
+ var _iterator = _createForOfIteratorHelper$6(this._gui.getControlsByType('ellipse')),
1652
1765
  _step;
1653
1766
  try {
1654
1767
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -1712,8 +1825,7 @@ var UIStore = /*#__PURE__*/function () {
1712
1825
  dbt.width = this._uiConfig.templateConfig == 'standard' ? '40px' : '60%';
1713
1826
  dbt.height = this._uiConfig.templateConfig == 'standard' ? '40px' : '70%';
1714
1827
  dbt.onPointerClickObservable.add(function () {
1715
- var _this6$_utilStore$vie;
1716
- return (_this6$_utilStore$vie = _this6._utilStore.viewHandler) === null || _this6$_utilStore$vie === void 0 ? void 0 : _this6$_utilStore$vie.viewPlannerHandler.onElementDeleted(setId, elementId);
1828
+ return _this6._utilStore.onElementDeleted(setId, elementId);
1717
1829
  });
1718
1830
  if (this._uiConfig.templateConfig == 'standard') dtarget.linkOffsetY = -48;
1719
1831
  dtarget.addControl(dbt);
@@ -1834,6 +1946,14 @@ var UtilStore = /*#__PURE__*/function () {
1834
1946
  if (isNotOutStandingImage) this._outstandingImageCount--;
1835
1947
  return !isNotOutStandingImage && this._updateCam;
1836
1948
  }
1949
+ }, {
1950
+ key: "onElementDeleted",
1951
+ value: function onElementDeleted(setId, elementId) {
1952
+ var _this$viewHandler;
1953
+ this.addOutstandingImage();
1954
+ (_this$viewHandler = this.viewHandler) === null || _this$viewHandler === void 0 || _this$viewHandler.viewPlannerHandler.onElementDeleted(setId, elementId);
1955
+ this._updateCam = true;
1956
+ }
1837
1957
  }, {
1838
1958
  key: "addOutstandingImage",
1839
1959
  value: function addOutstandingImage() {
@@ -1988,9 +2108,9 @@ var useUtilStoreContext = function useUtilStoreContext() {
1988
2108
  return (_context5 = _context) === null || _context5 === void 0 ? void 0 : _context5.utilStore;
1989
2109
  };
1990
2110
 
1991
- function _createForOfIteratorHelper$4(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$4(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; } } }; }
1992
- function _unsupportedIterableToArray$4(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$4(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$4(r, a) : void 0; } }
1993
- function _arrayLikeToArray$4(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; }
2111
+ function _createForOfIteratorHelper$5(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$5(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; } } }; }
2112
+ function _unsupportedIterableToArray$5(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$5(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$5(r, a) : void 0; } }
2113
+ function _arrayLikeToArray$5(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; }
1994
2114
  function caching () {
1995
2115
  var _useSceneStoreContext = useSceneStoreContext(),
1996
2116
  cache = _useSceneStoreContext.cache,
@@ -2005,7 +2125,7 @@ function caching () {
2005
2125
  var updatedElements = (_curElementRoot$nodes = curElementRoot === null || curElementRoot === void 0 || (_curElementRoot$nodes2 = curElementRoot.nodes) === null || _curElementRoot$nodes2 === void 0 ? void 0 : _curElementRoot$nodes2.filter(function (curElement) {
2006
2126
  if ((prevElementRoot === null || prevElementRoot === void 0 ? void 0 : prevElementRoot.nodes) === undefined) return true;
2007
2127
  var didChange = true;
2008
- var _iterator = _createForOfIteratorHelper$4(prevElementRoot.nodes),
2128
+ var _iterator = _createForOfIteratorHelper$5(prevElementRoot.nodes),
2009
2129
  _step;
2010
2130
  try {
2011
2131
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -2030,7 +2150,7 @@ function caching () {
2030
2150
  var prevGeo = (_assets$geos = previousHQRenderScript.assets.geos) === null || _assets$geos === void 0 ? void 0 : _assets$geos[idx];
2031
2151
  if (prevGeo && !(geo.id + geo.name === prevGeo.id + prevGeo.name) && cache !== null && cache !== void 0 && (_cache$idx = cache[idx]) !== null && _cache$idx !== void 0 && (_cache$idx = _cache$idx.geo) !== null && _cache$idx !== void 0 && _cache$idx.onElements) {
2032
2152
  var _cache$idx$geo;
2033
- var _iterator2 = _createForOfIteratorHelper$4((_cache$idx$geo = cache[idx].geo) === null || _cache$idx$geo === void 0 ? void 0 : _cache$idx$geo.onElements),
2153
+ var _iterator2 = _createForOfIteratorHelper$5((_cache$idx$geo = cache[idx].geo) === null || _cache$idx$geo === void 0 ? void 0 : _cache$idx$geo.onElements),
2034
2154
  _step2;
2035
2155
  try {
2036
2156
  var _loop = function _loop() {
@@ -2060,7 +2180,7 @@ function caching () {
2060
2180
  var prevMat = (_assets$mats = previousHQRenderScript.assets.mats) === null || _assets$mats === void 0 ? void 0 : _assets$mats[idx];
2061
2181
  if (prevMat && !(mat.id + mat.name === prevMat.id + prevMat.name) && cache !== null && cache !== void 0 && (_cache$idx2 = cache[idx]) !== null && _cache$idx2 !== void 0 && (_cache$idx2 = _cache$idx2.material) !== null && _cache$idx2 !== void 0 && _cache$idx2.onElements) {
2062
2182
  var _cache$idx$material;
2063
- var _iterator3 = _createForOfIteratorHelper$4((_cache$idx$material = cache[idx].material) === null || _cache$idx$material === void 0 ? void 0 : _cache$idx$material.onElements),
2183
+ var _iterator3 = _createForOfIteratorHelper$5((_cache$idx$material = cache[idx].material) === null || _cache$idx$material === void 0 ? void 0 : _cache$idx$material.onElements),
2064
2184
  _step3;
2065
2185
  try {
2066
2186
  var _loop2 = function _loop2() {
@@ -2091,7 +2211,7 @@ function caching () {
2091
2211
  deletedElements: prevElementRoot === null || prevElementRoot === void 0 || (_prevElementRoot$node = prevElementRoot.nodes) === null || _prevElementRoot$node === void 0 ? void 0 : _prevElementRoot$node.filter(function (prevElement) {
2092
2212
  if ((curElementRoot === null || curElementRoot === void 0 ? void 0 : curElementRoot.nodes) === undefined) return true;
2093
2213
  var wasDeleted = true;
2094
- var _iterator4 = _createForOfIteratorHelper$4(curElementRoot.nodes),
2214
+ var _iterator4 = _createForOfIteratorHelper$5(curElementRoot.nodes),
2095
2215
  _step4;
2096
2216
  try {
2097
2217
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
@@ -2208,9 +2328,9 @@ var customMat = /*#__PURE__*/function () {
2208
2328
  };
2209
2329
  }();
2210
2330
 
2211
- function _createForOfIteratorHelper$3(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$3(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; } } }; }
2212
- function _unsupportedIterableToArray$3(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$3(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$3(r, a) : void 0; } }
2213
- function _arrayLikeToArray$3(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; }
2331
+ function _createForOfIteratorHelper$4(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$4(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; } } }; }
2332
+ function _unsupportedIterableToArray$4(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$4(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$4(r, a) : void 0; } }
2333
+ function _arrayLikeToArray$4(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; }
2214
2334
  getLogger('RealTimeViewer', 'FindAsset');
2215
2335
  function findAssets(_x, _x2) {
2216
2336
  return _findAssets.apply(this, arguments);
@@ -2324,7 +2444,7 @@ function _findAssets() {
2324
2444
  });
2325
2445
  geo.material = mat.mat;
2326
2446
  oldMat = sceneStore.scene.getMaterialByUniqueID(oldMatId);
2327
- _iterator3 = _createForOfIteratorHelper$3(oldMat.getBindedMeshes());
2447
+ _iterator3 = _createForOfIteratorHelper$4(oldMat.getBindedMeshes());
2328
2448
  try {
2329
2449
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
2330
2450
  mesh = _step3.value;
@@ -2339,7 +2459,7 @@ function _findAssets() {
2339
2459
  _context.next = 37;
2340
2460
  break;
2341
2461
  case 20:
2342
- _iterator4 = _createForOfIteratorHelper$3(geo.getChildMeshes());
2462
+ _iterator4 = _createForOfIteratorHelper$4(geo.getChildMeshes());
2343
2463
  _context.prev = 21;
2344
2464
  _iterator4.s();
2345
2465
  case 23:
@@ -2384,7 +2504,7 @@ function _findAssets() {
2384
2504
  //TODO: tiling with Node Materials, multiple Textures
2385
2505
 
2386
2506
  //! clean std. materials from importing (.00x)
2387
- _iterator = _createForOfIteratorHelper$3(assets.geos);
2507
+ _iterator = _createForOfIteratorHelper$4(assets.geos);
2388
2508
  _context5.prev = 11;
2389
2509
  _loop = /*#__PURE__*/_regeneratorRuntime.mark(function _loop() {
2390
2510
  var geo, path, mesh, cachedGeo;
@@ -2466,7 +2586,7 @@ function _findAssets() {
2466
2586
  return _context5.finish(26);
2467
2587
  case 29:
2468
2588
  // Und alle materialien erstellt
2469
- _iterator2 = _createForOfIteratorHelper$3(assets.mats);
2589
+ _iterator2 = _createForOfIteratorHelper$4(assets.mats);
2470
2590
  _context5.prev = 30;
2471
2591
  _loop2 = /*#__PURE__*/_regeneratorRuntime.mark(function _loop2() {
2472
2592
  var mat, _nwCache$material;
@@ -2584,7 +2704,7 @@ function _createOrGetMaterial() {
2584
2704
  _context6.next = 18;
2585
2705
  break;
2586
2706
  }
2587
- _iterator5 = _createForOfIteratorHelper$3(scene.materials);
2707
+ _iterator5 = _createForOfIteratorHelper$4(scene.materials);
2588
2708
  _context6.prev = 2;
2589
2709
  _iterator5.s();
2590
2710
  case 4:
@@ -2641,9 +2761,9 @@ function _createOrGetMaterial() {
2641
2761
  return _createOrGetMaterial.apply(this, arguments);
2642
2762
  }
2643
2763
 
2644
- function _createForOfIteratorHelper$2(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$2(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; } } }; }
2645
- function _unsupportedIterableToArray$2(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$2(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$2(r, a) : void 0; } }
2646
- function _arrayLikeToArray$2(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; }
2764
+ function _createForOfIteratorHelper$3(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$3(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; } } }; }
2765
+ function _unsupportedIterableToArray$3(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$3(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$3(r, a) : void 0; } }
2766
+ function _arrayLikeToArray$3(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; }
2647
2767
  var buildScene = function buildScene(_ref) {
2648
2768
  var _sceneStore$elements;
2649
2769
  var startNode = _ref.startNode,
@@ -2682,7 +2802,7 @@ var buildScene = function buildScene(_ref) {
2682
2802
 
2683
2803
  //! getNodes / getGeos
2684
2804
  if (curGeo.nodes !== undefined) {
2685
- var _iterator = _createForOfIteratorHelper$2(curGeo.nodes),
2805
+ var _iterator = _createForOfIteratorHelper$3(curGeo.nodes),
2686
2806
  _step;
2687
2807
  try {
2688
2808
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -2697,7 +2817,7 @@ var buildScene = function buildScene(_ref) {
2697
2817
  }
2698
2818
  //! each geo
2699
2819
  if (curGeo.geos !== undefined) {
2700
- var _iterator2 = _createForOfIteratorHelper$2(curGeo.geos),
2820
+ var _iterator2 = _createForOfIteratorHelper$3(curGeo.geos),
2701
2821
  _step2;
2702
2822
  try {
2703
2823
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
@@ -2740,6 +2860,7 @@ var buildScene = function buildScene(_ref) {
2740
2860
  }
2741
2861
  if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.name) == 'Wohnzimmer') sceneStore.addSet(node, hqsNode);
2742
2862
  if (node !== null && node !== void 0 && node.name.startsWith('Element')) {
2863
+ sceneStore.hasPlanned = true;
2743
2864
  sceneStore.addElement(node, hqsNode);
2744
2865
  curElement = hqsNode;
2745
2866
  }
@@ -2751,7 +2872,7 @@ var buildScene = function buildScene(_ref) {
2751
2872
 
2752
2873
  //! each node
2753
2874
  if (hqsNode.nodes !== undefined) {
2754
- var _iterator3 = _createForOfIteratorHelper$2(hqsNode.nodes),
2875
+ var _iterator3 = _createForOfIteratorHelper$3(hqsNode.nodes),
2755
2876
  _step3;
2756
2877
  try {
2757
2878
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -2766,7 +2887,7 @@ var buildScene = function buildScene(_ref) {
2766
2887
  }
2767
2888
  //! each material
2768
2889
  if (hqsNode.mats !== undefined) {
2769
- var _iterator4 = _createForOfIteratorHelper$2(hqsNode.mats),
2890
+ var _iterator4 = _createForOfIteratorHelper$3(hqsNode.mats),
2770
2891
  _step4;
2771
2892
  try {
2772
2893
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
@@ -2781,7 +2902,7 @@ var buildScene = function buildScene(_ref) {
2781
2902
  }
2782
2903
  //! each geo
2783
2904
  if (hqsNode.geos !== undefined) {
2784
- var _iterator5 = _createForOfIteratorHelper$2(hqsNode.geos),
2905
+ var _iterator5 = _createForOfIteratorHelper$3(hqsNode.geos),
2785
2906
  _step5;
2786
2907
  try {
2787
2908
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
@@ -2796,18 +2917,17 @@ var buildScene = function buildScene(_ref) {
2796
2917
  }
2797
2918
  }
2798
2919
  recursiveIteration(startNode, parentNode);
2799
- sceneStore.setCameraTarget();
2800
2920
  sceneStore.cache = cachedAssets;
2801
2921
  };
2802
2922
 
2803
- function _createForOfIteratorHelper$1(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(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; } } }; }
2804
- function _unsupportedIterableToArray$1(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$1(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$1(r, a) : void 0; } }
2805
- function _arrayLikeToArray$1(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; }
2923
+ function _createForOfIteratorHelper$2(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$2(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; } } }; }
2924
+ function _unsupportedIterableToArray$2(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$2(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$2(r, a) : void 0; } }
2925
+ function _arrayLikeToArray$2(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; }
2806
2926
  function findMaterials(cache) {
2807
2927
  //! parent = the parent from which on every child should receive the Material
2808
2928
  //! id = the id which points to the material that should be assigned
2809
2929
  var setMaterials = function setMaterials(onNode, mat) {
2810
- var _iterator = _createForOfIteratorHelper$1(onNode.getChildMeshes()),
2930
+ var _iterator = _createForOfIteratorHelper$2(onNode.getChildMeshes()),
2811
2931
  _step;
2812
2932
  try {
2813
2933
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -2825,12 +2945,12 @@ function findMaterials(cache) {
2825
2945
  var findOnNode = function findOnNode(mat, parent) {
2826
2946
  if (!mat.onNodes) return;
2827
2947
  var children = parent.getChildTransformNodes(false);
2828
- var _iterator2 = _createForOfIteratorHelper$1(children),
2948
+ var _iterator2 = _createForOfIteratorHelper$2(children),
2829
2949
  _step2;
2830
2950
  try {
2831
2951
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
2832
2952
  var child = _step2.value;
2833
- var _iterator3 = _createForOfIteratorHelper$1(mat.onNodes),
2953
+ var _iterator3 = _createForOfIteratorHelper$2(mat.onNodes),
2834
2954
  _step3;
2835
2955
  try {
2836
2956
  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
@@ -2851,13 +2971,13 @@ function findMaterials(cache) {
2851
2971
  _iterator2.f();
2852
2972
  }
2853
2973
  };
2854
- var _iterator4 = _createForOfIteratorHelper$1(cache),
2974
+ var _iterator4 = _createForOfIteratorHelper$2(cache),
2855
2975
  _step4;
2856
2976
  try {
2857
2977
  for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
2858
2978
  var element = _step4.value;
2859
2979
  if (!element.material || !element.material.parents) continue;
2860
- var _iterator5 = _createForOfIteratorHelper$1(element.material.parents),
2980
+ var _iterator5 = _createForOfIteratorHelper$2(element.material.parents),
2861
2981
  _step5;
2862
2982
  try {
2863
2983
  for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
@@ -2878,11 +2998,11 @@ function findMaterials(cache) {
2878
2998
  return findMaterials;
2879
2999
  }
2880
3000
 
2881
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(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; } } }; }
2882
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(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(r, a) : void 0; } }
2883
- function _arrayLikeToArray(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; }
3001
+ function _createForOfIteratorHelper$1(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(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; } } }; }
3002
+ function _unsupportedIterableToArray$1(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$1(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$1(r, a) : void 0; } }
3003
+ function _arrayLikeToArray$1(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; }
2884
3004
  function deacCache(cache) {
2885
- var _iterator = _createForOfIteratorHelper(cache.getChildTransformNodes(true)),
3005
+ var _iterator = _createForOfIteratorHelper$1(cache.getChildTransformNodes(true)),
2886
3006
  _step;
2887
3007
  try {
2888
3008
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
@@ -2941,23 +3061,29 @@ function shadow() {
2941
3061
  }
2942
3062
  }
2943
3063
 
3064
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(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; } } }; }
3065
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(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(r, a) : void 0; } }
3066
+ function _arrayLikeToArray(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; }
3067
+
2944
3068
  //! sets element set
2945
3069
  var parser = /*#__PURE__*/function () {
2946
3070
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
2947
3071
  var _changedElements$upda;
2948
- var sceneStore, hasRendered, hqRenderScript, scene, cache, changedElements, utilStore, _yield$findAssets, cacheGroup, newCache, _changedElements$upda2;
3072
+ var sceneStore, hasRendered, hqRenderScript, scene, cache, changedElements, utilStore, wasPlanned, elementCount, _yield$findAssets, cacheGroup, newCache, _changedElements$upda2, focusedElement, focusedNode, _iterator, _step, node, bbox, boundingInfo, frustumPlanes, isInFrustum, sizeDiff;
2949
3073
  return _regeneratorRuntime.wrap(function _callee$(_context) {
2950
3074
  while (1) switch (_context.prev = _context.next) {
2951
3075
  case 0:
2952
3076
  sceneStore = useSceneStoreContext();
2953
3077
  hasRendered = sceneStore.hasRendered, hqRenderScript = sceneStore.hqRenderScript, scene = sceneStore.scene, cache = sceneStore.cache, changedElements = sceneStore.changedElements;
2954
- utilStore = useUtilStoreContext(); //disable elementrows from old cache
3078
+ utilStore = useUtilStoreContext();
3079
+ wasPlanned = sceneStore.hasPlanned;
3080
+ elementCount = sceneStore.elements.length; //disable elementrows from old cache
2955
3081
  changedElements === null || changedElements === void 0 || (_changedElements$upda = changedElements.updatedElements) === null || _changedElements$upda === void 0 || _changedElements$upda.forEach(function (el) {
2956
3082
  return utilStore.disableElementRows(el.name, cache);
2957
3083
  });
2958
- _context.next = 6;
3084
+ _context.next = 8;
2959
3085
  return findAssets(hqRenderScript.assets, cache);
2960
- case 6:
3086
+ case 8:
2961
3087
  _yield$findAssets = _context.sent;
2962
3088
  cacheGroup = _yield$findAssets.cacheGroup;
2963
3089
  newCache = _yield$findAssets.newCache;
@@ -2965,6 +3091,7 @@ var parser = /*#__PURE__*/function () {
2965
3091
  changedElements.deletedElements.forEach(function (deletedElement) {
2966
3092
  var _scene$getTransformNo;
2967
3093
  (_scene$getTransformNo = scene.getTransformNodeByName(deletedElement.name)) === null || _scene$getTransformNo === void 0 || _scene$getTransformNo.dispose();
3094
+ sceneStore.removeElement(deletedElement);
2968
3095
  });
2969
3096
  }
2970
3097
  if (changedElements && changedElements.updatedElements && changedElements.updatedElements.length > 0) {
@@ -2993,7 +3120,49 @@ var parser = /*#__PURE__*/function () {
2993
3120
  }
2994
3121
  utilStore.setRTVAnalyzeData();
2995
3122
  deacCache(cacheGroup);
2996
- case 13:
3123
+
3124
+ // Check if the bounding box is in the frustum
3125
+ focusedElement = sceneStore.focusedElement;
3126
+ if (!focusedElement) {
3127
+ _context.next = 28;
3128
+ break;
3129
+ }
3130
+ // let focusedNode = scene.getTransformNodeByName(focusedElement.name)!;
3131
+ focusedNode = undefined;
3132
+ _iterator = _createForOfIteratorHelper(scene.transformNodes);
3133
+ try {
3134
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
3135
+ node = _step.value;
3136
+ if (node.name == focusedElement.name) {
3137
+ if (sceneStore.getId(node) == focusedElement.id) {
3138
+ focusedNode = node;
3139
+ }
3140
+ }
3141
+ }
3142
+ } catch (err) {
3143
+ _iterator.e(err);
3144
+ } finally {
3145
+ _iterator.f();
3146
+ }
3147
+ if (focusedNode) {
3148
+ _context.next = 22;
3149
+ break;
3150
+ }
3151
+ return _context.abrupt("return");
3152
+ case 22:
3153
+ bbox = focusedNode.getHierarchyBoundingVectors();
3154
+ boundingInfo = new BoundingInfo(bbox.min, bbox.max);
3155
+ frustumPlanes = Frustum.GetPlanes(scene.activeCamera.getTransformationMatrix());
3156
+ isInFrustum = boundingInfo.isCompletelyInFrustum(frustumPlanes);
3157
+ sizeDiff = Vector3$1.Distance(bbox.min, bbox.max) - focusedElement.size;
3158
+ if ((focusedNode.absolutePosition.x != focusedElement.position.x || focusedNode.absolutePosition.y != focusedElement.position.y || focusedNode.absolutePosition.z != focusedElement.position.z) && sceneStore.isControlledViewpoint) {
3159
+ sceneStore.focusElement(focusedNode);
3160
+ } else if (wasPlanned && sceneStore.isControlledViewpoint && (elementCount != sceneStore.elements.length || focusedElement.size != 0 && Math.abs(sizeDiff) > 0.5 || !isInFrustum)) {
3161
+ sceneStore.focusElement(focusedNode);
3162
+ } else {
3163
+ updateCam(sceneStore.hqRenderScript.cams[0], sceneStore.scene);
3164
+ }
3165
+ case 28:
2997
3166
  case "end":
2998
3167
  return _context.stop();
2999
3168
  }
@@ -3067,7 +3236,7 @@ function useRealTimeRenderData (_ref) {
3067
3236
  }
3068
3237
  function _onSceneReady() {
3069
3238
  _onSceneReady = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
3070
- var _sceneStore$hqRenderS, getEnableUnityRtvKombi, cams, filteredCustomViewpoints, activeViewpoint, activeViewpointIdx;
3239
+ var _sceneStore$hqRenderS, getEnableUnityRtvKombi, cams, filteredCustomViewpoints, activeViewpoint, activeViewpointIdx, activeElement, _activeElement;
3071
3240
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
3072
3241
  while (1) switch (_context2.prev = _context2.next) {
3073
3242
  case 0:
@@ -3113,7 +3282,13 @@ function useRealTimeRenderData (_ref) {
3113
3282
  _context2.next = 17;
3114
3283
  break;
3115
3284
  }
3116
- if (elementsInfo) uiStore.initGui(callbacks.onElementSelected, sceneStore.elements, elementsInfo);
3285
+ if (elementsInfo) {
3286
+ activeElement = elementsInfo.find(function (e) {
3287
+ return e.active;
3288
+ });
3289
+ if (activeElement) sceneStore.selectedElement = activeElement.elementId.toString();
3290
+ uiStore.initGui(callbacks.onElementSelected, sceneStore.elements, elementsInfo);
3291
+ }
3117
3292
  if (!overlayImage) actions.toggleLoading('buildScene', false, false);
3118
3293
  sceneStore.isInitializing = false;
3119
3294
  return _context2.abrupt("return");
@@ -3127,7 +3302,13 @@ function useRealTimeRenderData (_ref) {
3127
3302
  _context2.next = 21;
3128
3303
  return parser();
3129
3304
  case 21:
3130
- if (elementsInfo) uiStore.initGui(callbacks.onElementSelected, sceneStore.elements, elementsInfo);
3305
+ if (elementsInfo) {
3306
+ _activeElement = elementsInfo.find(function (e) {
3307
+ return e.active;
3308
+ });
3309
+ if (_activeElement) sceneStore.selectedElement = _activeElement.elementId.toString();
3310
+ uiStore.initGui(callbacks.onElementSelected, sceneStore.elements, elementsInfo);
3311
+ }
3131
3312
  if (freePlacesOnGrids || plannedPlacesOnGrids) gridStore.getGrids(freePlacesOnGrids, plannedPlacesOnGrids);
3132
3313
  _context2.next = 30;
3133
3314
  break;
@@ -3153,8 +3334,6 @@ function useRealTimeRenderData (_ref) {
3153
3334
  sceneStore.scene.getEngine().runRenderLoop(renderLoop);
3154
3335
  sceneStore.hasRendered = true;
3155
3336
  }
3156
-
3157
- // sceneStore.scene.debugLayer?.show();
3158
3337
  sceneStore.scene.onAfterRenderObservable.add(onFirstFrame);
3159
3338
  LOG.successTransaction('BUILD_SCENE');
3160
3339
  case 34:
@@ -3167,6 +3346,7 @@ function useRealTimeRenderData (_ref) {
3167
3346
  }
3168
3347
  function onFirstFrame() {
3169
3348
  var _callbacks$onInitiali2, _sceneStore;
3349
+ // sceneStore.scene.debugLayer!.show();
3170
3350
  sceneStore.isInitializing = false;
3171
3351
  sceneStore.scene.onAfterRenderObservable.removeCallback(onFirstFrame);
3172
3352
  if (!overlayImage) actions.toggleLoading('buildScene', false, false);
@@ -3207,7 +3387,8 @@ function useRealTimeRenderData (_ref) {
3207
3387
  }
3208
3388
  engine = new Engine(gameCanvas.current, true, {
3209
3389
  antialias: true,
3210
- stencil: true
3390
+ stencil: false,
3391
+ audioEngine: false
3211
3392
  }, true);
3212
3393
  engine.renderEvenInBackground = renderInBackground;
3213
3394
  engine.disablePerformanceMonitorInBackground = true;
@@ -3233,7 +3414,9 @@ function useRealTimeRenderData (_ref) {
3233
3414
  });
3234
3415
  case 17:
3235
3416
  resize = function resize() {
3236
- scene.getEngine().resize();
3417
+ if (inBackground || !scene || !scene.getEngine()) return;
3418
+ if (sceneStore.hasPlanned) sceneStore.doRenderControlLoop = true;
3419
+ return scene.getEngine().resize();
3237
3420
  };
3238
3421
  if (window) {
3239
3422
  window.addEventListener('resize', resize);
@@ -3261,7 +3444,6 @@ function useRealTimeRenderData (_ref) {
3261
3444
  useEffect(function () {
3262
3445
  if (!utilStore.updateWithUnityData) return;
3263
3446
  if (overlayImage && uiStore) uiStore.updateOverlayImage(overlayImage);
3264
- if (sceneStore && sceneStore.scene.activeCamera) updateCam(sceneStore.hqRenderScript.cams[0], sceneStore.scene);
3265
3447
  }, [overlayImage]);
3266
3448
  useEffect(function () {
3267
3449
  if (inBackground) {
@@ -3499,8 +3681,9 @@ var RealTimeRenderer = /*#__PURE__*/memo(function (props) {
3499
3681
  ref: resolutionDiv,
3500
3682
  style: {
3501
3683
  position: 'absolute',
3684
+ top: '-70px',
3502
3685
  width: '100%',
3503
- height: '100%',
3686
+ height: 'calc(100% + 70px)',
3504
3687
  backgroundColor: 'white',
3505
3688
  zIndex: 2
3506
3689
  },
@@ -3529,7 +3712,8 @@ var RealTimeRenderer = /*#__PURE__*/memo(function (props) {
3529
3712
  })]
3530
3713
  });
3531
3714
  }, function (prevProps, curProps) {
3532
- if (prevProps.overlayImage != curProps.overlayImage) return false;
3715
+ var _prevProps$overlayIma, _curProps$overlayImag, _prevProps$overlayIma2, _curProps$overlayImag2;
3716
+ 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;
3533
3717
  if (prevProps.renderjob != curProps.renderjob) return false;
3534
3718
  if (JSON.stringify(prevProps.elementsInfo) != JSON.stringify(curProps.elementsInfo)) return false;
3535
3719
  if (prevProps.inBackground != curProps.inBackground) return false;