@babylonjs/gui 5.0.0-rc.1 → 5.0.0-rc.12

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 (306) hide show
  1. package/2D/adtInstrumentation.d.ts +52 -52
  2. package/2D/adtInstrumentation.js +126 -126
  3. package/2D/adtInstrumentation.js.map +1 -1
  4. package/2D/advancedDynamicTexture.d.ts +449 -423
  5. package/2D/advancedDynamicTexture.js +1318 -1286
  6. package/2D/advancedDynamicTexture.js.map +1 -1
  7. package/2D/controls/button.d.ts +135 -97
  8. package/2D/controls/button.js +276 -238
  9. package/2D/controls/button.js.map +1 -1
  10. package/2D/controls/checkbox.d.ts +59 -51
  11. package/2D/controls/checkbox.js +188 -178
  12. package/2D/controls/checkbox.js.map +1 -1
  13. package/2D/controls/colorpicker.d.ts +103 -90
  14. package/2D/controls/colorpicker.js +1417 -1400
  15. package/2D/controls/colorpicker.js.map +1 -1
  16. package/2D/controls/container.d.ts +175 -130
  17. package/2D/controls/container.js +570 -525
  18. package/2D/controls/container.js.map +1 -1
  19. package/2D/controls/control.d.ts +866 -743
  20. package/2D/controls/control.js +2433 -2308
  21. package/2D/controls/control.js.map +1 -1
  22. package/2D/controls/displayGrid.d.ts +53 -55
  23. package/2D/controls/displayGrid.js +245 -245
  24. package/2D/controls/displayGrid.js.map +1 -1
  25. package/2D/controls/ellipse.d.ts +21 -21
  26. package/2D/controls/ellipse.js +85 -85
  27. package/2D/controls/ellipse.js.map +1 -1
  28. package/2D/controls/focusableButton.d.ts +59 -52
  29. package/2D/controls/focusableButton.js +99 -92
  30. package/2D/controls/focusableButton.js.map +1 -1
  31. package/2D/controls/focusableControl.d.ts +34 -34
  32. package/2D/controls/focusableControl.js +1 -1
  33. package/2D/controls/focusableControl.js.map +1 -1
  34. package/2D/controls/grid.d.ts +139 -135
  35. package/2D/controls/grid.js +529 -525
  36. package/2D/controls/grid.js.map +1 -1
  37. package/2D/controls/image.d.ts +204 -197
  38. package/2D/controls/image.js +887 -879
  39. package/2D/controls/image.js.map +1 -1
  40. package/2D/controls/index.d.ts +29 -29
  41. package/2D/controls/index.js +29 -29
  42. package/2D/controls/index.js.map +1 -1
  43. package/2D/controls/inputPassword.d.ts +9 -8
  44. package/2D/controls/inputPassword.js +28 -25
  45. package/2D/controls/inputPassword.js.map +1 -1
  46. package/2D/controls/inputText.d.ts +201 -182
  47. package/2D/controls/inputText.js +1119 -1096
  48. package/2D/controls/inputText.js.map +1 -1
  49. package/2D/controls/line.d.ts +66 -66
  50. package/2D/controls/line.js +271 -271
  51. package/2D/controls/line.js.map +1 -1
  52. package/2D/controls/multiLine.d.ts +75 -77
  53. package/2D/controls/multiLine.js +262 -262
  54. package/2D/controls/multiLine.js.map +1 -1
  55. package/2D/controls/radioButton.d.ts +49 -49
  56. package/2D/controls/radioButton.js +205 -205
  57. package/2D/controls/radioButton.js.map +1 -1
  58. package/2D/controls/rectangle.d.ts +29 -29
  59. package/2D/controls/rectangle.js +150 -150
  60. package/2D/controls/rectangle.js.map +1 -1
  61. package/2D/controls/scrollViewers/scrollViewer.d.ts +182 -175
  62. package/2D/controls/scrollViewers/scrollViewer.js +677 -676
  63. package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
  64. package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +57 -45
  65. package/2D/controls/scrollViewers/scrollViewerWindow.js +278 -263
  66. package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
  67. package/2D/controls/selector.d.ts +263 -209
  68. package/2D/controls/selector.js +692 -629
  69. package/2D/controls/selector.js.map +1 -1
  70. package/2D/controls/sliders/baseSlider.d.ts +82 -78
  71. package/2D/controls/sliders/baseSlider.js +347 -343
  72. package/2D/controls/sliders/baseSlider.js.map +1 -1
  73. package/2D/controls/sliders/imageBasedSlider.d.ts +49 -47
  74. package/2D/controls/sliders/imageBasedSlider.js +192 -188
  75. package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
  76. package/2D/controls/sliders/imageScrollBar.d.ts +65 -61
  77. package/2D/controls/sliders/imageScrollBar.js +263 -256
  78. package/2D/controls/sliders/imageScrollBar.js.map +1 -1
  79. package/2D/controls/sliders/scrollBar.d.ts +38 -34
  80. package/2D/controls/sliders/scrollBar.js +143 -136
  81. package/2D/controls/sliders/scrollBar.js.map +1 -1
  82. package/2D/controls/sliders/slider.d.ts +35 -37
  83. package/2D/controls/sliders/slider.js +271 -271
  84. package/2D/controls/sliders/slider.js.map +1 -1
  85. package/2D/controls/stackPanel.d.ts +64 -56
  86. package/2D/controls/stackPanel.js +246 -236
  87. package/2D/controls/stackPanel.js.map +1 -1
  88. package/2D/controls/statics.d.ts +6 -6
  89. package/2D/controls/statics.js +49 -47
  90. package/2D/controls/statics.js.map +1 -1
  91. package/2D/controls/textBlock.d.ts +175 -172
  92. package/2D/controls/textBlock.js +603 -598
  93. package/2D/controls/textBlock.js.map +1 -1
  94. package/2D/controls/textWrapper.d.ts +13 -13
  95. package/2D/controls/textWrapper.js +101 -101
  96. package/2D/controls/textWrapper.js.map +1 -1
  97. package/2D/controls/toggleButton.d.ts +117 -83
  98. package/2D/controls/toggleButton.js +268 -234
  99. package/2D/controls/toggleButton.js.map +1 -1
  100. package/2D/controls/virtualKeyboard.d.ts +96 -96
  101. package/2D/controls/virtualKeyboard.js +256 -256
  102. package/2D/controls/virtualKeyboard.js.map +1 -1
  103. package/2D/index.d.ts +9 -9
  104. package/2D/index.js +10 -9
  105. package/2D/index.js.map +1 -1
  106. package/2D/math2D.d.ts +117 -117
  107. package/2D/math2D.js +221 -221
  108. package/2D/math2D.js.map +1 -1
  109. package/2D/measure.d.ts +77 -77
  110. package/2D/measure.js +139 -149
  111. package/2D/measure.js.map +1 -1
  112. package/2D/multiLinePoint.d.ts +47 -47
  113. package/2D/multiLinePoint.js +127 -127
  114. package/2D/multiLinePoint.js.map +1 -1
  115. package/2D/style.d.ts +46 -46
  116. package/2D/style.js +97 -97
  117. package/2D/style.js.map +1 -1
  118. package/2D/valueAndUnit.d.ts +89 -89
  119. package/2D/valueAndUnit.js +226 -222
  120. package/2D/valueAndUnit.js.map +1 -1
  121. package/2D/xmlLoader.d.ts +60 -60
  122. package/2D/xmlLoader.js +348 -348
  123. package/2D/xmlLoader.js.map +1 -1
  124. package/3D/behaviors/defaultBehavior.d.ts +73 -73
  125. package/3D/behaviors/defaultBehavior.js +121 -121
  126. package/3D/behaviors/defaultBehavior.js.map +1 -1
  127. package/3D/controls/abstractButton3D.d.ts +15 -15
  128. package/3D/controls/abstractButton3D.js +25 -25
  129. package/3D/controls/abstractButton3D.js.map +1 -1
  130. package/3D/controls/button3D.d.ts +30 -30
  131. package/3D/controls/button3D.js +93 -93
  132. package/3D/controls/button3D.js.map +1 -1
  133. package/3D/controls/container3D.d.ts +72 -72
  134. package/3D/controls/container3D.js +139 -140
  135. package/3D/controls/container3D.js.map +1 -1
  136. package/3D/controls/contentDisplay3D.d.ts +30 -30
  137. package/3D/controls/contentDisplay3D.js +79 -78
  138. package/3D/controls/contentDisplay3D.js.map +1 -1
  139. package/3D/controls/control3D.d.ts +201 -165
  140. package/3D/controls/control3D.js +445 -408
  141. package/3D/controls/control3D.js.map +1 -1
  142. package/3D/controls/cylinderPanel.d.ts +17 -17
  143. package/3D/controls/cylinderPanel.js +66 -66
  144. package/3D/controls/cylinderPanel.js.map +1 -1
  145. package/3D/controls/handMenu.d.ts +28 -28
  146. package/3D/controls/handMenu.js +47 -47
  147. package/3D/controls/handMenu.js.map +1 -1
  148. package/3D/controls/holographicBackplate.d.ts +49 -48
  149. package/3D/controls/holographicBackplate.js +120 -120
  150. package/3D/controls/holographicBackplate.js.map +1 -1
  151. package/3D/controls/holographicButton.d.ts +84 -83
  152. package/3D/controls/holographicButton.js +339 -338
  153. package/3D/controls/holographicButton.js.map +1 -1
  154. package/3D/controls/holographicSlate.d.ts +131 -128
  155. package/3D/controls/holographicSlate.js +431 -428
  156. package/3D/controls/holographicSlate.js.map +1 -1
  157. package/3D/controls/index.d.ts +21 -21
  158. package/3D/controls/index.js +21 -21
  159. package/3D/controls/index.js.map +1 -1
  160. package/3D/controls/meshButton3D.d.ts +21 -21
  161. package/3D/controls/meshButton3D.js +62 -61
  162. package/3D/controls/meshButton3D.js.map +1 -1
  163. package/3D/controls/nearMenu.d.ts +44 -44
  164. package/3D/controls/nearMenu.js +114 -112
  165. package/3D/controls/nearMenu.js.map +1 -1
  166. package/3D/controls/planePanel.d.ts +9 -9
  167. package/3D/controls/planePanel.js +36 -36
  168. package/3D/controls/planePanel.js.map +1 -1
  169. package/3D/controls/scatterPanel.d.ts +18 -18
  170. package/3D/controls/scatterPanel.js +108 -108
  171. package/3D/controls/scatterPanel.js.map +1 -1
  172. package/3D/controls/slider3D.d.ts +81 -81
  173. package/3D/controls/slider3D.js +268 -267
  174. package/3D/controls/slider3D.js.map +1 -1
  175. package/3D/controls/spherePanel.d.ts +17 -17
  176. package/3D/controls/spherePanel.js +67 -67
  177. package/3D/controls/spherePanel.js.map +1 -1
  178. package/3D/controls/stackPanel3D.d.ts +22 -22
  179. package/3D/controls/stackPanel3D.js +107 -107
  180. package/3D/controls/stackPanel3D.js.map +1 -1
  181. package/3D/controls/touchButton3D.d.ts +80 -75
  182. package/3D/controls/touchButton3D.js +233 -227
  183. package/3D/controls/touchButton3D.js.map +1 -1
  184. package/3D/controls/touchHolographicButton.d.ts +110 -109
  185. package/3D/controls/touchHolographicButton.js +445 -445
  186. package/3D/controls/touchHolographicButton.js.map +1 -1
  187. package/3D/controls/touchHolographicMenu.d.ts +61 -61
  188. package/3D/controls/touchHolographicMenu.js +149 -148
  189. package/3D/controls/touchHolographicMenu.js.map +1 -1
  190. package/3D/controls/touchMeshButton3D.d.ts +21 -22
  191. package/3D/controls/touchMeshButton3D.js +62 -62
  192. package/3D/controls/touchMeshButton3D.js.map +1 -1
  193. package/3D/controls/volumeBasedPanel.d.ts +53 -52
  194. package/3D/controls/volumeBasedPanel.js +174 -174
  195. package/3D/controls/volumeBasedPanel.js.map +1 -1
  196. package/3D/gizmos/gizmoHandle.d.ts +108 -108
  197. package/3D/gizmos/gizmoHandle.js +209 -209
  198. package/3D/gizmos/gizmoHandle.js.map +1 -1
  199. package/3D/gizmos/index.d.ts +2 -2
  200. package/3D/gizmos/index.js +2 -2
  201. package/3D/gizmos/index.js.map +1 -1
  202. package/3D/gizmos/slateGizmo.d.ts +57 -57
  203. package/3D/gizmos/slateGizmo.js +369 -369
  204. package/3D/gizmos/slateGizmo.js.map +1 -1
  205. package/3D/gui3DManager.d.ts +94 -94
  206. package/3D/gui3DManager.js +257 -257
  207. package/3D/gui3DManager.js.map +1 -1
  208. package/3D/index.d.ts +5 -5
  209. package/3D/index.js +6 -5
  210. package/3D/index.js.map +1 -1
  211. package/3D/materials/fluent/fluentMaterial.d.ts +91 -90
  212. package/3D/materials/fluent/fluentMaterial.js +292 -281
  213. package/3D/materials/fluent/fluentMaterial.js.map +1 -1
  214. package/3D/materials/fluent/index.d.ts +1 -1
  215. package/3D/materials/fluent/index.js +1 -1
  216. package/3D/materials/fluent/index.js.map +1 -1
  217. package/3D/materials/fluent/shaders/fluent.fragment.d.ts +5 -5
  218. package/3D/materials/fluent/shaders/fluent.fragment.js +8 -6
  219. package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -1
  220. package/3D/materials/fluent/shaders/fluent.vertex.d.ts +5 -5
  221. package/3D/materials/fluent/shaders/fluent.vertex.js +8 -6
  222. package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -1
  223. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +155 -154
  224. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +469 -434
  225. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -1
  226. package/3D/materials/fluentBackplate/index.d.ts +1 -1
  227. package/3D/materials/fluentBackplate/index.js +1 -1
  228. package/3D/materials/fluentBackplate/index.js.map +1 -1
  229. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -5
  230. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +8 -6
  231. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -1
  232. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -5
  233. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +8 -6
  234. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -1
  235. package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +190 -189
  236. package/3D/materials/fluentButton/fluentButtonMaterial.js +539 -537
  237. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -1
  238. package/3D/materials/fluentButton/index.d.ts +1 -1
  239. package/3D/materials/fluentButton/index.js +1 -1
  240. package/3D/materials/fluentButton/index.js.map +1 -1
  241. package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -5
  242. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +8 -6
  243. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -1
  244. package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -5
  245. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +8 -6
  246. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -1
  247. package/3D/materials/fluentMaterial.d.ts +4 -4
  248. package/3D/materials/fluentMaterial.js +4 -4
  249. package/3D/materials/fluentMaterial.js.map +1 -1
  250. package/3D/materials/handle/handleMaterial.d.ts +68 -68
  251. package/3D/materials/handle/handleMaterial.js +126 -126
  252. package/3D/materials/handle/handleMaterial.js.map +1 -1
  253. package/3D/materials/handle/index.d.ts +1 -1
  254. package/3D/materials/handle/index.js +1 -1
  255. package/3D/materials/handle/index.js.map +1 -1
  256. package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -5
  257. package/3D/materials/handle/shaders/handle.fragment.js +8 -6
  258. package/3D/materials/handle/shaders/handle.fragment.js.map +1 -1
  259. package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -5
  260. package/3D/materials/handle/shaders/handle.vertex.js +8 -6
  261. package/3D/materials/handle/shaders/handle.vertex.js.map +1 -1
  262. package/3D/materials/index.d.ts +5 -5
  263. package/3D/materials/index.js +6 -5
  264. package/3D/materials/index.js.map +1 -1
  265. package/3D/materials/mrdl/index.d.ts +3 -3
  266. package/3D/materials/mrdl/index.js +3 -3
  267. package/3D/materials/mrdl/index.js.map +1 -1
  268. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +148 -147
  269. package/3D/materials/mrdl/mrdlBackplateMaterial.js +436 -409
  270. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -1
  271. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +334 -333
  272. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +851 -786
  273. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -1
  274. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +334 -333
  275. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +851 -786
  276. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -1
  277. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -5
  278. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +8 -6
  279. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -1
  280. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -5
  281. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +8 -6
  282. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -1
  283. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -5
  284. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +8 -6
  285. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -1
  286. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -5
  287. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +8 -6
  288. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -1
  289. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -5
  290. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +8 -6
  291. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -1
  292. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -5
  293. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +8 -6
  294. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -1
  295. package/3D/vector3WithInfo.d.ts +16 -16
  296. package/3D/vector3WithInfo.js +23 -23
  297. package/3D/vector3WithInfo.js.map +1 -1
  298. package/index.d.ts +2 -2
  299. package/index.js +3 -2
  300. package/index.js.map +1 -1
  301. package/legacy/legacy.d.ts +1 -1
  302. package/legacy/legacy.js +14 -13
  303. package/legacy/legacy.js.map +1 -1
  304. package/license.md +71 -0
  305. package/package.json +37 -325
  306. package/readme.md +2 -2
