@onerjs/gui 8.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) hide show
  1. package/2D/FrameGraph/guiTask.d.ts +34 -0
  2. package/2D/FrameGraph/guiTask.js +62 -0
  3. package/2D/FrameGraph/guiTask.js.map +1 -0
  4. package/2D/FrameGraph/renderGraphGUIBlock.d.ts +43 -0
  5. package/2D/FrameGraph/renderGraphGUIBlock.js +66 -0
  6. package/2D/FrameGraph/renderGraphGUIBlock.js.map +1 -0
  7. package/2D/adtInstrumentation.d.ts +52 -0
  8. package/2D/adtInstrumentation.js +107 -0
  9. package/2D/adtInstrumentation.js.map +1 -0
  10. package/2D/advancedDynamicTexture.d.ts +548 -0
  11. package/2D/advancedDynamicTexture.js +1522 -0
  12. package/2D/advancedDynamicTexture.js.map +1 -0
  13. package/2D/controls/button.d.ts +109 -0
  14. package/2D/controls/button.js +246 -0
  15. package/2D/controls/button.js.map +1 -0
  16. package/2D/controls/checkbox.d.ts +53 -0
  17. package/2D/controls/checkbox.js +164 -0
  18. package/2D/controls/checkbox.js.map +1 -0
  19. package/2D/controls/colorpicker.d.ts +101 -0
  20. package/2D/controls/colorpicker.js +1396 -0
  21. package/2D/controls/colorpicker.js.map +1 -0
  22. package/2D/controls/container.d.ts +179 -0
  23. package/2D/controls/container.js +616 -0
  24. package/2D/controls/container.js.map +1 -0
  25. package/2D/controls/control.d.ts +943 -0
  26. package/2D/controls/control.js +2460 -0
  27. package/2D/controls/control.js.map +1 -0
  28. package/2D/controls/displayGrid.d.ts +53 -0
  29. package/2D/controls/displayGrid.js +202 -0
  30. package/2D/controls/displayGrid.js.map +1 -0
  31. package/2D/controls/ellipse.d.ts +25 -0
  32. package/2D/controls/ellipse.js +93 -0
  33. package/2D/controls/ellipse.js.map +1 -0
  34. package/2D/controls/focusableButton.d.ts +17 -0
  35. package/2D/controls/focusableButton.js +25 -0
  36. package/2D/controls/focusableButton.js.map +1 -0
  37. package/2D/controls/focusableControl.d.ts +43 -0
  38. package/2D/controls/focusableControl.js +2 -0
  39. package/2D/controls/focusableControl.js.map +1 -0
  40. package/2D/controls/gradient/BaseGradient.d.ts +69 -0
  41. package/2D/controls/gradient/BaseGradient.js +84 -0
  42. package/2D/controls/gradient/BaseGradient.js.map +1 -0
  43. package/2D/controls/gradient/LinearGradient.d.ts +45 -0
  44. package/2D/controls/gradient/LinearGradient.js +73 -0
  45. package/2D/controls/gradient/LinearGradient.js.map +1 -0
  46. package/2D/controls/gradient/RadialGradient.d.ts +53 -0
  47. package/2D/controls/gradient/RadialGradient.js +89 -0
  48. package/2D/controls/gradient/RadialGradient.js.map +1 -0
  49. package/2D/controls/grid.d.ts +151 -0
  50. package/2D/controls/grid.js +528 -0
  51. package/2D/controls/grid.js.map +1 -0
  52. package/2D/controls/image.d.ts +228 -0
  53. package/2D/controls/image.js +915 -0
  54. package/2D/controls/image.js.map +1 -0
  55. package/2D/controls/index.d.ts +34 -0
  56. package/2D/controls/index.js +35 -0
  57. package/2D/controls/index.js.map +1 -0
  58. package/2D/controls/inputPassword.d.ts +9 -0
  59. package/2D/controls/inputPassword.js +22 -0
  60. package/2D/controls/inputPassword.js.map +1 -0
  61. package/2D/controls/inputText.d.ts +197 -0
  62. package/2D/controls/inputText.js +1035 -0
  63. package/2D/controls/inputText.js.map +1 -0
  64. package/2D/controls/inputTextArea.d.ts +142 -0
  65. package/2D/controls/inputTextArea.js +1025 -0
  66. package/2D/controls/inputTextArea.js.map +1 -0
  67. package/2D/controls/line.d.ts +73 -0
  68. package/2D/controls/line.js +227 -0
  69. package/2D/controls/line.js.map +1 -0
  70. package/2D/controls/multiLine.d.ts +75 -0
  71. package/2D/controls/multiLine.js +237 -0
  72. package/2D/controls/multiLine.js.map +1 -0
  73. package/2D/controls/radioButton.d.ts +49 -0
  74. package/2D/controls/radioButton.js +185 -0
  75. package/2D/controls/radioButton.js.map +1 -0
  76. package/2D/controls/rectangle.d.ts +43 -0
  77. package/2D/controls/rectangle.js +204 -0
  78. package/2D/controls/rectangle.js.map +1 -0
  79. package/2D/controls/scrollViewers/scrollViewer.d.ts +178 -0
  80. package/2D/controls/scrollViewers/scrollViewer.js +587 -0
  81. package/2D/controls/scrollViewers/scrollViewer.js.map +1 -0
  82. package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +51 -0
  83. package/2D/controls/scrollViewers/scrollViewerWindow.js +254 -0
  84. package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -0
  85. package/2D/controls/selector.d.ts +237 -0
  86. package/2D/controls/selector.js +579 -0
  87. package/2D/controls/selector.js.map +1 -0
  88. package/2D/controls/sliders/baseSlider.d.ts +80 -0
  89. package/2D/controls/sliders/baseSlider.js +299 -0
  90. package/2D/controls/sliders/baseSlider.js.map +1 -0
  91. package/2D/controls/sliders/imageBasedSlider.d.ts +47 -0
  92. package/2D/controls/sliders/imageBasedSlider.js +168 -0
  93. package/2D/controls/sliders/imageBasedSlider.js.map +1 -0
  94. package/2D/controls/sliders/imageScrollBar.d.ts +67 -0
  95. package/2D/controls/sliders/imageScrollBar.js +248 -0
  96. package/2D/controls/sliders/imageScrollBar.js.map +1 -0
  97. package/2D/controls/sliders/scrollBar.d.ts +50 -0
  98. package/2D/controls/sliders/scrollBar.js +175 -0
  99. package/2D/controls/sliders/scrollBar.js.map +1 -0
  100. package/2D/controls/sliders/slider.d.ts +46 -0
  101. package/2D/controls/sliders/slider.js +281 -0
  102. package/2D/controls/sliders/slider.js.map +1 -0
  103. package/2D/controls/stackPanel.d.ts +64 -0
  104. package/2D/controls/stackPanel.js +244 -0
  105. package/2D/controls/stackPanel.js.map +1 -0
  106. package/2D/controls/statics.d.ts +6 -0
  107. package/2D/controls/statics.js +50 -0
  108. package/2D/controls/statics.js.map +1 -0
  109. package/2D/controls/textBlock.d.ts +219 -0
  110. package/2D/controls/textBlock.js +670 -0
  111. package/2D/controls/textBlock.js.map +1 -0
  112. package/2D/controls/textWrapper.d.ts +13 -0
  113. package/2D/controls/textWrapper.js +88 -0
  114. package/2D/controls/textWrapper.js.map +1 -0
  115. package/2D/controls/toggleButton.d.ts +93 -0
  116. package/2D/controls/toggleButton.js +229 -0
  117. package/2D/controls/toggleButton.js.map +1 -0
  118. package/2D/controls/virtualKeyboard.d.ts +102 -0
  119. package/2D/controls/virtualKeyboard.js +275 -0
  120. package/2D/controls/virtualKeyboard.js.map +1 -0
  121. package/2D/index.d.ts +11 -0
  122. package/2D/index.js +13 -0
  123. package/2D/index.js.map +1 -0
  124. package/2D/math2D.d.ts +136 -0
  125. package/2D/math2D.js +235 -0
  126. package/2D/math2D.js.map +1 -0
  127. package/2D/measure.d.ts +77 -0
  128. package/2D/measure.js +138 -0
  129. package/2D/measure.js.map +1 -0
  130. package/2D/multiLinePoint.d.ts +47 -0
  131. package/2D/multiLinePoint.js +110 -0
  132. package/2D/multiLinePoint.js.map +1 -0
  133. package/2D/style.d.ts +46 -0
  134. package/2D/style.js +80 -0
  135. package/2D/style.js.map +1 -0
  136. package/2D/valueAndUnit.d.ts +89 -0
  137. package/2D/valueAndUnit.js +194 -0
  138. package/2D/valueAndUnit.js.map +1 -0
  139. package/2D/xmlLoader.d.ts +60 -0
  140. package/2D/xmlLoader.js +348 -0
  141. package/2D/xmlLoader.js.map +1 -0
  142. package/3D/behaviors/defaultBehavior.d.ts +73 -0
  143. package/3D/behaviors/defaultBehavior.js +103 -0
  144. package/3D/behaviors/defaultBehavior.js.map +1 -0
  145. package/3D/controls/MRTK3/touchHolographicButton.d.ts +220 -0
  146. package/3D/controls/MRTK3/touchHolographicButton.js +868 -0
  147. package/3D/controls/MRTK3/touchHolographicButton.js.map +1 -0
  148. package/3D/controls/abstractButton3D.d.ts +15 -0
  149. package/3D/controls/abstractButton3D.js +22 -0
  150. package/3D/controls/abstractButton3D.js.map +1 -0
  151. package/3D/controls/button3D.d.ts +51 -0
  152. package/3D/controls/button3D.js +98 -0
  153. package/3D/controls/button3D.js.map +1 -0
  154. package/3D/controls/container3D.d.ts +72 -0
  155. package/3D/controls/container3D.js +126 -0
  156. package/3D/controls/container3D.js.map +1 -0
  157. package/3D/controls/contentDisplay3D.d.ts +42 -0
  158. package/3D/controls/contentDisplay3D.js +81 -0
  159. package/3D/controls/contentDisplay3D.js.map +1 -0
  160. package/3D/controls/control3D.d.ts +183 -0
  161. package/3D/controls/control3D.js +401 -0
  162. package/3D/controls/control3D.js.map +1 -0
  163. package/3D/controls/cylinderPanel.d.ts +17 -0
  164. package/3D/controls/cylinderPanel.js +57 -0
  165. package/3D/controls/cylinderPanel.js.map +1 -0
  166. package/3D/controls/handMenu.d.ts +28 -0
  167. package/3D/controls/handMenu.js +39 -0
  168. package/3D/controls/handMenu.js.map +1 -0
  169. package/3D/controls/holographicBackplate.d.ts +49 -0
  170. package/3D/controls/holographicBackplate.js +104 -0
  171. package/3D/controls/holographicBackplate.js.map +1 -0
  172. package/3D/controls/holographicButton.d.ts +84 -0
  173. package/3D/controls/holographicButton.js +300 -0
  174. package/3D/controls/holographicButton.js.map +1 -0
  175. package/3D/controls/holographicSlate.d.ts +134 -0
  176. package/3D/controls/holographicSlate.js +413 -0
  177. package/3D/controls/holographicSlate.js.map +1 -0
  178. package/3D/controls/index.d.ts +22 -0
  179. package/3D/controls/index.js +24 -0
  180. package/3D/controls/index.js.map +1 -0
  181. package/3D/controls/meshButton3D.d.ts +21 -0
  182. package/3D/controls/meshButton3D.js +58 -0
  183. package/3D/controls/meshButton3D.js.map +1 -0
  184. package/3D/controls/nearMenu.d.ts +44 -0
  185. package/3D/controls/nearMenu.js +103 -0
  186. package/3D/controls/nearMenu.js.map +1 -0
  187. package/3D/controls/planePanel.d.ts +9 -0
  188. package/3D/controls/planePanel.js +30 -0
  189. package/3D/controls/planePanel.js.map +1 -0
  190. package/3D/controls/scatterPanel.d.ts +18 -0
  191. package/3D/controls/scatterPanel.js +98 -0
  192. package/3D/controls/scatterPanel.js.map +1 -0
  193. package/3D/controls/slider3D.d.ts +95 -0
  194. package/3D/controls/slider3D.js +256 -0
  195. package/3D/controls/slider3D.js.map +1 -0
  196. package/3D/controls/spherePanel.d.ts +17 -0
  197. package/3D/controls/spherePanel.js +58 -0
  198. package/3D/controls/spherePanel.js.map +1 -0
  199. package/3D/controls/stackPanel3D.d.ts +22 -0
  200. package/3D/controls/stackPanel3D.js +95 -0
  201. package/3D/controls/stackPanel3D.js.map +1 -0
  202. package/3D/controls/touchButton3D.d.ts +77 -0
  203. package/3D/controls/touchButton3D.js +205 -0
  204. package/3D/controls/touchButton3D.js.map +1 -0
  205. package/3D/controls/touchHolographicButton.d.ts +110 -0
  206. package/3D/controls/touchHolographicButton.js +400 -0
  207. package/3D/controls/touchHolographicButton.js.map +1 -0
  208. package/3D/controls/touchHolographicMenu.d.ts +61 -0
  209. package/3D/controls/touchHolographicMenu.js +139 -0
  210. package/3D/controls/touchHolographicMenu.js.map +1 -0
  211. package/3D/controls/touchMeshButton3D.d.ts +21 -0
  212. package/3D/controls/touchMeshButton3D.js +58 -0
  213. package/3D/controls/touchMeshButton3D.js.map +1 -0
  214. package/3D/controls/volumeBasedPanel.d.ts +53 -0
  215. package/3D/controls/volumeBasedPanel.js +158 -0
  216. package/3D/controls/volumeBasedPanel.js.map +1 -0
  217. package/3D/gizmos/gizmoHandle.d.ts +108 -0
  218. package/3D/gizmos/gizmoHandle.js +175 -0
  219. package/3D/gizmos/gizmoHandle.js.map +1 -0
  220. package/3D/gizmos/index.d.ts +2 -0
  221. package/3D/gizmos/index.js +3 -0
  222. package/3D/gizmos/index.js.map +1 -0
  223. package/3D/gizmos/slateGizmo.d.ts +57 -0
  224. package/3D/gizmos/slateGizmo.js +353 -0
  225. package/3D/gizmos/slateGizmo.js.map +1 -0
  226. package/3D/gui3DManager.d.ts +94 -0
  227. package/3D/gui3DManager.js +233 -0
  228. package/3D/gui3DManager.js.map +1 -0
  229. package/3D/index.d.ts +5 -0
  230. package/3D/index.js +7 -0
  231. package/3D/index.js.map +1 -0
  232. package/3D/materials/fluent/fluentMaterial.d.ts +91 -0
  233. package/3D/materials/fluent/fluentMaterial.js +286 -0
  234. package/3D/materials/fluent/fluentMaterial.js.map +1 -0
  235. package/3D/materials/fluent/index.d.ts +1 -0
  236. package/3D/materials/fluent/index.js +2 -0
  237. package/3D/materials/fluent/index.js.map +1 -0
  238. package/3D/materials/fluent/shaders/fluent.fragment.d.ts +5 -0
  239. package/3D/materials/fluent/shaders/fluent.fragment.js +41 -0
  240. package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -0
  241. package/3D/materials/fluent/shaders/fluent.vertex.d.ts +5 -0
  242. package/3D/materials/fluent/shaders/fluent.vertex.js +40 -0
  243. package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -0
  244. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +155 -0
  245. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +466 -0
  246. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -0
  247. package/3D/materials/fluentBackplate/index.d.ts +1 -0
  248. package/3D/materials/fluentBackplate/index.js +2 -0
  249. package/3D/materials/fluentBackplate/index.js.map +1 -0
  250. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -0
  251. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +60 -0
  252. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -0
  253. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -0
  254. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +127 -0
  255. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -0
  256. package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +190 -0
  257. package/3D/materials/fluentButton/fluentButtonMaterial.js +536 -0
  258. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -0
  259. package/3D/materials/fluentButton/index.d.ts +1 -0
  260. package/3D/materials/fluentButton/index.js +2 -0
  261. package/3D/materials/fluentButton/index.js.map +1 -0
  262. package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -0
  263. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +57 -0
  264. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -0
  265. package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -0
  266. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +162 -0
  267. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -0
  268. package/3D/materials/fluentMaterial.d.ts +4 -0
  269. package/3D/materials/fluentMaterial.js +5 -0
  270. package/3D/materials/fluentMaterial.js.map +1 -0
  271. package/3D/materials/handle/handleMaterial.d.ts +68 -0
  272. package/3D/materials/handle/handleMaterial.js +114 -0
  273. package/3D/materials/handle/handleMaterial.js.map +1 -0
  274. package/3D/materials/handle/index.d.ts +1 -0
  275. package/3D/materials/handle/index.js +2 -0
  276. package/3D/materials/handle/index.js.map +1 -0
  277. package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -0
  278. package/3D/materials/handle/shaders/handle.fragment.js +11 -0
  279. package/3D/materials/handle/shaders/handle.fragment.js.map +1 -0
  280. package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -0
  281. package/3D/materials/handle/shaders/handle.vertex.js +11 -0
  282. package/3D/materials/handle/shaders/handle.vertex.js.map +1 -0
  283. package/3D/materials/index.d.ts +5 -0
  284. package/3D/materials/index.js +7 -0
  285. package/3D/materials/index.js.map +1 -0
  286. package/3D/materials/mrdl/index.d.ts +3 -0
  287. package/3D/materials/mrdl/index.js +4 -0
  288. package/3D/materials/mrdl/index.js.map +1 -0
  289. package/3D/materials/mrdl/mrdlBackglowMaterial.d.ts +87 -0
  290. package/3D/materials/mrdl/mrdlBackglowMaterial.js +302 -0
  291. package/3D/materials/mrdl/mrdlBackglowMaterial.js.map +1 -0
  292. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +148 -0
  293. package/3D/materials/mrdl/mrdlBackplateMaterial.js +433 -0
  294. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -0
  295. package/3D/materials/mrdl/mrdlFrontplateMaterial.d.ts +186 -0
  296. package/3D/materials/mrdl/mrdlFrontplateMaterial.js +532 -0
  297. package/3D/materials/mrdl/mrdlFrontplateMaterial.js.map +1 -0
  298. package/3D/materials/mrdl/mrdlInnerquadMaterial.d.ts +56 -0
  299. package/3D/materials/mrdl/mrdlInnerquadMaterial.js +230 -0
  300. package/3D/materials/mrdl/mrdlInnerquadMaterial.js.map +1 -0
  301. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +337 -0
  302. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +855 -0
  303. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -0
  304. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +337 -0
  305. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +855 -0
  306. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -0
  307. package/3D/materials/mrdl/shaders/mrdlBackglow.fragment.d.ts +5 -0
  308. package/3D/materials/mrdl/shaders/mrdlBackglow.fragment.js +25 -0
  309. package/3D/materials/mrdl/shaders/mrdlBackglow.fragment.js.map +1 -0
  310. package/3D/materials/mrdl/shaders/mrdlBackglow.vertex.d.ts +5 -0
  311. package/3D/materials/mrdl/shaders/mrdlBackglow.vertex.js +12 -0
  312. package/3D/materials/mrdl/shaders/mrdlBackglow.vertex.js.map +1 -0
  313. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -0
  314. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +88 -0
  315. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -0
  316. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -0
  317. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +96 -0
  318. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -0
  319. package/3D/materials/mrdl/shaders/mrdlFrontplate.fragment.d.ts +5 -0
  320. package/3D/materials/mrdl/shaders/mrdlFrontplate.fragment.js +48 -0
  321. package/3D/materials/mrdl/shaders/mrdlFrontplate.fragment.js.map +1 -0
  322. package/3D/materials/mrdl/shaders/mrdlFrontplate.vertex.d.ts +5 -0
  323. package/3D/materials/mrdl/shaders/mrdlFrontplate.vertex.js +158 -0
  324. package/3D/materials/mrdl/shaders/mrdlFrontplate.vertex.js.map +1 -0
  325. package/3D/materials/mrdl/shaders/mrdlInnerquad.fragment.d.ts +5 -0
  326. package/3D/materials/mrdl/shaders/mrdlInnerquad.fragment.js +27 -0
  327. package/3D/materials/mrdl/shaders/mrdlInnerquad.fragment.js.map +1 -0
  328. package/3D/materials/mrdl/shaders/mrdlInnerquad.vertex.d.ts +5 -0
  329. package/3D/materials/mrdl/shaders/mrdlInnerquad.vertex.js +13 -0
  330. package/3D/materials/mrdl/shaders/mrdlInnerquad.vertex.js.map +1 -0
  331. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -0
  332. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +236 -0
  333. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -0
  334. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -0
  335. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +137 -0
  336. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -0
  337. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -0
  338. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +236 -0
  339. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -0
  340. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -0
  341. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +137 -0
  342. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -0
  343. package/3D/vector3WithInfo.d.ts +16 -0
  344. package/3D/vector3WithInfo.js +18 -0
  345. package/3D/vector3WithInfo.js.map +1 -0
  346. package/index.d.ts +2 -0
  347. package/index.js +4 -0
  348. package/index.js.map +1 -0
  349. package/legacy/legacy.d.ts +1 -0
  350. package/legacy/legacy.js +17 -0
  351. package/legacy/legacy.js.map +1 -0
  352. package/license.md +71 -0
  353. package/package.json +47 -0
  354. package/readme.md +31 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"touchHolographicButton.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/controls/MRTK3/touchHolographicButton.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport type { Control3D } from \"../control3D\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\nimport type { Scene } from \"core/scene\";\r\nimport type { Vector3WithInfo } from \"../../vector3WithInfo\";\r\n\r\nimport { AdvancedDynamicTexture } from \"../../../2D/advancedDynamicTexture\";\r\nimport { Animation } from \"core/Animations/animation\";\r\nimport { AnimationGroup } from \"core/Animations/animationGroup\";\r\nimport { Color3, Color4 } from \"core/Maths/math.color\";\r\nimport { Control } from \"../../../2D/controls/control\";\r\nimport { CreatePlane } from \"core/Meshes/Builders/planeBuilder\";\r\nimport { CreateBox } from \"core/Meshes/Builders/boxBuilder\";\r\nimport { IsDocumentAvailable } from \"core/Misc/domManagement\";\r\nimport { FadeInOutBehavior } from \"core/Behaviors/Meshes/fadeInOutBehavior\";\r\nimport { Grid } from \"../../../2D/controls/grid\";\r\nimport { Image } from \"../../../2D/controls/image\";\r\nimport { MRDLBackglowMaterial } from \"../../materials/mrdl/mrdlBackglowMaterial\";\r\nimport { MRDLBackplateMaterial } from \"../../materials/mrdl/mrdlBackplateMaterial\";\r\nimport { MRDLFrontplateMaterial } from \"../../materials/mrdl/mrdlFrontplateMaterial\";\r\nimport { MRDLInnerquadMaterial } from \"../../materials/mrdl/mrdlInnerquadMaterial\";\r\nimport { Rectangle } from \"../../../2D/controls/rectangle\";\r\nimport { SceneLoader } from \"core/Loading/sceneLoader\";\r\nimport { StackPanel } from \"../../../2D/controls/stackPanel\";\r\nimport { StandardMaterial } from \"core/Materials/standardMaterial\";\r\nimport { TextBlock } from \"../../../2D/controls/textBlock\";\r\nimport { TouchButton3D } from \"../touchButton3D\";\r\nimport { TransformNode } from \"core/Meshes/transformNode\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport { Tools } from \"core/Misc/tools\";\r\n\r\n/**\r\n * Class used to create the mrtkv3 button\r\n */\r\nexport class TouchHolographicButton extends TouchButton3D {\r\n /**\r\n * Base Url for the frontplate model.\r\n */\r\n public static MRTK_ASSET_BASE_URL = \"https://assets.babylonjs.com/core/MRTK/\";\r\n\r\n /**\r\n * File name for the frontplate model.\r\n */\r\n public static FRONTPLATE_MODEL_FILENAME = \"mrtk-fluent-frontplate.glb\";\r\n\r\n /**\r\n * File name for the backplate model.\r\n */\r\n public static BACKPLATE_MODEL_FILENAME = \"mrtk-fluent-backplate.glb\";\r\n\r\n /**\r\n * File name for the backglow model.\r\n */\r\n public static BACKGLOW_MODEL_FILENAME = \"mrtk-fluent-button.glb\";\r\n\r\n /**\r\n * File name for the innerquad model.\r\n */\r\n public static INNERQUAD_MODEL_FILENAME = \"SlateProximity.glb\";\r\n\r\n /**\r\n * Gets or sets the horizontal scaling for the button.\r\n */\r\n public width = 1;\r\n\r\n /**\r\n * Gets or sets the vertical scaling for the button.\r\n */\r\n public height = 1;\r\n\r\n /**\r\n * Gets or sets the bevel radius for the button.\r\n */\r\n public radius = 0.14;\r\n\r\n /**\r\n * Gets or sets the font size of the button text in pixels.\r\n * This is only adjustable for a button with width to height ratio greater than 1.\r\n */\r\n public textSizeInPixels = 18;\r\n\r\n /**\r\n * Gets or sets the size of the button image in pixels.\r\n * This is only adjustable for a button with width to height ratio greater than 1.\r\n */\r\n public imageSizeInPixels = 40;\r\n\r\n /**\r\n * Gets or sets the color of the button plate.\r\n */\r\n public plateMaterialColor = new Color3(0.4, 0.4, 0.4);\r\n\r\n // Shared variables for meshes\r\n /**\r\n * Gets or sets the depth of the button's front plate.\r\n * This variable determines the z scaling and z position for some of the button's meshes.\r\n */\r\n public frontPlateDepth = 0.2;\r\n\r\n /**\r\n * Gets or sets the depth of the button's back plate.\r\n * This variable determines the z scaling and z position for some of the button's meshes.\r\n */\r\n public backPlateDepth = 0.04;\r\n\r\n /**\r\n * Gets or sets the offset value for button's back glow.\r\n * This variable determines the x, y scaling of the button's meshes.\r\n */\r\n public backGlowOffset = 0.1;\r\n\r\n /**\r\n * Gets or sets the value that determines the z scaling and z position for the innerQuad and BackGlow meshes.\r\n */\r\n public flatPlaneDepth = 0.001;\r\n\r\n /**\r\n * Gets or sets the radius for FrontMaterial and innerQuadMaterial.\r\n */\r\n public innerQuadRadius = this.radius - 0.04;\r\n\r\n /**\r\n * Gets or sets the color for innerQuadMaterial.\r\n */\r\n public innerQuadColor = new Color4(0, 0, 0, 0);\r\n\r\n /**\r\n * Gets or sets the color for innerQuadMaterial for when it is toggled.\r\n */\r\n public innerQuadToggledColor = new Color4(0.5197843, 0.6485234, 0.9607843, 0.6);\r\n\r\n /**\r\n * Gets or sets the color for innerQuadMaterial for when it is hovered.\r\n */\r\n public innerQuadHoverColor = new Color4(1, 1, 1, 0.05);\r\n\r\n /**\r\n * Gets or sets the color for innerQuadMaterial for when it is toggled and hovered.\r\n */\r\n public innerQuadToggledHoverColor = new Color4(0.5197843, 0.6485234, 0.9607843, 1);\r\n\r\n // Meshes\r\n private _backPlate: AbstractMesh;\r\n private _textPlate: Mesh;\r\n private _frontPlate: AbstractMesh;\r\n private _backGlow: AbstractMesh;\r\n private _innerQuad: AbstractMesh;\r\n private _collisionPlate: AbstractMesh;\r\n private _frontPlateCollisionMesh: AbstractMesh;\r\n private _isBackplateVisible = true;\r\n\r\n // Content\r\n private _text: string;\r\n private _subtext: string;\r\n private _imageUrl: string;\r\n\r\n // Materials\r\n private _shareMaterials = true;\r\n private _frontMaterial: MRDLFrontplateMaterial;\r\n private _backMaterial: MRDLBackplateMaterial;\r\n private _backGlowMaterial: MRDLBackglowMaterial;\r\n private _innerQuadMaterial: MRDLInnerquadMaterial;\r\n private _plateMaterial: StandardMaterial;\r\n\r\n // Events\r\n private _pickedPointObserver: Nullable<Observer<Nullable<Vector3>>>;\r\n private _pointerClickObserver: Nullable<Observer<Vector3WithInfo>>;\r\n private _pointerEnterObserver: Nullable<Observer<Control3D>>;\r\n private _pointerOutObserver: Nullable<Observer<Control3D>>;\r\n private _toggleObserver: Nullable<Observer<boolean>>;\r\n\r\n // Tooltip\r\n private _tooltipFade: Nullable<FadeInOutBehavior>;\r\n private _tooltipTextBlock: Nullable<TextBlock>;\r\n private _tooltipTexture: Nullable<AdvancedDynamicTexture>;\r\n private _tooltipMesh: Nullable<Mesh>;\r\n private _tooltipHoverObserver: Nullable<Observer<Control3D>>;\r\n private _tooltipOutObserver: Nullable<Observer<Control3D>>;\r\n\r\n private _disposeTooltip() {\r\n this._tooltipFade = null;\r\n if (this._tooltipTextBlock) {\r\n this._tooltipTextBlock.dispose();\r\n }\r\n if (this._tooltipTexture) {\r\n this._tooltipTexture.dispose();\r\n }\r\n if (this._tooltipMesh) {\r\n this._tooltipMesh.dispose();\r\n }\r\n this.onPointerEnterObservable.remove(this._tooltipHoverObserver);\r\n this.onPointerOutObservable.remove(this._tooltipOutObserver);\r\n }\r\n\r\n /**\r\n * Rendering ground id of all the mesh in the button\r\n */\r\n public set renderingGroupId(id: number) {\r\n this._backPlate.renderingGroupId = id;\r\n this._textPlate.renderingGroupId = id;\r\n this._frontPlate.renderingGroupId = id;\r\n this._backGlow.renderingGroupId = id;\r\n this._innerQuad.renderingGroupId = id;\r\n\r\n if (this._tooltipMesh) {\r\n this._tooltipMesh.renderingGroupId = id;\r\n }\r\n }\r\n public get renderingGroupId(): number {\r\n return this._backPlate.renderingGroupId;\r\n }\r\n\r\n /**\r\n * Gets the mesh used to render this control\r\n */\r\n public override get mesh(): Nullable<AbstractMesh> {\r\n return this._backPlate;\r\n }\r\n\r\n /**\r\n * Text to be displayed on the tooltip shown when hovering on the button. When set to null tooltip is disabled. (Default: null)\r\n * Set this property after adding the button to the GUI3DManager\r\n */\r\n public set tooltipText(text: Nullable<string>) {\r\n if (!text) {\r\n this._disposeTooltip();\r\n return;\r\n }\r\n if (!this._tooltipFade) {\r\n const rightHandedScene = this._backPlate._scene.useRightHandedSystem;\r\n // Create tooltip with mesh and text\r\n this._tooltipMesh = CreatePlane(\"\", { size: 1 }, this._backPlate._scene);\r\n this._tooltipMesh.position = Vector3.Down().scale(0.7).add(Vector3.Forward(rightHandedScene).scale(-0.15));\r\n this._tooltipMesh.isPickable = false;\r\n this._tooltipMesh.parent = this._frontPlateCollisionMesh;\r\n\r\n // Create text texture for the tooltip\r\n this._tooltipTexture = AdvancedDynamicTexture.CreateForMesh(this._tooltipMesh);\r\n const tooltipBackground = new Rectangle();\r\n tooltipBackground.height = 0.25;\r\n tooltipBackground.width = 0.8;\r\n tooltipBackground.cornerRadius = 25;\r\n tooltipBackground.color = \"#ffffff\";\r\n tooltipBackground.thickness = 20;\r\n tooltipBackground.background = \"#060668\";\r\n this._tooltipTexture.addControl(tooltipBackground);\r\n\r\n this._tooltipTextBlock = new TextBlock();\r\n this._tooltipTextBlock.color = \"white\";\r\n this._tooltipTextBlock.fontSize = 100;\r\n this._tooltipTexture.addControl(this._tooltipTextBlock);\r\n\r\n // Add hover action to tooltip\r\n this._tooltipFade = new FadeInOutBehavior();\r\n this._tooltipFade.delay = 500;\r\n this._tooltipMesh.addBehavior(this._tooltipFade);\r\n this._tooltipHoverObserver = this.onPointerEnterObservable.add(() => {\r\n if (this._tooltipFade) {\r\n this._tooltipFade.fadeIn(true);\r\n }\r\n });\r\n this._tooltipOutObserver = this.onPointerOutObservable.add(() => {\r\n if (this._tooltipFade) {\r\n this._tooltipFade.fadeIn(false);\r\n }\r\n });\r\n }\r\n if (this._tooltipTextBlock) {\r\n this._tooltipTextBlock.text = text;\r\n }\r\n }\r\n\r\n public get tooltipText() {\r\n return this._tooltipTextBlock?.text || null;\r\n }\r\n\r\n /**\r\n * Gets or sets text for the button\r\n */\r\n public get text(): string {\r\n return this._text;\r\n }\r\n\r\n public set text(value: string) {\r\n if (this._text === value) {\r\n return;\r\n }\r\n\r\n this._text = value;\r\n this._rebuildContent();\r\n }\r\n\r\n /**\r\n * Gets or sets subtext for a button with larger width\r\n */\r\n public get subtext(): string {\r\n return this._subtext;\r\n }\r\n\r\n public set subtext(value: string) {\r\n if (this._subtext === value) {\r\n return;\r\n }\r\n\r\n this._subtext = value;\r\n this._rebuildContent();\r\n }\r\n\r\n /**\r\n * Gets or sets the image url for the button\r\n */\r\n public get imageUrl(): string {\r\n return this._imageUrl;\r\n }\r\n\r\n public set imageUrl(value: string) {\r\n if (this._imageUrl === value) {\r\n return;\r\n }\r\n\r\n this._imageUrl = value;\r\n this._rebuildContent();\r\n }\r\n\r\n /**\r\n * Gets the back material used by this button\r\n */\r\n public get backMaterial(): MRDLBackplateMaterial {\r\n return this._backMaterial;\r\n }\r\n\r\n /**\r\n * Gets the front material used by this button\r\n */\r\n public get frontMaterial(): MRDLFrontplateMaterial {\r\n return this._frontMaterial;\r\n }\r\n\r\n /**\r\n * Gets the back glow material used by this button\r\n */\r\n public get backGlowMaterial(): MRDLBackglowMaterial {\r\n return this._backGlowMaterial;\r\n }\r\n\r\n /**\r\n * Gets the inner quad material used by this button\r\n */\r\n public get innerQuadMaterial(): MRDLInnerquadMaterial {\r\n return this._innerQuadMaterial;\r\n }\r\n\r\n /**\r\n * Gets the plate material used by this button\r\n */\r\n public get plateMaterial(): StandardMaterial {\r\n return this._plateMaterial;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if this button shares its material with other V3 Buttons\r\n */\r\n public get shareMaterials(): boolean {\r\n return this._shareMaterials;\r\n }\r\n\r\n /**\r\n * Sets whether the backplate is visible or hidden. Hiding the backplate is not recommended without some sort of replacement\r\n */\r\n public set isBackplateVisible(isVisible: boolean) {\r\n if (this.mesh && this._backMaterial) {\r\n if (isVisible && !this._isBackplateVisible) {\r\n this._backPlate.visibility = 1;\r\n } else if (!isVisible && this._isBackplateVisible) {\r\n this._backPlate.visibility = 0;\r\n }\r\n }\r\n\r\n this._isBackplateVisible = isVisible;\r\n }\r\n\r\n /**\r\n * Creates a new button\r\n * @param name defines the control name\r\n * @param shareMaterials\r\n */\r\n constructor(name?: string, shareMaterials = true) {\r\n super(name);\r\n\r\n this._shareMaterials = shareMaterials;\r\n\r\n this.pointerEnterAnimation = () => {\r\n if (this._frontPlate && this._textPlate && !this.isToggleButton) {\r\n this._performEnterExitAnimation(1);\r\n }\r\n\r\n if (this.isToggleButton && this._innerQuadMaterial) {\r\n if (this.isToggled) {\r\n this._innerQuadMaterial.color = this.innerQuadToggledHoverColor;\r\n } else {\r\n this._innerQuadMaterial.color = this.innerQuadHoverColor;\r\n }\r\n }\r\n };\r\n\r\n this.pointerOutAnimation = () => {\r\n if (this._frontPlate && this._textPlate && !this.isToggleButton) {\r\n this._performEnterExitAnimation(-0.8);\r\n }\r\n\r\n if (this.isToggleButton && this._innerQuadMaterial) {\r\n this._onToggle(this.isToggled);\r\n }\r\n };\r\n\r\n this.pointerDownAnimation = () => {\r\n // Do nothing\r\n };\r\n\r\n this.pointerUpAnimation = () => {\r\n // Do nothing\r\n };\r\n\r\n this._pointerClickObserver = this.onPointerClickObservable.add(() => {\r\n if (this._frontPlate && this._backGlow && !this.isActiveNearInteraction) {\r\n this._performClickAnimation();\r\n }\r\n\r\n if (this.isToggleButton && this._innerQuadMaterial) {\r\n this._onToggle(this.isToggled);\r\n }\r\n });\r\n\r\n this._pointerEnterObserver = this.onPointerEnterObservable.add(() => {\r\n this.pointerEnterAnimation();\r\n });\r\n\r\n this._pointerOutObserver = this.onPointerOutObservable.add(() => {\r\n this.pointerOutAnimation();\r\n });\r\n\r\n this._toggleObserver = this.onToggleObservable.add((isToggled) => {\r\n if (isToggled) {\r\n this._innerQuadMaterial.color = this.innerQuadToggledColor;\r\n } else {\r\n this._innerQuadMaterial.color = this.innerQuadColor;\r\n }\r\n });\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"TouchHolographicButton\";\r\n }\r\n\r\n private _rebuildContent(): void {\r\n let content: Control;\r\n\r\n if (this._getAspectRatio() <= 1) {\r\n // align text and image vertically\r\n content = this._alignContentVertically();\r\n } else {\r\n // align text and image horizontally\r\n content = this._alignContentHorizontally();\r\n }\r\n\r\n this.content = content;\r\n }\r\n\r\n private _getAspectRatio() {\r\n return this.width / this.height;\r\n }\r\n\r\n private _alignContentVertically() {\r\n const panel = new StackPanel();\r\n panel.isVertical = true;\r\n\r\n if (IsDocumentAvailable() && !!document.createElement) {\r\n if (this._imageUrl) {\r\n const image = new Image();\r\n image.source = this._imageUrl;\r\n image.heightInPixels = 180;\r\n image.widthInPixels = 100;\r\n image.paddingTopInPixels = 40;\r\n image.paddingBottomInPixels = 40;\r\n panel.addControl(image);\r\n }\r\n }\r\n\r\n if (this._text) {\r\n const text = new TextBlock();\r\n text.text = this._text;\r\n text.color = \"white\";\r\n text.heightInPixels = 30;\r\n text.fontSize = 24;\r\n panel.addControl(text);\r\n }\r\n\r\n return panel;\r\n }\r\n\r\n private _alignContentHorizontally() {\r\n let totalPanelWidthInPixels = 240;\r\n const padding = 15;\r\n\r\n const contentContainer = new Rectangle();\r\n contentContainer.widthInPixels = totalPanelWidthInPixels;\r\n contentContainer.heightInPixels = totalPanelWidthInPixels;\r\n contentContainer.color = \"transparent\";\r\n contentContainer.setPaddingInPixels(padding, padding, padding, padding);\r\n totalPanelWidthInPixels -= padding * 2;\r\n\r\n const panel = new StackPanel();\r\n panel.isVertical = false;\r\n panel.scaleY = this._getAspectRatio();\r\n\r\n if (IsDocumentAvailable() && !!document.createElement) {\r\n if (this._imageUrl) {\r\n const imageContainer = new Rectangle(`${this.name}_image`);\r\n imageContainer.widthInPixels = this.imageSizeInPixels;\r\n imageContainer.heightInPixels = this.imageSizeInPixels;\r\n imageContainer.color = \"transparent\";\r\n totalPanelWidthInPixels -= this.imageSizeInPixels;\r\n\r\n const image = new Image();\r\n image.source = this._imageUrl;\r\n\r\n imageContainer.addControl(image);\r\n panel.addControl(imageContainer);\r\n }\r\n }\r\n\r\n if (this._text) {\r\n const text = new TextBlock(`${this.name}_text`);\r\n text.text = this._text;\r\n text.color = \"white\";\r\n text.fontSize = this.textSizeInPixels;\r\n text.widthInPixels = totalPanelWidthInPixels;\r\n\r\n if (this._imageUrl) {\r\n text.textHorizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n text.paddingLeftInPixels = padding;\r\n }\r\n\r\n if (this._subtext) {\r\n const textContainer = new Grid();\r\n textContainer.addColumnDefinition(1);\r\n textContainer.addRowDefinition(0.5);\r\n textContainer.addRowDefinition(0.5);\r\n textContainer.widthInPixels = totalPanelWidthInPixels;\r\n textContainer.heightInPixels = 45;\r\n\r\n const subtext = new TextBlock(`${this.name}_subtext`);\r\n subtext.text = this._subtext;\r\n subtext.color = \"#EEEEEEAB\";\r\n subtext.fontSize = this.textSizeInPixels * 0.75;\r\n subtext.fontWeight = \"600\";\r\n\r\n if (this._imageUrl) {\r\n subtext.textHorizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n subtext.paddingLeftInPixels = padding;\r\n }\r\n\r\n textContainer.addControl(text, 0);\r\n textContainer.addControl(subtext, 1);\r\n panel.addControl(textContainer);\r\n } else {\r\n panel.addControl(text);\r\n }\r\n }\r\n\r\n contentContainer.addControl(panel);\r\n return contentContainer;\r\n }\r\n\r\n // Mesh association\r\n protected override _createNode(scene: Scene): TransformNode {\r\n this.name = this.name ?? \"TouchHolographicButton\";\r\n\r\n const backPlateMesh = this._createBackPlate(scene);\r\n const collisionMesh = this._createFrontPlate(scene);\r\n const innerQuadMesh = this._createInnerQuad(scene);\r\n const backGlowMesh = this._createBackGlow(scene);\r\n\r\n this._frontPlateCollisionMesh = collisionMesh;\r\n this._textPlate = <Mesh>super._createNode(scene);\r\n this._textPlate.name = `${this.name}_textPlate`;\r\n this._textPlate.isPickable = false;\r\n this._textPlate.scaling.x = this.width;\r\n this._textPlate.parent = collisionMesh;\r\n\r\n this._backPlate = backPlateMesh;\r\n this._backPlate.position = Vector3.Forward(scene.useRightHandedSystem).scale(this.backPlateDepth / 2);\r\n this._backPlate.isPickable = false;\r\n\r\n this._backPlate.addChild(collisionMesh);\r\n this._backPlate.addChild(innerQuadMesh);\r\n\r\n if (backGlowMesh) {\r\n this._backPlate.addChild(backGlowMesh);\r\n }\r\n\r\n const tn = new TransformNode(`${this.name}_root`, scene);\r\n this._backPlate.setParent(tn);\r\n\r\n this.collisionMesh = collisionMesh;\r\n this.collidableFrontDirection = this._backPlate.forward.negate(); // Mesh is facing the wrong way\r\n\r\n return tn;\r\n }\r\n\r\n private _createBackPlate(scene: Scene) {\r\n const backPlateMesh = CreateBox(`${this.name}_backPlate`, {}, scene);\r\n backPlateMesh.isPickable = false;\r\n backPlateMesh.visibility = 0;\r\n backPlateMesh.scaling.z = 0.2;\r\n const baseUrl = Tools.GetAssetUrl(TouchHolographicButton.MRTK_ASSET_BASE_URL);\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises, github/no-then\r\n SceneLoader.ImportMeshAsync(undefined, baseUrl, TouchHolographicButton.BACKPLATE_MODEL_FILENAME, scene).then((result) => {\r\n const backPlateModel = result.meshes[1];\r\n backPlateModel.visibility = 0;\r\n\r\n if (this._isBackplateVisible) {\r\n backPlateModel.visibility = 1;\r\n backPlateModel.name = `${this.name}_backPlate`;\r\n backPlateModel.isPickable = false;\r\n backPlateModel.scaling.x = this.width;\r\n backPlateModel.scaling.y = this.height;\r\n backPlateModel.parent = backPlateMesh;\r\n }\r\n\r\n if (this._backMaterial) {\r\n backPlateModel.material = this._backMaterial;\r\n }\r\n\r\n this._backPlate = backPlateModel;\r\n });\r\n\r\n return backPlateMesh;\r\n }\r\n\r\n private _createFrontPlate(scene: Scene) {\r\n const collisionMesh = CreateBox(\r\n `${this.name}_frontPlate`,\r\n {\r\n width: this.width,\r\n height: this.height,\r\n depth: this.frontPlateDepth,\r\n },\r\n scene\r\n );\r\n collisionMesh.isPickable = true;\r\n collisionMesh.isNearPickable = true;\r\n collisionMesh.visibility = 0;\r\n collisionMesh.position = Vector3.Forward(scene.useRightHandedSystem).scale((this.backPlateDepth - this.frontPlateDepth) / 2);\r\n const baseUrl = Tools.GetAssetUrl(TouchHolographicButton.MRTK_ASSET_BASE_URL);\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises, github/no-then\r\n SceneLoader.ImportMeshAsync(undefined, baseUrl, TouchHolographicButton.FRONTPLATE_MODEL_FILENAME, scene).then((result) => {\r\n const collisionPlate = CreateBox(\r\n `${this.name}_collisionPlate`,\r\n {\r\n width: this.width,\r\n height: this.height,\r\n },\r\n scene\r\n );\r\n collisionPlate.isPickable = false;\r\n collisionPlate.scaling.z = this.frontPlateDepth;\r\n collisionPlate.visibility = 0;\r\n collisionPlate.parent = collisionMesh;\r\n this._collisionPlate = collisionPlate;\r\n\r\n const frontPlateModel = result.meshes[1];\r\n frontPlateModel.name = `${this.name}_frontPlate`;\r\n frontPlateModel.isPickable = false;\r\n frontPlateModel.scaling.x = this.width - this.backGlowOffset;\r\n frontPlateModel.scaling.y = this.height - this.backGlowOffset;\r\n frontPlateModel.position = Vector3.Forward(scene.useRightHandedSystem).scale(-0.5);\r\n frontPlateModel.parent = collisionPlate;\r\n\r\n if (this.isToggleButton) {\r\n frontPlateModel.visibility = 0;\r\n }\r\n\r\n if (this._frontMaterial) {\r\n frontPlateModel.material = this._frontMaterial;\r\n }\r\n\r\n this._textPlate.scaling.x = 1;\r\n this._textPlate.parent = frontPlateModel;\r\n this._frontPlate = frontPlateModel;\r\n });\r\n\r\n return collisionMesh;\r\n }\r\n\r\n private _createInnerQuad(scene: Scene) {\r\n const innerQuadMesh = CreateBox(`${this.name}_innerQuad`, {}, scene);\r\n innerQuadMesh.isPickable = false;\r\n innerQuadMesh.visibility = 0;\r\n innerQuadMesh.scaling.z = this.flatPlaneDepth;\r\n innerQuadMesh.position.z += this.backPlateDepth / 2 - this.flatPlaneDepth;\r\n\r\n const baseUrl = Tools.GetAssetUrl(TouchHolographicButton.MRTK_ASSET_BASE_URL);\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises, github/no-then\r\n SceneLoader.ImportMeshAsync(undefined, baseUrl, TouchHolographicButton.INNERQUAD_MODEL_FILENAME, scene).then((result) => {\r\n const innerQuadModel = result.meshes[1];\r\n innerQuadModel.name = `${this.name}_innerQuad`;\r\n innerQuadModel.isPickable = false;\r\n innerQuadModel.scaling.x = this.width - this.backGlowOffset;\r\n innerQuadModel.scaling.y = this.height - this.backGlowOffset;\r\n innerQuadModel.parent = innerQuadMesh;\r\n\r\n if (this._innerQuadMaterial) {\r\n innerQuadModel.material = this._innerQuadMaterial;\r\n }\r\n\r\n this._innerQuad = innerQuadModel;\r\n });\r\n\r\n return innerQuadMesh;\r\n }\r\n\r\n private _createBackGlow(scene: Scene) {\r\n if (this.isToggleButton) {\r\n return;\r\n }\r\n\r\n const backGlowMesh = CreateBox(`${this.name}_backGlow`, {}, scene);\r\n backGlowMesh.isPickable = false;\r\n backGlowMesh.visibility = 0;\r\n backGlowMesh.scaling.z = this.flatPlaneDepth;\r\n backGlowMesh.position.z += this.backPlateDepth / 2 - this.flatPlaneDepth * 2;\r\n\r\n const baseUrl = Tools.GetAssetUrl(TouchHolographicButton.MRTK_ASSET_BASE_URL);\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises, github/no-then\r\n SceneLoader.ImportMeshAsync(undefined, baseUrl, TouchHolographicButton.BACKGLOW_MODEL_FILENAME, scene).then((result) => {\r\n const backGlowModel = result.meshes[1];\r\n backGlowModel.name = `${this.name}_backGlow`;\r\n backGlowModel.isPickable = false;\r\n backGlowModel.scaling.x = this.width - this.backGlowOffset;\r\n backGlowModel.scaling.y = this.height - this.backGlowOffset;\r\n backGlowModel.parent = backGlowMesh;\r\n\r\n if (this._backGlowMaterial) {\r\n backGlowModel.material = this._backGlowMaterial;\r\n }\r\n\r\n this._backGlow = backGlowModel;\r\n });\r\n\r\n return backGlowMesh;\r\n }\r\n\r\n protected override _applyFacade(facadeTexture: AdvancedDynamicTexture) {\r\n this._plateMaterial.emissiveTexture = facadeTexture;\r\n this._plateMaterial.opacityTexture = facadeTexture;\r\n this._plateMaterial.diffuseColor = this.plateMaterialColor;\r\n }\r\n\r\n private _performClickAnimation() {\r\n const frameRate = 60;\r\n const animationGroup = new AnimationGroup(\"Click Animation Group\");\r\n\r\n const animations = [\r\n {\r\n name: \"backGlowMotion\",\r\n mesh: this._backGlow,\r\n property: \"material.motion\",\r\n keys: [\r\n {\r\n frame: 0,\r\n values: [0, 0, 0],\r\n },\r\n {\r\n frame: 20,\r\n values: [1, 0.0144, 0.0144],\r\n },\r\n {\r\n frame: 40,\r\n values: [0.0027713229489760476, 0, 0],\r\n },\r\n {\r\n frame: 45,\r\n values: [0.0027713229489760476],\r\n },\r\n ],\r\n },\r\n {\r\n name: \"_collisionPlateZSlide\",\r\n mesh: this._collisionPlate,\r\n property: \"position.z\",\r\n keys: [\r\n {\r\n frame: 0,\r\n values: [0.0, 0.0, 0.0],\r\n },\r\n {\r\n frame: 20,\r\n values: [Vector3.Forward(this._collisionPlate._scene.useRightHandedSystem).scale(this.frontPlateDepth / 2).z, 0.0, 0.0],\r\n },\r\n {\r\n frame: 40,\r\n values: [0.0, 0.005403332496794331],\r\n },\r\n {\r\n frame: 45,\r\n values: [0.0],\r\n },\r\n ],\r\n },\r\n {\r\n name: \"_collisionPlateZScale\",\r\n mesh: this._collisionPlate,\r\n property: \"scaling.z\",\r\n keys: [\r\n {\r\n frame: 0,\r\n values: [this.frontPlateDepth, 0.0, 0.0],\r\n },\r\n {\r\n frame: 20,\r\n values: [this.backPlateDepth, 0.0, 0.0],\r\n },\r\n {\r\n frame: 40,\r\n values: [this.frontPlateDepth, 0.0054],\r\n },\r\n {\r\n frame: 45,\r\n values: [this.frontPlateDepth],\r\n },\r\n ],\r\n },\r\n ];\r\n\r\n for (const animation of animations) {\r\n const anim = new Animation(animation.name, animation.property, frameRate, Animation.ANIMATIONTYPE_FLOAT, Animation.ANIMATIONLOOPMODE_CYCLE);\r\n const animkeyFrames = [];\r\n\r\n for (const key of animation.keys) {\r\n animkeyFrames.push({\r\n frame: key.frame,\r\n value: key.values[0],\r\n inTangent: key.values[1],\r\n outTangent: key.values[2],\r\n interpolation: key.values[3],\r\n });\r\n }\r\n\r\n anim.setKeys(animkeyFrames);\r\n\r\n if (!animation.mesh) {\r\n continue;\r\n }\r\n\r\n animationGroup.addTargetedAnimation(anim, animation.mesh);\r\n }\r\n\r\n animationGroup.normalize(0, 45);\r\n animationGroup.speedRatio = 1;\r\n\r\n animationGroup.play();\r\n }\r\n\r\n private _performEnterExitAnimation(speedRatio: number) {\r\n const frameRate = 60;\r\n const animationGroup = new AnimationGroup(\"Enter Exit Animation Group\");\r\n\r\n const animations = [\r\n {\r\n name: \"frontPlateFadeOut\",\r\n mesh: this._frontPlate,\r\n property: \"material.fadeOut\",\r\n keys: [\r\n {\r\n frame: 0,\r\n values: [0, 0, 0.025045314830017686, 0],\r\n },\r\n {\r\n frame: 40,\r\n values: [1.00205599570012, 0.025045314830017686, 0, 0],\r\n },\r\n ],\r\n },\r\n {\r\n name: \"textPlateZSlide\",\r\n mesh: this._textPlate,\r\n property: \"position.z\",\r\n keys: [\r\n {\r\n frame: 0,\r\n values: [0, 0.0, 0.0],\r\n },\r\n {\r\n frame: 40,\r\n values: [Vector3.Forward(this._textPlate._scene.useRightHandedSystem).scale(-0.15).z, 0.0, 0.0],\r\n },\r\n ],\r\n },\r\n ];\r\n\r\n for (const animation of animations) {\r\n const anim = new Animation(animation.name, animation.property, frameRate, Animation.ANIMATIONTYPE_FLOAT, Animation.ANIMATIONLOOPMODE_CYCLE);\r\n const animkeyFrames = [];\r\n\r\n for (const key of animation.keys) {\r\n animkeyFrames.push({\r\n frame: key.frame,\r\n value: key.values[0],\r\n inTangent: key.values[1],\r\n outTangent: key.values[2],\r\n interpolation: key.values[3],\r\n });\r\n }\r\n\r\n anim.setKeys(animkeyFrames);\r\n\r\n if (!animation.mesh) {\r\n continue;\r\n }\r\n\r\n animationGroup.addTargetedAnimation(anim, animation.mesh);\r\n }\r\n\r\n animationGroup.normalize(0, 45);\r\n animationGroup.speedRatio = speedRatio;\r\n\r\n animationGroup.play();\r\n }\r\n\r\n private _createBackMaterial(mesh: Mesh) {\r\n this._backMaterial = this._backMaterial ?? new MRDLBackplateMaterial(this.name + \"backPlateMaterial\", mesh.getScene());\r\n this._backMaterial.absoluteSizes = true;\r\n this._backMaterial.radius = this.radius;\r\n this._backMaterial.lineWidth = 0.02;\r\n }\r\n\r\n private _createFrontMaterial(mesh: Mesh) {\r\n this._frontMaterial = this._frontMaterial ?? new MRDLFrontplateMaterial(this.name + \"Front Material\", mesh.getScene());\r\n this.frontMaterial.radius = this.innerQuadRadius;\r\n this.frontMaterial.fadeOut = 0.0;\r\n }\r\n\r\n private _createBackGlowMaterial(mesh: Mesh) {\r\n const glowRadius = this.radius + 0.04;\r\n this._backGlowMaterial = this._backGlowMaterial ?? new MRDLBackglowMaterial(this.name + \"Back Glow Material\", mesh.getScene());\r\n this._backGlowMaterial.bevelRadius = glowRadius;\r\n this._backGlowMaterial.lineWidth = glowRadius;\r\n this._backGlowMaterial.motion = 0.0;\r\n }\r\n\r\n private _createInnerQuadMaterial(mesh: Mesh) {\r\n this._innerQuadMaterial = this._innerQuadMaterial ?? new MRDLInnerquadMaterial(\"inner_quad\", mesh.getScene());\r\n this._innerQuadMaterial.radius = this.innerQuadRadius;\r\n\r\n if (this.isToggleButton) {\r\n this._innerQuadMaterial.color = this.innerQuadColor;\r\n }\r\n }\r\n\r\n private _createPlateMaterial(mesh: Mesh) {\r\n this._plateMaterial = this._plateMaterial ?? new StandardMaterial(this.name + \"Plate Material\", mesh.getScene());\r\n this._plateMaterial.specularColor = Color3.Black();\r\n }\r\n\r\n protected override _onToggle(newState: boolean) {\r\n super._onToggle(newState);\r\n }\r\n\r\n protected override _affectMaterial(mesh: Mesh) {\r\n if (this._shareMaterials) {\r\n // Back\r\n if (!this._host._touchSharedMaterials[\"mrdlBackplateMaterial\"]) {\r\n this._createBackMaterial(mesh);\r\n this._host._touchSharedMaterials[\"mrdlBackplateMaterial\"] = this._backMaterial;\r\n } else {\r\n this._backMaterial = this._host._touchSharedMaterials[\"mrdlBackplateMaterial\"] as MRDLBackplateMaterial;\r\n }\r\n\r\n // Front\r\n if (!this._host._touchSharedMaterials[\"mrdlFrontplateMaterial\"]) {\r\n this._createFrontMaterial(mesh);\r\n this._host._touchSharedMaterials[\"mrdlFrontplateMaterial\"] = this._frontMaterial;\r\n } else {\r\n this._frontMaterial = this._host._touchSharedMaterials[\"mrdlFrontplateMaterial\"] as MRDLFrontplateMaterial;\r\n }\r\n\r\n // Back glow\r\n if (!this._host._touchSharedMaterials[\"mrdlBackglowMaterial\"]) {\r\n this._createBackGlowMaterial(mesh);\r\n this._host._touchSharedMaterials[\"mrdlBackglowMaterial\"] = this._backGlowMaterial;\r\n } else {\r\n this._backGlowMaterial = this._host._touchSharedMaterials[\"mrdlBackglowMaterial\"] as MRDLBackglowMaterial;\r\n }\r\n\r\n // Inner quad\r\n if (!this._host._touchSharedMaterials[\"mrdlInnerQuadMaterial\"]) {\r\n this._createInnerQuadMaterial(mesh);\r\n this._host._touchSharedMaterials[\"mrdlInnerQuadMaterial\"] = this._innerQuadMaterial;\r\n } else {\r\n this._innerQuadMaterial = this._host._touchSharedMaterials[\"mrdlInnerQuadMaterial\"] as MRDLInnerquadMaterial;\r\n }\r\n } else {\r\n this._createBackMaterial(mesh);\r\n this._createFrontMaterial(mesh);\r\n this._createBackGlowMaterial(mesh);\r\n this._createInnerQuadMaterial(mesh);\r\n }\r\n\r\n this._createPlateMaterial(mesh);\r\n this._backPlate.material = this._backMaterial;\r\n this._textPlate.material = this._plateMaterial;\r\n\r\n if (!this._isBackplateVisible) {\r\n this._backPlate.visibility = 0;\r\n }\r\n\r\n if (this._frontPlate) {\r\n this._frontPlate.material = this._frontMaterial;\r\n }\r\n\r\n if (this._backGlow) {\r\n this._backGlow.material = this._backGlowMaterial;\r\n }\r\n\r\n if (this._innerQuad) {\r\n this._innerQuad.material = this._innerQuadMaterial;\r\n }\r\n\r\n this._rebuildContent();\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public override dispose() {\r\n super.dispose(); // will dispose main mesh ie. back plate\r\n\r\n this._disposeTooltip();\r\n this.onPointerClickObservable.remove(this._pointerClickObserver);\r\n this.onPointerEnterObservable.remove(this._pointerEnterObserver);\r\n this.onPointerOutObservable.remove(this._pointerOutObserver);\r\n this.onToggleObservable.remove(this._toggleObserver);\r\n\r\n if (!this.shareMaterials) {\r\n this._backMaterial.dispose();\r\n this._frontMaterial.dispose();\r\n this._plateMaterial.dispose();\r\n this._backGlowMaterial.dispose();\r\n this._innerQuadMaterial.dispose();\r\n\r\n if (this._pickedPointObserver) {\r\n this._host.onPickedPointChangedObservable.remove(this._pickedPointObserver);\r\n this._pickedPointObserver = null;\r\n }\r\n }\r\n }\r\n}\r\n"]}
