@sapui5/sap.ui.vk 1.138.0 → 1.139.0

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 (217) hide show
  1. package/package.json +1 -1
  2. package/src/sap/ui/vk/.library +9 -1
  3. package/src/sap/ui/vk/AnimationPlayback.js +1 -1
  4. package/src/sap/ui/vk/AnimationPlayer.js +1 -1
  5. package/src/sap/ui/vk/AnimationSequence.js +1 -1
  6. package/src/sap/ui/vk/AnimationTimeSlider.js +1 -1
  7. package/src/sap/ui/vk/AnimationTrack.js +1 -1
  8. package/src/sap/ui/vk/Annotation.js +1 -1
  9. package/src/sap/ui/vk/BaseNodeProxy.js +1 -1
  10. package/src/sap/ui/vk/Camera.js +1 -1
  11. package/src/sap/ui/vk/ContentConnector.js +149 -95
  12. package/src/sap/ui/vk/ContentManager.js +1 -1
  13. package/src/sap/ui/vk/ContentResource.js +26 -7
  14. package/src/sap/ui/vk/ContentType.js +41 -0
  15. package/src/sap/ui/vk/Core.js +1 -1
  16. package/src/sap/ui/vk/DownloadManager.js +1 -1
  17. package/src/sap/ui/vk/DrawerToolbar.js +46 -19
  18. package/src/sap/ui/vk/DvlException.js +1 -1
  19. package/src/sap/ui/vk/FlexibleControl.js +1 -1
  20. package/src/sap/ui/vk/FlexibleControlLayoutData.js +1 -1
  21. package/src/sap/ui/vk/Highlight.js +1 -1
  22. package/src/sap/ui/vk/ImageContentManager.js +1 -1
  23. package/src/sap/ui/vk/JointUtils.js +1 -1
  24. package/src/sap/ui/vk/LayerProxy.js +1 -1
  25. package/src/sap/ui/vk/Loco.js +1 -1
  26. package/src/sap/ui/vk/Material.js +1 -1
  27. package/src/sap/ui/vk/NativeViewport.js +1 -1
  28. package/src/sap/ui/vk/NodeHierarchy.js +1 -1
  29. package/src/sap/ui/vk/NodeProxy.js +1 -1
  30. package/src/sap/ui/vk/NodeUtils.js +1 -1
  31. package/src/sap/ui/vk/Notifications.js +1 -1
  32. package/src/sap/ui/vk/OrthographicCamera.js +1 -1
  33. package/src/sap/ui/vk/PerspectiveCamera.js +1 -1
  34. package/src/sap/ui/vk/ProgressIndicator.js +1 -1
  35. package/src/sap/ui/vk/RedlineCollaboration.js +1 -1
  36. package/src/sap/ui/vk/RedlineConversation.js +1 -1
  37. package/src/sap/ui/vk/RedlineDesign.js +1 -1
  38. package/src/sap/ui/vk/RedlineElement.js +1 -1
  39. package/src/sap/ui/vk/RedlineElementComment.js +1 -1
  40. package/src/sap/ui/vk/RedlineElementEllipse.js +1 -1
  41. package/src/sap/ui/vk/RedlineElementFreehand.js +1 -1
  42. package/src/sap/ui/vk/RedlineElementLine.js +1 -1
  43. package/src/sap/ui/vk/RedlineElementRectangle.js +1 -1
  44. package/src/sap/ui/vk/RedlineElementText.js +1 -1
  45. package/src/sap/ui/vk/RedlineSurface.js +1 -1
  46. package/src/sap/ui/vk/SafeArea.js +1 -1
  47. package/src/sap/ui/vk/Scene.js +5 -1
  48. package/src/sap/ui/vk/SceneTree.js +20 -3
  49. package/src/sap/ui/vk/StepNavigation.js +1 -1
  50. package/src/sap/ui/vk/Texture.js +1 -1
  51. package/src/sap/ui/vk/ToggleMenuButton.js +1 -1
  52. package/src/sap/ui/vk/ToggleMenuItem.js +1 -1
  53. package/src/sap/ui/vk/Toolbar.js +1 -1
  54. package/src/sap/ui/vk/View.js +1 -1
  55. package/src/sap/ui/vk/ViewGallery.js +1 -1
  56. package/src/sap/ui/vk/ViewGalleryThumbnail.js +1 -1
  57. package/src/sap/ui/vk/ViewGroup.js +1 -1
  58. package/src/sap/ui/vk/ViewManager.js +1 -1
  59. package/src/sap/ui/vk/ViewStateManager.js +3 -10
  60. package/src/sap/ui/vk/ViewStateManagerBase.js +2 -2
  61. package/src/sap/ui/vk/Viewer.js +2 -2
  62. package/src/sap/ui/vk/Viewport.js +1 -1
  63. package/src/sap/ui/vk/ViewportBase.js +24 -70
  64. package/src/sap/ui/vk/dvl/BaseNodeProxy.js +1 -1
  65. package/src/sap/ui/vk/dvl/ContentManager.js +1 -1
  66. package/src/sap/ui/vk/dvl/GraphicsCore.js +1 -1
  67. package/src/sap/ui/vk/dvl/LayerProxy.js +1 -1
  68. package/src/sap/ui/vk/dvl/NodeHierarchy.js +1 -1
  69. package/src/sap/ui/vk/dvl/NodeProxy.js +1 -1
  70. package/src/sap/ui/vk/dvl/Scene.js +1 -1
  71. package/src/sap/ui/vk/dvl/ViewStateManager.js +1 -1
  72. package/src/sap/ui/vk/dvl/Viewport.js +1 -1
  73. package/src/sap/ui/vk/ecad/ElementsPanel.js +14 -41
  74. package/src/sap/ui/vk/ecad/LayersPanel.js +8 -25
  75. package/src/sap/ui/vk/i18n/messagebundle.properties +46 -44
  76. package/src/sap/ui/vk/i18n/messagebundle_ar.properties +25 -12
  77. package/src/sap/ui/vk/i18n/messagebundle_bg.properties +25 -12
  78. package/src/sap/ui/vk/i18n/messagebundle_ca.properties +25 -12
  79. package/src/sap/ui/vk/i18n/messagebundle_cnr.properties +25 -12
  80. package/src/sap/ui/vk/i18n/messagebundle_cs.properties +25 -12
  81. package/src/sap/ui/vk/i18n/messagebundle_cy.properties +25 -12
  82. package/src/sap/ui/vk/i18n/messagebundle_da.properties +25 -12
  83. package/src/sap/ui/vk/i18n/messagebundle_de.properties +26 -13
  84. package/src/sap/ui/vk/i18n/messagebundle_el.properties +25 -12
  85. package/src/sap/ui/vk/i18n/messagebundle_en.properties +25 -326
  86. package/src/sap/ui/vk/i18n/messagebundle_en_GB.properties +25 -12
  87. package/src/sap/ui/vk/i18n/messagebundle_en_US_saprigi.properties +26 -12
  88. package/src/sap/ui/vk/i18n/messagebundle_es.properties +27 -14
  89. package/src/sap/ui/vk/i18n/messagebundle_es_MX.properties +25 -12
  90. package/src/sap/ui/vk/i18n/messagebundle_et.properties +25 -12
  91. package/src/sap/ui/vk/i18n/messagebundle_fi.properties +25 -12
  92. package/src/sap/ui/vk/i18n/messagebundle_fr.properties +25 -12
  93. package/src/sap/ui/vk/i18n/messagebundle_fr_CA.properties +25 -12
  94. package/src/sap/ui/vk/i18n/messagebundle_hi.properties +25 -12
  95. package/src/sap/ui/vk/i18n/messagebundle_hr.properties +25 -12
  96. package/src/sap/ui/vk/i18n/messagebundle_hu.properties +25 -12
  97. package/src/sap/ui/vk/i18n/messagebundle_id.properties +26 -13
  98. package/src/sap/ui/vk/i18n/messagebundle_it.properties +25 -12
  99. package/src/sap/ui/vk/i18n/messagebundle_iw.properties +25 -12
  100. package/src/sap/ui/vk/i18n/messagebundle_ja.properties +25 -12
  101. package/src/sap/ui/vk/i18n/messagebundle_kk.properties +37 -24
  102. package/src/sap/ui/vk/i18n/messagebundle_ko.properties +22 -9
  103. package/src/sap/ui/vk/i18n/messagebundle_lt.properties +25 -12
  104. package/src/sap/ui/vk/i18n/messagebundle_lv.properties +25 -12
  105. package/src/sap/ui/vk/i18n/messagebundle_mk.properties +25 -12
  106. package/src/sap/ui/vk/i18n/messagebundle_ms.properties +25 -12
  107. package/src/sap/ui/vk/i18n/messagebundle_nl.properties +25 -12
  108. package/src/sap/ui/vk/i18n/messagebundle_no.properties +25 -12
  109. package/src/sap/ui/vk/i18n/messagebundle_pl.properties +25 -12
  110. package/src/sap/ui/vk/i18n/messagebundle_pt.properties +25 -12
  111. package/src/sap/ui/vk/i18n/messagebundle_pt_PT.properties +25 -12
  112. package/src/sap/ui/vk/i18n/messagebundle_ro.properties +25 -12
  113. package/src/sap/ui/vk/i18n/messagebundle_ru.properties +25 -12
  114. package/src/sap/ui/vk/i18n/messagebundle_sh.properties +25 -12
  115. package/src/sap/ui/vk/i18n/messagebundle_sk.properties +25 -12
  116. package/src/sap/ui/vk/i18n/messagebundle_sl.properties +25 -12
  117. package/src/sap/ui/vk/i18n/messagebundle_sr.properties +25 -12
  118. package/src/sap/ui/vk/i18n/messagebundle_sv.properties +25 -12
  119. package/src/sap/ui/vk/i18n/messagebundle_th.properties +25 -12
  120. package/src/sap/ui/vk/i18n/messagebundle_tr.properties +25 -12
  121. package/src/sap/ui/vk/i18n/messagebundle_uk.properties +25 -12
  122. package/src/sap/ui/vk/i18n/messagebundle_vi.properties +25 -12
  123. package/src/sap/ui/vk/i18n/messagebundle_zh_CN.properties +25 -12
  124. package/src/sap/ui/vk/i18n/messagebundle_zh_TW.properties +25 -12
  125. package/src/sap/ui/vk/library.js +5 -5
  126. package/src/sap/ui/vk/measurements/Angle.js +1 -1
  127. package/src/sap/ui/vk/measurements/Area.js +1 -1
  128. package/src/sap/ui/vk/measurements/Distance.js +1 -1
  129. package/src/sap/ui/vk/measurements/Edge.js +1 -1
  130. package/src/sap/ui/vk/measurements/Face.js +1 -1
  131. package/src/sap/ui/vk/measurements/Feature.js +1 -1
  132. package/src/sap/ui/vk/measurements/Vertex.js +1 -1
  133. package/src/sap/ui/vk/pdf/ContentManager.js +1 -1
  134. package/src/sap/ui/vk/pdf/Page.js +9 -10
  135. package/src/sap/ui/vk/pdf/Utils.js +4 -2
  136. package/src/sap/ui/vk/pdf/Viewport.js +1 -1
  137. package/src/sap/ui/vk/svg/BaseNodeProxy.js +1 -1
  138. package/src/sap/ui/vk/svg/ContentDeliveryService.js +1 -1
  139. package/src/sap/ui/vk/svg/ContentManager.js +4 -5
  140. package/src/sap/ui/vk/svg/NodeHierarchy.js +1 -1
  141. package/src/sap/ui/vk/svg/NodeProxy.js +1 -1
  142. package/src/sap/ui/vk/svg/OrthographicCamera.js +1 -1
  143. package/src/sap/ui/vk/svg/Scene.js +1 -1
  144. package/src/sap/ui/vk/svg/SceneBuilder.js +1 -1
  145. package/src/sap/ui/vk/svg/ViewStateManager.js +1 -1
  146. package/src/sap/ui/vk/svg/Viewport.js +11 -18
  147. package/src/sap/ui/vk/thirdparty/pdf.worker.js +1 -1
  148. package/src/sap/ui/vk/thirdparty/three.js +31455 -31473
  149. package/src/sap/ui/vk/threejs/AnimationHelper.js +1 -1
  150. package/src/sap/ui/vk/threejs/BaseNodeProxy.js +1 -1
  151. package/src/sap/ui/vk/threejs/Billboard.js +23 -11
  152. package/src/sap/ui/vk/threejs/Callout.js +1 -1
  153. package/src/sap/ui/vk/threejs/ContentDeliveryService.js +1 -1
  154. package/src/sap/ui/vk/threejs/ContentManager.js +2 -2
  155. package/src/sap/ui/vk/threejs/DetailView.js +1 -1
  156. package/src/sap/ui/vk/threejs/HighlightPlayer.js +14 -22
  157. package/src/sap/ui/vk/threejs/Material.js +1 -1
  158. package/src/sap/ui/vk/threejs/NodeHierarchy.js +1 -1
  159. package/src/sap/ui/vk/threejs/NodeProxy.js +9 -11
  160. package/src/sap/ui/vk/threejs/OrthographicCamera.js +1 -1
  161. package/src/sap/ui/vk/threejs/OutlineRenderer.js +4 -10
  162. package/src/sap/ui/vk/threejs/PerspectiveCamera.js +1 -1
  163. package/src/sap/ui/vk/threejs/PointCloudGroup.js +1 -1
  164. package/src/sap/ui/vk/threejs/Scene.js +1 -15
  165. package/src/sap/ui/vk/threejs/SceneBuilder.js +1 -4
  166. package/src/sap/ui/vk/threejs/Texture.js +1 -1
  167. package/src/sap/ui/vk/threejs/ThreeExtensions.js +10 -174
  168. package/src/sap/ui/vk/threejs/ThreeUtils.js +7 -18
  169. package/src/sap/ui/vk/threejs/Thrustline.js +1 -1
  170. package/src/sap/ui/vk/threejs/ViewStateManager.js +751 -446
  171. package/src/sap/ui/vk/threejs/Viewport.js +41 -31
  172. package/src/sap/ui/vk/tools/AnchorPointTool.js +1 -1
  173. package/src/sap/ui/vk/tools/AnchorPointToolGizmo.js +1 -1
  174. package/src/sap/ui/vk/tools/AxisAngleRotationTool.js +1 -1
  175. package/src/sap/ui/vk/tools/AxisAngleRotationToolGizmo.js +1 -1
  176. package/src/sap/ui/vk/tools/CreateEllipseTool.js +1 -1
  177. package/src/sap/ui/vk/tools/CreateEllipseToolGizmo.js +1 -1
  178. package/src/sap/ui/vk/tools/CreateParametricGizmo.js +1 -1
  179. package/src/sap/ui/vk/tools/CreatePathTool.js +1 -1
  180. package/src/sap/ui/vk/tools/CreatePathToolGizmo.js +1 -1
  181. package/src/sap/ui/vk/tools/CreateRectangleTool.js +1 -1
  182. package/src/sap/ui/vk/tools/CreateRectangleToolGizmo.js +1 -1
  183. package/src/sap/ui/vk/tools/CreateTextTool.js +1 -1
  184. package/src/sap/ui/vk/tools/CreateTextToolGizmo.js +1 -1
  185. package/src/sap/ui/vk/tools/CrossSectionTool.js +1 -1
  186. package/src/sap/ui/vk/tools/CrossSectionToolGizmo.js +1 -1
  187. package/src/sap/ui/vk/tools/DuplicateSvgElementTool.js +1 -1
  188. package/src/sap/ui/vk/tools/DuplicateSvgElementToolGizmo.js +1 -1
  189. package/src/sap/ui/vk/tools/ExplodeTool.js +1 -1
  190. package/src/sap/ui/vk/tools/ExplodeToolGizmo.js +1 -1
  191. package/src/sap/ui/vk/tools/Gizmo.js +1 -1
  192. package/src/sap/ui/vk/tools/HitTestTool.js +1 -1
  193. package/src/sap/ui/vk/tools/MoveTool.js +1 -1
  194. package/src/sap/ui/vk/tools/MoveToolGizmo.js +1 -1
  195. package/src/sap/ui/vk/tools/PointCloudSelectionTool.js +1 -1
  196. package/src/sap/ui/vk/tools/PointCloudSelectionToolGizmo.js +1 -1
  197. package/src/sap/ui/vk/tools/RectSelectTool.js +1 -1
  198. package/src/sap/ui/vk/tools/RedlineTool.js +1 -1
  199. package/src/sap/ui/vk/tools/RedlineToolGizmo.js +1 -1
  200. package/src/sap/ui/vk/tools/RotateOrbitTool.js +1 -1
  201. package/src/sap/ui/vk/tools/RotateTool.js +1 -1
  202. package/src/sap/ui/vk/tools/RotateToolGizmo.js +1 -1
  203. package/src/sap/ui/vk/tools/RotateTurntableTool.js +1 -1
  204. package/src/sap/ui/vk/tools/ScaleTool.js +1 -1
  205. package/src/sap/ui/vk/tools/ScaleToolGizmo.js +1 -1
  206. package/src/sap/ui/vk/tools/SceneOrientationTool.js +1 -1
  207. package/src/sap/ui/vk/tools/SceneOrientationToolGizmo.js +1 -1
  208. package/src/sap/ui/vk/tools/Tool.js +1 -1
  209. package/src/sap/ui/vk/tools/TooltipTool.js +1 -1
  210. package/src/sap/ui/vk/tools/TooltipToolGizmo.js +1 -1
  211. package/src/sap/ui/vk/tools/TooltipToolHandler.js +5 -0
  212. package/src/sap/ui/vk/tools/TransformSvgElementTool.js +1 -1
  213. package/src/sap/ui/vk/tools/TransformSvgElementToolGizmo.js +1 -1
  214. package/src/sap/ui/vk/totara/TotaraLoader.js +2 -2
  215. package/src/sap/ui/vk/totara/TotaraLoaderWorker.js +18 -21
  216. package/ui5.yaml +5 -3
  217. package/src/sap/ui/vk/threejs/v2/ViewStateManager.js +0 -1445
