@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,175 @@
1
+ import { CreateBox } from "@babylonjs/core/Meshes/Builders/boxBuilder.js";
2
+ import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
3
+ import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
4
+ import { HandleMaterial } from "../materials/handle/handleMaterial.js";
5
+ import { BaseSixDofDragBehavior } from "@babylonjs/core/Behaviors/Meshes/baseSixDofDragBehavior.js";
6
+ /**
7
+ * State of the handle regarding user interaction
8
+ */
9
+ export var HandleState;
10
+ (function (HandleState) {
11
+ /**
12
+ * Handle is idle
13
+ */
14
+ HandleState[HandleState["IDLE"] = 0] = "IDLE";
15
+ /**
16
+ * Handle is hovered
17
+ */
18
+ HandleState[HandleState["HOVER"] = 1] = "HOVER";
19
+ /**
20
+ * Handle is dragged
21
+ */
22
+ HandleState[HandleState["DRAG"] = 2] = "DRAG";
23
+ })(HandleState || (HandleState = {}));
24
+ /**
25
+ * Base class for SlateGizmo handles
26
+ */
27
+ export class GizmoHandle {
28
+ /**
29
+ * The current state of the handle
30
+ */
31
+ get state() {
32
+ return this._state;
33
+ }
34
+ /**
35
+ * Returns the gizmo carrying this handle
36
+ */
37
+ get gizmo() {
38
+ return this._gizmo;
39
+ }
40
+ /**
41
+ * Sets hover state
42
+ */
43
+ set hover(value) {
44
+ if (value) {
45
+ this._state |= 1 /* HandleState.HOVER */;
46
+ }
47
+ else {
48
+ this._state &= ~1 /* HandleState.HOVER */;
49
+ }
50
+ this._updateMaterial();
51
+ }
52
+ /**
53
+ * Sets drag state
54
+ */
55
+ set drag(value) {
56
+ if (value) {
57
+ this._state |= 2 /* HandleState.DRAG */;
58
+ }
59
+ else {
60
+ this._state &= ~2 /* HandleState.DRAG */;
61
+ }
62
+ this._updateMaterial();
63
+ }
64
+ /**
65
+ * Creates a handle for a SlateGizmo
66
+ * @param gizmo associated SlateGizmo
67
+ * @param scene scene
68
+ */
69
+ constructor(gizmo, scene) {
70
+ this._state = 0 /* HandleState.IDLE */;
71
+ this._materials = [];
72
+ this._scene = scene;
73
+ this._gizmo = gizmo;
74
+ this.node = this.createNode();
75
+ this.node.reservedDataStore = {
76
+ handle: this,
77
+ };
78
+ }
79
+ _createMaterial(positionOffset) {
80
+ const mat = new HandleMaterial("handle", this._scene);
81
+ if (positionOffset) {
82
+ mat._positionOffset = positionOffset;
83
+ }
84
+ return mat;
85
+ }
86
+ _updateMaterial() {
87
+ const state = this._state;
88
+ for (const mat of this._materials) {
89
+ mat.hover = false;
90
+ mat.drag = false;
91
+ }
92
+ if (state & 2 /* HandleState.DRAG */) {
93
+ for (const mat of this._materials) {
94
+ mat.drag = true;
95
+ }
96
+ }
97
+ else if (state & 1 /* HandleState.HOVER */) {
98
+ for (const mat of this._materials) {
99
+ mat.hover = true;
100
+ }
101
+ }
102
+ }
103
+ /**
104
+ * Binds callbacks from dragging interaction
105
+ * @param dragStartFn Function to call on drag start
106
+ * @param dragFn Function to call on drag
107
+ * @param dragEndFn Function to call on drag end
108
+ */
109
+ setDragBehavior(dragStartFn, dragFn, dragEndFn) {
110
+ const dragBehavior = new BaseSixDofDragBehavior();
111
+ this._dragBehavior = dragBehavior;
112
+ this._dragStartObserver = dragBehavior.onDragStartObservable.add(dragStartFn);
113
+ this._draggingObserver = dragBehavior.onDragObservable.add(dragFn);
114
+ this._dragEndObserver = dragBehavior.onDragEndObservable.add(dragEndFn);
115
+ this._dragBehavior.attach(this.node);
116
+ }
117
+ /**
118
+ * Disposes the handle
119
+ */
120
+ dispose() {
121
+ this._dragBehavior.onDragStartObservable.remove(this._dragStartObserver);
122
+ this._dragBehavior.onDragObservable.remove(this._draggingObserver);
123
+ this._dragBehavior.onDragEndObservable.remove(this._dragEndObserver);
124
+ this._dragBehavior.detach();
125
+ for (const material of this._materials) {
126
+ material.dispose();
127
+ }
128
+ this.node.dispose();
129
+ }
130
+ }
131
+ /**
132
+ * Side handle class that rotates the slate
133
+ */
134
+ export class SideHandle extends GizmoHandle {
135
+ /**
136
+ * Creates the meshes and parent node of the handle
137
+ * @returns created node
138
+ */
139
+ createNode() {
140
+ // Create a simple vertical rectangle
141
+ const verticalBox = CreateBox("sideVert", { width: 1, height: 10, depth: 0.1 }, this._scene);
142
+ const sideNode = new TransformNode("side", this._scene);
143
+ verticalBox.parent = sideNode;
144
+ const mat = this._createMaterial();
145
+ verticalBox.material = mat;
146
+ verticalBox.isNearGrabbable = true;
147
+ this._materials.push(mat);
148
+ return sideNode;
149
+ }
150
+ }
151
+ /**
152
+ * Corner handle that resizes the slate
153
+ */
154
+ export class CornerHandle extends GizmoHandle {
155
+ /**
156
+ * Creates the meshes and parent node of the handle
157
+ * @returns created node
158
+ */
159
+ createNode() {
160
+ // Create 2 boxes making a bottom left corner
161
+ const horizontalBox = CreateBox("angleHor", { width: 3, height: 1, depth: 0.1 }, this._scene);
162
+ const verticalBox = CreateBox("angleVert", { width: 1, height: 3, depth: 0.1 }, this._scene);
163
+ const angleNode = new TransformNode("angle", this._scene);
164
+ horizontalBox.parent = angleNode;
165
+ verticalBox.parent = angleNode;
166
+ horizontalBox.material = this._createMaterial(new Vector3(1, 0, 0));
167
+ verticalBox.material = this._createMaterial(new Vector3(0, 1, 0));
168
+ verticalBox.isNearGrabbable = true;
169
+ horizontalBox.isNearGrabbable = true;
170
+ this._materials.push(horizontalBox.material);
171
+ this._materials.push(verticalBox.material);
172
+ return angleNode;
173
+ }
174
+ }
175
+ //# sourceMappingURL=gizmoHandle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gizmoHandle.js","sourceRoot":"","sources":["../../../../../dev/gui/src/3D/gizmos/gizmoHandle.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scene } from \"core/scene\";\r\nimport { CreateBox } from \"core/Meshes/Builders/boxBuilder\";\r\nimport { TransformNode } from \"core/Meshes/transformNode\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport { HandleMaterial } from \"../materials/handle/handleMaterial\";\r\nimport type { SlateGizmo } from \"./slateGizmo\";\r\nimport { BaseSixDofDragBehavior } from \"core/Behaviors/Meshes/baseSixDofDragBehavior\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\n\r\n/**\r\n * State of the handle regarding user interaction\r\n */\r\nexport const enum HandleState {\r\n /**\r\n * Handle is idle\r\n */\r\n IDLE = 0,\r\n /**\r\n * Handle is hovered\r\n */\r\n HOVER = 1,\r\n /**\r\n * Handle is dragged\r\n */\r\n DRAG = 2,\r\n}\r\n\r\n/**\r\n * Base class for SlateGizmo handles\r\n */\r\nexport abstract class GizmoHandle {\r\n protected _scene: Scene;\r\n protected _state: HandleState = HandleState.IDLE;\r\n protected _materials: HandleMaterial[] = [];\r\n\r\n private _dragStartObserver: Nullable<Observer<any>>;\r\n private _draggingObserver: Nullable<Observer<any>>;\r\n private _dragEndObserver: Nullable<Observer<any>>;\r\n /**\r\n * @internal\r\n */\r\n public _dragBehavior: BaseSixDofDragBehavior;\r\n\r\n /**\r\n * The current state of the handle\r\n */\r\n public get state(): HandleState {\r\n return this._state;\r\n }\r\n\r\n private _gizmo: SlateGizmo;\r\n\r\n /**\r\n * Returns the gizmo carrying this handle\r\n */\r\n public get gizmo() {\r\n return this._gizmo;\r\n }\r\n\r\n /**\r\n * Sets hover state\r\n */\r\n public set hover(value: boolean) {\r\n if (value) {\r\n this._state |= HandleState.HOVER;\r\n } else {\r\n this._state &= ~HandleState.HOVER;\r\n }\r\n\r\n this._updateMaterial();\r\n }\r\n /**\r\n * Sets drag state\r\n */\r\n public set drag(value: boolean) {\r\n if (value) {\r\n this._state |= HandleState.DRAG;\r\n } else {\r\n this._state &= ~HandleState.DRAG;\r\n }\r\n\r\n this._updateMaterial();\r\n }\r\n\r\n /**\r\n * Node of this handle\r\n */\r\n public node: TransformNode;\r\n\r\n /**\r\n * Creates a handle for a SlateGizmo\r\n * @param gizmo associated SlateGizmo\r\n * @param scene scene\r\n */\r\n constructor(gizmo: SlateGizmo, scene: Scene) {\r\n this._scene = scene;\r\n this._gizmo = gizmo;\r\n\r\n this.node = this.createNode();\r\n this.node.reservedDataStore = {\r\n handle: this,\r\n };\r\n }\r\n\r\n protected _createMaterial(positionOffset?: Vector3) {\r\n const mat = new HandleMaterial(\"handle\", this._scene);\r\n if (positionOffset) {\r\n mat._positionOffset = positionOffset;\r\n }\r\n return mat;\r\n }\r\n\r\n private _updateMaterial() {\r\n const state = this._state;\r\n for (const mat of this._materials) {\r\n mat.hover = false;\r\n mat.drag = false;\r\n }\r\n\r\n if (state & HandleState.DRAG) {\r\n for (const mat of this._materials) {\r\n mat.drag = true;\r\n }\r\n } else if (state & HandleState.HOVER) {\r\n for (const mat of this._materials) {\r\n mat.hover = true;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Binds callbacks from dragging interaction\r\n * @param dragStartFn Function to call on drag start\r\n * @param dragFn Function to call on drag\r\n * @param dragEndFn Function to call on drag end\r\n */\r\n public setDragBehavior(dragStartFn: (event: { position: Vector3 }) => void, dragFn: (event: { position: Vector3 }) => void, dragEndFn: () => void) {\r\n const dragBehavior = new BaseSixDofDragBehavior();\r\n\r\n this._dragBehavior = dragBehavior;\r\n\r\n this._dragStartObserver = dragBehavior.onDragStartObservable.add(dragStartFn);\r\n this._draggingObserver = dragBehavior.onDragObservable.add(dragFn);\r\n this._dragEndObserver = dragBehavior.onDragEndObservable.add(dragEndFn);\r\n\r\n this._dragBehavior.attach(this.node);\r\n }\r\n\r\n /**\r\n * Creates the meshes and parent node of the handle\r\n * Should be overridden by child classes\r\n * @returns created node\r\n */\r\n public abstract createNode(): TransformNode;\r\n\r\n /**\r\n * Disposes the handle\r\n */\r\n public dispose() {\r\n this._dragBehavior.onDragStartObservable.remove(this._dragStartObserver);\r\n this._dragBehavior.onDragObservable.remove(this._draggingObserver);\r\n this._dragBehavior.onDragEndObservable.remove(this._dragEndObserver);\r\n\r\n this._dragBehavior.detach();\r\n\r\n for (const material of this._materials) {\r\n material.dispose();\r\n }\r\n this.node.dispose();\r\n }\r\n}\r\n\r\n/**\r\n * Side handle class that rotates the slate\r\n */\r\nexport class SideHandle extends GizmoHandle {\r\n /**\r\n * Creates the meshes and parent node of the handle\r\n * @returns created node\r\n */\r\n public createNode() {\r\n // Create a simple vertical rectangle\r\n const verticalBox = CreateBox(\"sideVert\", { width: 1, height: 10, depth: 0.1 }, this._scene);\r\n const sideNode = new TransformNode(\"side\", this._scene);\r\n verticalBox.parent = sideNode;\r\n\r\n const mat = this._createMaterial();\r\n verticalBox.material = mat;\r\n verticalBox.isNearGrabbable = true;\r\n this._materials.push(mat);\r\n\r\n return sideNode;\r\n }\r\n}\r\n\r\n/**\r\n * Corner handle that resizes the slate\r\n */\r\nexport class CornerHandle extends GizmoHandle {\r\n /**\r\n * Creates the meshes and parent node of the handle\r\n * @returns created node\r\n */\r\n public createNode() {\r\n // Create 2 boxes making a bottom left corner\r\n const horizontalBox = CreateBox(\"angleHor\", { width: 3, height: 1, depth: 0.1 }, this._scene);\r\n const verticalBox = CreateBox(\"angleVert\", { width: 1, height: 3, depth: 0.1 }, this._scene);\r\n\r\n const angleNode = new TransformNode(\"angle\", this._scene);\r\n horizontalBox.parent = angleNode;\r\n verticalBox.parent = angleNode;\r\n\r\n horizontalBox.material = this._createMaterial(new Vector3(1, 0, 0));\r\n verticalBox.material = this._createMaterial(new Vector3(0, 1, 0));\r\n verticalBox.isNearGrabbable = true;\r\n horizontalBox.isNearGrabbable = true;\r\n\r\n this._materials.push(horizontalBox.material as HandleMaterial);\r\n this._materials.push(verticalBox.material as HandleMaterial);\r\n return angleNode;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ export * from "./slateGizmo.js";
2
+ export * from "./gizmoHandle.js";
@@ -0,0 +1,3 @@
1
+ export * from "./slateGizmo.js";
2
+ export * from "./gizmoHandle.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../dev/gui/src/3D/gizmos/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC","sourcesContent":["export * from \"./slateGizmo\";\r\nexport * from \"./gizmoHandle\";\r\n"]}
@@ -0,0 +1,57 @@
1
+ import { Gizmo } from "@babylonjs/core/Gizmos/gizmo.js";
2
+ import type { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
3
+ import type { UtilityLayerRenderer } from "@babylonjs/core/Rendering/utilityLayerRenderer.js";
4
+ import type { Nullable } from "@babylonjs/core/types.js";
5
+ import type { HolographicSlate } from "../controls/holographicSlate.js";
6
+ /**
7
+ * Gizmo to resize 2D slates
8
+ */
9
+ export declare class SlateGizmo extends Gizmo {
10
+ private _boundingDimensions;
11
+ private _pickedPointObserver;
12
+ private _renderObserver;
13
+ private _tmpQuaternion;
14
+ private _tmpVector;
15
+ private _corners;
16
+ private _sides;
17
+ private _handlesParent;
18
+ private _handleHovered;
19
+ private _handleDragged;
20
+ private _boundingBoxGizmo;
21
+ /**
22
+ * Value we use to offset handles from mesh
23
+ */
24
+ private _margin;
25
+ private _handleSize;
26
+ private _attachedSlate;
27
+ private _existingSlateScale;
28
+ /**
29
+ * If set, the handles will increase in size based on the distance away from the camera to have a consistent screen size (Default: true)
30
+ */
31
+ fixedScreenSize: boolean;
32
+ /**
33
+ * The distance away from the object which the draggable meshes should appear world sized when fixedScreenSize is set to true (default: 10)
34
+ */
35
+ fixedScreenSizeDistanceFactor: number;
36
+ /**
37
+ * The slate attached to this gizmo
38
+ */
39
+ set attachedSlate(control: Nullable<HolographicSlate>);
40
+ get attachedSlate(): Nullable<HolographicSlate>;
41
+ constructor(utilityLayer?: UtilityLayerRenderer);
42
+ private _createNode;
43
+ private _keepAspectRatio;
44
+ private _clampDimensions;
45
+ private _moveHandle;
46
+ private _assignDragBehaviorCorners;
47
+ private _assignDragBehaviorSides;
48
+ protected _attachedNodeChanged(value: Nullable<AbstractMesh>): void;
49
+ /**
50
+ * Updates the bounding box information for the gizmo
51
+ */
52
+ updateBoundingBox(): void;
53
+ private _updateHandlesPosition;
54
+ private _updateHandlesScaling;
55
+ protected _update(): void;
56
+ dispose(): void;
57
+ }
@@ -0,0 +1,353 @@
1
+ import { Gizmo } from "@babylonjs/core/Gizmos/gizmo.js";
2
+ import { Epsilon } from "@babylonjs/core/Maths/math.constants.js";
3
+ import { Matrix, Quaternion, TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
4
+ import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
5
+ import { PivotTools } from "@babylonjs/core/Misc/pivotTools.js";
6
+ import { CornerHandle, SideHandle } from "./gizmoHandle.js";
7
+ /**
8
+ * Gizmo to resize 2D slates
9
+ */
10
+ export class SlateGizmo extends Gizmo {
11
+ /**
12
+ * The slate attached to this gizmo
13
+ */
14
+ set attachedSlate(control) {
15
+ if (control) {
16
+ this.attachedMesh = control.mesh;
17
+ this.updateBoundingBox();
18
+ this._pickedPointObserver = control._host.onPickingObservable.add((pickedMesh) => {
19
+ if (this._handleHovered && (!pickedMesh || pickedMesh.parent !== this._handleHovered.node)) {
20
+ this._handleHovered.hover = false;
21
+ this._handleHovered = null;
22
+ }
23
+ if (pickedMesh && pickedMesh.parent && pickedMesh.parent.reservedDataStore && pickedMesh.parent.reservedDataStore.handle) {
24
+ const handle = pickedMesh.parent.reservedDataStore.handle;
25
+ if (handle.gizmo === this) {
26
+ this._handleHovered = handle;
27
+ this._handleHovered.hover = true;
28
+ }
29
+ }
30
+ });
31
+ }
32
+ else if (this._attachedSlate) {
33
+ this._attachedSlate._host.onPickingObservable.remove(this._pickedPointObserver);
34
+ }
35
+ this._attachedSlate = control;
36
+ }
37
+ get attachedSlate() {
38
+ return this._attachedSlate;
39
+ }
40
+ constructor(utilityLayer) {
41
+ super(utilityLayer);
42
+ this._boundingDimensions = new Vector3(0, 0, 0);
43
+ this._renderObserver = null;
44
+ this._tmpQuaternion = new Quaternion();
45
+ this._tmpVector = new Vector3(0, 0, 0);
46
+ // Ordered bl, br, tr, tl
47
+ this._corners = [];
48
+ // Ordered left, bottom, right, top
49
+ this._sides = [];
50
+ this._boundingBoxGizmo = {
51
+ min: new Vector3(),
52
+ max: new Vector3(),
53
+ };
54
+ /**
55
+ * Value we use to offset handles from mesh
56
+ */
57
+ this._margin = 0.35;
58
+ this._handleSize = 0.075;
59
+ this._attachedSlate = null;
60
+ this._existingSlateScale = new Vector3();
61
+ /**
62
+ * If set, the handles will increase in size based on the distance away from the camera to have a consistent screen size (Default: true)
63
+ */
64
+ this.fixedScreenSize = false;
65
+ /**
66
+ * The distance away from the object which the draggable meshes should appear world sized when fixedScreenSize is set to true (default: 10)
67
+ */
68
+ this.fixedScreenSizeDistanceFactor = 10;
69
+ this._createNode();
70
+ this.updateScale = false;
71
+ this._renderObserver = this.gizmoLayer.originalScene.onBeforeRenderObservable.add(() => {
72
+ // Only update the bounding box if scaling has changed
73
+ if (this.attachedMesh && !this._existingSlateScale.equals(this.attachedMesh.scaling)) {
74
+ this.updateBoundingBox();
75
+ }
76
+ });
77
+ }
78
+ _createNode() {
79
+ this._handlesParent = new TransformNode("handlesParent", this.gizmoLayer.utilityLayerScene);
80
+ this._handlesParent.rotationQuaternion = Quaternion.Identity();
81
+ const masksCorners = [
82
+ {
83
+ dimensions: new Vector3(-1, -1, 0),
84
+ origin: new Vector3(1, 0, 0),
85
+ },
86
+ {
87
+ dimensions: new Vector3(1, -1, 0),
88
+ origin: new Vector3(0, 0, 0),
89
+ },
90
+ {
91
+ dimensions: new Vector3(1, 1, 0),
92
+ origin: new Vector3(0, 1, 0),
93
+ },
94
+ {
95
+ dimensions: new Vector3(-1, 1, 0),
96
+ origin: new Vector3(1, 1, 0),
97
+ },
98
+ ];
99
+ for (let i = 0; i < 4; i++) {
100
+ const corner = new CornerHandle(this, this.gizmoLayer.utilityLayerScene);
101
+ this._corners.push(corner);
102
+ corner.node.rotation.z = (Math.PI / 2) * i;
103
+ corner.node.parent = this._handlesParent;
104
+ this._assignDragBehaviorCorners(corner, (originStart, dimensionsStart, offset, masks) => this._moveHandle(originStart, dimensionsStart, offset, masks, true), masksCorners[i]);
105
+ }
106
+ for (let i = 0; i < 4; i++) {
107
+ const side = new SideHandle(this, this.gizmoLayer.utilityLayerScene);
108
+ this._sides.push(side);
109
+ side.node.rotation.z = (Math.PI / 2) * i;
110
+ side.node.parent = this._handlesParent;
111
+ this._assignDragBehaviorSides(side, i % 2 === 0 ? new Vector3(0, 1, 0) : new Vector3(1, 0, 0));
112
+ }
113
+ this._handlesParent.parent = this._rootMesh;
114
+ }
115
+ _keepAspectRatio(vector, aspectRatio, invertDiagonal = false) {
116
+ const axis = TmpVectors.Vector3[0];
117
+ axis.copyFromFloats(aspectRatio, 1, 0).normalize();
118
+ if (invertDiagonal) {
119
+ axis.y *= -1;
120
+ }
121
+ const dot = Vector3.Dot(vector, axis);
122
+ vector.copyFrom(axis).scaleInPlace(dot);
123
+ }
124
+ _clampDimensions(vector, dimensions, mask, keepAspectRatio = false) {
125
+ const impact = TmpVectors.Vector3[0];
126
+ impact.copyFrom(vector).multiplyInPlace(mask);
127
+ const clampedDimensions = TmpVectors.Vector3[1];
128
+ clampedDimensions.copyFromFloats(Math.max(this._attachedSlate.minDimensions.x, impact.x + dimensions.x), Math.max(this._attachedSlate.minDimensions.y, impact.y + dimensions.y), 0);
129
+ if (keepAspectRatio) {
130
+ // Extra logic to ensure the ratio is maintained when the vector has been clamped
131
+ const ratio = dimensions.x / dimensions.y;
132
+ clampedDimensions.x = Math.max(clampedDimensions.x, clampedDimensions.y * ratio);
133
+ clampedDimensions.y = Math.max(clampedDimensions.y, clampedDimensions.x / ratio);
134
+ }
135
+ // Calculating the real impact of vector on clamped dimensions
136
+ impact.copyFrom(clampedDimensions).subtractInPlace(dimensions);
137
+ vector.x = Math.sign(vector.x) * Math.abs(impact.x);
138
+ vector.y = Math.sign(vector.y) * Math.abs(impact.y);
139
+ }
140
+ _moveHandle(originStart, dimensionsStart, offset, masks, isCorner) {
141
+ if (!this._attachedSlate) {
142
+ return;
143
+ }
144
+ if (isCorner) {
145
+ const aspectRatio = dimensionsStart.x / dimensionsStart.y;
146
+ this._keepAspectRatio(offset, aspectRatio, masks.dimensions.x * masks.dimensions.y < 0);
147
+ }
148
+ this._clampDimensions(offset, dimensionsStart, masks.dimensions, isCorner);
149
+ const offsetOriginMasked = TmpVectors.Vector3[0];
150
+ const offsetDimensionsMasked = TmpVectors.Vector3[1];
151
+ offsetOriginMasked.copyFrom(offset).multiplyInPlace(masks.origin);
152
+ offsetDimensionsMasked.copyFrom(offset).multiplyInPlace(masks.dimensions);
153
+ this._attachedSlate.origin.copyFrom(originStart).addInPlace(offsetOriginMasked);
154
+ this._attachedSlate.dimensions.set(dimensionsStart.x + offsetDimensionsMasked.x, dimensionsStart.y + offsetDimensionsMasked.y);
155
+ }
156
+ _assignDragBehaviorCorners(handle, moveFn, masks) {
157
+ const dimensionsStart = new Vector3();
158
+ const originStart = new Vector3();
159
+ const dragOrigin = new Vector3();
160
+ const toObjectFrame = new Matrix();
161
+ const dragPlaneNormal = new Vector3();
162
+ const projectToRef = (position, normal, origin, ref) => {
163
+ // Projects on the plane with its normal and origin
164
+ position.subtractToRef(origin, TmpVectors.Vector3[0]);
165
+ const dot = Vector3.Dot(TmpVectors.Vector3[0], normal);
166
+ TmpVectors.Vector3[1].copyFrom(normal).scaleInPlace(dot);
167
+ TmpVectors.Vector3[0].subtractInPlace(TmpVectors.Vector3[1]);
168
+ TmpVectors.Vector3[0].addToRef(origin, ref);
169
+ };
170
+ const dragStart = (event) => {
171
+ if (this.attachedSlate && this.attachedMesh) {
172
+ dimensionsStart.set(this.attachedSlate.dimensions.x, this.attachedSlate.dimensions.y, Epsilon);
173
+ originStart.copyFrom(this.attachedSlate.origin);
174
+ dragOrigin.copyFrom(event.position);
175
+ toObjectFrame.copyFrom(this.attachedMesh.computeWorldMatrix(true));
176
+ toObjectFrame.invert();
177
+ this.attachedSlate._followButton.isToggled = false;
178
+ Vector3.TransformNormalToRef(Vector3.Forward(), this.attachedMesh.getWorldMatrix(), dragPlaneNormal);
179
+ dragPlaneNormal.normalize();
180
+ if (this._handleHovered) {
181
+ this._handleDragged = this._handleHovered;
182
+ this._handleDragged.drag = true;
183
+ }
184
+ }
185
+ };
186
+ const dragging = (event) => {
187
+ if (this.attachedSlate && this.attachedMesh) {
188
+ projectToRef(event.position, dragPlaneNormal, dragOrigin, this._tmpVector);
189
+ this._tmpVector.subtractInPlace(dragOrigin);
190
+ Vector3.TransformNormalToRef(this._tmpVector, toObjectFrame, this._tmpVector);
191
+ moveFn(originStart, dimensionsStart, this._tmpVector, masks);
192
+ this.attachedSlate._positionElements();
193
+ this.updateBoundingBox();
194
+ }
195
+ };
196
+ const dragEnd = () => {
197
+ if (this.attachedSlate && this.attachedNode) {
198
+ this.attachedSlate._updatePivot();
199
+ if (this._handleDragged) {
200
+ this._handleDragged.drag = false;
201
+ this._handleDragged = null;
202
+ }
203
+ }
204
+ };
205
+ handle.setDragBehavior(dragStart, dragging, dragEnd);
206
+ }
207
+ _assignDragBehaviorSides(handle, dragPlaneNormal) {
208
+ const quaternionOrigin = new Quaternion();
209
+ const dragOrigin = new Vector3();
210
+ const directionOrigin = new Vector3();
211
+ const worldPivot = new Vector3();
212
+ const worldPlaneNormal = new Vector3();
213
+ const dragStart = (event) => {
214
+ if (this.attachedSlate && this.attachedMesh) {
215
+ quaternionOrigin.copyFrom(this.attachedMesh.rotationQuaternion);
216
+ dragOrigin.copyFrom(event.position);
217
+ worldPivot.copyFrom(this.attachedMesh.getAbsolutePivotPoint());
218
+ directionOrigin.copyFrom(dragOrigin).subtractInPlace(worldPivot).normalize();
219
+ this.attachedSlate._followButton.isToggled = false;
220
+ Vector3.TransformNormalToRef(dragPlaneNormal, this.attachedMesh.getWorldMatrix(), worldPlaneNormal);
221
+ worldPlaneNormal.normalize();
222
+ if (this._handleHovered) {
223
+ this._handleDragged = this._handleHovered;
224
+ this._handleDragged.drag = true;
225
+ }
226
+ }
227
+ };
228
+ const dragging = (event) => {
229
+ if (this.attachedSlate && this.attachedMesh) {
230
+ this._tmpVector.copyFrom(event.position);
231
+ this._tmpVector.subtractInPlace(worldPivot);
232
+ this._tmpVector.normalize();
233
+ const angle = -Vector3.GetAngleBetweenVectorsOnPlane(this._tmpVector, directionOrigin, worldPlaneNormal);
234
+ Quaternion.RotationAxisToRef(dragPlaneNormal, angle, this._tmpQuaternion);
235
+ quaternionOrigin.multiplyToRef(this._tmpQuaternion, this.attachedMesh.rotationQuaternion);
236
+ }
237
+ };
238
+ const dragEnd = () => {
239
+ if (this.attachedSlate && this.attachedNode) {
240
+ this.attachedSlate._updatePivot();
241
+ if (this._handleDragged) {
242
+ this._handleDragged.drag = false;
243
+ this._handleDragged = null;
244
+ }
245
+ }
246
+ };
247
+ handle.setDragBehavior(dragStart, dragging, dragEnd);
248
+ }
249
+ _attachedNodeChanged(value) {
250
+ if (value) {
251
+ this.updateBoundingBox();
252
+ }
253
+ }
254
+ /**
255
+ * Updates the bounding box information for the gizmo
256
+ */
257
+ updateBoundingBox() {
258
+ if (this.attachedMesh) {
259
+ PivotTools._RemoveAndStorePivotPoint(this.attachedMesh);
260
+ // Store original parent
261
+ const originalParent = this.attachedMesh.parent;
262
+ this.attachedMesh.setParent(null);
263
+ this._update();
264
+ // Rotate based on axis
265
+ if (!this.attachedMesh.rotationQuaternion) {
266
+ this.attachedMesh.rotationQuaternion = Quaternion.RotationYawPitchRoll(this.attachedMesh.rotation.y, this.attachedMesh.rotation.x, this.attachedMesh.rotation.z);
267
+ }
268
+ // Store original position and reset mesh to origin before computing the bounding box
269
+ this._tmpQuaternion.copyFrom(this.attachedMesh.rotationQuaternion);
270
+ this._tmpVector.copyFrom(this.attachedMesh.position);
271
+ this.attachedMesh.rotationQuaternion.set(0, 0, 0, 1);
272
+ this.attachedMesh.position.set(0, 0, 0);
273
+ // Update bounding dimensions/positions
274
+ const boundingMinMax = this.attachedMesh.getHierarchyBoundingVectors();
275
+ boundingMinMax.max.subtractToRef(boundingMinMax.min, this._boundingDimensions);
276
+ this._boundingBoxGizmo.min = boundingMinMax.min;
277
+ this._boundingBoxGizmo.max = boundingMinMax.max;
278
+ // Update handles of the gizmo
279
+ this._updateHandlesPosition();
280
+ this._updateHandlesScaling();
281
+ // Restore position/rotation values
282
+ this.attachedMesh.rotationQuaternion.copyFrom(this._tmpQuaternion);
283
+ this.attachedMesh.position.copyFrom(this._tmpVector);
284
+ PivotTools._RestorePivotPoint(this.attachedMesh);
285
+ // Restore original parent
286
+ this.attachedMesh.setParent(originalParent);
287
+ this.attachedMesh.computeWorldMatrix(true);
288
+ this._existingSlateScale.copyFrom(this.attachedMesh.scaling);
289
+ }
290
+ }
291
+ _updateHandlesPosition() {
292
+ const min = this._boundingBoxGizmo.min.clone();
293
+ const max = this._boundingBoxGizmo.max.clone();
294
+ const handleScaling = this._corners[0].node.scaling.length();
295
+ min.x -= this._margin * handleScaling;
296
+ min.y -= this._margin * handleScaling;
297
+ max.x += this._margin * handleScaling;
298
+ max.y += this._margin * handleScaling;
299
+ const center = min.add(max).scaleInPlace(0.5);
300
+ this._corners[0].node.position.copyFromFloats(min.x, min.y, 0);
301
+ this._corners[1].node.position.copyFromFloats(max.x, min.y, 0);
302
+ this._corners[2].node.position.copyFromFloats(max.x, max.y, 0);
303
+ this._corners[3].node.position.copyFromFloats(min.x, max.y, 0);
304
+ this._sides[0].node.position.copyFromFloats(min.x, center.y, 0);
305
+ this._sides[1].node.position.copyFromFloats(center.x, min.y, 0);
306
+ this._sides[2].node.position.copyFromFloats(max.x, center.y, 0);
307
+ this._sides[3].node.position.copyFromFloats(center.x, max.y, 0);
308
+ }
309
+ _updateHandlesScaling() {
310
+ if (this._attachedSlate && this._attachedSlate.mesh) {
311
+ const scaledWidth = this._attachedSlate.mesh.scaling.x * this._attachedSlate.dimensions.x;
312
+ const scaledHeight = this._attachedSlate.mesh.scaling.y * this._attachedSlate.dimensions.y;
313
+ const scale = Math.min(scaledWidth, scaledHeight) * this._handleSize;
314
+ for (let index = 0; index < this._corners.length; index++) {
315
+ this._corners[index].node.scaling.setAll(scale);
316
+ }
317
+ for (let index = 0; index < this._sides.length; index++) {
318
+ this._sides[index].node.scaling.setAll(scale);
319
+ }
320
+ }
321
+ }
322
+ _update() {
323
+ super._update();
324
+ if (!this.gizmoLayer.utilityLayerScene.activeCamera) {
325
+ return;
326
+ }
327
+ if (this._attachedSlate && this._attachedSlate.mesh) {
328
+ if (this.fixedScreenSize) {
329
+ this._attachedSlate.mesh.absolutePosition.subtractToRef(this.gizmoLayer.utilityLayerScene.activeCamera.position, this._tmpVector);
330
+ const distanceFromCamera = (this._handleSize * this._tmpVector.length()) / this.fixedScreenSizeDistanceFactor;
331
+ for (let i = 0; i < this._corners.length; i++) {
332
+ this._corners[i].node.scaling.set(distanceFromCamera, distanceFromCamera, distanceFromCamera);
333
+ }
334
+ for (let i = 0; i < this._sides.length; i++) {
335
+ this._sides[i].node.scaling.set(distanceFromCamera, distanceFromCamera, distanceFromCamera);
336
+ }
337
+ }
338
+ this._updateHandlesPosition();
339
+ }
340
+ }
341
+ dispose() {
342
+ this.gizmoLayer.originalScene.onBeforeRenderObservable.remove(this._renderObserver);
343
+ // Will dispose rootMesh and all descendants
344
+ super.dispose();
345
+ for (const corner of this._corners) {
346
+ corner.dispose();
347
+ }
348
+ for (const side of this._sides) {
349
+ side.dispose();
350
+ }
351
+ }
352
+ }
353
+ //# sourceMappingURL=slateGizmo.js.map