@@ -1,113 +1,115 @@
1
- import { __extends } from "tslib";
2
- import { TouchHolographicButton } from "./touchHolographicButton.js";
3
- import { DefaultBehavior } from "../behaviors/defaultBehavior.js";
4
- import { TouchHolographicMenu } from "./touchHolographicMenu.js";
5
- /**
6
- * NearMenu that displays buttons and follows the camera
7
- * @since 5.0.0
8
- */
9
- var NearMenu = /** @class */ (function (_super) {
10
- __extends(NearMenu, _super);
11
- /**
12
- * Creates a near menu GUI 3D control
13
- * @param name name of the near menu
14
- */
15
- function NearMenu(name) {
16
- var _this = _super.call(this, name) || this;
17
- _this._isPinned = false;
18
- _this._defaultBehavior = new DefaultBehavior();
19
- _this._dragObserver = _this._defaultBehavior.sixDofDragBehavior.onDragObservable.add(function () {
20
- _this.isPinned = true;
21
- });
22
- _this.backPlateMargin = 1;
23
- return _this;
24
- }
25
- Object.defineProperty(NearMenu.prototype, "defaultBehavior", {
26
- /**
27
- * Regroups all mesh behaviors for the near menu
28
- */
29
- get: function () {
30
- return this._defaultBehavior;
31
- },
32
- enumerable: false,
33
- configurable: true
34
- });
35
- Object.defineProperty(NearMenu.prototype, "isPinned", {
36
- /**
37
- * Indicates if the near menu is world-pinned
38
- */
39
- get: function () {
40
- return this._isPinned;
41
- },
42
- set: function (value) {
43
- // Tell the pin button to toggle if this was called manually, for clean state control
44
- if (this._pinButton.isToggled !== value) {
45
- this._pinButton.isToggled = value;
46
- return;
47
- }
48
- this._isPinned = value;
49
- if (value) {
50
- this._defaultBehavior.followBehaviorEnabled = false;
51
- }
52
- else {
53
- this._defaultBehavior.followBehaviorEnabled = true;
54
- }
55
- },
56
- enumerable: false,
57
- configurable: true
58
- });
59
- NearMenu.prototype._createPinButton = function (parent) {
60
- var _this = this;
61
- var control = new TouchHolographicButton("pin" + this.name, false);
62
- control.imageUrl = NearMenu.ASSETS_BASE_URL + NearMenu.PIN_ICON_FILENAME;
63
- control.parent = this;
64
- control._host = this._host;
65
- control.isToggleButton = true;
66
- control.onToggleObservable.add(function (newState) { _this.isPinned = newState; });
67
- if (this._host.utilityLayer) {
68
- control._prepareNode(this._host.utilityLayer.utilityLayerScene);
69
- control.scaling.scaleInPlace(TouchHolographicMenu.MENU_BUTTON_SCALE);
70
- if (control.node) {
71
- control.node.parent = parent;
72
- }
73
- }
74
- return control;
75
- };
76
- NearMenu.prototype._createNode = function (scene) {
77
- var node = _super.prototype._createNode.call(this, scene);
78
- this._pinButton = this._createPinButton(node);
79
- this.isPinned = false;
80
- this._defaultBehavior.attach(node, [this._backPlate]);
81
- this._defaultBehavior.followBehavior.ignoreCameraPitchAndRoll = true;
82
- this._defaultBehavior.followBehavior.pitchOffset = -15;
83
- this._defaultBehavior.followBehavior.minimumDistance = 0.3;
84
- this._defaultBehavior.followBehavior.defaultDistance = 0.4;
85
- this._defaultBehavior.followBehavior.maximumDistance = 0.6;
86
- this._backPlate.isNearGrabbable = true;
87
- node.isVisible = false;
88
- return node;
89
- };
90
- NearMenu.prototype._finalProcessing = function () {
91
- _super.prototype._finalProcessing.call(this);
92
- this._pinButton.position.copyFromFloats((this._backPlate.scaling.x + TouchHolographicMenu.MENU_BUTTON_SCALE) / 2, this._backPlate.scaling.y / 2, 0);
93
- };
94
- /**
95
- * Disposes the near menu
96
- */
97
- NearMenu.prototype.dispose = function () {
98
- _super.prototype.dispose.call(this);
99
- this._defaultBehavior.sixDofDragBehavior.onDragObservable.remove(this._dragObserver);
100
- this._defaultBehavior.detach();
101
- };
102
- /**
103
- * Base Url for the assets.
104
- */
105
- NearMenu.ASSETS_BASE_URL = "https://assets.babylonjs.com/meshes/MRTK/";
106
- /**
107
- * File name for the close icon.
108
- */
109
- NearMenu.PIN_ICON_FILENAME = "IconPin.png";
110
- return NearMenu;
111
- }(TouchHolographicMenu));
112
- export { NearMenu };
1
+ import { __extends } from "tslib";
2
+ import { TouchHolographicButton } from "./touchHolographicButton";
3
+ import { DefaultBehavior } from "../behaviors/defaultBehavior";
4
+ import { TouchHolographicMenu } from "./touchHolographicMenu";
5
+ /**
6
+ * NearMenu that displays buttons and follows the camera
7
+ * @since 5.0.0
8
+ */
9
+ var NearMenu = /** @class */ (function (_super) {
10
+ __extends(NearMenu, _super);
11
+ /**
12
+ * Creates a near menu GUI 3D control
13
+ * @param name name of the near menu
14
+ */
15
+ function NearMenu(name) {
16
+ var _this = _super.call(this, name) || this;
17
+ _this._isPinned = false;
18
+ _this._defaultBehavior = new DefaultBehavior();
19
+ _this._dragObserver = _this._defaultBehavior.sixDofDragBehavior.onDragObservable.add(function () {
20
+ _this.isPinned = true;
21
+ });
22
+ _this.backPlateMargin = 1;
23
+ return _this;
24
+ }
25
+ Object.defineProperty(NearMenu.prototype, "defaultBehavior", {
26
+ /**
27
+ * Regroups all mesh behaviors for the near menu
28
+ */
29
+ get: function () {
30
+ return this._defaultBehavior;
31
+ },
32
+ enumerable: false,
33
+ configurable: true
34
+ });
35
+ Object.defineProperty(NearMenu.prototype, "isPinned", {
36
+ /**
37
+ * Indicates if the near menu is world-pinned
38
+ */
39
+ get: function () {
40
+ return this._isPinned;
41
+ },
42
+ set: function (value) {
43
+ // Tell the pin button to toggle if this was called manually, for clean state control
44
+ if (this._pinButton.isToggled !== value) {
45
+ this._pinButton.isToggled = value;
46
+ return;
47
+ }
48
+ this._isPinned = value;
49
+ if (value) {
50
+ this._defaultBehavior.followBehaviorEnabled = false;
51
+ }
52
+ else {
53
+ this._defaultBehavior.followBehaviorEnabled = true;
54
+ }
55
+ },
56
+ enumerable: false,
57
+ configurable: true
58
+ });
59
+ NearMenu.prototype._createPinButton = function (parent) {
60
+ var _this = this;
61
+ var control = new TouchHolographicButton("pin" + this.name, false);
62
+ control.imageUrl = NearMenu._ASSETS_BASE_URL + NearMenu._PIN_ICON_FILENAME;
63
+ control.parent = this;
64
+ control._host = this._host;
65
+ control.isToggleButton = true;
66
+ control.onToggleObservable.add(function (newState) {
67
+ _this.isPinned = newState;
68
+ });
69
+ if (this._host.utilityLayer) {
70
+ control._prepareNode(this._host.utilityLayer.utilityLayerScene);
71
+ control.scaling.scaleInPlace(TouchHolographicMenu.MENU_BUTTON_SCALE);
72
+ if (control.node) {
73
+ control.node.parent = parent;
74
+ }
75
+ }
76
+ return control;
77
+ };
78
+ NearMenu.prototype._createNode = function (scene) {
79
+ var node = _super.prototype._createNode.call(this, scene);
80
+ this._pinButton = this._createPinButton(node);
81
+ this.isPinned = false;
82
+ this._defaultBehavior.attach(node, [this._backPlate]);
83
+ this._defaultBehavior.followBehavior.ignoreCameraPitchAndRoll = true;
84
+ this._defaultBehavior.followBehavior.pitchOffset = -15;
85
+ this._defaultBehavior.followBehavior.minimumDistance = 0.3;
86
+ this._defaultBehavior.followBehavior.defaultDistance = 0.4;
87
+ this._defaultBehavior.followBehavior.maximumDistance = 0.6;
88
+ this._backPlate.isNearGrabbable = true;
89
+ node.isVisible = false;
90
+ return node;
91
+ };
92
+ NearMenu.prototype._finalProcessing = function () {
93
+ _super.prototype._finalProcessing.call(this);
94
+ this._pinButton.position.copyFromFloats((this._backPlate.scaling.x + TouchHolographicMenu.MENU_BUTTON_SCALE) / 2, this._backPlate.scaling.y / 2, 0);
95
+ };
96
+ /**
97
+ * Disposes the near menu
98
+ */
99
+ NearMenu.prototype.dispose = function () {
100
+ _super.prototype.dispose.call(this);
101
+ this._defaultBehavior.sixDofDragBehavior.onDragObservable.remove(this._dragObserver);
102
+ this._defaultBehavior.detach();
103
+ };
104
+ /**
105
+ * Base Url for the assets.
106
+ */
107
+ NearMenu._ASSETS_BASE_URL = "https://assets.babylonjs.com/meshes/MRTK/";
108
+ /**
109
+ * File name for the close icon.
110
+ */
111
+ NearMenu._PIN_ICON_FILENAME = "IconPin.png";
112
+ return NearMenu;
113
+ }(TouchHolographicMenu));
114
+ export { NearMenu };
113
115
  //# sourceMappingURL=nearMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nearMenu.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/nearMenu.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scene } from \"@babylonjs/core/scene\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { Nullable } from \"@babylonjs/core/types\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\nimport { TouchHolographicButton } from \"./touchHolographicButton\";\r\nimport { DefaultBehavior } from \"../behaviors/defaultBehavior\";\r\nimport { TouchHolographicMenu } from \"./touchHolographicMenu\";\r\nimport { Observer } from \"@babylonjs/core/Misc/observable\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { PickingInfo } from \"@babylonjs/core/Collisions/pickingInfo\";\r\n\r\n/**\r\n * NearMenu that displays buttons and follows the camera\r\n * @since 5.0.0\r\n */\r\nexport class NearMenu extends TouchHolographicMenu {\r\n /**\r\n * Base Url for the assets.\r\n */\r\n private static ASSETS_BASE_URL: string = \"https://assets.babylonjs.com/meshes/MRTK/\";\r\n /**\r\n * File name for the close icon.\r\n */\r\n private static PIN_ICON_FILENAME: string = \"IconPin.png\";\r\n\r\n private _pinButton: TouchHolographicButton;\r\n private _dragObserver: Nullable<\r\n Observer<{\r\n delta: Vector3;\r\n position: Vector3;\r\n pickInfo: PickingInfo;\r\n }>\r\n >;\r\n\r\n private _defaultBehavior: DefaultBehavior;\r\n /**\r\n * Regroups all mesh behaviors for the near menu\r\n */\r\n public get defaultBehavior(): DefaultBehavior {\r\n return this._defaultBehavior;\r\n }\r\n\r\n private _isPinned: boolean = false;\r\n /**\r\n * Indicates if the near menu is world-pinned\r\n */\r\n public get isPinned(): boolean {\r\n return this._isPinned;\r\n }\r\n\r\n public set isPinned(value: boolean) {\r\n // Tell the pin button to toggle if this was called manually, for clean state control\r\n if (this._pinButton.isToggled !== value) {\r\n this._pinButton.isToggled = value;\r\n return;\r\n }\r\n\r\n this._isPinned = value;\r\n\r\n if (value) {\r\n this._defaultBehavior.followBehaviorEnabled = false;\r\n } else {\r\n this._defaultBehavior.followBehaviorEnabled = true;\r\n }\r\n }\r\n\r\n private _createPinButton(parent: TransformNode) {\r\n const control = new TouchHolographicButton(\"pin\" + this.name, false);\r\n control.imageUrl = NearMenu.ASSETS_BASE_URL + NearMenu.PIN_ICON_FILENAME;\r\n control.parent = this;\r\n control._host = this._host;\r\n control.isToggleButton = true;\r\n control.onToggleObservable.add((newState) => { this.isPinned = newState; });\r\n\r\n if (this._host.utilityLayer) {\r\n control._prepareNode(this._host.utilityLayer.utilityLayerScene);\r\n control.scaling.scaleInPlace(TouchHolographicMenu.MENU_BUTTON_SCALE);\r\n\r\n if (control.node) {\r\n control.node.parent = parent;\r\n }\r\n }\r\n\r\n return control;\r\n }\r\n\r\n protected _createNode(scene: Scene): Nullable<TransformNode> {\r\n const node = super._createNode(scene)! as Mesh;\r\n\r\n this._pinButton = this._createPinButton(node);\r\n this.isPinned = false;\r\n\r\n this._defaultBehavior.attach(node, [this._backPlate]);\r\n this._defaultBehavior.followBehavior.ignoreCameraPitchAndRoll = true;\r\n this._defaultBehavior.followBehavior.pitchOffset = -15;\r\n this._defaultBehavior.followBehavior.minimumDistance = 0.3;\r\n this._defaultBehavior.followBehavior.defaultDistance = 0.4;\r\n this._defaultBehavior.followBehavior.maximumDistance = 0.6;\r\n\r\n this._backPlate.isNearGrabbable = true;\r\n node.isVisible = false;\r\n\r\n return node;\r\n }\r\n\r\n protected _finalProcessing() {\r\n super._finalProcessing();\r\n\r\n this._pinButton.position.copyFromFloats((this._backPlate.scaling.x + TouchHolographicMenu.MENU_BUTTON_SCALE) / 2, this._backPlate.scaling.y / 2, 0);\r\n }\r\n\r\n /**\r\n * Creates a near menu GUI 3D control\r\n * @param name name of the near menu\r\n */\r\n constructor(name?: string) {\r\n super(name);\r\n\r\n this._defaultBehavior = new DefaultBehavior();\r\n this._dragObserver = this._defaultBehavior.sixDofDragBehavior.onDragObservable.add(() => {\r\n this.isPinned = true;\r\n });\r\n\r\n this.backPlateMargin = 1;\r\n }\r\n\r\n /**\r\n * Disposes the near menu\r\n */\r\n public dispose() {\r\n super.dispose();\r\n\r\n this._defaultBehavior.sixDofDragBehavior.onDragObservable.remove(this._dragObserver);\r\n this._defaultBehavior.detach();\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"nearMenu.js","sourceRoot":"","sources":["../../../../../../lts/gui/generated/3D/controls/nearMenu.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9D;;;GAGG;AACH;IAA8B,4BAAoB;IAkG9C;;;OAGG;IACH,kBAAY,IAAa;QAAzB,YACI,kBAAM,IAAI,CAAC,SAQd;QApFO,eAAS,GAAY,KAAK,CAAC;QA8E/B,KAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,KAAI,CAAC,aAAa,GAAG,KAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,CAAC;YAC/E,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,KAAI,CAAC,eAAe,GAAG,CAAC,CAAC;;IAC7B,CAAC;IAxFD,sBAAW,qCAAe;QAH1B;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,gBAAgB,CAAC;QACjC,CAAC;;;OAAA;IAMD,sBAAW,8BAAQ;QAHnB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,SAAS,CAAC;QAC1B,CAAC;aAED,UAAoB,KAAc;YAC9B,qFAAqF;YACrF,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,KAAK,EAAE;gBACrC,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;gBAClC,OAAO;aACV;YAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,GAAG,KAAK,CAAC;aACvD;iBAAM;gBACH,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,GAAG,IAAI,CAAC;aACtD;QACL,CAAC;;;OAhBA;IAkBO,mCAAgB,GAAxB,UAAyB,MAAqB;QAA9C,iBAoBC;QAnBG,IAAM,OAAO,GAAG,IAAI,sBAAsB,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,GAAG,QAAQ,CAAC,kBAAkB,CAAC;QAC3E,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QACtB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;QAC9B,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAC,QAAQ;YACpC,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YACzB,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;YAChE,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;YAErE,IAAI,OAAO,CAAC,IAAI,EAAE;gBACd,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;aAChC;SACJ;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAES,8BAAW,GAArB,UAAsB,KAAY;QAC9B,IAAM,IAAI,GAAG,iBAAM,WAAW,YAAC,KAAK,CAAU,CAAC;QAE/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,wBAAwB,GAAG,IAAI,CAAC;QACrE,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,eAAe,GAAG,GAAG,CAAC;QAC3D,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,eAAe,GAAG,GAAG,CAAC;QAC3D,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,eAAe,GAAG,GAAG,CAAC;QAE3D,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,mCAAgB,GAA1B;QACI,iBAAM,gBAAgB,WAAE,CAAC;QAEzB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACxJ,CAAC;IAiBD;;OAEG;IACI,0BAAO,GAAd;QACI,iBAAM,OAAO,WAAE,CAAC;QAEhB,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrF,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAxHD;;OAEG;IACY,yBAAgB,GAAW,2CAA2C,CAAC;IACtF;;OAEG;IACY,2BAAkB,GAAW,aAAa,CAAC;IAkH9D,eAAC;CAAA,AA1HD,CAA8B,oBAAoB,GA0HjD;SA1HY,QAAQ","sourcesContent":["import type { Scene } from \"core/scene\";\r\nimport type { TransformNode } from \"core/Meshes/transformNode\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport { TouchHolographicButton } from \"./touchHolographicButton\";\r\nimport { DefaultBehavior } from \"../behaviors/defaultBehavior\";\r\nimport { TouchHolographicMenu } from \"./touchHolographicMenu\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\nimport type { Vector3 } from \"core/Maths/math.vector\";\r\nimport type { PickingInfo } from \"core/Collisions/pickingInfo\";\r\n\r\n/**\r\n * NearMenu that displays buttons and follows the camera\r\n * @since 5.0.0\r\n */\r\nexport class NearMenu extends TouchHolographicMenu {\r\n /**\r\n * Base Url for the assets.\r\n */\r\n private static _ASSETS_BASE_URL: string = \"https://assets.babylonjs.com/meshes/MRTK/\";\r\n /**\r\n * File name for the close icon.\r\n */\r\n private static _PIN_ICON_FILENAME: string = \"IconPin.png\";\r\n\r\n private _pinButton: TouchHolographicButton;\r\n private _dragObserver: Nullable<\r\n Observer<{\r\n delta: Vector3;\r\n position: Vector3;\r\n pickInfo: PickingInfo;\r\n }>\r\n >;\r\n\r\n private _defaultBehavior: DefaultBehavior;\r\n /**\r\n * Regroups all mesh behaviors for the near menu\r\n */\r\n public get defaultBehavior(): DefaultBehavior {\r\n return this._defaultBehavior;\r\n }\r\n\r\n private _isPinned: boolean = false;\r\n /**\r\n * Indicates if the near menu is world-pinned\r\n */\r\n public get isPinned(): boolean {\r\n return this._isPinned;\r\n }\r\n\r\n public set isPinned(value: boolean) {\r\n // Tell the pin button to toggle if this was called manually, for clean state control\r\n if (this._pinButton.isToggled !== value) {\r\n this._pinButton.isToggled = value;\r\n return;\r\n }\r\n\r\n this._isPinned = value;\r\n\r\n if (value) {\r\n this._defaultBehavior.followBehaviorEnabled = false;\r\n } else {\r\n this._defaultBehavior.followBehaviorEnabled = true;\r\n }\r\n }\r\n\r\n private _createPinButton(parent: TransformNode) {\r\n const control = new TouchHolographicButton(\"pin\" + this.name, false);\r\n control.imageUrl = NearMenu._ASSETS_BASE_URL + NearMenu._PIN_ICON_FILENAME;\r\n control.parent = this;\r\n control._host = this._host;\r\n control.isToggleButton = true;\r\n control.onToggleObservable.add((newState) => {\r\n this.isPinned = newState;\r\n });\r\n\r\n if (this._host.utilityLayer) {\r\n control._prepareNode(this._host.utilityLayer.utilityLayerScene);\r\n control.scaling.scaleInPlace(TouchHolographicMenu.MENU_BUTTON_SCALE);\r\n\r\n if (control.node) {\r\n control.node.parent = parent;\r\n }\r\n }\r\n\r\n return control;\r\n }\r\n\r\n protected _createNode(scene: Scene): Nullable<TransformNode> {\r\n const node = super._createNode(scene)! as Mesh;\r\n\r\n this._pinButton = this._createPinButton(node);\r\n this.isPinned = false;\r\n\r\n this._defaultBehavior.attach(node, [this._backPlate]);\r\n this._defaultBehavior.followBehavior.ignoreCameraPitchAndRoll = true;\r\n this._defaultBehavior.followBehavior.pitchOffset = -15;\r\n this._defaultBehavior.followBehavior.minimumDistance = 0.3;\r\n this._defaultBehavior.followBehavior.defaultDistance = 0.4;\r\n this._defaultBehavior.followBehavior.maximumDistance = 0.6;\r\n\r\n this._backPlate.isNearGrabbable = true;\r\n node.isVisible = false;\r\n\r\n return node;\r\n }\r\n\r\n protected _finalProcessing() {\r\n super._finalProcessing();\r\n\r\n this._pinButton.position.copyFromFloats((this._backPlate.scaling.x + TouchHolographicMenu.MENU_BUTTON_SCALE) / 2, this._backPlate.scaling.y / 2, 0);\r\n }\r\n\r\n /**\r\n * Creates a near menu GUI 3D control\r\n * @param name name of the near menu\r\n */\r\n constructor(name?: string) {\r\n super(name);\r\n\r\n this._defaultBehavior = new DefaultBehavior();\r\n this._dragObserver = this._defaultBehavior.sixDofDragBehavior.onDragObservable.add(() => {\r\n this.isPinned = true;\r\n });\r\n\r\n this.backPlateMargin = 1;\r\n }\r\n\r\n /**\r\n * Disposes the near menu\r\n */\r\n public dispose() {\r\n super.dispose();\r\n\r\n this._defaultBehavior.sixDofDragBehavior.onDragObservable.remove(this._dragObserver);\r\n this._defaultBehavior.detach();\r\n }\r\n}\r\n"]}