@@ -9,6 +9,7 @@
9
9
  sap.ui.define([
10
10
  "../Core",
11
11
  "../ViewportBase",
12
+ "../abgrToColor",
12
13
  "sap/ui/core/Element",
13
14
  "sap/ui/core/ResizeHandler",
14
15
  "sap/ui/events/KeyCodes",
@@ -18,6 +19,7 @@ sap.ui.define([
18
19
  "./ViewportGestureHandler",
19
20
  "./OrthographicCamera",
20
21
  "./PerspectiveCamera",
22
+ "./OutlineRenderer",
21
23
  "../Messages",
22
24
  "sap/ui/base/ManagedObjectObserver",
23
25
  "../CameraProjectionType",
@@ -37,6 +39,7 @@ sap.ui.define([
37
39
  "../Annotation",
38
40
  "../measurements/Surface",
39
41
  "../NodeContentType",
42
+ "../SelectionDisplayMode",
40
43
  "sap/base/assert",
41
44
  "sap/base/Log",
42
45
  "../findIndexInArray",
@@ -44,6 +47,7 @@ sap.ui.define([
44
47
  ], function(
45
48
  vkCore,
46
49
  ViewportBase,
50
+ abgrToColor,
47
51
  Element,
48
52
  ResizeHandler,
49
53
  KeyCodes,
@@ -53,6 +57,7 @@ sap.ui.define([
53
57
  ViewportGestureHandler,
54
58
  OrthographicCamera,
55
59
  PerspectiveCamera,
60
+ OutlineRenderer,
56
61
  Messages,
57
62
  ManagedObjectObserver,
58
63
  CameraProjectionType,
@@ -72,6 +77,7 @@ sap.ui.define([
72
77
  Annotation,
73
78
  MeasurementSurface,
74
79
  NodeContentType,
80
+ SelectionDisplayMode,
75
81
  assert,
76
82
  Log,
77
83
  findIndexInArray,
@@ -88,7 +94,7 @@ sap.ui.define([
88
94
  *
89
95
  * @public
90
96
  * @author SAP SE
91
- * @version 1.138.0
97
+ * @version 1.139.0
92
98
  * @extends sap.ui.vk.ViewportBase
93
99
  * @alias sap.ui.vk.threejs.Viewport
94
100
  */
@@ -219,6 +225,8 @@ sap.ui.define([
219
225
  this._underlayGroup = new THREE.Group();
220
226
  this._overlayGroup = new THREE.Group();
221
227
 
228
+ this._outlineRenderer = new OutlineRenderer(1.0);
229
+
222
230
  this._showPMI = true;
223
231
 
224
232
  this._xrayColor1 = new THREE.Vector4(0, 0.75, 1, 0.45);
@@ -320,6 +328,9 @@ sap.ui.define([
320
328
  this._setContent(null);
321
329
  this.setCamera(null);
322
330
 
331
+ this._outlineRenderer?.dispose();
332
+ this._outlineRenderer = null;
333
+
323
334
  this._backgroundCamera = null;
324
335
  this._backgroundMaterial = null;
325
336
  this._backgroundScene = null;
@@ -774,18 +785,14 @@ sap.ui.define([
774
785
  }
775
786
 
776
787
  var vsm = this._getViewStateManagerThreeJS();
777
- if (vsm && vsm.applyNodeStates) {
778
- vsm.applyNodeStates();
779
- }
788
+ vsm?.applyNodeStates?.();
780
789
 
781
790
  try {
782
791
  var canvas = this._canvas;
783
792
  return this._hitTester.hitTest(x - canvas.clientLeft, y - canvas.clientTop, canvas.clientWidth, canvas.clientHeight,
784
793
  this._renderer, nativeScene, nativeCamera, this._clippingPlanes, options);
785
794
  } finally {
786
- if (vsm && vsm.revertNodeStates) {
787
- vsm.revertNodeStates();
788
- }
795
+ vsm?.revertNodeStates?.();
789
796
  }
790
797
  };
791
798
 
@@ -1071,7 +1078,7 @@ sap.ui.define([
1071
1078
  }
1072
1079
  };
1073
1080
 
1074
- function _updateDynamicObjects(renderer, camera, scene, viewport) {
1081
+ function _updateDynamicObjects(renderer, camera, scene, viewport, vsm) {
1075
1082
  var viewportSize = new THREE.Vector2(viewport._width, viewport._height);
1076
1083
  var backgroundProjection = viewport.getBackgroundProjection();
1077
1084
  let somethingWasChanged = false;
@@ -1083,7 +1090,7 @@ sap.ui.define([
1083
1090
  if (root.userData._vkDynamicObjects) {
1084
1091
  root.userData._vkDynamicObjects.forEach(function(object) {
1085
1092
  if (object.parent) {
1086
- object._vkUpdate(renderer, camera, viewportSize, backgroundProjection);
1093
+ object._vkUpdate(renderer, camera, viewportSize, backgroundProjection, vsm);
1087
1094
  somethingWasChanged = true;
1088
1095
  }
1089
1096
  });
@@ -1198,9 +1205,7 @@ sap.ui.define([
1198
1205
  var timerStart = performance.now();
1199
1206
  var vsm = this._getViewStateManagerThreeJS();
1200
1207
 
1201
- if (vsm && vsm.applyNodeStates) {
1202
- vsm.applyNodeStates();
1203
- }
1208
+ vsm?.applyNodeStates?.(this.getSelectionDisplayMode() === SelectionDisplayMode.Outline);
1204
1209
 
1205
1210
  try {
1206
1211
  renderer.setViewport(0, 0, this._canvas.width / window.devicePixelRatio, this._canvas.height / window.devicePixelRatio);
@@ -1273,7 +1278,7 @@ sap.ui.define([
1273
1278
  var tools = this.getTools();
1274
1279
  var i, tool, gizmo, boundingBox;
1275
1280
 
1276
- const someObjectsWereUpdated = _updateDynamicObjects(renderer, nativeCamera, nativeScene, this);
1281
+ const someObjectsWereUpdated = _updateDynamicObjects(renderer, nativeCamera, nativeScene, this, vsm);
1277
1282
  const mustUpdateDynamicObjectsAgain = someObjectsWereUpdated && (nativeCamera.near <= 0 || nativeCamera.far <= 0);
1278
1283
 
1279
1284
  // todo: we need to _updateBoundingBoxes() only if some dynamic objects are currently selected
@@ -1293,6 +1298,12 @@ sap.ui.define([
1293
1298
  }
1294
1299
  timerComputeBoundingBoxEnd = performance.now();
1295
1300
 
1301
+ if (mustUpdateDynamicObjectsAgain && boundingBox.isEmpty()) {
1302
+ // If the bounding box is empty, it means that there are no visible objects in the scene currently,
1303
+ // so we use bounding box of all objects in the scene in order to get "good" znear and zfar.
1304
+ boundingBox = currentScene._computeBoundingBox(false, false, true);
1305
+ }
1306
+
1296
1307
  if (!boundingBox.isEmpty()) {
1297
1308
  if (nativeCamera.isOrthographicCamera && nativeCamera.zoom <= 0) {
1298
1309
  this._camera.adjustZoom(boundingBox);
@@ -1316,7 +1327,7 @@ sap.ui.define([
1316
1327
  // Usually it is fine to use Z near/far computed in previous frame, but it would not work
1317
1328
  // if Z near and far equal to -1.0 default values for "auto evaluate", so we must
1318
1329
  // update dynamic objects twice in such case (it happens on view activation only).
1319
- _updateDynamicObjects(renderer, nativeCamera, nativeScene, this);
1330
+ _updateDynamicObjects(renderer, nativeCamera, nativeScene, this, vsm);
1320
1331
  }
1321
1332
 
1322
1333
  // check scene dimension and distance from camera
@@ -1429,8 +1440,12 @@ sap.ui.define([
1429
1440
 
1430
1441
  _renderDetailViews(renderer, nativeCamera, nativeScene, boundingBox, this._cameraLight);
1431
1442
 
1432
- if (vsm) {
1433
- vsm._renderOutline(renderer, nativeScene, nativeCamera);
1443
+ if (vsm?._outlinedNodes.size > 0) {
1444
+ this._renderOutline(nativeScene, nativeCamera, Array.from(vsm._outlinedNodes), vsm._outlineColorABGR, vsm);
1445
+ }
1446
+
1447
+ if (this.getSelectionDisplayMode() === SelectionDisplayMode.Outline && vsm?._selectedNodes.size > 0) {
1448
+ this._renderOutline(nativeScene, nativeCamera, Array.from(vsm._selectedNodes), vsm._highlightColorABGR, vsm);
1434
1449
  }
1435
1450
 
1436
1451
  for (i = 0; i < tools.length; i++) { // loop over all oTools
@@ -1482,14 +1497,18 @@ sap.ui.define([
1482
1497
  + tail
1483
1498
  );
1484
1499
  } finally {
1485
- if (vsm && vsm.revertNodeStates) {
1486
- vsm.revertNodeStates();
1487
- }
1500
+ vsm?.revertNodeStates?.();
1488
1501
  }
1489
1502
 
1490
1503
  this.fireFrameRenderingFinished();
1491
1504
  };
1492
1505
 
1506
+ Viewport.prototype._renderOutline = function(scene, camera, nodes, colorABGR, vsm) {
1507
+ const c = abgrToColor(colorABGR);
1508
+ const color = new THREE.Color(c.red / 255.0, c.green / 255.0, c.blue / 255.0);
1509
+ this._outlineRenderer.render(this._renderer, scene, camera, nodes, color, vsm.getOutlineWidth(), vsm._jointCollection);
1510
+ };
1511
+
1493
1512
  /**
1494
1513
  * Returns viewport content as an image of desired size.
1495
1514
  *
@@ -1746,9 +1765,7 @@ sap.ui.define([
1746
1765
  document.body.appendChild(renderer.domElement);
1747
1766
 
1748
1767
  var vsm = this._getViewStateManagerThreeJS();
1749
- if (vsm && vsm.applyNodeStates) {
1750
- vsm.applyNodeStates();
1751
- }
1768
+ vsm?.applyNodeStates?.();
1752
1769
 
1753
1770
  try {
1754
1771
  if (nodeRefs == null) {
@@ -1781,13 +1798,8 @@ sap.ui.define([
1781
1798
  var hiddenNodes = [];
1782
1799
  nodeRefs.forEach(function(nodeRef) {
1783
1800
  nodeRef.traverseVisible(function(node) {
1784
- if (node._vkUpdate) {
1785
- node._vkUpdate(renderer, cameraRef, viewportSize);
1801
+ node._vkUpdate?.(renderer, cameraRef, viewportSize, null, vsm);
1786
1802
 
1787
- if (node._vkGetNodeContentType() === NodeContentType.Symbol) {// reset symbol opacity
1788
- node._vkSetOpacity(1);
1789
- }
1790
- }
1791
1803
  if ((!options.includeOverlay && node.userData.renderStage > 0) ||
1792
1804
  (!options.includeUnderlay && node.userData.renderStage < 0)) {
1793
1805
  // hide overlay/underlay node
@@ -1846,9 +1858,7 @@ sap.ui.define([
1846
1858
  scene.remove(lightNode);
1847
1859
  scene.children = [];
1848
1860
  } finally {
1849
- if (vsm && vsm.revertNodeStates) {
1850
- vsm.revertNodeStates();
1851
- }
1861
+ vsm?.revertNodeStates?.();
1852
1862
  }
1853
1863
 
1854
1864
  var imageData = renderer.getContext().canvas.toDataURL(options.type, options.encoderOptions);
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
33
33
  * @public
34
34
  * @author SAP SE
35
- * @version 1.138.0
35
+ * @version 1.139.0
36
36
  * @extends sap.ui.vk.tools.Tool
37
37
  * @alias sap.ui.vk.tools.AnchorPointTool
38
38
  */
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @extends sap.ui.vk.tools.Gizmo
39
39
  *
40
40
  * @author SAP SE
41
- * @version 1.138.0
41
+ * @version 1.139.0
42
42
  *
43
43
  * @constructor
44
44
  * @private
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
33
33
  * @public
34
34
  * @author SAP SE
35
- * @version 1.138.0
35
+ * @version 1.139.0
36
36
  * @extends sap.ui.vk.tools.Tool
37
37
  * @alias sap.ui.vk.tools.AxisAngleRotationTool
38
38
  */
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.ui.vk.tools.Gizmo
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.138.0
37
+ * @version 1.139.0
38
38
  *
39
39
  * @constructor
40
40
  * @private
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
35
35
  * @public
36
36
  * @author SAP SE
37
- * @version 1.138.0
37
+ * @version 1.139.0
38
38
  * @extends sap.ui.vk.tools.Tool
39
39
  * @alias sap.ui.vk.tools.CreateEllipseTool
40
40
  */
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.ui.vk.tools.CreateParametricGizmo
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.139.0
32
32
  *
33
33
  * @constructor
34
34
  * @private
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.vk.tools.Gizmo
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.138.0
29
+ * @version 1.139.0
30
30
  *
31
31
  * @constructor
32
32
  * @private
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
31
31
  * @public
32
32
  * @author SAP SE
33
- * @version 1.138.0
33
+ * @version 1.139.0
34
34
  * @extends sap.ui.vk.tools.Tool
35
35
  * @alias sap.ui.vk.tools.CreatePathTool
36
36
  */
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @extends sap.ui.vk.tools.CreateParametricGizmo
31
31
  *
32
32
  * @author SAP SE
33
- * @version 1.138.0
33
+ * @version 1.139.0
34
34
  *
35
35
  * @constructor
36
36
  * @private
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
31
31
  * @public
32
32
  * @author SAP SE
33
- * @version 1.138.0
33
+ * @version 1.139.0
34
34
  * @extends sap.ui.vk.tools.Tool
35
35
  * @alias sap.ui.vk.tools.CreateRectangleTool
36
36
  */
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.ui.vk.tools.CreateParametricGizmo
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.139.0
32
32
  *
33
33
  * @constructor
34
34
  * @private
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
29
29
  * @public
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.139.0
32
32
  * @extends sap.ui.vk.tools.Tool
33
33
  * @alias sap.ui.vk.tools.CreateTextTool
34
34
  */
@@ -40,7 +40,7 @@ sap.ui.define([
40
40
  * @extends sap.ui.vk.tools.CreateParametricGizmo
41
41
  *
42
42
  * @author SAP SE
43
- * @version 1.138.0
43
+ * @version 1.139.0
44
44
  *
45
45
  * @constructor
46
46
  * @private
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
29
29
  * @public
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.139.0
32
32
  * @extends sap.ui.vk.tools.Tool
33
33
  * @alias sap.ui.vk.tools.CrossSectionTool
34
34
  */
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.ui.vk.tools.Gizmo
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.138.0
37
+ * @version 1.139.0
38
38
  *
39
39
  * @constructor
40
40
  * @private
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
33
33
  * @public
34
34
  * @author SAP SE
35
- * @version 1.138.0
35
+ * @version 1.139.0
36
36
  * @extends sap.ui.vk.tools.Tool
37
37
  * @alias sap.ui.vk.tools.DuplicateSvgElementTool
38
38
  */
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.ui.vk.tools.CreateParametricGizmo
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.139.0
32
32
  *
33
33
  * @constructor
34
34
  * @private
@@ -52,7 +52,7 @@ sap.ui.define([
52
52
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
53
53
  * @public
54
54
  * @author SAP SE
55
- * @version 1.138.0
55
+ * @version 1.139.0
56
56
  * @extends sap.ui.vk.tools.Tool
57
57
  * @alias sap.ui.vk.tools.ExplodeTool
58
58
  */
@@ -46,7 +46,7 @@ sap.ui.define([
46
46
  * @extends sap.ui.vk.tools.Gizmo
47
47
  *
48
48
  * @author SAP SE
49
- * @version 1.138.0
49
+ * @version 1.139.0
50
50
  *
51
51
  * @constructor
52
52
  * @private
@@ -53,7 +53,7 @@ sap.ui.define([
53
53
  * @extends sap.ui.core.Control
54
54
  *
55
55
  * @author SAP SE
56
- * @version 1.138.0
56
+ * @version 1.139.0
57
57
  *
58
58
  * @constructor
59
59
  * @public
@@ -29,7 +29,7 @@ sap.ui.define([
29
29
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
30
30
  * @public
31
31
  * @author SAP SE
32
- * @version 1.138.0
32
+ * @version 1.139.0
33
33
  * @extends sap.ui.vk.tools.Tool
34
34
  * @alias sap.ui.vk.tools.HitTestTool
35
35
  */
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
35
35
  * @public
36
36
  * @author SAP SE
37
- * @version 1.138.0
37
+ * @version 1.139.0
38
38
  * @extends sap.ui.vk.tools.Tool
39
39
  * @alias sap.ui.vk.tools.MoveTool
40
40
  */
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @extends sap.ui.vk.tools.Gizmo
43
43
  *
44
44
  * @author SAP SE
45
- * @version 1.138.0
45
+ * @version 1.139.0
46
46
  *
47
47
  * @constructor
48
48
  * @private
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
29
29
  * @public
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.139.0
32
32
  * @extends sap.ui.vk.tools.Tool
33
33
  * @alias sap.ui.vk.tools.PointCloudSelectionTool
34
34
  * @since 1.118.0
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @extends sap.ui.vk.tools.Gizmo
43
43
  *
44
44
  * @author SAP SE
45
- * @version 1.138.0
45
+ * @version 1.139.0
46
46
  *
47
47
  * @constructor
48
48
  * @private
@@ -31,7 +31,7 @@ sap.ui.define([
31
31
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
32
32
  * @public
33
33
  * @author SAP SE
34
- * @version 1.138.0
34
+ * @version 1.139.0
35
35
  * @extends sap.ui.vk.tools.Tool
36
36
  * @alias sap.ui.vk.tools.RectSelectTool
37
37
  */
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
43
43
  * @public
44
44
  * @author SAP SE
45
- * @version 1.138.0
45
+ * @version 1.139.0
46
46
  * @extends sap.ui.vk.tools.Tool
47
47
  * @alias sap.ui.vk.tools.RedlineTool
48
48
  */
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.vk.tools.Gizmo
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.138.0
29
+ * @version 1.139.0
30
30
  *
31
31
  * @constructor
32
32
  * @private
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
29
29
  * @public
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.139.0
32
32
  * @extends sap.ui.vk.tools.Tool
33
33
  * @alias sap.ui.vk.tools.RotateOrbitTool
34
34
  */
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
39
39
  * @public
40
40
  * @author SAP SE
41
- * @version 1.138.0
41
+ * @version 1.139.0
42
42
  * @extends sap.ui.vk.tools.Tool
43
43
  * @alias sap.ui.vk.tools.RotateTool
44
44
  */
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @extends sap.ui.vk.tools.Gizmo
43
43
  *
44
44
  * @author SAP SE
45
- * @version 1.138.0
45
+ * @version 1.139.0
46
46
  *
47
47
  * @constructor
48
48
  * @private
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
29
29
  * @public
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.139.0
32
32
  * @extends sap.ui.vk.tools.Tool
33
33
  * @alias sap.ui.vk.tools.RotateTurntableTool
34
34
  */
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
35
35
  * @public
36
36
  * @author SAP SE
37
- * @version 1.138.0
37
+ * @version 1.139.0
38
38
  * @extends sap.ui.vk.tools.Tool
39
39
  * @alias sap.ui.vk.tools.ScaleTool
40
40
  */
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @extends sap.ui.vk.tools.Gizmo
37
37
  *
38
38
  * @author SAP SE
39
- * @version 1.138.0
39
+ * @version 1.139.0
40
40
  *
41
41
  * @constructor
42
42
  * @private
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
27
27
  * @public
28
28
  * @author SAP SE
29
- * @version 1.138.0
29
+ * @version 1.139.0
30
30
  * @extends sap.ui.vk.tools.Tool
31
31
  * @alias sap.ui.vk.tools.SceneOrientationTool
32
32
  */
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @extends sap.ui.vk.tools.Gizmo
43
43
  *
44
44
  * @author SAP SE
45
- * @version 1.138.0
45
+ * @version 1.139.0
46
46
  *
47
47
  * @constructor
48
48
  * @private
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @param {object} [oScope] scope An object for resolving string-based type and formatter references in bindings.
28
28
  * @public
29
29
  * @author SAP SE
30
- * @version 1.138.0
30
+ * @version 1.139.0
31
31
  * @extends sap.ui.core.Element
32
32
  * @alias sap.ui.vk.tools.Tool
33
33
  */
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
29
29
  * @public
30
30
  * @author SAP SE
31
- * @version 1.138.0
31
+ * @version 1.139.0
32
32
  * @extends sap.ui.vk.tools.Tool
33
33
  * @alias sap.ui.vk.tools.TooltipTool
34
34
  */
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.vk.tools.Gizmo
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.138.0
27
+ * @version 1.139.0
28
28
  *
29
29
  * @constructor
30
30
  * @private
@@ -22,6 +22,7 @@ sap.ui.define([
22
22
  TooltipToolHandler.prototype.hover = function(event) {
23
23
  const gizmo = this._tool.getGizmo();
24
24
  const viewport = this.getViewport();
25
+
25
26
  if (gizmo && this._inside(event) && viewport.getScene()) {
26
27
  const absoluteX = event.x, absoluteY = event.y;
27
28
  const x = absoluteX - this._rect.x, y = absoluteY - this._rect.y;
@@ -33,6 +34,10 @@ sap.ui.define([
33
34
  // TODO: Return object should be consistent among all viewports!
34
35
  hitObject = hitObject.object;
35
36
  }
37
+ if (viewport.isECAD?.() === true) {
38
+ // return whole element
39
+ hitObject = viewport.findElement(hitObject);
40
+ }
36
41
  gizmo.update(x, y, absoluteX, absoluteY, hitObject);
37
42
  };
38
43
 
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @param {object} [mSettings] An optional map/JSON object with initial property values, aggregated objects etc. for the new tool instance.
37
37
  * @public
38
38
  * @author SAP SE
39
- * @version 1.138.0
39
+ * @version 1.139.0
40
40
  * @extends sap.ui.vk.tools.Tool
41
41
  * @alias sap.ui.vk.tools.TransformSvgElementTool
42
42
  */
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @extends sap.ui.vk.tools.Gizmo
31
31
  *
32
32
  * @author SAP SE
33
- * @version 1.138.0
33
+ * @version 1.139.0
34
34
  *
35
35
  * @constructor
36
36
  * @private