@@ -0,0 +1,15 @@
1
+ import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
2
+ import type { Scene } from "@babylonjs/core/scene.js";
3
+ import { ContentDisplay3D } from "./contentDisplay3D.js";
4
+ /**
5
+ * Class used as a root to all buttons
6
+ */
7
+ export declare class AbstractButton3D extends ContentDisplay3D {
8
+ /**
9
+ * Creates a new button
10
+ * @param name defines the control name
11
+ */
12
+ constructor(name?: string);
13
+ protected _getTypeName(): string;
14
+ protected _createNode(scene: Scene): TransformNode;
15
+ }
@@ -0,0 +1,22 @@
1
+ import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
2
+ import { ContentDisplay3D } from "./contentDisplay3D.js";
3
+ /**
4
+ * Class used as a root to all buttons
5
+ */
6
+ export class AbstractButton3D extends ContentDisplay3D {
7
+ /**
8
+ * Creates a new button
9
+ * @param name defines the control name
10
+ */
11
+ constructor(name) {
12
+ super(name);
13
+ }
14
+ _getTypeName() {
15
+ return "AbstractButton3D";
16
+ }
17
+ // Mesh association
18
+ _createNode(scene) {
19
+ return new TransformNode("button" + this.name, scene);
20
+ }
21
+ }
22
+ //# sourceMappingURL=abstractButton3D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstractButton3D.js","sourceRoot":"","sources":["../../../../../dev/gui/src/3D/controls/abstractButton3D.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gDAAkC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,gBAAgB;IAClD;;;OAGG;IACH,YAAY,IAAa;QACrB,KAAK,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAEkB,YAAY;QAC3B,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED,mBAAmB;IACA,WAAW,CAAC,KAAY;QACvC,OAAO,IAAI,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;CACJ","sourcesContent":["import { TransformNode } from \"core/Meshes/transformNode\";\r\nimport type { Scene } from \"core/scene\";\r\nimport { ContentDisplay3D } from \"./contentDisplay3D\";\r\n\r\n/**\r\n * Class used as a root to all buttons\r\n */\r\nexport class AbstractButton3D extends ContentDisplay3D {\r\n /**\r\n * Creates a new button\r\n * @param name defines the control name\r\n */\r\n constructor(name?: string) {\r\n super(name);\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"AbstractButton3D\";\r\n }\r\n\r\n // Mesh association\r\n protected override _createNode(scene: Scene): TransformNode {\r\n return new TransformNode(\"button\" + this.name, scene);\r\n }\r\n}\r\n"]}
@@ -0,0 +1,51 @@
1
+ import type { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
2
+ import type { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
3
+ import type { Material } from "@babylonjs/core/Materials/material.js";
4
+ import type { Scene } from "@babylonjs/core/scene.js";
5
+ import { AbstractButton3D } from "./abstractButton3D.js";
6
+ import type { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture.js";
7
+ /**
8
+ * Options used to create a button in 3D
9
+ */
10
+ export interface IButton3DCreationOptions {
11
+ /**
12
+ * Width of the button. Default: 1
13
+ */
14
+ width?: number;
15
+ /**
16
+ * Height of the button. Default: 1
17
+ */
18
+ height?: number;
19
+ /**
20
+ * Depth of the button. Default: 0.08
21
+ */
22
+ depth?: number;
23
+ }
24
+ /**
25
+ * Class used to create a button in 3D
26
+ */
27
+ export declare class Button3D extends AbstractButton3D {
28
+ /** @internal */
29
+ protected _currentMaterial: Material;
30
+ protected _options: IButton3DCreationOptions;
31
+ protected _height: number;
32
+ protected _depth: number;
33
+ /**
34
+ * Creates a new button
35
+ * @param name defines the control name
36
+ * @param options defines the options used to create the button
37
+ */
38
+ constructor(name?: string, options?: IButton3DCreationOptions);
39
+ /**
40
+ * Apply the facade texture (created from the content property).
41
+ * @param facadeTexture defines the AdvancedDynamicTexture to use
42
+ */
43
+ protected _applyFacade(facadeTexture: AdvancedDynamicTexture): void;
44
+ protected _getTypeName(): string;
45
+ protected _createNode(scene: Scene): TransformNode;
46
+ protected _affectMaterial(mesh: AbstractMesh): void;
47
+ /**
48
+ * Releases all associated resources
49
+ */
50
+ dispose(): void;
51
+ }
@@ -0,0 +1,98 @@
1
+ import { Vector4 } from "@babylonjs/core/Maths/math.vector.js";
2
+ import { CreateBox } from "@babylonjs/core/Meshes/Builders/boxBuilder.js";
3
+ import { StandardMaterial } from "@babylonjs/core/Materials/standardMaterial.js";
4
+ import { AbstractButton3D } from "./abstractButton3D.js";
5
+ import { Color3 } from "@babylonjs/core/Maths/math.color.js";
6
+ /**
7
+ * Class used to create a button in 3D
8
+ */
9
+ export class Button3D extends AbstractButton3D {
10
+ /**
11
+ * Creates a new button
12
+ * @param name defines the control name
13
+ * @param options defines the options used to create the button
14
+ */
15
+ constructor(name, options) {
16
+ super(name);
17
+ this._options = {
18
+ width: 1,
19
+ height: 1,
20
+ depth: 0.08,
21
+ ...options,
22
+ };
23
+ // Default animations
24
+ this.pointerEnterAnimation = () => {
25
+ if (!this.mesh) {
26
+ return;
27
+ }
28
+ this._currentMaterial.emissiveColor = Color3.Red();
29
+ };
30
+ this.pointerOutAnimation = () => {
31
+ this._currentMaterial.emissiveColor = Color3.Black();
32
+ };
33
+ this.pointerDownAnimation = () => {
34
+ if (!this.mesh) {
35
+ return;
36
+ }
37
+ this.mesh.scaling.scaleInPlace(0.95);
38
+ };
39
+ this.pointerUpAnimation = () => {
40
+ if (!this.mesh) {
41
+ return;
42
+ }
43
+ this.mesh.scaling.scaleInPlace(1.0 / 0.95);
44
+ };
45
+ }
46
+ /**
47
+ * Apply the facade texture (created from the content property).
48
+ * @param facadeTexture defines the AdvancedDynamicTexture to use
49
+ */
50
+ _applyFacade(facadeTexture) {
51
+ this._currentMaterial.emissiveTexture = facadeTexture;
52
+ }
53
+ _getTypeName() {
54
+ return "Button3D";
55
+ }
56
+ // Mesh association
57
+ _createNode(scene) {
58
+ const faceUV = new Array(6);
59
+ for (let i = 0; i < 6; i++) {
60
+ faceUV[i] = new Vector4(0, 0, 0, 0);
61
+ }
62
+ if (scene.useRightHandedSystem) {
63
+ // Flip the u on the texture
64
+ faceUV[0].copyFromFloats(1, 0, 0, 1);
65
+ }
66
+ else {
67
+ faceUV[1].copyFromFloats(0, 0, 1, 1);
68
+ }
69
+ const mesh = CreateBox(this.name + "_rootMesh", {
70
+ width: this._options.width,
71
+ height: this._options.height,
72
+ depth: this._options.depth,
73
+ faceUV: faceUV,
74
+ wrap: true,
75
+ }, scene);
76
+ this._contentScaleRatioY = (this._contentScaleRatio * this._options.width) / this._options.height;
77
+ this._setFacadeTextureScaling();
78
+ return mesh;
79
+ }
80
+ _affectMaterial(mesh) {
81
+ const material = new StandardMaterial(this.name + "Material", mesh.getScene());
82
+ material.specularColor = Color3.Black();
83
+ mesh.material = material;
84
+ this._currentMaterial = material;
85
+ this._resetContent();
86
+ }
87
+ /**
88
+ * Releases all associated resources
89
+ */
90
+ dispose() {
91
+ super.dispose();
92
+ this._disposeFacadeTexture();
93
+ if (this._currentMaterial) {
94
+ this._currentMaterial.dispose();
95
+ }
96
+ }
97
+ }
98
+ //# sourceMappingURL=button3D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button3D.js","sourceRoot":"","sources":["../../../../../dev/gui/src/3D/controls/button3D.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector4 } from \"core/Maths/math.vector\";\r\nimport type { TransformNode } from \"core/Meshes/transformNode\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { CreateBox } from \"core/Meshes/Builders/boxBuilder\";\r\nimport type { Material } from \"core/Materials/material\";\r\nimport { StandardMaterial } from \"core/Materials/standardMaterial\";\r\nimport type { Scene } from \"core/scene\";\r\n\r\nimport { AbstractButton3D } from \"./abstractButton3D\";\r\nimport type { AdvancedDynamicTexture } from \"../../2D/advancedDynamicTexture\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\n\r\n/**\r\n * Options used to create a button in 3D\r\n */\r\nexport interface IButton3DCreationOptions {\r\n /**\r\n * Width of the button. Default: 1\r\n */\r\n width?: number;\r\n\r\n /**\r\n * Height of the button. Default: 1\r\n */\r\n height?: number;\r\n\r\n /**\r\n * Depth of the button. Default: 0.08\r\n */\r\n depth?: number;\r\n}\r\n\r\n/**\r\n * Class used to create a button in 3D\r\n */\r\nexport class Button3D extends AbstractButton3D {\r\n /** @internal */\r\n protected _currentMaterial: Material;\r\n\r\n protected _options: IButton3DCreationOptions;\r\n protected _height: number;\r\n protected _depth: number;\r\n\r\n /**\r\n * Creates a new button\r\n * @param name defines the control name\r\n * @param options defines the options used to create the button\r\n */\r\n constructor(name?: string, options?: IButton3DCreationOptions) {\r\n super(name);\r\n\r\n this._options = {\r\n width: 1,\r\n height: 1,\r\n depth: 0.08,\r\n ...options,\r\n };\r\n\r\n // Default animations\r\n\r\n this.pointerEnterAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n (<StandardMaterial>this._currentMaterial).emissiveColor = Color3.Red();\r\n };\r\n\r\n this.pointerOutAnimation = () => {\r\n (<StandardMaterial>this._currentMaterial).emissiveColor = Color3.Black();\r\n };\r\n\r\n this.pointerDownAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n\r\n this.mesh.scaling.scaleInPlace(0.95);\r\n };\r\n\r\n this.pointerUpAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n\r\n this.mesh.scaling.scaleInPlace(1.0 / 0.95);\r\n };\r\n }\r\n\r\n /**\r\n * Apply the facade texture (created from the content property).\r\n * @param facadeTexture defines the AdvancedDynamicTexture to use\r\n */\r\n protected override _applyFacade(facadeTexture: AdvancedDynamicTexture) {\r\n (<any>this._currentMaterial).emissiveTexture = facadeTexture;\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"Button3D\";\r\n }\r\n\r\n // Mesh association\r\n protected override _createNode(scene: Scene): TransformNode {\r\n const faceUV = new Array(6);\r\n\r\n for (let i = 0; i < 6; i++) {\r\n faceUV[i] = new Vector4(0, 0, 0, 0);\r\n }\r\n if (scene.useRightHandedSystem) {\r\n // Flip the u on the texture\r\n faceUV[0].copyFromFloats(1, 0, 0, 1);\r\n } else {\r\n faceUV[1].copyFromFloats(0, 0, 1, 1);\r\n }\r\n\r\n const mesh = CreateBox(\r\n this.name + \"_rootMesh\",\r\n {\r\n width: this._options.width,\r\n height: this._options.height,\r\n depth: this._options.depth,\r\n faceUV: faceUV,\r\n wrap: true,\r\n },\r\n scene\r\n );\r\n\r\n this._contentScaleRatioY = (this._contentScaleRatio * this._options.width!) / this._options.height!;\r\n this._setFacadeTextureScaling();\r\n\r\n return mesh;\r\n }\r\n\r\n protected override _affectMaterial(mesh: AbstractMesh) {\r\n const material = new StandardMaterial(this.name + \"Material\", mesh.getScene());\r\n material.specularColor = Color3.Black();\r\n\r\n mesh.material = material;\r\n this._currentMaterial = material;\r\n\r\n this._resetContent();\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public override dispose() {\r\n super.dispose();\r\n\r\n this._disposeFacadeTexture();\r\n\r\n if (this._currentMaterial) {\r\n this._currentMaterial.dispose();\r\n }\r\n }\r\n}\r\n"]}
@@ -0,0 +1,72 @@
1
+ import type { Nullable } from "@babylonjs/core/types.js";
2
+ import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
3
+ import type { Scene } from "@babylonjs/core/scene.js";
4
+ import { Control3D } from "./control3D.js";
5
+ /**
6
+ * Class used to create containers for controls
7
+ */
8
+ export declare class Container3D extends Control3D {
9
+ private _blockLayout;
10
+ /**
11
+ * Gets the list of child controls
12
+ */
13
+ protected _children: Control3D[];
14
+ /**
15
+ * Gets the list of child controls
16
+ */
17
+ get children(): Array<Control3D>;
18
+ /**
19
+ * Gets or sets a boolean indicating if the layout must be blocked (default is false).
20
+ * This is helpful to optimize layout operation when adding multiple children in a row
21
+ */
22
+ get blockLayout(): boolean;
23
+ set blockLayout(value: boolean);
24
+ /**
25
+ * Creates a new container
26
+ * @param name defines the container name
27
+ */
28
+ constructor(name?: string);
29
+ /**
30
+ * Force the container to update the layout. Please note that it will not take blockLayout property in account
31
+ * @returns the current container
32
+ */
33
+ updateLayout(): Container3D;
34
+ /**
35
+ * Gets a boolean indicating if the given control is in the children of this control
36
+ * @param control defines the control to check
37
+ * @returns true if the control is in the child list
38
+ */
39
+ containsControl(control: Control3D): boolean;
40
+ /**
41
+ * Adds a control to the children of this control
42
+ * @param control defines the control to add
43
+ * @returns the current container
44
+ */
45
+ addControl(control: Control3D): Container3D;
46
+ /**
47
+ * This function will be called everytime a new control is added
48
+ */
49
+ protected _arrangeChildren(): void;
50
+ protected _createNode(scene: Scene): Nullable<TransformNode>;
51
+ /**
52
+ * Removes a control from the children of this control
53
+ * @param control defines the control to remove
54
+ * @returns the current container
55
+ */
56
+ removeControl(control: Control3D): Container3D;
57
+ protected _getTypeName(): string;
58
+ /**
59
+ * Releases all associated resources
60
+ */
61
+ dispose(): void;
62
+ /** Control rotation will remain unchanged */
63
+ static readonly UNSET_ORIENTATION = 0;
64
+ /** Control will rotate to make it look at sphere central axis */
65
+ static readonly FACEORIGIN_ORIENTATION = 1;
66
+ /** Control will rotate to make it look back at sphere central axis */
67
+ static readonly FACEORIGINREVERSED_ORIENTATION = 2;
68
+ /** Control will rotate to look at z axis (0, 0, 1) */
69
+ static readonly FACEFORWARD_ORIENTATION = 3;
70
+ /** Control will rotate to look at negative z axis (0, 0, -1) */
71
+ static readonly FACEFORWARDREVERSED_ORIENTATION = 4;
72
+ }
@@ -0,0 +1,126 @@
1
+ import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
2
+ import { Control3D } from "./control3D.js";
3
+ /**
4
+ * Class used to create containers for controls
5
+ */
6
+ export class Container3D extends Control3D {
7
+ /**
8
+ * Gets the list of child controls
9
+ */
10
+ get children() {
11
+ return this._children;
12
+ }
13
+ /**
14
+ * Gets or sets a boolean indicating if the layout must be blocked (default is false).
15
+ * This is helpful to optimize layout operation when adding multiple children in a row
16
+ */
17
+ get blockLayout() {
18
+ return this._blockLayout;
19
+ }
20
+ set blockLayout(value) {
21
+ if (this._blockLayout === value) {
22
+ return;
23
+ }
24
+ this._blockLayout = value;
25
+ if (!this._blockLayout) {
26
+ this._arrangeChildren();
27
+ }
28
+ }
29
+ /**
30
+ * Creates a new container
31
+ * @param name defines the container name
32
+ */
33
+ constructor(name) {
34
+ super(name);
35
+ this._blockLayout = false;
36
+ /**
37
+ * Gets the list of child controls
38
+ */
39
+ this._children = new Array();
40
+ }
41
+ /**
42
+ * Force the container to update the layout. Please note that it will not take blockLayout property in account
43
+ * @returns the current container
44
+ */
45
+ updateLayout() {
46
+ this._arrangeChildren();
47
+ return this;
48
+ }
49
+ /**
50
+ * Gets a boolean indicating if the given control is in the children of this control
51
+ * @param control defines the control to check
52
+ * @returns true if the control is in the child list
53
+ */
54
+ containsControl(control) {
55
+ return this._children.indexOf(control) !== -1;
56
+ }
57
+ /**
58
+ * Adds a control to the children of this control
59
+ * @param control defines the control to add
60
+ * @returns the current container
61
+ */
62
+ addControl(control) {
63
+ const index = this._children.indexOf(control);
64
+ if (index !== -1) {
65
+ return this;
66
+ }
67
+ control.parent = this;
68
+ control._host = this._host;
69
+ this._children.push(control);
70
+ if (this._host.utilityLayer) {
71
+ control._prepareNode(this._host.utilityLayer.utilityLayerScene);
72
+ if (control.node) {
73
+ control.node.parent = this.node;
74
+ }
75
+ if (!this.blockLayout) {
76
+ this._arrangeChildren();
77
+ }
78
+ }
79
+ return this;
80
+ }
81
+ /**
82
+ * This function will be called everytime a new control is added
83
+ */
84
+ _arrangeChildren() { }
85
+ _createNode(scene) {
86
+ return new TransformNode("ContainerNode", scene);
87
+ }
88
+ /**
89
+ * Removes a control from the children of this control
90
+ * @param control defines the control to remove
91
+ * @returns the current container
92
+ */
93
+ removeControl(control) {
94
+ const index = this._children.indexOf(control);
95
+ if (index !== -1) {
96
+ this._children.splice(index, 1);
97
+ control.parent = null;
98
+ control._disposeNode();
99
+ }
100
+ return this;
101
+ }
102
+ _getTypeName() {
103
+ return "Container3D";
104
+ }
105
+ /**
106
+ * Releases all associated resources
107
+ */
108
+ dispose() {
109
+ for (const control of this._children) {
110
+ control.dispose();
111
+ }
112
+ this._children.length = 0;
113
+ super.dispose();
114
+ }
115
+ }
116
+ /** Control rotation will remain unchanged */
117
+ Container3D.UNSET_ORIENTATION = 0;
118
+ /** Control will rotate to make it look at sphere central axis */
119
+ Container3D.FACEORIGIN_ORIENTATION = 1;
120
+ /** Control will rotate to make it look back at sphere central axis */
121
+ Container3D.FACEORIGINREVERSED_ORIENTATION = 2;
122
+ /** Control will rotate to look at z axis (0, 0, 1) */
123
+ Container3D.FACEFORWARD_ORIENTATION = 3;
124
+ /** Control will rotate to look at negative z axis (0, 0, -1) */
125
+ Container3D.FACEFORWARDREVERSED_ORIENTATION = 4;
126
+ //# sourceMappingURL=container3D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container3D.js","sourceRoot":"","sources":["../../../../../dev/gui/src/3D/controls/container3D.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"core/types\";\r\nimport { TransformNode } from \"core/Meshes/transformNode\";\r\nimport type { Scene } from \"core/scene\";\r\n\r\nimport { Control3D } from \"./control3D\";\r\n\r\n/**\r\n * Class used to create containers for controls\r\n */\r\nexport class Container3D extends Control3D {\r\n private _blockLayout = false;\r\n\r\n /**\r\n * Gets the list of child controls\r\n */\r\n protected _children = new Array<Control3D>();\r\n\r\n /**\r\n * Gets the list of child controls\r\n */\r\n public get children(): Array<Control3D> {\r\n return this._children;\r\n }\r\n\r\n /**\r\n * Gets or sets a boolean indicating if the layout must be blocked (default is false).\r\n * This is helpful to optimize layout operation when adding multiple children in a row\r\n */\r\n public get blockLayout(): boolean {\r\n return this._blockLayout;\r\n }\r\n\r\n public set blockLayout(value: boolean) {\r\n if (this._blockLayout === value) {\r\n return;\r\n }\r\n\r\n this._blockLayout = value;\r\n\r\n if (!this._blockLayout) {\r\n this._arrangeChildren();\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new container\r\n * @param name defines the container name\r\n */\r\n constructor(name?: string) {\r\n super(name);\r\n }\r\n\r\n /**\r\n * Force the container to update the layout. Please note that it will not take blockLayout property in account\r\n * @returns the current container\r\n */\r\n public updateLayout(): Container3D {\r\n this._arrangeChildren();\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if the given control is in the children of this control\r\n * @param control defines the control to check\r\n * @returns true if the control is in the child list\r\n */\r\n public containsControl(control: Control3D): boolean {\r\n return this._children.indexOf(control) !== -1;\r\n }\r\n\r\n /**\r\n * Adds a control to the children of this control\r\n * @param control defines the control to add\r\n * @returns the current container\r\n */\r\n public addControl(control: Control3D): Container3D {\r\n const index = this._children.indexOf(control);\r\n\r\n if (index !== -1) {\r\n return this;\r\n }\r\n control.parent = this;\r\n control._host = this._host;\r\n\r\n this._children.push(control);\r\n\r\n if (this._host.utilityLayer) {\r\n control._prepareNode(this._host.utilityLayer.utilityLayerScene);\r\n\r\n if (control.node) {\r\n control.node.parent = this.node;\r\n }\r\n\r\n if (!this.blockLayout) {\r\n this._arrangeChildren();\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * This function will be called everytime a new control is added\r\n */\r\n protected _arrangeChildren() {}\r\n\r\n protected override _createNode(scene: Scene): Nullable<TransformNode> {\r\n return new TransformNode(\"ContainerNode\", scene);\r\n }\r\n\r\n /**\r\n * Removes a control from the children of this control\r\n * @param control defines the control to remove\r\n * @returns the current container\r\n */\r\n public removeControl(control: Control3D): Container3D {\r\n const index = this._children.indexOf(control);\r\n\r\n if (index !== -1) {\r\n this._children.splice(index, 1);\r\n\r\n control.parent = null;\r\n control._disposeNode();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"Container3D\";\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public override dispose() {\r\n for (const control of this._children) {\r\n control.dispose();\r\n }\r\n\r\n this._children.length = 0;\r\n\r\n super.dispose();\r\n }\r\n\r\n /** Control rotation will remain unchanged */\r\n public static readonly UNSET_ORIENTATION = 0;\r\n\r\n /** Control will rotate to make it look at sphere central axis */\r\n public static readonly FACEORIGIN_ORIENTATION = 1;\r\n\r\n /** Control will rotate to make it look back at sphere central axis */\r\n public static readonly FACEORIGINREVERSED_ORIENTATION = 2;\r\n\r\n /** Control will rotate to look at z axis (0, 0, 1) */\r\n public static readonly FACEFORWARD_ORIENTATION = 3;\r\n\r\n /** Control will rotate to look at negative z axis (0, 0, -1) */\r\n public static readonly FACEFORWARDREVERSED_ORIENTATION = 4;\r\n}\r\n"]}
@@ -0,0 +1,42 @@
1
+ import type { Control } from "../../2D/controls/control.js";
2
+ import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture.js";
3
+ import type { Nullable } from "@babylonjs/core/types.js";
4
+ import { Control3D } from "./control3D.js";
5
+ /**
6
+ * The base class for controls that display content
7
+ */
8
+ export declare class ContentDisplay3D extends Control3D {
9
+ private _content;
10
+ protected _facadeTexture: Nullable<AdvancedDynamicTexture>;
11
+ protected _contentResolution: number | {
12
+ width: number;
13
+ height: number;
14
+ };
15
+ protected _contentScaleRatio: number;
16
+ protected _contentScaleRatioY?: number;
17
+ /**
18
+ * Gets or sets the GUI 2D content used to display the button's facade
19
+ */
20
+ get content(): Control;
21
+ set content(value: Control);
22
+ protected _setFacadeTextureScaling(): void;
23
+ /**
24
+ * Gets or sets the texture resolution used to render content (512 by default)
25
+ */
26
+ get contentResolution(): number | {
27
+ width: number;
28
+ height: number;
29
+ };
30
+ set contentResolution(value: number | {
31
+ width: number;
32
+ height: number;
33
+ });
34
+ protected _disposeFacadeTexture(): void;
35
+ protected _resetContent(): void;
36
+ /**
37
+ * Apply the facade texture (created from the content property).
38
+ * This function can be overloaded by child classes
39
+ * @param facadeTexture defines the AdvancedDynamicTexture to use
40
+ */
41
+ protected _applyFacade(facadeTexture: AdvancedDynamicTexture): void;
42
+ }