@@ -1,9 +1,9 @@
1
- import { Vector3 } from "@babylonjs/core/Maths/math.vector";
2
- import { Control3D } from "./control3D";
3
- import { VolumeBasedPanel } from "./volumeBasedPanel";
4
- /**
5
- * Class used to create a container panel deployed on the surface of a plane
6
- */
7
- export declare class PlanePanel extends VolumeBasedPanel {
8
- protected _mapGridNode(control: Control3D, nodePosition: Vector3): void;
9
- }
1
+ import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
2
+ import type { Control3D } from "./control3D";
3
+ import { VolumeBasedPanel } from "./volumeBasedPanel";
4
+ /**
5
+ * Class used to create a container panel deployed on the surface of a plane
6
+ */
7
+ export declare class PlanePanel extends VolumeBasedPanel {
8
+ protected _mapGridNode(control: Control3D, nodePosition: Vector3): void;
9
+ }
@@ -1,37 +1,37 @@
1
- import { __extends } from "tslib";
2
- import { TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
3
- import { Container3D } from "./container3D.js";
4
- import { VolumeBasedPanel } from "./volumeBasedPanel.js";
5
- /**
6
- * Class used to create a container panel deployed on the surface of a plane
7
- */
8
- var PlanePanel = /** @class */ (function (_super) {
9
- __extends(PlanePanel, _super);
10
- function PlanePanel() {
11
- return _super !== null && _super.apply(this, arguments) || this;
12
- }
13
- PlanePanel.prototype._mapGridNode = function (control, nodePosition) {
14
- var mesh = control.mesh;
15
- if (!mesh) {
16
- return;
17
- }
18
- control.position = nodePosition.clone();
19
- var target = TmpVectors.Vector3[0];
20
- target.copyFrom(nodePosition);
21
- switch (this.orientation) {
22
- case Container3D.FACEORIGIN_ORIENTATION:
23
- case Container3D.FACEFORWARD_ORIENTATION:
24
- target.addInPlace(new Vector3(0, 0, 1));
25
- mesh.lookAt(target);
26
- break;
27
- case Container3D.FACEFORWARDREVERSED_ORIENTATION:
28
- case Container3D.FACEORIGINREVERSED_ORIENTATION:
29
- target.addInPlace(new Vector3(0, 0, -1));
30
- mesh.lookAt(target);
31
- break;
32
- }
33
- };
34
- return PlanePanel;
35
- }(VolumeBasedPanel));
36
- export { PlanePanel };
1
+ import { __extends } from "tslib";
2
+ import { TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
3
+ import { Container3D } from "./container3D";
4
+ import { VolumeBasedPanel } from "./volumeBasedPanel";
5
+ /**
6
+ * Class used to create a container panel deployed on the surface of a plane
7
+ */
8
+ var PlanePanel = /** @class */ (function (_super) {
9
+ __extends(PlanePanel, _super);
10
+ function PlanePanel() {
11
+ return _super !== null && _super.apply(this, arguments) || this;
12
+ }
13
+ PlanePanel.prototype._mapGridNode = function (control, nodePosition) {
14
+ var mesh = control.mesh;
15
+ if (!mesh) {
16
+ return;
17
+ }
18
+ control.position = nodePosition.clone();
19
+ var target = TmpVectors.Vector3[0];
20
+ target.copyFrom(nodePosition);
21
+ switch (this.orientation) {
22
+ case Container3D.FACEORIGIN_ORIENTATION:
23
+ case Container3D.FACEFORWARD_ORIENTATION:
24
+ target.addInPlace(new Vector3(0, 0, 1));
25
+ mesh.lookAt(target);
26
+ break;
27
+ case Container3D.FACEFORWARDREVERSED_ORIENTATION:
28
+ case Container3D.FACEORIGINREVERSED_ORIENTATION:
29
+ target.addInPlace(new Vector3(0, 0, -1));
30
+ mesh.lookAt(target);
31
+ break;
32
+ }
33
+ };
34
+ return PlanePanel;
35
+ }(VolumeBasedPanel));
36
+ export { PlanePanel };
37
37
  //# sourceMappingURL=planePanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"planePanel.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/planePanel.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AACH;IAAgC,8BAAgB;IAAhD;;IA2BA,CAAC;IA1Ba,iCAAY,GAAtB,UAAuB,OAAkB,EAAE,YAAqB;QAC5D,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAExB,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;SACV;QAED,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QACxC,IAAI,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEnC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE9B,QAAQ,IAAI,CAAC,WAAW,EAAE;YACtB,KAAK,WAAW,CAAC,sBAAsB,CAAC;YACxC,KAAK,WAAW,CAAC,uBAAuB;gBACpC,MAAM,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACpB,MAAM;YACV,KAAK,WAAW,CAAC,+BAA+B,CAAC;YACjD,KAAK,WAAW,CAAC,8BAA8B;gBAC3C,MAAM,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACpB,MAAM;SACb;IAEL,CAAC;IACL,iBAAC;AAAD,CAAC,AA3BD,CAAgC,gBAAgB,GA2B/C","sourcesContent":["import { TmpVectors, Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\n\r\nimport { Container3D } from \"./container3D\";\r\nimport { Control3D } from \"./control3D\";\r\nimport { VolumeBasedPanel } from \"./volumeBasedPanel\";\r\n\r\n/**\r\n * Class used to create a container panel deployed on the surface of a plane\r\n */\r\nexport class PlanePanel extends VolumeBasedPanel {\r\n protected _mapGridNode(control: Control3D, nodePosition: Vector3) {\r\n let mesh = control.mesh;\r\n\r\n if (!mesh) {\r\n return;\r\n }\r\n\r\n control.position = nodePosition.clone();\r\n let target = TmpVectors.Vector3[0];\r\n\r\n target.copyFrom(nodePosition);\r\n\r\n switch (this.orientation) {\r\n case Container3D.FACEORIGIN_ORIENTATION:\r\n case Container3D.FACEFORWARD_ORIENTATION:\r\n target.addInPlace(new Vector3(0, 0, 1));\r\n mesh.lookAt(target);\r\n break;\r\n case Container3D.FACEFORWARDREVERSED_ORIENTATION:\r\n case Container3D.FACEORIGINREVERSED_ORIENTATION:\r\n target.addInPlace(new Vector3(0, 0, -1));\r\n mesh.lookAt(target);\r\n break;\r\n }\r\n\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"planePanel.js","sourceRoot":"","sources":["../../../../../../lts/gui/generated/3D/controls/planePanel.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,6CAA+B;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AACH;IAAgC,8BAAgB;IAAhD;;IA0BA,CAAC;IAzBa,iCAAY,GAAtB,UAAuB,OAAkB,EAAE,YAAqB;QAC5D,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAE1B,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;SACV;QAED,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QACxC,IAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAErC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE9B,QAAQ,IAAI,CAAC,WAAW,EAAE;YACtB,KAAK,WAAW,CAAC,sBAAsB,CAAC;YACxC,KAAK,WAAW,CAAC,uBAAuB;gBACpC,MAAM,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACpB,MAAM;YACV,KAAK,WAAW,CAAC,+BAA+B,CAAC;YACjD,KAAK,WAAW,CAAC,8BAA8B;gBAC3C,MAAM,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACpB,MAAM;SACb;IACL,CAAC;IACL,iBAAC;AAAD,CAAC,AA1BD,CAAgC,gBAAgB,GA0B/C","sourcesContent":["import { TmpVectors, Vector3 } from \"core/Maths/math.vector\";\r\n\r\nimport { Container3D } from \"./container3D\";\r\nimport type { Control3D } from \"./control3D\";\r\nimport { VolumeBasedPanel } from \"./volumeBasedPanel\";\r\n\r\n/**\r\n * Class used to create a container panel deployed on the surface of a plane\r\n */\r\nexport class PlanePanel extends VolumeBasedPanel {\r\n protected _mapGridNode(control: Control3D, nodePosition: Vector3) {\r\n const mesh = control.mesh;\r\n\r\n if (!mesh) {\r\n return;\r\n }\r\n\r\n control.position = nodePosition.clone();\r\n const target = TmpVectors.Vector3[0];\r\n\r\n target.copyFrom(nodePosition);\r\n\r\n switch (this.orientation) {\r\n case Container3D.FACEORIGIN_ORIENTATION:\r\n case Container3D.FACEFORWARD_ORIENTATION:\r\n target.addInPlace(new Vector3(0, 0, 1));\r\n mesh.lookAt(target);\r\n break;\r\n case Container3D.FACEFORWARDREVERSED_ORIENTATION:\r\n case Container3D.FACEORIGINREVERSED_ORIENTATION:\r\n target.addInPlace(new Vector3(0, 0, -1));\r\n mesh.lookAt(target);\r\n break;\r\n }\r\n }\r\n}\r\n"]}
@@ -1,18 +1,18 @@
1
- import { Vector3 } from "@babylonjs/core/Maths/math.vector";
2
- import { float } from "@babylonjs/core/types";
3
- import { VolumeBasedPanel } from "./volumeBasedPanel";
4
- import { Control3D } from "./control3D";
5
- /**
6
- * Class used to create a container panel where items get randomized planar mapping
7
- */
8
- export declare class ScatterPanel extends VolumeBasedPanel {
9
- private _iteration;
10
- /**
11
- * Gets or sets the number of iteration to use to scatter the controls (100 by default)
12
- */
13
- get iteration(): float;
14
- set iteration(value: float);
15
- protected _mapGridNode(control: Control3D, nodePosition: Vector3): void;
16
- private _scatterMapping;
17
- protected _finalProcessing(): void;
18
- }
1
+ import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
2
+ import type { float } from "@babylonjs/core/types.js";
3
+ import { VolumeBasedPanel } from "./volumeBasedPanel";
4
+ import type { Control3D } from "./control3D";
5
+ /**
6
+ * Class used to create a container panel where items get randomized planar mapping
7
+ */
8
+ export declare class ScatterPanel extends VolumeBasedPanel {
9
+ private _iteration;
10
+ /**
11
+ * Gets or sets the number of iteration to use to scatter the controls (100 by default)
12
+ */
13
+ get iteration(): float;
14
+ set iteration(value: float);
15
+ protected _mapGridNode(control: Control3D, nodePosition: Vector3): void;
16
+ private _scatterMapping;
17
+ protected _finalProcessing(): void;
18
+ }
@@ -1,109 +1,109 @@
1
- import { __extends } from "tslib";
2
- import { Tools } from "@babylonjs/core/Misc/tools.js";
3
- import { TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
4
- import { VolumeBasedPanel } from "./volumeBasedPanel.js";
5
- import { Container3D } from "./container3D.js";
6
- /**
7
- * Class used to create a container panel where items get randomized planar mapping
8
- */
9
- var ScatterPanel = /** @class */ (function (_super) {
10
- __extends(ScatterPanel, _super);
11
- function ScatterPanel() {
12
- var _this = _super !== null && _super.apply(this, arguments) || this;
13
- _this._iteration = 100.0;
14
- return _this;
15
- }
16
- Object.defineProperty(ScatterPanel.prototype, "iteration", {
17
- /**
18
- * Gets or sets the number of iteration to use to scatter the controls (100 by default)
19
- */
20
- get: function () {
21
- return this._iteration;
22
- },
23
- set: function (value) {
24
- var _this = this;
25
- if (this._iteration === value) {
26
- return;
27
- }
28
- this._iteration = value;
29
- Tools.SetImmediate(function () {
30
- _this._arrangeChildren();
31
- });
32
- },
33
- enumerable: false,
34
- configurable: true
35
- });
36
- ScatterPanel.prototype._mapGridNode = function (control, nodePosition) {
37
- var mesh = control.mesh;
38
- var newPos = this._scatterMapping(nodePosition);
39
- if (!mesh) {
40
- return;
41
- }
42
- switch (this.orientation) {
43
- case Container3D.FACEORIGIN_ORIENTATION:
44
- case Container3D.FACEFORWARD_ORIENTATION:
45
- mesh.lookAt(new Vector3(0, 0, 1));
46
- break;
47
- case Container3D.FACEFORWARDREVERSED_ORIENTATION:
48
- case Container3D.FACEORIGINREVERSED_ORIENTATION:
49
- mesh.lookAt(new Vector3(0, 0, -1));
50
- break;
51
- }
52
- control.position = newPos;
53
- };
54
- ScatterPanel.prototype._scatterMapping = function (source) {
55
- source.x = (1.0 - Math.random() * 2.0) * this._cellWidth;
56
- source.y = (1.0 - Math.random() * 2.0) * this._cellHeight;
57
- return source;
58
- };
59
- ScatterPanel.prototype._finalProcessing = function () {
60
- var meshes = [];
61
- for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
62
- var child = _a[_i];
63
- if (!child.mesh) {
64
- continue;
65
- }
66
- meshes.push(child.mesh);
67
- }
68
- for (var count = 0; count < this._iteration; count++) {
69
- meshes.sort(function (a, b) {
70
- var distance1 = a.position.lengthSquared();
71
- var distance2 = b.position.lengthSquared();
72
- if (distance1 < distance2) {
73
- return 1;
74
- }
75
- else if (distance1 > distance2) {
76
- return -1;
77
- }
78
- return 0;
79
- });
80
- var radiusPaddingSquared = Math.pow(this.margin, 2.0);
81
- var cellSize = Math.max(this._cellWidth, this._cellHeight);
82
- var difference2D = TmpVectors.Vector2[0];
83
- var difference = TmpVectors.Vector3[0];
84
- for (var i = 0; i < meshes.length - 1; i++) {
85
- for (var j = i + 1; j < meshes.length; j++) {
86
- if (i != j) {
87
- meshes[j].position.subtractToRef(meshes[i].position, difference);
88
- // Ignore Z axis
89
- difference2D.x = difference.x;
90
- difference2D.y = difference.y;
91
- var combinedRadius = cellSize;
92
- var distance = difference2D.lengthSquared() - radiusPaddingSquared;
93
- var minSeparation = Math.min(distance, radiusPaddingSquared);
94
- distance -= minSeparation;
95
- if (distance < (Math.pow(combinedRadius, 2.0))) {
96
- difference2D.normalize();
97
- difference.scaleInPlace((combinedRadius - Math.sqrt(distance)) * 0.5);
98
- meshes[j].position.addInPlace(difference);
99
- meshes[i].position.subtractInPlace(difference);
100
- }
101
- }
102
- }
103
- }
104
- }
105
- };
106
- return ScatterPanel;
107
- }(VolumeBasedPanel));
108
- export { ScatterPanel };
1
+ import { __extends } from "tslib";
2
+ import { Tools } from "@babylonjs/core/Misc/tools.js";
3
+ import { TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
4
+ import { VolumeBasedPanel } from "./volumeBasedPanel";
5
+ import { Container3D } from "./container3D";
6
+ /**
7
+ * Class used to create a container panel where items get randomized planar mapping
8
+ */
9
+ var ScatterPanel = /** @class */ (function (_super) {
10
+ __extends(ScatterPanel, _super);
11
+ function ScatterPanel() {
12
+ var _this = _super !== null && _super.apply(this, arguments) || this;
13
+ _this._iteration = 100.0;
14
+ return _this;
15
+ }
16
+ Object.defineProperty(ScatterPanel.prototype, "iteration", {
17
+ /**
18
+ * Gets or sets the number of iteration to use to scatter the controls (100 by default)
19
+ */
20
+ get: function () {
21
+ return this._iteration;
22
+ },
23
+ set: function (value) {
24
+ var _this = this;
25
+ if (this._iteration === value) {
26
+ return;
27
+ }
28
+ this._iteration = value;
29
+ Tools.SetImmediate(function () {
30
+ _this._arrangeChildren();
31
+ });
32
+ },
33
+ enumerable: false,
34
+ configurable: true
35
+ });
36
+ ScatterPanel.prototype._mapGridNode = function (control, nodePosition) {
37
+ var mesh = control.mesh;
38
+ var newPos = this._scatterMapping(nodePosition);
39
+ if (!mesh) {
40
+ return;
41
+ }
42
+ switch (this.orientation) {
43
+ case Container3D.FACEORIGIN_ORIENTATION:
44
+ case Container3D.FACEFORWARD_ORIENTATION:
45
+ mesh.lookAt(new Vector3(0, 0, 1));
46
+ break;
47
+ case Container3D.FACEFORWARDREVERSED_ORIENTATION:
48
+ case Container3D.FACEORIGINREVERSED_ORIENTATION:
49
+ mesh.lookAt(new Vector3(0, 0, -1));
50
+ break;
51
+ }
52
+ control.position = newPos;
53
+ };
54
+ ScatterPanel.prototype._scatterMapping = function (source) {
55
+ source.x = (1.0 - Math.random() * 2.0) * this._cellWidth;
56
+ source.y = (1.0 - Math.random() * 2.0) * this._cellHeight;
57
+ return source;
58
+ };
59
+ ScatterPanel.prototype._finalProcessing = function () {
60
+ var meshes = [];
61
+ for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
62
+ var child = _a[_i];
63
+ if (!child.mesh) {
64
+ continue;
65
+ }
66
+ meshes.push(child.mesh);
67
+ }
68
+ for (var count = 0; count < this._iteration; count++) {
69
+ meshes.sort(function (a, b) {
70
+ var distance1 = a.position.lengthSquared();
71
+ var distance2 = b.position.lengthSquared();
72
+ if (distance1 < distance2) {
73
+ return 1;
74
+ }
75
+ else if (distance1 > distance2) {
76
+ return -1;
77
+ }
78
+ return 0;
79
+ });
80
+ var radiusPaddingSquared = Math.pow(this.margin, 2.0);
81
+ var cellSize = Math.max(this._cellWidth, this._cellHeight);
82
+ var difference2D = TmpVectors.Vector2[0];
83
+ var difference = TmpVectors.Vector3[0];
84
+ for (var i = 0; i < meshes.length - 1; i++) {
85
+ for (var j = i + 1; j < meshes.length; j++) {
86
+ if (i != j) {
87
+ meshes[j].position.subtractToRef(meshes[i].position, difference);
88
+ // Ignore Z axis
89
+ difference2D.x = difference.x;
90
+ difference2D.y = difference.y;
91
+ var combinedRadius = cellSize;
92
+ var distance = difference2D.lengthSquared() - radiusPaddingSquared;
93
+ var minSeparation = Math.min(distance, radiusPaddingSquared);
94
+ distance -= minSeparation;
95
+ if (distance < Math.pow(combinedRadius, 2.0)) {
96
+ difference2D.normalize();
97
+ difference.scaleInPlace((combinedRadius - Math.sqrt(distance)) * 0.5);
98
+ meshes[j].position.addInPlace(difference);
99
+ meshes[i].position.subtractInPlace(difference);
100
+ }
101
+ }
102
+ }
103
+ }
104
+ }
105
+ };
106
+ return ScatterPanel;
107
+ }(VolumeBasedPanel));
108
+ export { ScatterPanel };
109
109
  //# sourceMappingURL=scatterPanel.js.map