@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,81 @@
1
+ import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture.js";
2
+ import { Control3D } from "./control3D.js";
3
+ import { Texture } from "@babylonjs/core/Materials/Textures/texture.js";
4
+ /**
5
+ * The base class for controls that display content
6
+ */
7
+ export class ContentDisplay3D extends Control3D {
8
+ constructor() {
9
+ super(...arguments);
10
+ this._contentResolution = 512;
11
+ this._contentScaleRatio = 2;
12
+ }
13
+ /**
14
+ * Gets or sets the GUI 2D content used to display the button's facade
15
+ */
16
+ get content() {
17
+ return this._content;
18
+ }
19
+ set content(value) {
20
+ this._content = value;
21
+ if (!value || !this._host || !this._host.utilityLayer) {
22
+ return;
23
+ }
24
+ if (!this._facadeTexture) {
25
+ const width = typeof this._contentResolution === "number" ? this._contentResolution : this._contentResolution.width;
26
+ const height = typeof this._contentResolution === "number" ? this._contentResolution : this._contentResolution.height;
27
+ this._facadeTexture = new AdvancedDynamicTexture("Facade", width, height, this._host.utilityLayer.utilityLayerScene, true, Texture.TRILINEAR_SAMPLINGMODE);
28
+ this._setFacadeTextureScaling();
29
+ this._facadeTexture.premulAlpha = true;
30
+ }
31
+ else {
32
+ this._facadeTexture.rootContainer.clearControls();
33
+ }
34
+ this._facadeTexture.addControl(value);
35
+ this._applyFacade(this._facadeTexture);
36
+ }
37
+ _setFacadeTextureScaling() {
38
+ if (this._facadeTexture) {
39
+ if (typeof this._contentResolution !== "number") {
40
+ this._contentScaleRatioY = (this._contentResolution.height / this._contentResolution.width) * this._contentScaleRatio;
41
+ }
42
+ this._facadeTexture.rootContainer.scaleX = this._contentScaleRatio;
43
+ this._facadeTexture.rootContainer.scaleY = this._contentScaleRatioY ?? this._contentScaleRatio;
44
+ }
45
+ }
46
+ /**
47
+ * Gets or sets the texture resolution used to render content (512 by default)
48
+ */
49
+ get contentResolution() {
50
+ return this._contentResolution;
51
+ }
52
+ set contentResolution(value) {
53
+ const incomingWidth = typeof value === "number" ? value : value.width;
54
+ const incomingHeight = typeof value === "number" ? value : value.height;
55
+ const currentWidth = typeof this._contentResolution === "number" ? this._contentResolution : this._contentResolution.width;
56
+ const currentHeight = typeof this._contentResolution === "number" ? this._contentResolution : this._contentResolution.height;
57
+ if (incomingWidth === currentWidth && incomingHeight === currentHeight) {
58
+ return;
59
+ }
60
+ this._contentResolution = value;
61
+ this._resetContent();
62
+ }
63
+ _disposeFacadeTexture() {
64
+ if (this._facadeTexture) {
65
+ this._facadeTexture.dispose();
66
+ this._facadeTexture = null;
67
+ }
68
+ }
69
+ _resetContent() {
70
+ this._disposeFacadeTexture();
71
+ this.content = this._content;
72
+ }
73
+ /**
74
+ * Apply the facade texture (created from the content property).
75
+ * This function can be overloaded by child classes
76
+ * @param facadeTexture defines the AdvancedDynamicTexture to use
77
+ */
78
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
79
+ _applyFacade(facadeTexture) { }
80
+ }
81
+ //# sourceMappingURL=contentDisplay3D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentDisplay3D.js","sourceRoot":"","sources":["../../../../../dev/gui/src/3D/controls/contentDisplay3D.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,sDAAwC;AAE1D;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IAA/C;;QAGc,uBAAkB,GAA+C,GAAG,CAAC;QACrE,uBAAkB,GAAG,CAAC,CAAC;IAiFrC,CAAC;IA9EG;;OAEG;IACH,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAW,OAAO,CAAC,KAAc;QAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YACpD,OAAO;QACX,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;YACpH,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;YACtH,IAAI,CAAC,cAAc,GAAG,IAAI,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;YAC3J,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC;QAC3C,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3C,CAAC;IAES,wBAAwB;QAC9B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,OAAO,IAAI,CAAC,kBAAkB,KAAK,QAAQ,EAAE,CAAC;gBAC9C,IAAI,CAAC,mBAAmB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAC1H,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACnE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,kBAAkB,CAAC;QACnG,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAW,iBAAiB;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,IAAW,iBAAiB,CAAC,KAAiD;QAC1E,MAAM,aAAa,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QACtE,MAAM,cAAc,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QACxE,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QAC3H,MAAM,aAAa,GAAG,OAAO,IAAI,CAAC,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;QAC7H,IAAI,aAAa,KAAK,YAAY,IAAI,cAAc,KAAK,aAAa,EAAE,CAAC;YACrE,OAAO;QACX,CAAC;QAED,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAES,qBAAqB;QAC3B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC/B,CAAC;IACL,CAAC;IAES,aAAa;QACnB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,6DAA6D;IACnD,YAAY,CAAC,aAAqC,IAAG,CAAC;CACnE","sourcesContent":["import type { Control } from \"../../2D/controls/control\";\r\nimport { AdvancedDynamicTexture } from \"../../2D/advancedDynamicTexture\";\r\nimport type { Nullable } from \"core/types\";\r\nimport { Control3D } from \"./control3D\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\n\r\n/**\r\n * The base class for controls that display content\r\n */\r\nexport class ContentDisplay3D extends Control3D {\r\n private _content: Control;\r\n protected _facadeTexture: Nullable<AdvancedDynamicTexture>;\r\n protected _contentResolution: number | { width: number; height: number } = 512;\r\n protected _contentScaleRatio = 2;\r\n protected _contentScaleRatioY?: number;\r\n\r\n /**\r\n * Gets or sets the GUI 2D content used to display the button's facade\r\n */\r\n public get content(): Control {\r\n return this._content;\r\n }\r\n\r\n public set content(value: Control) {\r\n this._content = value;\r\n\r\n if (!value || !this._host || !this._host.utilityLayer) {\r\n return;\r\n }\r\n\r\n if (!this._facadeTexture) {\r\n const width = typeof this._contentResolution === \"number\" ? this._contentResolution : this._contentResolution.width;\r\n const height = typeof this._contentResolution === \"number\" ? this._contentResolution : this._contentResolution.height;\r\n this._facadeTexture = new AdvancedDynamicTexture(\"Facade\", width, height, this._host.utilityLayer.utilityLayerScene, true, Texture.TRILINEAR_SAMPLINGMODE);\r\n this._setFacadeTextureScaling();\r\n this._facadeTexture.premulAlpha = true;\r\n } else {\r\n this._facadeTexture.rootContainer.clearControls();\r\n }\r\n\r\n this._facadeTexture.addControl(value);\r\n\r\n this._applyFacade(this._facadeTexture);\r\n }\r\n\r\n protected _setFacadeTextureScaling() {\r\n if (this._facadeTexture) {\r\n if (typeof this._contentResolution !== \"number\") {\r\n this._contentScaleRatioY = (this._contentResolution.height / this._contentResolution.width) * this._contentScaleRatio;\r\n }\r\n this._facadeTexture.rootContainer.scaleX = this._contentScaleRatio;\r\n this._facadeTexture.rootContainer.scaleY = this._contentScaleRatioY ?? this._contentScaleRatio;\r\n }\r\n }\r\n\r\n /**\r\n * Gets or sets the texture resolution used to render content (512 by default)\r\n */\r\n public get contentResolution(): number | { width: number; height: number } {\r\n return this._contentResolution;\r\n }\r\n\r\n public set contentResolution(value: number | { width: number; height: number }) {\r\n const incomingWidth = typeof value === \"number\" ? value : value.width;\r\n const incomingHeight = typeof value === \"number\" ? value : value.height;\r\n const currentWidth = typeof this._contentResolution === \"number\" ? this._contentResolution : this._contentResolution.width;\r\n const currentHeight = typeof this._contentResolution === \"number\" ? this._contentResolution : this._contentResolution.height;\r\n if (incomingWidth === currentWidth && incomingHeight === currentHeight) {\r\n return;\r\n }\r\n\r\n this._contentResolution = value;\r\n this._resetContent();\r\n }\r\n\r\n protected _disposeFacadeTexture() {\r\n if (this._facadeTexture) {\r\n this._facadeTexture.dispose();\r\n this._facadeTexture = null;\r\n }\r\n }\r\n\r\n protected _resetContent() {\r\n this._disposeFacadeTexture();\r\n this.content = this._content;\r\n }\r\n\r\n /**\r\n * Apply the facade texture (created from the content property).\r\n * This function can be overloaded by child classes\r\n * @param facadeTexture defines the AdvancedDynamicTexture to use\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n protected _applyFacade(facadeTexture: AdvancedDynamicTexture) {}\r\n}\r\n"]}
@@ -0,0 +1,183 @@
1
+ import type { Nullable } from "@babylonjs/core/types.js";
2
+ import { Observable } from "@babylonjs/core/Misc/observable.js";
3
+ import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
4
+ import type { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
5
+ import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
6
+ import type { IBehaviorAware, Behavior } from "@babylonjs/core/Behaviors/behavior.js";
7
+ import type { IDisposable, Scene } from "@babylonjs/core/scene.js";
8
+ import type { GUI3DManager } from "../gui3DManager.js";
9
+ import { Vector3WithInfo } from "../vector3WithInfo.js";
10
+ import type { Container3D } from "./container3D.js";
11
+ /**
12
+ * Class used as base class for controls
13
+ */
14
+ export declare class Control3D implements IDisposable, IBehaviorAware<Control3D> {
15
+ /** Defines the control name */
16
+ name?: string | undefined;
17
+ private _node;
18
+ private _downCount;
19
+ private _enterCount;
20
+ private _downPointerIds;
21
+ protected _isVisible: boolean;
22
+ /** @internal */
23
+ _host: GUI3DManager;
24
+ /** @internal */
25
+ _isScaledByManager: boolean;
26
+ private _position?;
27
+ private _scaling?;
28
+ /** Gets or sets the control position in world space */
29
+ get position(): Vector3;
30
+ set position(value: Vector3);
31
+ /** Gets or sets the control scaling in world space */
32
+ get scaling(): Vector3;
33
+ set scaling(value: Vector3);
34
+ /** Callback used to start pointer enter animation */
35
+ pointerEnterAnimation: () => void;
36
+ /** Callback used to start pointer out animation */
37
+ pointerOutAnimation: () => void;
38
+ /** Callback used to start pointer down animation */
39
+ pointerDownAnimation: () => void;
40
+ /** Callback used to start pointer up animation */
41
+ pointerUpAnimation: () => void;
42
+ /**
43
+ * An event triggered when the pointer moves over the control
44
+ */
45
+ onPointerMoveObservable: Observable<Vector3>;
46
+ /**
47
+ * An event triggered when the pointer moves out of the control
48
+ */
49
+ onPointerOutObservable: Observable<Control3D>;
50
+ /**
51
+ * An event triggered when the pointer taps the control
52
+ */
53
+ onPointerDownObservable: Observable<Vector3WithInfo>;
54
+ /**
55
+ * An event triggered when pointer is up
56
+ */
57
+ onPointerUpObservable: Observable<Vector3WithInfo>;
58
+ /**
59
+ * An event triggered when a control is clicked on (with a mouse)
60
+ */
61
+ onPointerClickObservable: Observable<Vector3WithInfo>;
62
+ /**
63
+ * An event triggered when pointer enters the control
64
+ */
65
+ onPointerEnterObservable: Observable<Control3D>;
66
+ /**
67
+ * Gets or sets the parent container
68
+ */
69
+ parent: Nullable<Container3D>;
70
+ private _behaviors;
71
+ /**
72
+ * Gets the list of attached behaviors
73
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
74
+ */
75
+ get behaviors(): Behavior<Control3D>[];
76
+ /**
77
+ * Attach a behavior to the control
78
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
79
+ * @param behavior defines the behavior to attach
80
+ * @returns the current control
81
+ */
82
+ addBehavior(behavior: Behavior<Control3D>): Control3D;
83
+ /**
84
+ * Remove an attached behavior
85
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
86
+ * @param behavior defines the behavior to attach
87
+ * @returns the current control
88
+ */
89
+ removeBehavior(behavior: Behavior<Control3D>): Control3D;
90
+ /**
91
+ * Gets an attached behavior by name
92
+ * @param name defines the name of the behavior to look for
93
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
94
+ * @returns null if behavior was not found else the requested behavior
95
+ */
96
+ getBehaviorByName(name: string): Nullable<Behavior<Control3D>>;
97
+ /** Gets or sets a boolean indicating if the control is visible */
98
+ get isVisible(): boolean;
99
+ set isVisible(value: boolean);
100
+ /**
101
+ * Creates a new control
102
+ * @param name defines the control name
103
+ */
104
+ constructor(
105
+ /** Defines the control name */
106
+ name?: string | undefined);
107
+ /**
108
+ * Gets a string representing the class name
109
+ */
110
+ get typeName(): string;
111
+ /**
112
+ * Get the current class name of the control.
113
+ * @returns current class name
114
+ */
115
+ getClassName(): string;
116
+ protected _getTypeName(): string;
117
+ /**
118
+ * Gets the transform node used by this control
119
+ */
120
+ get node(): Nullable<TransformNode>;
121
+ /**
122
+ * Gets the mesh used to render this control
123
+ */
124
+ get mesh(): Nullable<AbstractMesh>;
125
+ /**
126
+ * Link the control as child of the given node
127
+ * @param node defines the node to link to. Use null to unlink the control
128
+ * @returns the current control
129
+ */
130
+ linkToTransformNode(node: Nullable<TransformNode>): Control3D;
131
+ /**
132
+ * @internal
133
+ */
134
+ _prepareNode(scene: Scene): void;
135
+ protected _injectGUI3DReservedDataStore(node: TransformNode): any;
136
+ /**
137
+ * Node creation.
138
+ * Can be overriden by children
139
+ * @param scene defines the scene where the node must be attached
140
+ * @returns the attached node or null if none. Must return a Mesh or AbstractMesh if there is an attached visible object
141
+ */
142
+ protected _createNode(scene: Scene): Nullable<TransformNode>;
143
+ /**
144
+ * Affect a material to the given mesh
145
+ * @param mesh defines the mesh which will represent the control
146
+ */
147
+ protected _affectMaterial(mesh: AbstractMesh): void;
148
+ private _isTouchButton3D;
149
+ /**
150
+ * @internal
151
+ */
152
+ _onPointerMove(target: Control3D, coordinates: Vector3): void;
153
+ /**
154
+ * @internal
155
+ */
156
+ _onPointerEnter(target: Control3D): boolean;
157
+ /**
158
+ * @internal
159
+ */
160
+ _onPointerOut(target: Control3D): void;
161
+ /**
162
+ * @internal
163
+ */
164
+ _onPointerDown(target: Control3D, coordinates: Vector3, pointerId: number, buttonIndex: number): boolean;
165
+ /**
166
+ * @internal
167
+ */
168
+ _onPointerUp(target: Control3D, coordinates: Vector3, pointerId: number, buttonIndex: number, notifyClick: boolean): void;
169
+ /**
170
+ * @internal
171
+ */
172
+ forcePointerUp(pointerId?: Nullable<number>): void;
173
+ /**
174
+ * @internal
175
+ */
176
+ _processObservables(type: number, pickedPoint: Vector3, originMeshPosition: Nullable<Vector3>, pointerId: number, buttonIndex: number): boolean;
177
+ /** @internal */
178
+ _disposeNode(): void;
179
+ /**
180
+ * Releases all associated resources
181
+ */
182
+ dispose(): void;
183
+ }
@@ -0,0 +1,401 @@
1
+ import { Observable } from "@babylonjs/core/Misc/observable.js";
2
+ import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
3
+ import { PointerEventTypes } from "@babylonjs/core/Events/pointerEvents.js";
4
+ import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
5
+ import { Vector3WithInfo } from "../vector3WithInfo.js";
6
+ /**
7
+ * Class used as base class for controls
8
+ */
9
+ export class Control3D {
10
+ /** Gets or sets the control position in world space */
11
+ get position() {
12
+ if (!this._node) {
13
+ this._position = this._position || Vector3.Zero();
14
+ return this._position;
15
+ }
16
+ return this._node.position;
17
+ }
18
+ set position(value) {
19
+ this._position = value;
20
+ if (!this._node) {
21
+ return;
22
+ }
23
+ this._node.position = this._position;
24
+ }
25
+ /** Gets or sets the control scaling in world space */
26
+ get scaling() {
27
+ if (!this._node) {
28
+ this._scaling = this.scaling || new Vector3(1, 1, 1);
29
+ return this._scaling;
30
+ }
31
+ return this._node.scaling;
32
+ }
33
+ set scaling(value) {
34
+ this._scaling = value;
35
+ if (!this._node) {
36
+ return;
37
+ }
38
+ this._isScaledByManager = false;
39
+ this._node.scaling = this._scaling;
40
+ }
41
+ /**
42
+ * Gets the list of attached behaviors
43
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
44
+ */
45
+ get behaviors() {
46
+ return this._behaviors;
47
+ }
48
+ /**
49
+ * Attach a behavior to the control
50
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
51
+ * @param behavior defines the behavior to attach
52
+ * @returns the current control
53
+ */
54
+ addBehavior(behavior) {
55
+ const index = this._behaviors.indexOf(behavior);
56
+ if (index !== -1) {
57
+ return this;
58
+ }
59
+ behavior.init();
60
+ const scene = this._host.scene;
61
+ if (scene.isLoading) {
62
+ // We defer the attach when the scene will be loaded
63
+ scene.onDataLoadedObservable.addOnce(() => {
64
+ behavior.attach(this);
65
+ });
66
+ }
67
+ else {
68
+ behavior.attach(this);
69
+ }
70
+ this._behaviors.push(behavior);
71
+ return this;
72
+ }
73
+ /**
74
+ * Remove an attached behavior
75
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
76
+ * @param behavior defines the behavior to attach
77
+ * @returns the current control
78
+ */
79
+ removeBehavior(behavior) {
80
+ const index = this._behaviors.indexOf(behavior);
81
+ if (index === -1) {
82
+ return this;
83
+ }
84
+ this._behaviors[index].detach();
85
+ this._behaviors.splice(index, 1);
86
+ return this;
87
+ }
88
+ /**
89
+ * Gets an attached behavior by name
90
+ * @param name defines the name of the behavior to look for
91
+ * @see https://doc.babylonjs.com/features/featuresDeepDive/behaviors
92
+ * @returns null if behavior was not found else the requested behavior
93
+ */
94
+ getBehaviorByName(name) {
95
+ for (const behavior of this._behaviors) {
96
+ if (behavior.name === name) {
97
+ return behavior;
98
+ }
99
+ }
100
+ return null;
101
+ }
102
+ /** Gets or sets a boolean indicating if the control is visible */
103
+ get isVisible() {
104
+ return this._isVisible;
105
+ }
106
+ set isVisible(value) {
107
+ if (this._isVisible === value) {
108
+ return;
109
+ }
110
+ this._isVisible = value;
111
+ const mesh = this.mesh;
112
+ if (mesh) {
113
+ mesh.setEnabled(value);
114
+ }
115
+ }
116
+ /**
117
+ * Creates a new control
118
+ * @param name defines the control name
119
+ */
120
+ constructor(
121
+ /** Defines the control name */
122
+ name) {
123
+ this.name = name;
124
+ this._downCount = 0;
125
+ this._enterCount = -1;
126
+ this._downPointerIds = {}; // Store number of pointer downs per ID, from near and far interactions
127
+ this._isVisible = true;
128
+ /** @internal */
129
+ this._isScaledByManager = false;
130
+ /**
131
+ * An event triggered when the pointer moves over the control
132
+ */
133
+ this.onPointerMoveObservable = new Observable();
134
+ /**
135
+ * An event triggered when the pointer moves out of the control
136
+ */
137
+ this.onPointerOutObservable = new Observable();
138
+ /**
139
+ * An event triggered when the pointer taps the control
140
+ */
141
+ this.onPointerDownObservable = new Observable();
142
+ /**
143
+ * An event triggered when pointer is up
144
+ */
145
+ this.onPointerUpObservable = new Observable();
146
+ /**
147
+ * An event triggered when a control is clicked on (with a mouse)
148
+ */
149
+ this.onPointerClickObservable = new Observable();
150
+ /**
151
+ * An event triggered when pointer enters the control
152
+ */
153
+ this.onPointerEnterObservable = new Observable();
154
+ // Behaviors
155
+ this._behaviors = new Array();
156
+ }
157
+ /**
158
+ * Gets a string representing the class name
159
+ */
160
+ get typeName() {
161
+ return this._getTypeName();
162
+ }
163
+ /**
164
+ * Get the current class name of the control.
165
+ * @returns current class name
166
+ */
167
+ getClassName() {
168
+ return this._getTypeName();
169
+ }
170
+ _getTypeName() {
171
+ return "Control3D";
172
+ }
173
+ /**
174
+ * Gets the transform node used by this control
175
+ */
176
+ get node() {
177
+ return this._node;
178
+ }
179
+ /**
180
+ * Gets the mesh used to render this control
181
+ */
182
+ get mesh() {
183
+ if (this._node instanceof AbstractMesh) {
184
+ return this._node;
185
+ }
186
+ return null;
187
+ }
188
+ /**
189
+ * Link the control as child of the given node
190
+ * @param node defines the node to link to. Use null to unlink the control
191
+ * @returns the current control
192
+ */
193
+ linkToTransformNode(node) {
194
+ if (this._node) {
195
+ this._node.parent = node;
196
+ }
197
+ return this;
198
+ }
199
+ /**
200
+ * @internal
201
+ */
202
+ _prepareNode(scene) {
203
+ if (!this._node) {
204
+ this._node = this._createNode(scene);
205
+ if (!this.node) {
206
+ return;
207
+ }
208
+ if (this._position) {
209
+ this.node.position = this._position;
210
+ }
211
+ if (this._scaling) {
212
+ this.node.scaling = this._scaling;
213
+ }
214
+ this._injectGUI3DReservedDataStore(this.node).control = this; // Store the control on the reservedDataStore field in order to get it when picking
215
+ const mesh = this.mesh;
216
+ if (mesh) {
217
+ mesh.isPickable = true;
218
+ this._affectMaterial(mesh);
219
+ }
220
+ }
221
+ }
222
+ _injectGUI3DReservedDataStore(node) {
223
+ node.reservedDataStore = node.reservedDataStore ?? {};
224
+ node.reservedDataStore.GUI3D = node.reservedDataStore.GUI3D ?? {};
225
+ return node.reservedDataStore.GUI3D;
226
+ }
227
+ /**
228
+ * Node creation.
229
+ * Can be overriden by children
230
+ * @param scene defines the scene where the node must be attached
231
+ * @returns the attached node or null if none. Must return a Mesh or AbstractMesh if there is an attached visible object
232
+ */
233
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
234
+ _createNode(scene) {
235
+ // Do nothing by default
236
+ return null;
237
+ }
238
+ /**
239
+ * Affect a material to the given mesh
240
+ * @param mesh defines the mesh which will represent the control
241
+ */
242
+ _affectMaterial(mesh) {
243
+ mesh.material = null;
244
+ }
245
+ _isTouchButton3D(control) {
246
+ return control._generatePointerEventType !== undefined;
247
+ }
248
+ // Pointers
249
+ /**
250
+ * @internal
251
+ */
252
+ _onPointerMove(target, coordinates) {
253
+ this.onPointerMoveObservable.notifyObservers(coordinates, -1, target, this);
254
+ }
255
+ /**
256
+ * @internal
257
+ */
258
+ _onPointerEnter(target) {
259
+ if (this._enterCount === -1) {
260
+ // -1 is for touch input, we are now sure we are with a mouse or pencil
261
+ this._enterCount = 0;
262
+ }
263
+ this._enterCount++;
264
+ if (this._enterCount > 1) {
265
+ return false;
266
+ }
267
+ this.onPointerEnterObservable.notifyObservers(this, -1, target, this);
268
+ if (this.pointerEnterAnimation) {
269
+ this.pointerEnterAnimation();
270
+ }
271
+ return true;
272
+ }
273
+ /**
274
+ * @internal
275
+ */
276
+ _onPointerOut(target) {
277
+ this._enterCount--;
278
+ if (this._enterCount > 0) {
279
+ return;
280
+ }
281
+ this._enterCount = 0;
282
+ this.onPointerOutObservable.notifyObservers(this, -1, target, this);
283
+ if (this.pointerOutAnimation) {
284
+ this.pointerOutAnimation();
285
+ }
286
+ }
287
+ /**
288
+ * @internal
289
+ */
290
+ _onPointerDown(target, coordinates, pointerId, buttonIndex) {
291
+ this._downCount++;
292
+ this._downPointerIds[pointerId] = this._downPointerIds[pointerId] + 1 || 1;
293
+ if (this._downCount !== 1) {
294
+ return false;
295
+ }
296
+ this.onPointerDownObservable.notifyObservers(new Vector3WithInfo(coordinates, buttonIndex), -1, target, this);
297
+ if (this.pointerDownAnimation) {
298
+ this.pointerDownAnimation();
299
+ }
300
+ return true;
301
+ }
302
+ /**
303
+ * @internal
304
+ */
305
+ _onPointerUp(target, coordinates, pointerId, buttonIndex, notifyClick) {
306
+ this._downCount--;
307
+ this._downPointerIds[pointerId]--;
308
+ if (this._downPointerIds[pointerId] <= 0) {
309
+ delete this._downPointerIds[pointerId];
310
+ }
311
+ if (this._downCount < 0) {
312
+ // Handle if forcePointerUp was called prior to this
313
+ this._downCount = 0;
314
+ return;
315
+ }
316
+ if (this._downCount == 0) {
317
+ if (notifyClick && (this._enterCount > 0 || this._enterCount === -1)) {
318
+ this.onPointerClickObservable.notifyObservers(new Vector3WithInfo(coordinates, buttonIndex), -1, target, this);
319
+ }
320
+ this.onPointerUpObservable.notifyObservers(new Vector3WithInfo(coordinates, buttonIndex), -1, target, this);
321
+ if (this.pointerUpAnimation) {
322
+ this.pointerUpAnimation();
323
+ }
324
+ }
325
+ }
326
+ /**
327
+ * @internal
328
+ */
329
+ forcePointerUp(pointerId = null) {
330
+ if (pointerId !== null) {
331
+ this._onPointerUp(this, Vector3.Zero(), pointerId, 0, true);
332
+ }
333
+ else {
334
+ for (const key in this._downPointerIds) {
335
+ this._onPointerUp(this, Vector3.Zero(), +key, 0, true);
336
+ }
337
+ if (this._downCount > 0) {
338
+ this._downCount = 1;
339
+ this._onPointerUp(this, Vector3.Zero(), 0, 0, true);
340
+ }
341
+ }
342
+ }
343
+ /**
344
+ * @internal
345
+ */
346
+ _processObservables(type, pickedPoint, originMeshPosition, pointerId, buttonIndex) {
347
+ if (this._isTouchButton3D(this) && originMeshPosition) {
348
+ type = this._generatePointerEventType(type, originMeshPosition, this._downCount);
349
+ }
350
+ if (type === PointerEventTypes.POINTERMOVE) {
351
+ this._onPointerMove(this, pickedPoint);
352
+ const previousControlOver = this._host._lastControlOver[pointerId];
353
+ if (previousControlOver && previousControlOver !== this) {
354
+ previousControlOver._onPointerOut(this);
355
+ }
356
+ if (previousControlOver !== this) {
357
+ this._onPointerEnter(this);
358
+ }
359
+ this._host._lastControlOver[pointerId] = this;
360
+ return true;
361
+ }
362
+ if (type === PointerEventTypes.POINTERDOWN) {
363
+ this._onPointerDown(this, pickedPoint, pointerId, buttonIndex);
364
+ this._host._lastControlDown[pointerId] = this;
365
+ this._host._lastPickedControl = this;
366
+ return true;
367
+ }
368
+ if (type === PointerEventTypes.POINTERUP || type === PointerEventTypes.POINTERDOUBLETAP) {
369
+ if (this._host._lastControlDown[pointerId]) {
370
+ this._host._lastControlDown[pointerId]._onPointerUp(this, pickedPoint, pointerId, buttonIndex, true);
371
+ }
372
+ delete this._host._lastControlDown[pointerId];
373
+ return true;
374
+ }
375
+ return false;
376
+ }
377
+ /** @internal */
378
+ _disposeNode() {
379
+ if (this._node) {
380
+ this._node.dispose();
381
+ this._node = null;
382
+ }
383
+ }
384
+ /**
385
+ * Releases all associated resources
386
+ */
387
+ dispose() {
388
+ this.onPointerDownObservable.clear();
389
+ this.onPointerEnterObservable.clear();
390
+ this.onPointerMoveObservable.clear();
391
+ this.onPointerOutObservable.clear();
392
+ this.onPointerUpObservable.clear();
393
+ this.onPointerClickObservable.clear();
394
+ this._disposeNode();
395
+ // Behaviors
396
+ for (const behavior of this._behaviors) {
397
+ behavior.detach();
398
+ }
399
+ }
400
+ }
401
+ //# sourceMappingURL=control3D.js.map