@babylonjs/gui 5.0.0-rc.0 → 5.0.0-rc.11

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 -80
  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,446 +1,446 @@
1
- import { __extends } from "tslib";
2
- import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
3
- import { StandardMaterial } from "@babylonjs/core/Materials/standardMaterial.js";
4
- import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
5
- import { Mesh } from "@babylonjs/core/Meshes/mesh.js";
6
- import { CreatePlane } from "@babylonjs/core/Meshes/Builders/planeBuilder.js";
7
- import { CreateBox } from "@babylonjs/core/Meshes/Builders/boxBuilder.js";
8
- import { FadeInOutBehavior } from "@babylonjs/core/Behaviors/Meshes/fadeInOutBehavior.js";
9
- import { FluentMaterial } from "../materials/fluent/fluentMaterial.js";
10
- import { FluentButtonMaterial } from "../materials/fluentButton/fluentButtonMaterial.js";
11
- import { StackPanel } from "../../2D/controls/stackPanel.js";
12
- import { Image } from "../../2D/controls/image.js";
13
- import { TextBlock } from "../../2D/controls/textBlock.js";
14
- import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture.js";
15
- import { Color3 } from "@babylonjs/core/Maths/math.color.js";
16
- import { TouchButton3D } from "./touchButton3D.js";
17
- import { SceneLoader } from "@babylonjs/core/Loading/sceneLoader.js";
18
- import { DomManagement } from "@babylonjs/core/Misc/domManagement.js";
19
- import { Scalar } from "@babylonjs/core/Maths/math.scalar.js";
20
- /**
21
- * Class used to create a holographic button in 3D
22
- * @since 5.0.0
23
- */
24
- var TouchHolographicButton = /** @class */ (function (_super) {
25
- __extends(TouchHolographicButton, _super);
26
- /**
27
- * Creates a new button
28
- * @param name defines the control name
29
- */
30
- function TouchHolographicButton(name, shareMaterials) {
31
- if (shareMaterials === void 0) { shareMaterials = true; }
32
- var _this = _super.call(this, name) || this;
33
- _this._shareMaterials = true;
34
- _this._isBackplateVisible = true;
35
- _this._frontPlateDepth = 0.5;
36
- _this._backPlateDepth = 0.04;
37
- _this._backplateColor = new Color3(0.08, 0.15, 0.55);
38
- _this._backplateToggledColor = new Color3(0.25, 0.4, 0.95);
39
- _this._shareMaterials = shareMaterials;
40
- _this.pointerEnterAnimation = function () {
41
- _this._frontMaterial.leftBlobEnable = true;
42
- _this._frontMaterial.rightBlobEnable = true;
43
- };
44
- _this.pointerOutAnimation = function () {
45
- _this._frontMaterial.leftBlobEnable = false;
46
- _this._frontMaterial.rightBlobEnable = false;
47
- };
48
- _this.pointerDownAnimation = function () {
49
- if (_this._frontPlate && !_this.isActiveNearInteraction) {
50
- _this._frontPlate.scaling.z = _this._frontPlateDepth * 0.2;
51
- _this._frontPlate.position = Vector3.Forward(_this._frontPlate._scene.useRightHandedSystem).scale((_this._frontPlateDepth - (0.2 * _this._frontPlateDepth)) / 2);
52
- _this._textPlate.position = Vector3.Forward(_this._textPlate._scene.useRightHandedSystem).scale(-(_this._backPlateDepth + (0.2 * _this._frontPlateDepth)) / 2);
53
- }
54
- };
55
- _this.pointerUpAnimation = function () {
56
- if (_this._frontPlate) {
57
- _this._frontPlate.scaling.z = _this._frontPlateDepth;
58
- _this._frontPlate.position = Vector3.Forward(_this._frontPlate._scene.useRightHandedSystem).scale((_this._frontPlateDepth - _this._frontPlateDepth) / 2);
59
- _this._textPlate.position = Vector3.Forward(_this._textPlate._scene.useRightHandedSystem).scale(-(_this._backPlateDepth + _this._frontPlateDepth) / 2);
60
- }
61
- };
62
- _this.onPointerMoveObservable.add(function (position) {
63
- if (_this._frontPlate && _this.isActiveNearInteraction) {
64
- var scale = Vector3.Zero();
65
- if (_this._backPlate.getWorldMatrix().decompose(scale, undefined, undefined)) {
66
- var interactionHeight = _this._getInteractionHeight(position, _this._backPlate.getAbsolutePosition()) / scale.z;
67
- interactionHeight = Scalar.Clamp(interactionHeight - (_this._backPlateDepth / 2), 0.2 * _this._frontPlateDepth, _this._frontPlateDepth);
68
- _this._frontPlate.scaling.z = interactionHeight;
69
- _this._frontPlate.position = Vector3.Forward(_this._frontPlate._scene.useRightHandedSystem).scale((_this._frontPlateDepth - interactionHeight) / 2);
70
- _this._textPlate.position = Vector3.Forward(_this._textPlate._scene.useRightHandedSystem).scale(-(_this._backPlateDepth + interactionHeight) / 2);
71
- }
72
- }
73
- });
74
- _this._pointerHoverObserver = _this.onPointerMoveObservable.add(function (hoverPosition) {
75
- _this._frontMaterial.globalLeftIndexTipPosition = hoverPosition;
76
- });
77
- return _this;
78
- }
79
- TouchHolographicButton.prototype._disposeTooltip = function () {
80
- this._tooltipFade = null;
81
- if (this._tooltipTextBlock) {
82
- this._tooltipTextBlock.dispose();
83
- }
84
- if (this._tooltipTexture) {
85
- this._tooltipTexture.dispose();
86
- }
87
- if (this._tooltipMesh) {
88
- this._tooltipMesh.dispose();
89
- }
90
- this.onPointerEnterObservable.remove(this._tooltipHoverObserver);
91
- this.onPointerOutObservable.remove(this._tooltipOutObserver);
92
- };
93
- Object.defineProperty(TouchHolographicButton.prototype, "renderingGroupId", {
94
- get: function () {
95
- return this._backPlate.renderingGroupId;
96
- },
97
- /**
98
- * Rendering ground id of all the mesh in the button
99
- */
100
- set: function (id) {
101
- this._backPlate.renderingGroupId = id;
102
- this._textPlate.renderingGroupId = id;
103
- this._frontPlate.renderingGroupId = id;
104
- if (this._tooltipMesh) {
105
- this._tooltipMesh.renderingGroupId = id;
106
- }
107
- },
108
- enumerable: false,
109
- configurable: true
110
- });
111
- Object.defineProperty(TouchHolographicButton.prototype, "mesh", {
112
- /**
113
- * Gets the mesh used to render this control
114
- */
115
- get: function () {
116
- return this._backPlate;
117
- },
118
- enumerable: false,
119
- configurable: true
120
- });
121
- Object.defineProperty(TouchHolographicButton.prototype, "tooltipText", {
122
- get: function () {
123
- if (this._tooltipTextBlock) {
124
- return this._tooltipTextBlock.text;
125
- }
126
- return null;
127
- },
128
- /**
129
- * Text to be displayed on the tooltip shown when hovering on the button. When set to null tooltip is disabled. (Default: null)
130
- */
131
- set: function (text) {
132
- var _this = this;
133
- if (!text) {
134
- this._disposeTooltip();
135
- return;
136
- }
137
- if (!this._tooltipFade) {
138
- var rightHandedScene = this._backPlate._scene.useRightHandedSystem;
139
- // Create tooltip with mesh and text
140
- this._tooltipMesh = CreatePlane("", { size: 1 }, this._backPlate._scene);
141
- var tooltipBackground = CreatePlane("", { size: 1, sideOrientation: Mesh.DOUBLESIDE }, this._backPlate._scene);
142
- var mat = new StandardMaterial("", this._backPlate._scene);
143
- mat.diffuseColor = Color3.FromHexString("#212121");
144
- tooltipBackground.material = mat;
145
- tooltipBackground.isPickable = false;
146
- this._tooltipMesh.addChild(tooltipBackground);
147
- tooltipBackground.position = Vector3.Forward(rightHandedScene).scale(0.05);
148
- this._tooltipMesh.scaling.y = 1 / 3;
149
- this._tooltipMesh.position = Vector3.Up().scale(0.7).add(Vector3.Forward(rightHandedScene).scale(-0.15));
150
- this._tooltipMesh.isPickable = false;
151
- this._tooltipMesh.parent = this._backPlate;
152
- // Create text texture for the tooltip
153
- this._tooltipTexture = AdvancedDynamicTexture.CreateForMesh(this._tooltipMesh);
154
- this._tooltipTextBlock = new TextBlock();
155
- this._tooltipTextBlock.scaleY = 3;
156
- this._tooltipTextBlock.color = "white";
157
- this._tooltipTextBlock.fontSize = 130;
158
- this._tooltipTexture.addControl(this._tooltipTextBlock);
159
- // Add hover action to tooltip
160
- this._tooltipFade = new FadeInOutBehavior();
161
- this._tooltipFade.delay = 500;
162
- this._tooltipMesh.addBehavior(this._tooltipFade);
163
- this._tooltipHoverObserver = this.onPointerEnterObservable.add(function () {
164
- if (_this._tooltipFade) {
165
- _this._tooltipFade.fadeIn(true);
166
- }
167
- });
168
- this._tooltipOutObserver = this.onPointerOutObservable.add(function () {
169
- if (_this._tooltipFade) {
170
- _this._tooltipFade.fadeIn(false);
171
- }
172
- });
173
- }
174
- if (this._tooltipTextBlock) {
175
- this._tooltipTextBlock.text = text;
176
- }
177
- },
178
- enumerable: false,
179
- configurable: true
180
- });
181
- Object.defineProperty(TouchHolographicButton.prototype, "text", {
182
- /**
183
- * Gets or sets text for the button
184
- */
185
- get: function () {
186
- return this._text;
187
- },
188
- set: function (value) {
189
- if (this._text === value) {
190
- return;
191
- }
192
- this._text = value;
193
- this._rebuildContent();
194
- },
195
- enumerable: false,
196
- configurable: true
197
- });
198
- Object.defineProperty(TouchHolographicButton.prototype, "imageUrl", {
199
- /**
200
- * Gets or sets the image url for the button
201
- */
202
- get: function () {
203
- return this._imageUrl;
204
- },
205
- set: function (value) {
206
- if (this._imageUrl === value) {
207
- return;
208
- }
209
- this._imageUrl = value;
210
- this._rebuildContent();
211
- },
212
- enumerable: false,
213
- configurable: true
214
- });
215
- Object.defineProperty(TouchHolographicButton.prototype, "backMaterial", {
216
- /**
217
- * Gets the back material used by this button
218
- */
219
- get: function () {
220
- return this._backMaterial;
221
- },
222
- enumerable: false,
223
- configurable: true
224
- });
225
- Object.defineProperty(TouchHolographicButton.prototype, "frontMaterial", {
226
- /**
227
- * Gets the front material used by this button
228
- */
229
- get: function () {
230
- return this._frontMaterial;
231
- },
232
- enumerable: false,
233
- configurable: true
234
- });
235
- Object.defineProperty(TouchHolographicButton.prototype, "plateMaterial", {
236
- /**
237
- * Gets the plate material used by this button
238
- */
239
- get: function () {
240
- return this._plateMaterial;
241
- },
242
- enumerable: false,
243
- configurable: true
244
- });
245
- Object.defineProperty(TouchHolographicButton.prototype, "shareMaterials", {
246
- /**
247
- * Gets a boolean indicating if this button shares its material with other HolographicButtons
248
- */
249
- get: function () {
250
- return this._shareMaterials;
251
- },
252
- enumerable: false,
253
- configurable: true
254
- });
255
- Object.defineProperty(TouchHolographicButton.prototype, "isBackplateVisible", {
256
- /**
257
- * Sets whether the backplate is visible or hidden. Hiding the backplate is not recommended without some sort of replacement
258
- */
259
- set: function (isVisible) {
260
- if (this.mesh && !!this._backMaterial) {
261
- if (isVisible && !this._isBackplateVisible) {
262
- this._backPlate.visibility = 1;
263
- }
264
- else if (!isVisible && this._isBackplateVisible) {
265
- this._backPlate.visibility = 0;
266
- }
267
- }
268
- this._isBackplateVisible = isVisible;
269
- },
270
- enumerable: false,
271
- configurable: true
272
- });
273
- TouchHolographicButton.prototype._getTypeName = function () {
274
- return "TouchHolographicButton";
275
- };
276
- TouchHolographicButton.prototype._rebuildContent = function () {
277
- this._disposeFacadeTexture();
278
- var panel = new StackPanel();
279
- panel.isVertical = true;
280
- if (DomManagement.IsDocumentAvailable() && !!document.createElement) {
281
- if (this._imageUrl) {
282
- var image = new Image();
283
- image.source = this._imageUrl;
284
- image.paddingTop = "40px";
285
- image.height = "180px";
286
- image.width = "100px";
287
- image.paddingBottom = "40px";
288
- panel.addControl(image);
289
- }
290
- }
291
- if (this._text) {
292
- var text = new TextBlock();
293
- text.text = this._text;
294
- text.color = "white";
295
- text.height = "30px";
296
- text.fontSize = 24;
297
- panel.addControl(text);
298
- }
299
- this.content = panel;
300
- };
301
- // Mesh association
302
- TouchHolographicButton.prototype._createNode = function (scene) {
303
- var _this = this;
304
- var _a;
305
- this.name = (_a = this.name) !== null && _a !== void 0 ? _a : "TouchHolographicButton";
306
- var collisionMesh = CreateBox("".concat(this.name, "_collisionMesh"), {
307
- width: 1.0,
308
- height: 1.0,
309
- depth: this._frontPlateDepth,
310
- }, scene);
311
- collisionMesh.isPickable = true;
312
- collisionMesh.isNearPickable = true;
313
- collisionMesh.visibility = 0;
314
- collisionMesh.position = Vector3.Forward(scene.useRightHandedSystem).scale(-this._frontPlateDepth / 2);
315
- SceneLoader.ImportMeshAsync(undefined, TouchHolographicButton.MODEL_BASE_URL, TouchHolographicButton.MODEL_FILENAME, scene)
316
- .then(function (result) {
317
- var alphaMesh = CreateBox("${this.name}_alphaMesh", {
318
- width: 1.0,
319
- height: 1.0,
320
- depth: 1.0,
321
- }, scene);
322
- alphaMesh.isPickable = false;
323
- alphaMesh.material = new StandardMaterial("${this.name}_alphaMesh_material", scene);
324
- alphaMesh.material.alpha = 0.15;
325
- var importedFrontPlate = result.meshes[1];
326
- importedFrontPlate.name = "".concat(_this.name, "_frontPlate");
327
- importedFrontPlate.isPickable = false;
328
- importedFrontPlate.scaling.z = _this._frontPlateDepth;
329
- alphaMesh.parent = importedFrontPlate;
330
- importedFrontPlate.parent = collisionMesh;
331
- if (!!_this._frontMaterial) {
332
- importedFrontPlate.material = _this._frontMaterial;
333
- }
334
- _this._frontPlate = importedFrontPlate;
335
- });
336
- this._backPlate = CreateBox("".concat(this.name, "_backPlate"), {
337
- width: 1.0,
338
- height: 1.0,
339
- depth: this._backPlateDepth,
340
- }, scene);
341
- this._backPlate.position = Vector3.Forward(scene.useRightHandedSystem).scale(this._backPlateDepth / 2);
342
- this._backPlate.isPickable = false;
343
- this._textPlate = _super.prototype._createNode.call(this, scene);
344
- this._textPlate.name = "".concat(this.name, "_textPlate");
345
- this._textPlate.isPickable = false;
346
- this._textPlate.position = Vector3.Forward(scene.useRightHandedSystem).scale(-this._frontPlateDepth / 2);
347
- this._backPlate.addChild(collisionMesh);
348
- this._backPlate.addChild(this._textPlate);
349
- var tn = new TransformNode("{this.name}_root", scene);
350
- this._backPlate.setParent(tn);
351
- this.collisionMesh = collisionMesh;
352
- this.collidableFrontDirection = this._backPlate.forward.negate(); // Mesh is facing the wrong way
353
- return tn;
354
- };
355
- TouchHolographicButton.prototype._applyFacade = function (facadeTexture) {
356
- this._plateMaterial.emissiveTexture = facadeTexture;
357
- this._plateMaterial.opacityTexture = facadeTexture;
358
- this._plateMaterial.diffuseColor = new Color3(0.4, 0.4, 0.4);
359
- };
360
- TouchHolographicButton.prototype._createBackMaterial = function (mesh) {
361
- this._backMaterial = new FluentMaterial(this.name + "backPlateMaterial", mesh.getScene());
362
- this._backMaterial.albedoColor = this._backplateColor;
363
- this._backMaterial.renderBorders = true;
364
- this._backMaterial.renderHoverLight = false;
365
- };
366
- TouchHolographicButton.prototype._createFrontMaterial = function (mesh) {
367
- this._frontMaterial = new FluentButtonMaterial(this.name + "Front Material", mesh.getScene());
368
- };
369
- TouchHolographicButton.prototype._createPlateMaterial = function (mesh) {
370
- this._plateMaterial = new StandardMaterial(this.name + "Plate Material", mesh.getScene());
371
- this._plateMaterial.specularColor = Color3.Black();
372
- };
373
- TouchHolographicButton.prototype._onToggle = function (newState) {
374
- if (this._backMaterial) {
375
- if (newState) {
376
- this._backMaterial.albedoColor = this._backplateToggledColor;
377
- }
378
- else {
379
- this._backMaterial.albedoColor = this._backplateColor;
380
- }
381
- }
382
- _super.prototype._onToggle.call(this, newState);
383
- };
384
- TouchHolographicButton.prototype._affectMaterial = function (mesh) {
385
- if (this._shareMaterials) {
386
- // Back
387
- if (!this._host._touchSharedMaterials["backFluentMaterial"]) {
388
- this._createBackMaterial(mesh);
389
- this._host._touchSharedMaterials["backFluentMaterial"] = this._backMaterial;
390
- }
391
- else {
392
- this._backMaterial = this._host._touchSharedMaterials["backFluentMaterial"];
393
- }
394
- // Front
395
- if (!this._host._touchSharedMaterials["frontFluentMaterial"]) {
396
- this._createFrontMaterial(mesh);
397
- this._host._touchSharedMaterials["frontFluentMaterial"] = this._frontMaterial;
398
- }
399
- else {
400
- this._frontMaterial = this._host._touchSharedMaterials["frontFluentMaterial"];
401
- }
402
- }
403
- else {
404
- this._createBackMaterial(mesh);
405
- this._createFrontMaterial(mesh);
406
- }
407
- this._createPlateMaterial(mesh);
408
- this._backPlate.material = this._backMaterial;
409
- this._textPlate.material = this._plateMaterial;
410
- if (!this._isBackplateVisible) {
411
- this._backPlate.visibility = 0;
412
- }
413
- if (!!this._frontPlate) {
414
- this._frontPlate.material = this._frontMaterial;
415
- }
416
- this._rebuildContent();
417
- };
418
- /**
419
- * Releases all associated resources
420
- */
421
- TouchHolographicButton.prototype.dispose = function () {
422
- _super.prototype.dispose.call(this); // will dispose main mesh ie. back plate
423
- this._disposeTooltip();
424
- this.onPointerMoveObservable.remove(this._pointerHoverObserver);
425
- if (!this.shareMaterials) {
426
- this._backMaterial.dispose();
427
- this._frontMaterial.dispose();
428
- this._plateMaterial.dispose();
429
- if (this._pickedPointObserver) {
430
- this._host.onPickedPointChangedObservable.remove(this._pickedPointObserver);
431
- this._pickedPointObserver = null;
432
- }
433
- }
434
- };
435
- /**
436
- * Base Url for the button model.
437
- */
438
- TouchHolographicButton.MODEL_BASE_URL = "https://assets.babylonjs.com/meshes/MRTK/";
439
- /**
440
- * File name for the button model.
441
- */
442
- TouchHolographicButton.MODEL_FILENAME = "mrtk-fluent-button.glb";
443
- return TouchHolographicButton;
444
- }(TouchButton3D));
445
- export { TouchHolographicButton };
1
+ import { __extends } from "tslib";
2
+ import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
3
+ import { StandardMaterial } from "@babylonjs/core/Materials/standardMaterial.js";
4
+ import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
5
+ import { Mesh } from "@babylonjs/core/Meshes/mesh.js";
6
+ import { CreatePlane } from "@babylonjs/core/Meshes/Builders/planeBuilder.js";
7
+ import { CreateBox } from "@babylonjs/core/Meshes/Builders/boxBuilder.js";
8
+ import { FadeInOutBehavior } from "@babylonjs/core/Behaviors/Meshes/fadeInOutBehavior.js";
9
+ import { FluentMaterial } from "../materials/fluent/fluentMaterial";
10
+ import { FluentButtonMaterial } from "../materials/fluentButton/fluentButtonMaterial";
11
+ import { StackPanel } from "../../2D/controls/stackPanel";
12
+ import { Image } from "../../2D/controls/image";
13
+ import { TextBlock } from "../../2D/controls/textBlock";
14
+ import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture";
15
+ import { Color3 } from "@babylonjs/core/Maths/math.color.js";
16
+ import { TouchButton3D } from "./touchButton3D";
17
+ import { SceneLoader } from "@babylonjs/core/Loading/sceneLoader.js";
18
+ import { DomManagement } from "@babylonjs/core/Misc/domManagement.js";
19
+ import { Scalar } from "@babylonjs/core/Maths/math.scalar.js";
20
+ /**
21
+ * Class used to create a holographic button in 3D
22
+ * @since 5.0.0
23
+ */
24
+ var TouchHolographicButton = /** @class */ (function (_super) {
25
+ __extends(TouchHolographicButton, _super);
26
+ /**
27
+ * Creates a new button
28
+ * @param name defines the control name
29
+ * @param shareMaterials
30
+ */
31
+ function TouchHolographicButton(name, shareMaterials) {
32
+ if (shareMaterials === void 0) { shareMaterials = true; }
33
+ var _this = _super.call(this, name) || this;
34
+ _this._shareMaterials = true;
35
+ _this._isBackplateVisible = true;
36
+ _this._frontPlateDepth = 0.5;
37
+ _this._backPlateDepth = 0.04;
38
+ _this._backplateColor = new Color3(0.08, 0.15, 0.55);
39
+ _this._backplateToggledColor = new Color3(0.25, 0.4, 0.95);
40
+ _this._shareMaterials = shareMaterials;
41
+ _this.pointerEnterAnimation = function () {
42
+ _this._frontMaterial.leftBlobEnable = true;
43
+ _this._frontMaterial.rightBlobEnable = true;
44
+ };
45
+ _this.pointerOutAnimation = function () {
46
+ _this._frontMaterial.leftBlobEnable = false;
47
+ _this._frontMaterial.rightBlobEnable = false;
48
+ };
49
+ _this.pointerDownAnimation = function () {
50
+ if (_this._frontPlate && !_this.isActiveNearInteraction) {
51
+ _this._frontPlate.scaling.z = _this._frontPlateDepth * 0.2;
52
+ _this._frontPlate.position = Vector3.Forward(_this._frontPlate._scene.useRightHandedSystem).scale((_this._frontPlateDepth - 0.2 * _this._frontPlateDepth) / 2);
53
+ _this._textPlate.position = Vector3.Forward(_this._textPlate._scene.useRightHandedSystem).scale(-(_this._backPlateDepth + 0.2 * _this._frontPlateDepth) / 2);
54
+ }
55
+ };
56
+ _this.pointerUpAnimation = function () {
57
+ if (_this._frontPlate) {
58
+ _this._frontPlate.scaling.z = _this._frontPlateDepth;
59
+ _this._frontPlate.position = Vector3.Forward(_this._frontPlate._scene.useRightHandedSystem).scale((_this._frontPlateDepth - _this._frontPlateDepth) / 2);
60
+ _this._textPlate.position = Vector3.Forward(_this._textPlate._scene.useRightHandedSystem).scale(-(_this._backPlateDepth + _this._frontPlateDepth) / 2);
61
+ }
62
+ };
63
+ _this.onPointerMoveObservable.add(function (position) {
64
+ if (_this._frontPlate && _this.isActiveNearInteraction) {
65
+ var scale = Vector3.Zero();
66
+ if (_this._backPlate.getWorldMatrix().decompose(scale, undefined, undefined)) {
67
+ var interactionHeight = _this._getInteractionHeight(position, _this._backPlate.getAbsolutePosition()) / scale.z;
68
+ interactionHeight = Scalar.Clamp(interactionHeight - _this._backPlateDepth / 2, 0.2 * _this._frontPlateDepth, _this._frontPlateDepth);
69
+ _this._frontPlate.scaling.z = interactionHeight;
70
+ _this._frontPlate.position = Vector3.Forward(_this._frontPlate._scene.useRightHandedSystem).scale((_this._frontPlateDepth - interactionHeight) / 2);
71
+ _this._textPlate.position = Vector3.Forward(_this._textPlate._scene.useRightHandedSystem).scale(-(_this._backPlateDepth + interactionHeight) / 2);
72
+ }
73
+ }
74
+ });
75
+ _this._pointerHoverObserver = _this.onPointerMoveObservable.add(function (hoverPosition) {
76
+ _this._frontMaterial.globalLeftIndexTipPosition = hoverPosition;
77
+ });
78
+ return _this;
79
+ }
80
+ TouchHolographicButton.prototype._disposeTooltip = function () {
81
+ this._tooltipFade = null;
82
+ if (this._tooltipTextBlock) {
83
+ this._tooltipTextBlock.dispose();
84
+ }
85
+ if (this._tooltipTexture) {
86
+ this._tooltipTexture.dispose();
87
+ }
88
+ if (this._tooltipMesh) {
89
+ this._tooltipMesh.dispose();
90
+ }
91
+ this.onPointerEnterObservable.remove(this._tooltipHoverObserver);
92
+ this.onPointerOutObservable.remove(this._tooltipOutObserver);
93
+ };
94
+ Object.defineProperty(TouchHolographicButton.prototype, "renderingGroupId", {
95
+ get: function () {
96
+ return this._backPlate.renderingGroupId;
97
+ },
98
+ /**
99
+ * Rendering ground id of all the mesh in the button
100
+ */
101
+ set: function (id) {
102
+ this._backPlate.renderingGroupId = id;
103
+ this._textPlate.renderingGroupId = id;
104
+ this._frontPlate.renderingGroupId = id;
105
+ if (this._tooltipMesh) {
106
+ this._tooltipMesh.renderingGroupId = id;
107
+ }
108
+ },
109
+ enumerable: false,
110
+ configurable: true
111
+ });
112
+ Object.defineProperty(TouchHolographicButton.prototype, "mesh", {
113
+ /**
114
+ * Gets the mesh used to render this control
115
+ */
116
+ get: function () {
117
+ return this._backPlate;
118
+ },
119
+ enumerable: false,
120
+ configurable: true
121
+ });
122
+ Object.defineProperty(TouchHolographicButton.prototype, "tooltipText", {
123
+ get: function () {
124
+ if (this._tooltipTextBlock) {
125
+ return this._tooltipTextBlock.text;
126
+ }
127
+ return null;
128
+ },
129
+ /**
130
+ * Text to be displayed on the tooltip shown when hovering on the button. When set to null tooltip is disabled. (Default: null)
131
+ */
132
+ set: function (text) {
133
+ var _this = this;
134
+ if (!text) {
135
+ this._disposeTooltip();
136
+ return;
137
+ }
138
+ if (!this._tooltipFade) {
139
+ var rightHandedScene = this._backPlate._scene.useRightHandedSystem;
140
+ // Create tooltip with mesh and text
141
+ this._tooltipMesh = CreatePlane("", { size: 1 }, this._backPlate._scene);
142
+ var tooltipBackground = CreatePlane("", { size: 1, sideOrientation: Mesh.DOUBLESIDE }, this._backPlate._scene);
143
+ var mat = new StandardMaterial("", this._backPlate._scene);
144
+ mat.diffuseColor = Color3.FromHexString("#212121");
145
+ tooltipBackground.material = mat;
146
+ tooltipBackground.isPickable = false;
147
+ this._tooltipMesh.addChild(tooltipBackground);
148
+ tooltipBackground.position = Vector3.Forward(rightHandedScene).scale(0.05);
149
+ this._tooltipMesh.scaling.y = 1 / 3;
150
+ this._tooltipMesh.position = Vector3.Up().scale(0.7).add(Vector3.Forward(rightHandedScene).scale(-0.15));
151
+ this._tooltipMesh.isPickable = false;
152
+ this._tooltipMesh.parent = this._backPlate;
153
+ // Create text texture for the tooltip
154
+ this._tooltipTexture = AdvancedDynamicTexture.CreateForMesh(this._tooltipMesh);
155
+ this._tooltipTextBlock = new TextBlock();
156
+ this._tooltipTextBlock.scaleY = 3;
157
+ this._tooltipTextBlock.color = "white";
158
+ this._tooltipTextBlock.fontSize = 130;
159
+ this._tooltipTexture.addControl(this._tooltipTextBlock);
160
+ // Add hover action to tooltip
161
+ this._tooltipFade = new FadeInOutBehavior();
162
+ this._tooltipFade.delay = 500;
163
+ this._tooltipMesh.addBehavior(this._tooltipFade);
164
+ this._tooltipHoverObserver = this.onPointerEnterObservable.add(function () {
165
+ if (_this._tooltipFade) {
166
+ _this._tooltipFade.fadeIn(true);
167
+ }
168
+ });
169
+ this._tooltipOutObserver = this.onPointerOutObservable.add(function () {
170
+ if (_this._tooltipFade) {
171
+ _this._tooltipFade.fadeIn(false);
172
+ }
173
+ });
174
+ }
175
+ if (this._tooltipTextBlock) {
176
+ this._tooltipTextBlock.text = text;
177
+ }
178
+ },
179
+ enumerable: false,
180
+ configurable: true
181
+ });
182
+ Object.defineProperty(TouchHolographicButton.prototype, "text", {
183
+ /**
184
+ * Gets or sets text for the button
185
+ */
186
+ get: function () {
187
+ return this._text;
188
+ },
189
+ set: function (value) {
190
+ if (this._text === value) {
191
+ return;
192
+ }
193
+ this._text = value;
194
+ this._rebuildContent();
195
+ },
196
+ enumerable: false,
197
+ configurable: true
198
+ });
199
+ Object.defineProperty(TouchHolographicButton.prototype, "imageUrl", {
200
+ /**
201
+ * Gets or sets the image url for the button
202
+ */
203
+ get: function () {
204
+ return this._imageUrl;
205
+ },
206
+ set: function (value) {
207
+ if (this._imageUrl === value) {
208
+ return;
209
+ }
210
+ this._imageUrl = value;
211
+ this._rebuildContent();
212
+ },
213
+ enumerable: false,
214
+ configurable: true
215
+ });
216
+ Object.defineProperty(TouchHolographicButton.prototype, "backMaterial", {
217
+ /**
218
+ * Gets the back material used by this button
219
+ */
220
+ get: function () {
221
+ return this._backMaterial;
222
+ },
223
+ enumerable: false,
224
+ configurable: true
225
+ });
226
+ Object.defineProperty(TouchHolographicButton.prototype, "frontMaterial", {
227
+ /**
228
+ * Gets the front material used by this button
229
+ */
230
+ get: function () {
231
+ return this._frontMaterial;
232
+ },
233
+ enumerable: false,
234
+ configurable: true
235
+ });
236
+ Object.defineProperty(TouchHolographicButton.prototype, "plateMaterial", {
237
+ /**
238
+ * Gets the plate material used by this button
239
+ */
240
+ get: function () {
241
+ return this._plateMaterial;
242
+ },
243
+ enumerable: false,
244
+ configurable: true
245
+ });
246
+ Object.defineProperty(TouchHolographicButton.prototype, "shareMaterials", {
247
+ /**
248
+ * Gets a boolean indicating if this button shares its material with other HolographicButtons
249
+ */
250
+ get: function () {
251
+ return this._shareMaterials;
252
+ },
253
+ enumerable: false,
254
+ configurable: true
255
+ });
256
+ Object.defineProperty(TouchHolographicButton.prototype, "isBackplateVisible", {
257
+ /**
258
+ * Sets whether the backplate is visible or hidden. Hiding the backplate is not recommended without some sort of replacement
259
+ */
260
+ set: function (isVisible) {
261
+ if (this.mesh && !!this._backMaterial) {
262
+ if (isVisible && !this._isBackplateVisible) {
263
+ this._backPlate.visibility = 1;
264
+ }
265
+ else if (!isVisible && this._isBackplateVisible) {
266
+ this._backPlate.visibility = 0;
267
+ }
268
+ }
269
+ this._isBackplateVisible = isVisible;
270
+ },
271
+ enumerable: false,
272
+ configurable: true
273
+ });
274
+ TouchHolographicButton.prototype._getTypeName = function () {
275
+ return "TouchHolographicButton";
276
+ };
277
+ TouchHolographicButton.prototype._rebuildContent = function () {
278
+ this._disposeFacadeTexture();
279
+ var panel = new StackPanel();
280
+ panel.isVertical = true;
281
+ if (DomManagement.IsDocumentAvailable() && !!document.createElement) {
282
+ if (this._imageUrl) {
283
+ var image = new Image();
284
+ image.source = this._imageUrl;
285
+ image.paddingTop = "40px";
286
+ image.height = "180px";
287
+ image.width = "100px";
288
+ image.paddingBottom = "40px";
289
+ panel.addControl(image);
290
+ }
291
+ }
292
+ if (this._text) {
293
+ var text = new TextBlock();
294
+ text.text = this._text;
295
+ text.color = "white";
296
+ text.height = "30px";
297
+ text.fontSize = 24;
298
+ panel.addControl(text);
299
+ }
300
+ this.content = panel;
301
+ };
302
+ // Mesh association
303
+ TouchHolographicButton.prototype._createNode = function (scene) {
304
+ var _this = this;
305
+ var _a;
306
+ this.name = (_a = this.name) !== null && _a !== void 0 ? _a : "TouchHolographicButton";
307
+ var collisionMesh = CreateBox("".concat(this.name, "_collisionMesh"), {
308
+ width: 1.0,
309
+ height: 1.0,
310
+ depth: this._frontPlateDepth,
311
+ }, scene);
312
+ collisionMesh.isPickable = true;
313
+ collisionMesh.isNearPickable = true;
314
+ collisionMesh.visibility = 0;
315
+ collisionMesh.position = Vector3.Forward(scene.useRightHandedSystem).scale(-this._frontPlateDepth / 2);
316
+ SceneLoader.ImportMeshAsync(undefined, TouchHolographicButton.MODEL_BASE_URL, TouchHolographicButton.MODEL_FILENAME, scene).then(function (result) {
317
+ var alphaMesh = CreateBox("${this.name}_alphaMesh", {
318
+ width: 1.0,
319
+ height: 1.0,
320
+ depth: 1.0,
321
+ }, scene);
322
+ alphaMesh.isPickable = false;
323
+ alphaMesh.material = new StandardMaterial("${this.name}_alphaMesh_material", scene);
324
+ alphaMesh.material.alpha = 0.15;
325
+ var importedFrontPlate = result.meshes[1];
326
+ importedFrontPlate.name = "".concat(_this.name, "_frontPlate");
327
+ importedFrontPlate.isPickable = false;
328
+ importedFrontPlate.scaling.z = _this._frontPlateDepth;
329
+ alphaMesh.parent = importedFrontPlate;
330
+ importedFrontPlate.parent = collisionMesh;
331
+ if (_this._frontMaterial) {
332
+ importedFrontPlate.material = _this._frontMaterial;
333
+ }
334
+ _this._frontPlate = importedFrontPlate;
335
+ });
336
+ this._backPlate = CreateBox("".concat(this.name, "_backPlate"), {
337
+ width: 1.0,
338
+ height: 1.0,
339
+ depth: this._backPlateDepth,
340
+ }, scene);
341
+ this._backPlate.position = Vector3.Forward(scene.useRightHandedSystem).scale(this._backPlateDepth / 2);
342
+ this._backPlate.isPickable = false;
343
+ this._textPlate = _super.prototype._createNode.call(this, scene);
344
+ this._textPlate.name = "".concat(this.name, "_textPlate");
345
+ this._textPlate.isPickable = false;
346
+ this._textPlate.position = Vector3.Forward(scene.useRightHandedSystem).scale(-this._frontPlateDepth / 2);
347
+ this._backPlate.addChild(collisionMesh);
348
+ this._backPlate.addChild(this._textPlate);
349
+ var tn = new TransformNode("{this.name}_root", scene);
350
+ this._backPlate.setParent(tn);
351
+ this.collisionMesh = collisionMesh;
352
+ this.collidableFrontDirection = this._backPlate.forward.negate(); // Mesh is facing the wrong way
353
+ return tn;
354
+ };
355
+ TouchHolographicButton.prototype._applyFacade = function (facadeTexture) {
356
+ this._plateMaterial.emissiveTexture = facadeTexture;
357
+ this._plateMaterial.opacityTexture = facadeTexture;
358
+ this._plateMaterial.diffuseColor = new Color3(0.4, 0.4, 0.4);
359
+ };
360
+ TouchHolographicButton.prototype._createBackMaterial = function (mesh) {
361
+ this._backMaterial = new FluentMaterial(this.name + "backPlateMaterial", mesh.getScene());
362
+ this._backMaterial.albedoColor = this._backplateColor;
363
+ this._backMaterial.renderBorders = true;
364
+ this._backMaterial.renderHoverLight = false;
365
+ };
366
+ TouchHolographicButton.prototype._createFrontMaterial = function (mesh) {
367
+ this._frontMaterial = new FluentButtonMaterial(this.name + "Front Material", mesh.getScene());
368
+ };
369
+ TouchHolographicButton.prototype._createPlateMaterial = function (mesh) {
370
+ this._plateMaterial = new StandardMaterial(this.name + "Plate Material", mesh.getScene());
371
+ this._plateMaterial.specularColor = Color3.Black();
372
+ };
373
+ TouchHolographicButton.prototype._onToggle = function (newState) {
374
+ if (this._backMaterial) {
375
+ if (newState) {
376
+ this._backMaterial.albedoColor = this._backplateToggledColor;
377
+ }
378
+ else {
379
+ this._backMaterial.albedoColor = this._backplateColor;
380
+ }
381
+ }
382
+ _super.prototype._onToggle.call(this, newState);
383
+ };
384
+ TouchHolographicButton.prototype._affectMaterial = function (mesh) {
385
+ if (this._shareMaterials) {
386
+ // Back
387
+ if (!this._host._touchSharedMaterials["backFluentMaterial"]) {
388
+ this._createBackMaterial(mesh);
389
+ this._host._touchSharedMaterials["backFluentMaterial"] = this._backMaterial;
390
+ }
391
+ else {
392
+ this._backMaterial = this._host._touchSharedMaterials["backFluentMaterial"];
393
+ }
394
+ // Front
395
+ if (!this._host._touchSharedMaterials["frontFluentMaterial"]) {
396
+ this._createFrontMaterial(mesh);
397
+ this._host._touchSharedMaterials["frontFluentMaterial"] = this._frontMaterial;
398
+ }
399
+ else {
400
+ this._frontMaterial = this._host._touchSharedMaterials["frontFluentMaterial"];
401
+ }
402
+ }
403
+ else {
404
+ this._createBackMaterial(mesh);
405
+ this._createFrontMaterial(mesh);
406
+ }
407
+ this._createPlateMaterial(mesh);
408
+ this._backPlate.material = this._backMaterial;
409
+ this._textPlate.material = this._plateMaterial;
410
+ if (!this._isBackplateVisible) {
411
+ this._backPlate.visibility = 0;
412
+ }
413
+ if (this._frontPlate) {
414
+ this._frontPlate.material = this._frontMaterial;
415
+ }
416
+ this._rebuildContent();
417
+ };
418
+ /**
419
+ * Releases all associated resources
420
+ */
421
+ TouchHolographicButton.prototype.dispose = function () {
422
+ _super.prototype.dispose.call(this); // will dispose main mesh ie. back plate
423
+ this._disposeTooltip();
424
+ this.onPointerMoveObservable.remove(this._pointerHoverObserver);
425
+ if (!this.shareMaterials) {
426
+ this._backMaterial.dispose();
427
+ this._frontMaterial.dispose();
428
+ this._plateMaterial.dispose();
429
+ if (this._pickedPointObserver) {
430
+ this._host.onPickedPointChangedObservable.remove(this._pickedPointObserver);
431
+ this._pickedPointObserver = null;
432
+ }
433
+ }
434
+ };
435
+ /**
436
+ * Base Url for the button model.
437
+ */
438
+ TouchHolographicButton.MODEL_BASE_URL = "https://assets.babylonjs.com/meshes/MRTK/";
439
+ /**
440
+ * File name for the button model.
441
+ */
442
+ TouchHolographicButton.MODEL_FILENAME = "mrtk-fluent-button.glb";
443
+ return TouchHolographicButton;
444
+ }(TouchButton3D));
445
+ export { TouchHolographicButton };
446
446
  //# sourceMappingURL=touchHolographicButton.js.map