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

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 (305) 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/package.json +21 -328
  305. package/readme.md +2 -2
@@ -1,409 +1,446 @@
1
- import { Observable } from "@babylonjs/core/Misc/observable.js";
2
- import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
3
- import { PointerEventTypes } from "@babylonjs/core/Events/pointerEvents.js";
4
- import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
5
- import { Vector3WithInfo } from "../vector3WithInfo.js";
6
- /**
7
- * Class used as base class for controls
8
- */
9
- var Control3D = /** @class */ (function () {
10
- /**
11
- * Creates a new control
12
- * @param name defines the control name
13
- */
14
- function Control3D(
15
- /** Defines the control name */
16
- name) {
17
- this.name = name;
18
- this._downCount = 0;
19
- this._enterCount = -1;
20
- this._downPointerIds = {}; // Store number of pointer downs per ID, from near and far interactions
21
- this._isVisible = true;
22
- /** @hidden */
23
- this._isScaledByManager = false;
24
- /**
25
- * An event triggered when the pointer moves over the control
26
- */
27
- this.onPointerMoveObservable = new Observable();
28
- /**
29
- * An event triggered when the pointer moves out of the control
30
- */
31
- this.onPointerOutObservable = new Observable();
32
- /**
33
- * An event triggered when the pointer taps the control
34
- */
35
- this.onPointerDownObservable = new Observable();
36
- /**
37
- * An event triggered when pointer is up
38
- */
39
- this.onPointerUpObservable = new Observable();
40
- /**
41
- * An event triggered when a control is clicked on (with a mouse)
42
- */
43
- this.onPointerClickObservable = new Observable();
44
- /**
45
- * An event triggered when pointer enters the control
46
- */
47
- this.onPointerEnterObservable = new Observable();
48
- // Behaviors
49
- this._behaviors = new Array();
50
- }
51
- Object.defineProperty(Control3D.prototype, "position", {
52
- /** Gets or sets the control position in world space */
53
- get: function () {
54
- if (!this._node) {
55
- return Vector3.Zero();
56
- }
57
- return this._node.position;
58
- },
59
- set: function (value) {
60
- if (!this._node) {
61
- return;
62
- }
63
- this._node.position = value;
64
- },
65
- enumerable: false,
66
- configurable: true
67
- });
68
- Object.defineProperty(Control3D.prototype, "scaling", {
69
- /** Gets or sets the control scaling in world space */
70
- get: function () {
71
- if (!this._node) {
72
- return new Vector3(1, 1, 1);
73
- }
74
- return this._node.scaling;
75
- },
76
- set: function (value) {
77
- if (!this._node) {
78
- return;
79
- }
80
- this._isScaledByManager = false;
81
- this._node.scaling = value;
82
- },
83
- enumerable: false,
84
- configurable: true
85
- });
86
- Object.defineProperty(Control3D.prototype, "behaviors", {
87
- /**
88
- * Gets the list of attached behaviors
89
- * @see https://doc.babylonjs.com/features/behaviour
90
- */
91
- get: function () {
92
- return this._behaviors;
93
- },
94
- enumerable: false,
95
- configurable: true
96
- });
97
- /**
98
- * Attach a behavior to the control
99
- * @see https://doc.babylonjs.com/features/behaviour
100
- * @param behavior defines the behavior to attach
101
- * @returns the current control
102
- */
103
- Control3D.prototype.addBehavior = function (behavior) {
104
- var _this = this;
105
- var index = this._behaviors.indexOf(behavior);
106
- if (index !== -1) {
107
- return this;
108
- }
109
- behavior.init();
110
- var scene = this._host.scene;
111
- if (scene.isLoading) {
112
- // We defer the attach when the scene will be loaded
113
- scene.onDataLoadedObservable.addOnce(function () {
114
- behavior.attach(_this);
115
- });
116
- }
117
- else {
118
- behavior.attach(this);
119
- }
120
- this._behaviors.push(behavior);
121
- return this;
122
- };
123
- /**
124
- * Remove an attached behavior
125
- * @see https://doc.babylonjs.com/features/behaviour
126
- * @param behavior defines the behavior to attach
127
- * @returns the current control
128
- */
129
- Control3D.prototype.removeBehavior = function (behavior) {
130
- var index = this._behaviors.indexOf(behavior);
131
- if (index === -1) {
132
- return this;
133
- }
134
- this._behaviors[index].detach();
135
- this._behaviors.splice(index, 1);
136
- return this;
137
- };
138
- /**
139
- * Gets an attached behavior by name
140
- * @param name defines the name of the behavior to look for
141
- * @see https://doc.babylonjs.com/features/behaviour
142
- * @returns null if behavior was not found else the requested behavior
143
- */
144
- Control3D.prototype.getBehaviorByName = function (name) {
145
- for (var _i = 0, _a = this._behaviors; _i < _a.length; _i++) {
146
- var behavior = _a[_i];
147
- if (behavior.name === name) {
148
- return behavior;
149
- }
150
- }
151
- return null;
152
- };
153
- Object.defineProperty(Control3D.prototype, "isVisible", {
154
- /** Gets or sets a boolean indicating if the control is visible */
155
- get: function () {
156
- return this._isVisible;
157
- },
158
- set: function (value) {
159
- if (this._isVisible === value) {
160
- return;
161
- }
162
- this._isVisible = value;
163
- var mesh = this.mesh;
164
- if (mesh) {
165
- mesh.setEnabled(value);
166
- }
167
- },
168
- enumerable: false,
169
- configurable: true
170
- });
171
- Object.defineProperty(Control3D.prototype, "typeName", {
172
- /**
173
- * Gets a string representing the class name
174
- */
175
- get: function () {
176
- return this._getTypeName();
177
- },
178
- enumerable: false,
179
- configurable: true
180
- });
181
- /**
182
- * Get the current class name of the control.
183
- * @returns current class name
184
- */
185
- Control3D.prototype.getClassName = function () {
186
- return this._getTypeName();
187
- };
188
- Control3D.prototype._getTypeName = function () {
189
- return "Control3D";
190
- };
191
- Object.defineProperty(Control3D.prototype, "node", {
192
- /**
193
- * Gets the transform node used by this control
194
- */
195
- get: function () {
196
- return this._node;
197
- },
198
- enumerable: false,
199
- configurable: true
200
- });
201
- Object.defineProperty(Control3D.prototype, "mesh", {
202
- /**
203
- * Gets the mesh used to render this control
204
- */
205
- get: function () {
206
- if (this._node instanceof AbstractMesh) {
207
- return this._node;
208
- }
209
- return null;
210
- },
211
- enumerable: false,
212
- configurable: true
213
- });
214
- /**
215
- * Link the control as child of the given node
216
- * @param node defines the node to link to. Use null to unlink the control
217
- * @returns the current control
218
- */
219
- Control3D.prototype.linkToTransformNode = function (node) {
220
- if (this._node) {
221
- this._node.parent = node;
222
- }
223
- return this;
224
- };
225
- /** @hidden **/
226
- Control3D.prototype._prepareNode = function (scene) {
227
- if (!this._node) {
228
- this._node = this._createNode(scene);
229
- if (!this.node) {
230
- return;
231
- }
232
- this._injectGUI3DReservedDataStore(this.node).control = this; // Store the control on the reservedDataStore field in order to get it when picking
233
- var mesh = this.mesh;
234
- if (mesh) {
235
- mesh.isPickable = true;
236
- this._affectMaterial(mesh);
237
- }
238
- }
239
- };
240
- Control3D.prototype._injectGUI3DReservedDataStore = function (node) {
241
- var _a, _b;
242
- node.reservedDataStore = (_a = node.reservedDataStore) !== null && _a !== void 0 ? _a : {};
243
- node.reservedDataStore.GUI3D = (_b = node.reservedDataStore.GUI3D) !== null && _b !== void 0 ? _b : {};
244
- return node.reservedDataStore.GUI3D;
245
- };
246
- /**
247
- * Node creation.
248
- * Can be overriden by children
249
- * @param scene defines the scene where the node must be attached
250
- * @returns the attached node or null if none. Must return a Mesh or AbstractMesh if there is an atttached visible object
251
- */
252
- Control3D.prototype._createNode = function (scene) {
253
- // Do nothing by default
254
- return null;
255
- };
256
- /**
257
- * Affect a material to the given mesh
258
- * @param mesh defines the mesh which will represent the control
259
- */
260
- Control3D.prototype._affectMaterial = function (mesh) {
261
- mesh.material = null;
262
- };
263
- Control3D.prototype._IsTouchButton3D = function (control) {
264
- return control._generatePointerEventType !== undefined;
265
- };
266
- // Pointers
267
- /** @hidden */
268
- Control3D.prototype._onPointerMove = function (target, coordinates) {
269
- this.onPointerMoveObservable.notifyObservers(coordinates, -1, target, this);
270
- };
271
- /** @hidden */
272
- Control3D.prototype._onPointerEnter = function (target) {
273
- if (this._enterCount === -1) {
274
- // -1 is for touch input, we are now sure we are with a mouse or pencil
275
- this._enterCount = 0;
276
- }
277
- this._enterCount++;
278
- if (this._enterCount > 1) {
279
- return false;
280
- }
281
- this.onPointerEnterObservable.notifyObservers(this, -1, target, this);
282
- if (this.pointerEnterAnimation) {
283
- this.pointerEnterAnimation();
284
- }
285
- return true;
286
- };
287
- /** @hidden */
288
- Control3D.prototype._onPointerOut = function (target) {
289
- this._enterCount--;
290
- if (this._enterCount > 0) {
291
- return;
292
- }
293
- this._enterCount = 0;
294
- this.onPointerOutObservable.notifyObservers(this, -1, target, this);
295
- if (this.pointerOutAnimation) {
296
- this.pointerOutAnimation();
297
- }
298
- };
299
- /** @hidden */
300
- Control3D.prototype._onPointerDown = function (target, coordinates, pointerId, buttonIndex) {
301
- this._downCount++;
302
- this._downPointerIds[pointerId] = this._downPointerIds[pointerId] + 1 || 1;
303
- if (this._downCount !== 1) {
304
- return false;
305
- }
306
- this.onPointerDownObservable.notifyObservers(new Vector3WithInfo(coordinates, buttonIndex), -1, target, this);
307
- if (this.pointerDownAnimation) {
308
- this.pointerDownAnimation();
309
- }
310
- return true;
311
- };
312
- /** @hidden */
313
- Control3D.prototype._onPointerUp = function (target, coordinates, pointerId, buttonIndex, notifyClick) {
314
- this._downCount--;
315
- this._downPointerIds[pointerId]--;
316
- if (this._downPointerIds[pointerId] <= 0) {
317
- delete this._downPointerIds[pointerId];
318
- }
319
- if (this._downCount < 0) {
320
- // Handle if forcePointerUp was called prior to this
321
- this._downCount = 0;
322
- return;
323
- }
324
- if (this._downCount == 0) {
325
- if (notifyClick && (this._enterCount > 0 || this._enterCount === -1)) {
326
- this.onPointerClickObservable.notifyObservers(new Vector3WithInfo(coordinates, buttonIndex), -1, target, this);
327
- }
328
- this.onPointerUpObservable.notifyObservers(new Vector3WithInfo(coordinates, buttonIndex), -1, target, this);
329
- if (this.pointerUpAnimation) {
330
- this.pointerUpAnimation();
331
- }
332
- }
333
- };
334
- /** @hidden */
335
- Control3D.prototype.forcePointerUp = function (pointerId) {
336
- if (pointerId === void 0) { pointerId = null; }
337
- if (pointerId !== null) {
338
- this._onPointerUp(this, Vector3.Zero(), pointerId, 0, true);
339
- }
340
- else {
341
- for (var key in this._downPointerIds) {
342
- this._onPointerUp(this, Vector3.Zero(), +key, 0, true);
343
- }
344
- if (this._downCount > 0) {
345
- this._downCount = 1;
346
- this._onPointerUp(this, Vector3.Zero(), 0, 0, true);
347
- }
348
- }
349
- };
350
- /** @hidden */
351
- Control3D.prototype._processObservables = function (type, pickedPoint, originMeshPosition, pointerId, buttonIndex) {
352
- if (this._IsTouchButton3D(this) && originMeshPosition) {
353
- type = this._generatePointerEventType(type, originMeshPosition, this._downCount);
354
- }
355
- if (type === PointerEventTypes.POINTERMOVE) {
356
- this._onPointerMove(this, pickedPoint);
357
- var previousControlOver = this._host._lastControlOver[pointerId];
358
- if (previousControlOver && previousControlOver !== this) {
359
- previousControlOver._onPointerOut(this);
360
- }
361
- if (previousControlOver !== this) {
362
- this._onPointerEnter(this);
363
- }
364
- this._host._lastControlOver[pointerId] = this;
365
- return true;
366
- }
367
- if (type === PointerEventTypes.POINTERDOWN) {
368
- this._onPointerDown(this, pickedPoint, pointerId, buttonIndex);
369
- this._host._lastControlDown[pointerId] = this;
370
- this._host._lastPickedControl = this;
371
- return true;
372
- }
373
- if (type === PointerEventTypes.POINTERUP || type === PointerEventTypes.POINTERDOUBLETAP) {
374
- if (this._host._lastControlDown[pointerId]) {
375
- this._host._lastControlDown[pointerId]._onPointerUp(this, pickedPoint, pointerId, buttonIndex, true);
376
- }
377
- delete this._host._lastControlDown[pointerId];
378
- return true;
379
- }
380
- return false;
381
- };
382
- /** @hidden */
383
- Control3D.prototype._disposeNode = function () {
384
- if (this._node) {
385
- this._node.dispose();
386
- this._node = null;
387
- }
388
- };
389
- /**
390
- * Releases all associated resources
391
- */
392
- Control3D.prototype.dispose = function () {
393
- this.onPointerDownObservable.clear();
394
- this.onPointerEnterObservable.clear();
395
- this.onPointerMoveObservable.clear();
396
- this.onPointerOutObservable.clear();
397
- this.onPointerUpObservable.clear();
398
- this.onPointerClickObservable.clear();
399
- this._disposeNode();
400
- // Behaviors
401
- for (var _i = 0, _a = this._behaviors; _i < _a.length; _i++) {
402
- var behavior = _a[_i];
403
- behavior.detach();
404
- }
405
- };
406
- return Control3D;
407
- }());
408
- export { Control3D };
1
+ import { Observable } from "@babylonjs/core/Misc/observable.js";
2
+ import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
3
+ import { PointerEventTypes } from "@babylonjs/core/Events/pointerEvents.js";
4
+ import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
5
+ import { Vector3WithInfo } from "../vector3WithInfo";
6
+ /**
7
+ * Class used as base class for controls
8
+ */
9
+ var Control3D = /** @class */ (function () {
10
+ /**
11
+ * Creates a new control
12
+ * @param name defines the control name
13
+ */
14
+ function Control3D(
15
+ /** Defines the control name */
16
+ name) {
17
+ this.name = name;
18
+ this._downCount = 0;
19
+ this._enterCount = -1;
20
+ this._downPointerIds = {}; // Store number of pointer downs per ID, from near and far interactions
21
+ this._isVisible = true;
22
+ /** @hidden */
23
+ this._isScaledByManager = false;
24
+ /**
25
+ * An event triggered when the pointer moves over the control
26
+ */
27
+ this.onPointerMoveObservable = new Observable();
28
+ /**
29
+ * An event triggered when the pointer moves out of the control
30
+ */
31
+ this.onPointerOutObservable = new Observable();
32
+ /**
33
+ * An event triggered when the pointer taps the control
34
+ */
35
+ this.onPointerDownObservable = new Observable();
36
+ /**
37
+ * An event triggered when pointer is up
38
+ */
39
+ this.onPointerUpObservable = new Observable();
40
+ /**
41
+ * An event triggered when a control is clicked on (with a mouse)
42
+ */
43
+ this.onPointerClickObservable = new Observable();
44
+ /**
45
+ * An event triggered when pointer enters the control
46
+ */
47
+ this.onPointerEnterObservable = new Observable();
48
+ // Behaviors
49
+ this._behaviors = new Array();
50
+ }
51
+ Object.defineProperty(Control3D.prototype, "position", {
52
+ /** Gets or sets the control position in world space */
53
+ get: function () {
54
+ if (!this._node) {
55
+ return Vector3.Zero();
56
+ }
57
+ return this._node.position;
58
+ },
59
+ set: function (value) {
60
+ if (!this._node) {
61
+ return;
62
+ }
63
+ this._node.position = value;
64
+ },
65
+ enumerable: false,
66
+ configurable: true
67
+ });
68
+ Object.defineProperty(Control3D.prototype, "scaling", {
69
+ /** Gets or sets the control scaling in world space */
70
+ get: function () {
71
+ if (!this._node) {
72
+ return new Vector3(1, 1, 1);
73
+ }
74
+ return this._node.scaling;
75
+ },
76
+ set: function (value) {
77
+ if (!this._node) {
78
+ return;
79
+ }
80
+ this._isScaledByManager = false;
81
+ this._node.scaling = value;
82
+ },
83
+ enumerable: false,
84
+ configurable: true
85
+ });
86
+ Object.defineProperty(Control3D.prototype, "behaviors", {
87
+ /**
88
+ * Gets the list of attached behaviors
89
+ * @see https://doc.babylonjs.com/features/behaviour
90
+ */
91
+ get: function () {
92
+ return this._behaviors;
93
+ },
94
+ enumerable: false,
95
+ configurable: true
96
+ });
97
+ /**
98
+ * Attach a behavior to the control
99
+ * @see https://doc.babylonjs.com/features/behaviour
100
+ * @param behavior defines the behavior to attach
101
+ * @returns the current control
102
+ */
103
+ Control3D.prototype.addBehavior = function (behavior) {
104
+ var _this = this;
105
+ var index = this._behaviors.indexOf(behavior);
106
+ if (index !== -1) {
107
+ return this;
108
+ }
109
+ behavior.init();
110
+ var scene = this._host.scene;
111
+ if (scene.isLoading) {
112
+ // We defer the attach when the scene will be loaded
113
+ scene.onDataLoadedObservable.addOnce(function () {
114
+ behavior.attach(_this);
115
+ });
116
+ }
117
+ else {
118
+ behavior.attach(this);
119
+ }
120
+ this._behaviors.push(behavior);
121
+ return this;
122
+ };
123
+ /**
124
+ * Remove an attached behavior
125
+ * @see https://doc.babylonjs.com/features/behaviour
126
+ * @param behavior defines the behavior to attach
127
+ * @returns the current control
128
+ */
129
+ Control3D.prototype.removeBehavior = function (behavior) {
130
+ var index = this._behaviors.indexOf(behavior);
131
+ if (index === -1) {
132
+ return this;
133
+ }
134
+ this._behaviors[index].detach();
135
+ this._behaviors.splice(index, 1);
136
+ return this;
137
+ };
138
+ /**
139
+ * Gets an attached behavior by name
140
+ * @param name defines the name of the behavior to look for
141
+ * @see https://doc.babylonjs.com/features/behaviour
142
+ * @returns null if behavior was not found else the requested behavior
143
+ */
144
+ Control3D.prototype.getBehaviorByName = function (name) {
145
+ for (var _i = 0, _a = this._behaviors; _i < _a.length; _i++) {
146
+ var behavior = _a[_i];
147
+ if (behavior.name === name) {
148
+ return behavior;
149
+ }
150
+ }
151
+ return null;
152
+ };
153
+ Object.defineProperty(Control3D.prototype, "isVisible", {
154
+ /** Gets or sets a boolean indicating if the control is visible */
155
+ get: function () {
156
+ return this._isVisible;
157
+ },
158
+ set: function (value) {
159
+ if (this._isVisible === value) {
160
+ return;
161
+ }
162
+ this._isVisible = value;
163
+ var mesh = this.mesh;
164
+ if (mesh) {
165
+ mesh.setEnabled(value);
166
+ }
167
+ },
168
+ enumerable: false,
169
+ configurable: true
170
+ });
171
+ Object.defineProperty(Control3D.prototype, "typeName", {
172
+ /**
173
+ * Gets a string representing the class name
174
+ */
175
+ get: function () {
176
+ return this._getTypeName();
177
+ },
178
+ enumerable: false,
179
+ configurable: true
180
+ });
181
+ /**
182
+ * Get the current class name of the control.
183
+ * @returns current class name
184
+ */
185
+ Control3D.prototype.getClassName = function () {
186
+ return this._getTypeName();
187
+ };
188
+ Control3D.prototype._getTypeName = function () {
189
+ return "Control3D";
190
+ };
191
+ Object.defineProperty(Control3D.prototype, "node", {
192
+ /**
193
+ * Gets the transform node used by this control
194
+ */
195
+ get: function () {
196
+ return this._node;
197
+ },
198
+ enumerable: false,
199
+ configurable: true
200
+ });
201
+ Object.defineProperty(Control3D.prototype, "mesh", {
202
+ /**
203
+ * Gets the mesh used to render this control
204
+ */
205
+ get: function () {
206
+ if (this._node instanceof AbstractMesh) {
207
+ return this._node;
208
+ }
209
+ return null;
210
+ },
211
+ enumerable: false,
212
+ configurable: true
213
+ });
214
+ /**
215
+ * Link the control as child of the given node
216
+ * @param node defines the node to link to. Use null to unlink the control
217
+ * @returns the current control
218
+ */
219
+ Control3D.prototype.linkToTransformNode = function (node) {
220
+ if (this._node) {
221
+ this._node.parent = node;
222
+ }
223
+ return this;
224
+ };
225
+ /**
226
+ * @param scene
227
+ * @hidden*
228
+ */
229
+ Control3D.prototype._prepareNode = function (scene) {
230
+ if (!this._node) {
231
+ this._node = this._createNode(scene);
232
+ if (!this.node) {
233
+ return;
234
+ }
235
+ this._injectGUI3DReservedDataStore(this.node).control = this; // Store the control on the reservedDataStore field in order to get it when picking
236
+ var mesh = this.mesh;
237
+ if (mesh) {
238
+ mesh.isPickable = true;
239
+ this._affectMaterial(mesh);
240
+ }
241
+ }
242
+ };
243
+ Control3D.prototype._injectGUI3DReservedDataStore = function (node) {
244
+ var _a, _b;
245
+ node.reservedDataStore = (_a = node.reservedDataStore) !== null && _a !== void 0 ? _a : {};
246
+ node.reservedDataStore.GUI3D = (_b = node.reservedDataStore.GUI3D) !== null && _b !== void 0 ? _b : {};
247
+ return node.reservedDataStore.GUI3D;
248
+ };
249
+ /**
250
+ * Node creation.
251
+ * Can be overriden by children
252
+ * @param scene defines the scene where the node must be attached
253
+ * @returns the attached node or null if none. Must return a Mesh or AbstractMesh if there is an attached visible object
254
+ */
255
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
256
+ Control3D.prototype._createNode = function (scene) {
257
+ // Do nothing by default
258
+ return null;
259
+ };
260
+ /**
261
+ * Affect a material to the given mesh
262
+ * @param mesh defines the mesh which will represent the control
263
+ */
264
+ Control3D.prototype._affectMaterial = function (mesh) {
265
+ mesh.material = null;
266
+ };
267
+ Control3D.prototype._isTouchButton3D = function (control) {
268
+ return control._generatePointerEventType !== undefined;
269
+ };
270
+ // Pointers
271
+ /**
272
+ * @param target
273
+ * @param coordinates
274
+ * @hidden
275
+ */
276
+ Control3D.prototype._onPointerMove = function (target, coordinates) {
277
+ this.onPointerMoveObservable.notifyObservers(coordinates, -1, target, this);
278
+ };
279
+ /**
280
+ * @param target
281
+ * @hidden
282
+ */
283
+ Control3D.prototype._onPointerEnter = function (target) {
284
+ if (this._enterCount === -1) {
285
+ // -1 is for touch input, we are now sure we are with a mouse or pencil
286
+ this._enterCount = 0;
287
+ }
288
+ this._enterCount++;
289
+ if (this._enterCount > 1) {
290
+ return false;
291
+ }
292
+ this.onPointerEnterObservable.notifyObservers(this, -1, target, this);
293
+ if (this.pointerEnterAnimation) {
294
+ this.pointerEnterAnimation();
295
+ }
296
+ return true;
297
+ };
298
+ /**
299
+ * @param target
300
+ * @hidden
301
+ */
302
+ Control3D.prototype._onPointerOut = function (target) {
303
+ this._enterCount--;
304
+ if (this._enterCount > 0) {
305
+ return;
306
+ }
307
+ this._enterCount = 0;
308
+ this.onPointerOutObservable.notifyObservers(this, -1, target, this);
309
+ if (this.pointerOutAnimation) {
310
+ this.pointerOutAnimation();
311
+ }
312
+ };
313
+ /**
314
+ * @param target
315
+ * @param coordinates
316
+ * @param pointerId
317
+ * @param buttonIndex
318
+ * @hidden
319
+ */
320
+ Control3D.prototype._onPointerDown = function (target, coordinates, pointerId, buttonIndex) {
321
+ this._downCount++;
322
+ this._downPointerIds[pointerId] = this._downPointerIds[pointerId] + 1 || 1;
323
+ if (this._downCount !== 1) {
324
+ return false;
325
+ }
326
+ this.onPointerDownObservable.notifyObservers(new Vector3WithInfo(coordinates, buttonIndex), -1, target, this);
327
+ if (this.pointerDownAnimation) {
328
+ this.pointerDownAnimation();
329
+ }
330
+ return true;
331
+ };
332
+ /**
333
+ * @param target
334
+ * @param coordinates
335
+ * @param pointerId
336
+ * @param buttonIndex
337
+ * @param notifyClick
338
+ * @hidden
339
+ */
340
+ Control3D.prototype._onPointerUp = function (target, coordinates, pointerId, buttonIndex, notifyClick) {
341
+ this._downCount--;
342
+ this._downPointerIds[pointerId]--;
343
+ if (this._downPointerIds[pointerId] <= 0) {
344
+ delete this._downPointerIds[pointerId];
345
+ }
346
+ if (this._downCount < 0) {
347
+ // Handle if forcePointerUp was called prior to this
348
+ this._downCount = 0;
349
+ return;
350
+ }
351
+ if (this._downCount == 0) {
352
+ if (notifyClick && (this._enterCount > 0 || this._enterCount === -1)) {
353
+ this.onPointerClickObservable.notifyObservers(new Vector3WithInfo(coordinates, buttonIndex), -1, target, this);
354
+ }
355
+ this.onPointerUpObservable.notifyObservers(new Vector3WithInfo(coordinates, buttonIndex), -1, target, this);
356
+ if (this.pointerUpAnimation) {
357
+ this.pointerUpAnimation();
358
+ }
359
+ }
360
+ };
361
+ /**
362
+ * @param pointerId
363
+ * @hidden
364
+ */
365
+ Control3D.prototype.forcePointerUp = function (pointerId) {
366
+ if (pointerId === void 0) { pointerId = null; }
367
+ if (pointerId !== null) {
368
+ this._onPointerUp(this, Vector3.Zero(), pointerId, 0, true);
369
+ }
370
+ else {
371
+ for (var key in this._downPointerIds) {
372
+ this._onPointerUp(this, Vector3.Zero(), +key, 0, true);
373
+ }
374
+ if (this._downCount > 0) {
375
+ this._downCount = 1;
376
+ this._onPointerUp(this, Vector3.Zero(), 0, 0, true);
377
+ }
378
+ }
379
+ };
380
+ /**
381
+ * @param type
382
+ * @param pickedPoint
383
+ * @param originMeshPosition
384
+ * @param pointerId
385
+ * @param buttonIndex
386
+ * @hidden
387
+ */
388
+ Control3D.prototype._processObservables = function (type, pickedPoint, originMeshPosition, pointerId, buttonIndex) {
389
+ if (this._isTouchButton3D(this) && originMeshPosition) {
390
+ type = this._generatePointerEventType(type, originMeshPosition, this._downCount);
391
+ }
392
+ if (type === PointerEventTypes.POINTERMOVE) {
393
+ this._onPointerMove(this, pickedPoint);
394
+ var previousControlOver = this._host._lastControlOver[pointerId];
395
+ if (previousControlOver && previousControlOver !== this) {
396
+ previousControlOver._onPointerOut(this);
397
+ }
398
+ if (previousControlOver !== this) {
399
+ this._onPointerEnter(this);
400
+ }
401
+ this._host._lastControlOver[pointerId] = this;
402
+ return true;
403
+ }
404
+ if (type === PointerEventTypes.POINTERDOWN) {
405
+ this._onPointerDown(this, pickedPoint, pointerId, buttonIndex);
406
+ this._host._lastControlDown[pointerId] = this;
407
+ this._host._lastPickedControl = this;
408
+ return true;
409
+ }
410
+ if (type === PointerEventTypes.POINTERUP || type === PointerEventTypes.POINTERDOUBLETAP) {
411
+ if (this._host._lastControlDown[pointerId]) {
412
+ this._host._lastControlDown[pointerId]._onPointerUp(this, pickedPoint, pointerId, buttonIndex, true);
413
+ }
414
+ delete this._host._lastControlDown[pointerId];
415
+ return true;
416
+ }
417
+ return false;
418
+ };
419
+ /** @hidden */
420
+ Control3D.prototype._disposeNode = function () {
421
+ if (this._node) {
422
+ this._node.dispose();
423
+ this._node = null;
424
+ }
425
+ };
426
+ /**
427
+ * Releases all associated resources
428
+ */
429
+ Control3D.prototype.dispose = function () {
430
+ this.onPointerDownObservable.clear();
431
+ this.onPointerEnterObservable.clear();
432
+ this.onPointerMoveObservable.clear();
433
+ this.onPointerOutObservable.clear();
434
+ this.onPointerUpObservable.clear();
435
+ this.onPointerClickObservable.clear();
436
+ this._disposeNode();
437
+ // Behaviors
438
+ for (var _i = 0, _a = this._behaviors; _i < _a.length; _i++) {
439
+ var behavior = _a[_i];
440
+ behavior.detach();
441
+ }
442
+ };
443
+ return Control3D;
444
+ }());
445
+ export { Control3D };
409
446
  //# sourceMappingURL=control3D.js.map