@babylonjs/gui 5.0.0-alpha.8 → 5.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/2D/adtInstrumentation.js +1 -1
  2. package/2D/advancedDynamicTexture.d.ts +178 -127
  3. package/2D/advancedDynamicTexture.js +368 -183
  4. package/2D/advancedDynamicTexture.js.map +1 -1
  5. package/2D/controls/button.d.ts +8 -0
  6. package/2D/controls/button.js +33 -10
  7. package/2D/controls/button.js.map +1 -1
  8. package/2D/controls/checkbox.d.ts +2 -1
  9. package/2D/controls/checkbox.js +10 -8
  10. package/2D/controls/checkbox.js.map +1 -1
  11. package/2D/controls/colorpicker.d.ts +4 -3
  12. package/2D/controls/colorpicker.js +40 -23
  13. package/2D/controls/colorpicker.js.map +1 -1
  14. package/2D/controls/container.d.ts +16 -5
  15. package/2D/controls/container.js +99 -15
  16. package/2D/controls/container.js.map +1 -1
  17. package/2D/controls/control.d.ts +115 -47
  18. package/2D/controls/control.js +318 -139
  19. package/2D/controls/control.js.map +1 -1
  20. package/2D/controls/displayGrid.d.ts +2 -1
  21. package/2D/controls/displayGrid.js +6 -6
  22. package/2D/controls/displayGrid.js.map +1 -1
  23. package/2D/controls/ellipse.d.ts +5 -3
  24. package/2D/controls/ellipse.js +9 -5
  25. package/2D/controls/ellipse.js.map +1 -1
  26. package/2D/controls/focusableButton.d.ts +1 -0
  27. package/2D/controls/focusableButton.js +9 -6
  28. package/2D/controls/focusableButton.js.map +1 -1
  29. package/2D/controls/grid.d.ts +13 -2
  30. package/2D/controls/grid.js +117 -33
  31. package/2D/controls/grid.js.map +1 -1
  32. package/2D/controls/image.d.ts +5 -4
  33. package/2D/controls/image.js +52 -31
  34. package/2D/controls/image.js.map +1 -1
  35. package/2D/controls/index.js +29 -29
  36. package/2D/controls/inputPassword.js +4 -4
  37. package/2D/controls/inputPassword.js.map +1 -1
  38. package/2D/controls/inputText.d.ts +2 -1
  39. package/2D/controls/inputText.js +40 -14
  40. package/2D/controls/inputText.js.map +1 -1
  41. package/2D/controls/line.d.ts +3 -2
  42. package/2D/controls/line.js +8 -8
  43. package/2D/controls/line.js.map +1 -1
  44. package/2D/controls/multiLine.d.ts +4 -3
  45. package/2D/controls/multiLine.js +6 -6
  46. package/2D/controls/multiLine.js.map +1 -1
  47. package/2D/controls/radioButton.d.ts +2 -1
  48. package/2D/controls/radioButton.js +10 -7
  49. package/2D/controls/radioButton.js.map +1 -1
  50. package/2D/controls/rectangle.d.ts +8 -3
  51. package/2D/controls/rectangle.js +21 -5
  52. package/2D/controls/rectangle.js.map +1 -1
  53. package/2D/controls/scrollViewers/scrollViewer.d.ts +3 -2
  54. package/2D/controls/scrollViewers/scrollViewer.js +9 -9
  55. package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
  56. package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +4 -3
  57. package/2D/controls/scrollViewers/scrollViewerWindow.js +4 -4
  58. package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
  59. package/2D/controls/selector.js +8 -8
  60. package/2D/controls/selector.js.map +1 -1
  61. package/2D/controls/sliders/baseSlider.d.ts +1 -1
  62. package/2D/controls/sliders/baseSlider.js +12 -10
  63. package/2D/controls/sliders/baseSlider.js.map +1 -1
  64. package/2D/controls/sliders/imageBasedSlider.d.ts +10 -1
  65. package/2D/controls/sliders/imageBasedSlider.js +29 -5
  66. package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
  67. package/2D/controls/sliders/imageScrollBar.d.ts +2 -1
  68. package/2D/controls/sliders/imageScrollBar.js +3 -3
  69. package/2D/controls/sliders/imageScrollBar.js.map +1 -1
  70. package/2D/controls/sliders/scrollBar.d.ts +2 -1
  71. package/2D/controls/sliders/scrollBar.js +3 -3
  72. package/2D/controls/sliders/scrollBar.js.map +1 -1
  73. package/2D/controls/sliders/slider.d.ts +2 -1
  74. package/2D/controls/sliders/slider.js +4 -4
  75. package/2D/controls/sliders/slider.js.map +1 -1
  76. package/2D/controls/stackPanel.d.ts +10 -3
  77. package/2D/controls/stackPanel.js +37 -15
  78. package/2D/controls/stackPanel.js.map +1 -1
  79. package/2D/controls/statics.js +3 -3
  80. package/2D/controls/statics.js.map +1 -1
  81. package/2D/controls/textBlock.d.ts +16 -9
  82. package/2D/controls/textBlock.js +76 -35
  83. package/2D/controls/textBlock.js.map +1 -1
  84. package/2D/controls/textWrapper.js +2 -2
  85. package/2D/controls/textWrapper.js.map +1 -1
  86. package/2D/controls/toggleButton.d.ts +1 -13
  87. package/2D/controls/toggleButton.js +29 -38
  88. package/2D/controls/toggleButton.js.map +1 -1
  89. package/2D/controls/virtualKeyboard.js +5 -5
  90. package/2D/controls/virtualKeyboard.js.map +1 -1
  91. package/2D/index.d.ts +1 -1
  92. package/2D/index.js +9 -9
  93. package/2D/index.js.map +1 -1
  94. package/2D/math2D.d.ts +5 -0
  95. package/2D/math2D.js +14 -2
  96. package/2D/math2D.js.map +1 -1
  97. package/2D/measure.js +1 -1
  98. package/2D/measure.js.map +1 -1
  99. package/2D/multiLinePoint.js +3 -3
  100. package/2D/style.js +2 -2
  101. package/2D/valueAndUnit.d.ts +21 -6
  102. package/2D/valueAndUnit.js +57 -13
  103. package/2D/valueAndUnit.js.map +1 -1
  104. package/2D/xmlLoader.d.ts +17 -3
  105. package/2D/xmlLoader.js +54 -15
  106. package/2D/xmlLoader.js.map +1 -1
  107. package/3D/behaviors/defaultBehavior.d.ts +73 -0
  108. package/3D/behaviors/defaultBehavior.js +122 -0
  109. package/3D/behaviors/defaultBehavior.js.map +1 -0
  110. package/3D/controls/abstractButton3D.d.ts +2 -2
  111. package/3D/controls/abstractButton3D.js +3 -3
  112. package/3D/controls/abstractButton3D.js.map +1 -1
  113. package/3D/controls/button3D.d.ts +0 -24
  114. package/3D/controls/button3D.js +15 -84
  115. package/3D/controls/button3D.js.map +1 -1
  116. package/3D/controls/container3D.js +2 -2
  117. package/3D/controls/contentDisplay3D.d.ts +30 -0
  118. package/3D/controls/contentDisplay3D.js +79 -0
  119. package/3D/controls/contentDisplay3D.js.map +1 -0
  120. package/3D/controls/control3D.d.ts +10 -7
  121. package/3D/controls/control3D.js +27 -19
  122. package/3D/controls/control3D.js.map +1 -1
  123. package/3D/controls/cylinderPanel.js +5 -5
  124. package/3D/controls/handMenu.d.ts +28 -0
  125. package/3D/controls/handMenu.js +48 -0
  126. package/3D/controls/handMenu.js.map +1 -0
  127. package/3D/controls/holographicBackplate.d.ts +48 -0
  128. package/3D/controls/holographicBackplate.js +121 -0
  129. package/3D/controls/holographicBackplate.js.map +1 -0
  130. package/3D/controls/holographicButton.d.ts +1 -1
  131. package/3D/controls/holographicButton.js +35 -31
  132. package/3D/controls/holographicButton.js.map +1 -1
  133. package/3D/controls/holographicSlate.d.ts +120 -0
  134. package/3D/controls/holographicSlate.js +372 -0
  135. package/3D/controls/holographicSlate.js.map +1 -0
  136. package/3D/controls/index.d.ts +6 -0
  137. package/3D/controls/index.js +21 -15
  138. package/3D/controls/index.js.map +1 -1
  139. package/3D/controls/meshButton3D.js +2 -2
  140. package/3D/controls/meshButton3D.js.map +1 -1
  141. package/3D/controls/nearMenu.d.ts +44 -0
  142. package/3D/controls/nearMenu.js +113 -0
  143. package/3D/controls/nearMenu.js.map +1 -0
  144. package/3D/controls/planePanel.js +3 -3
  145. package/3D/controls/scatterPanel.js +4 -4
  146. package/3D/controls/slider3D.d.ts +80 -0
  147. package/3D/controls/slider3D.js +268 -0
  148. package/3D/controls/slider3D.js.map +1 -0
  149. package/3D/controls/spherePanel.js +5 -5
  150. package/3D/controls/stackPanel3D.js +3 -3
  151. package/3D/controls/touchButton3D.d.ts +30 -21
  152. package/3D/controls/touchButton3D.js +127 -228
  153. package/3D/controls/touchButton3D.js.map +1 -1
  154. package/3D/controls/touchHolographicButton.d.ts +23 -2
  155. package/3D/controls/touchHolographicButton.js +162 -67
  156. package/3D/controls/touchHolographicButton.js.map +1 -1
  157. package/3D/controls/touchHolographicMenu.d.ts +61 -0
  158. package/3D/controls/touchHolographicMenu.js +149 -0
  159. package/3D/controls/touchHolographicMenu.js.map +1 -0
  160. package/3D/controls/touchMeshButton3D.d.ts +3 -6
  161. package/3D/controls/touchMeshButton3D.js +6 -14
  162. package/3D/controls/touchMeshButton3D.js.map +1 -1
  163. package/3D/controls/volumeBasedPanel.d.ts +1 -1
  164. package/3D/controls/volumeBasedPanel.js +5 -5
  165. package/3D/controls/volumeBasedPanel.js.map +1 -1
  166. package/3D/gizmos/gizmoHandle.d.ts +108 -0
  167. package/3D/gizmos/gizmoHandle.js +210 -0
  168. package/3D/gizmos/gizmoHandle.js.map +1 -0
  169. package/3D/gizmos/index.d.ts +2 -0
  170. package/3D/gizmos/index.js +3 -0
  171. package/3D/gizmos/index.js.map +1 -0
  172. package/3D/gizmos/slateGizmo.d.ts +59 -0
  173. package/3D/gizmos/slateGizmo.js +364 -0
  174. package/3D/gizmos/slateGizmo.js.map +1 -0
  175. package/3D/gui3DManager.d.ts +15 -2
  176. package/3D/gui3DManager.js +62 -41
  177. package/3D/gui3DManager.js.map +1 -1
  178. package/3D/index.d.ts +3 -2
  179. package/3D/index.js +5 -4
  180. package/3D/index.js.map +1 -1
  181. package/3D/materials/fluent/fluentMaterial.d.ts +90 -0
  182. package/3D/materials/fluent/fluentMaterial.js +282 -0
  183. package/3D/materials/fluent/fluentMaterial.js.map +1 -0
  184. package/3D/materials/fluent/index.d.ts +1 -0
  185. package/3D/materials/fluent/index.js +2 -0
  186. package/3D/materials/fluent/index.js.map +1 -0
  187. package/3D/materials/{shaders → fluent/shaders}/fluent.fragment.d.ts +0 -0
  188. package/3D/materials/fluent/shaders/fluent.fragment.js +7 -0
  189. package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -0
  190. package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.d.ts +0 -0
  191. package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.js +2 -2
  192. package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -0
  193. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +154 -0
  194. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +435 -0
  195. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -0
  196. package/3D/materials/fluentBackplate/index.d.ts +1 -0
  197. package/3D/materials/fluentBackplate/index.js +2 -0
  198. package/3D/materials/fluentBackplate/index.js.map +1 -0
  199. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -0
  200. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +7 -0
  201. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -0
  202. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -0
  203. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +7 -0
  204. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -0
  205. package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +189 -0
  206. package/3D/materials/fluentButton/fluentButtonMaterial.js +538 -0
  207. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -0
  208. package/3D/materials/fluentButton/index.d.ts +1 -0
  209. package/3D/materials/fluentButton/index.js +2 -0
  210. package/3D/materials/fluentButton/index.js.map +1 -0
  211. package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -0
  212. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +7 -0
  213. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -0
  214. package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -0
  215. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +7 -0
  216. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -0
  217. package/3D/materials/fluentMaterial.d.ts +2 -88
  218. package/3D/materials/fluentMaterial.js +2 -277
  219. package/3D/materials/fluentMaterial.js.map +1 -1
  220. package/3D/materials/handle/handleMaterial.d.ts +68 -0
  221. package/3D/materials/handle/handleMaterial.js +127 -0
  222. package/3D/materials/handle/handleMaterial.js.map +1 -0
  223. package/3D/materials/handle/index.d.ts +1 -0
  224. package/3D/materials/handle/index.js +2 -0
  225. package/3D/materials/handle/index.js.map +1 -0
  226. package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -0
  227. package/3D/materials/handle/shaders/handle.fragment.js +7 -0
  228. package/3D/materials/handle/shaders/handle.fragment.js.map +1 -0
  229. package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -0
  230. package/3D/materials/handle/shaders/handle.vertex.js +7 -0
  231. package/3D/materials/handle/shaders/handle.vertex.js.map +1 -0
  232. package/3D/materials/index.d.ts +5 -1
  233. package/3D/materials/index.js +5 -1
  234. package/3D/materials/index.js.map +1 -1
  235. package/3D/materials/mrdl/index.d.ts +3 -0
  236. package/3D/materials/mrdl/index.js +4 -0
  237. package/3D/materials/mrdl/index.js.map +1 -0
  238. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +147 -0
  239. package/3D/materials/mrdl/mrdlBackplateMaterial.js +410 -0
  240. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -0
  241. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +333 -0
  242. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +787 -0
  243. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -0
  244. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +333 -0
  245. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +787 -0
  246. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -0
  247. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -0
  248. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +7 -0
  249. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -0
  250. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -0
  251. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +7 -0
  252. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -0
  253. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -0
  254. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +7 -0
  255. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -0
  256. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -0
  257. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +7 -0
  258. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -0
  259. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -0
  260. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +7 -0
  261. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -0
  262. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -0
  263. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +7 -0
  264. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -0
  265. package/3D/vector3WithInfo.js +1 -1
  266. package/index.d.ts +2 -2
  267. package/index.js +2 -2
  268. package/index.js.map +1 -1
  269. package/legacy/legacy.js +2 -2
  270. package/package.json +114 -9
  271. package/3D/materials/shaders/fluent.fragment.js +0 -7
  272. package/3D/materials/shaders/fluent.fragment.js.map +0 -1
  273. package/3D/materials/shaders/fluent.vertex.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slateGizmo.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/gizmos/slateGizmo.ts"],"names":[],"mappings":"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","sourcesContent":["import { Gizmo } from \"@babylonjs/core/Gizmos/gizmo\";\r\nimport { Epsilon } from \"@babylonjs/core/Maths/math.constants\";\r\nimport { Matrix, Quaternion, TmpVectors, Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { Observer } from \"@babylonjs/core/Misc/observable\";\r\nimport { PivotTools } from \"@babylonjs/core/Misc/pivotTools\";\r\nimport { UtilityLayerRenderer } from \"@babylonjs/core/Rendering/utilityLayerRenderer\";\r\nimport { Nullable } from \"@babylonjs/core/types\";\r\n\r\nimport { HolographicSlate } from \"../controls/holographicSlate\";\r\nimport { CornerHandle, GizmoHandle, SideHandle } from \"./gizmoHandle\";\r\n\r\n// Mask contains the influence of the drag offset vectors on dimensions or origin of the slate\r\n// Mask vector is multiplied to the offset vector\r\ntype HandleMasks = {\r\n dimensions: Vector3;\r\n origin: Vector3;\r\n};\r\n\r\n/**\r\n * Gizmo to resize 2D slates\r\n */\r\nexport class SlateGizmo extends Gizmo {\r\n private _boundingDimensions = new Vector3(0, 0, 0);\r\n private _pickedPointObserver: Nullable<Observer<Nullable<AbstractMesh>>>;\r\n private _renderObserver: Nullable<Observer<Scene>> = null;\r\n\r\n private _tmpQuaternion = new Quaternion();\r\n private _tmpVector = new Vector3(0, 0, 0);\r\n\r\n // Ordered bl, br, tr, tl\r\n private _corners: CornerHandle[] = [];\r\n // Ordered left, bottom, right, top\r\n private _sides: SideHandle[] = [];\r\n private _handlesParent: TransformNode;\r\n private _handleHovered: Nullable<GizmoHandle>;\r\n private _handleDragged: Nullable<GizmoHandle>;\r\n\r\n private _boundingBoxGizmo = {\r\n min: new Vector3(),\r\n max: new Vector3(),\r\n };\r\n\r\n /**\r\n * Value we use to offset handles from mesh\r\n */\r\n private _margin = 0.35;\r\n private _attachedSlate: Nullable<HolographicSlate> = null;\r\n private _existingSlateScale = new Vector3();\r\n /**\r\n * If set, the handles will increase in size based on the distance away from the camera to have a consistent screen size (Default: true)\r\n */\r\n public fixedScreenSize = false;\r\n /**\r\n * The distance away from the object which the draggable meshes should appear world sized when fixedScreenSize is set to true (default: 10)\r\n */\r\n public fixedScreenSizeDistanceFactor = 10;\r\n\r\n /**\r\n * Size of the handles (meters in XR)\r\n */\r\n public handleSize = 0.01;\r\n\r\n /**\r\n * The slate attached to this gizmo\r\n */\r\n public set attachedSlate(control: Nullable<HolographicSlate>) {\r\n if (control) {\r\n this.attachedMesh = control.mesh;\r\n this.updateBoundingBox();\r\n\r\n this._pickedPointObserver = control._host.onPickingObservable.add((pickedMesh) => {\r\n if (this._handleHovered && (!pickedMesh || pickedMesh.parent !== this._handleHovered.node)) {\r\n this._handleHovered.hover = false;\r\n this._handleHovered = null;\r\n }\r\n\r\n if (pickedMesh && pickedMesh.parent && pickedMesh.parent.reservedDataStore && pickedMesh.parent.reservedDataStore.handle) {\r\n const handle = pickedMesh.parent.reservedDataStore.handle as GizmoHandle;\r\n if (handle.gizmo === this) {\r\n this._handleHovered = handle;\r\n this._handleHovered.hover = true;\r\n }\r\n }\r\n });\r\n } else if (this._attachedSlate) {\r\n this._attachedSlate._host.onPickingObservable.remove(this._pickedPointObserver);\r\n }\r\n this._attachedSlate = control;\r\n }\r\n\r\n public get attachedSlate(): Nullable<HolographicSlate> {\r\n return this._attachedSlate;\r\n }\r\n\r\n constructor(utilityLayer?: UtilityLayerRenderer) {\r\n super(utilityLayer);\r\n\r\n this._createNode();\r\n this.updateScale = false;\r\n\r\n this._renderObserver = this.gizmoLayer.originalScene.onBeforeRenderObservable.add(() => {\r\n // Only update the bounding box if scaling has changed\r\n if (this.attachedMesh && !this._existingSlateScale.equals(this.attachedMesh.scaling)) {\r\n this.updateBoundingBox();\r\n }\r\n });\r\n }\r\n\r\n private _createNode() {\r\n this._handlesParent = new TransformNode(\"handlesParent\", this.gizmoLayer.utilityLayerScene);\r\n this._handlesParent.rotationQuaternion = Quaternion.Identity();\r\n\r\n const masksCorners = [\r\n {\r\n dimensions: new Vector3(-1, -1, 0),\r\n origin: new Vector3(1, 0, 0),\r\n },\r\n {\r\n dimensions: new Vector3(1, -1, 0),\r\n origin: new Vector3(0, 0, 0),\r\n },\r\n {\r\n dimensions: new Vector3(1, 1, 0),\r\n origin: new Vector3(0, 1, 0),\r\n },\r\n {\r\n dimensions: new Vector3(-1, 1, 0),\r\n origin: new Vector3(1, 1, 0),\r\n },\r\n ];\r\n\r\n for (let i = 0; i < 4; i++) {\r\n const corner = new CornerHandle(this, this.gizmoLayer.utilityLayerScene);\r\n this._corners.push(corner);\r\n corner.node.rotation.z = (Math.PI / 2) * i;\r\n corner.node.scaling.setAll(this.handleSize);\r\n\r\n corner.node.parent = this._handlesParent;\r\n this._assignDragBehaviorCorners(\r\n corner,\r\n (originStart: Vector3, dimensionsStart: Vector3, offset: Vector3, masks: HandleMasks) => this._moveHandle(originStart, dimensionsStart, offset, masks, true),\r\n masksCorners[i]\r\n );\r\n }\r\n\r\n for (let i = 0; i < 4; i++) {\r\n const side = new SideHandle(this, this.gizmoLayer.utilityLayerScene);\r\n this._sides.push(side);\r\n side.node.rotation.z = (Math.PI / 2) * i;\r\n side.node.scaling.copyFromFloats(this.handleSize, this.handleSize, this.handleSize);\r\n side.node.parent = this._handlesParent;\r\n this._assignDragBehaviorSides(side, i % 2 === 0 ? new Vector3(0, 1, 0) : new Vector3(1, 0, 0));\r\n }\r\n\r\n this._handlesParent.parent = this._rootMesh;\r\n }\r\n\r\n private _keepAspectRatio(vector: Vector3, aspectRatio: number, invertDiagonal: boolean = false) {\r\n const axis = TmpVectors.Vector3[0];\r\n axis.copyFromFloats(aspectRatio, 1, 0).normalize();\r\n if (invertDiagonal) {\r\n axis.y *= -1;\r\n }\r\n const dot = Vector3.Dot(vector, axis);\r\n vector.copyFrom(axis).scaleInPlace(dot);\r\n }\r\n\r\n private _clampDimensions(vector: Vector3, dimensions: Vector3, mask: Vector3, keepAspectRatio: boolean = false) {\r\n const impact = TmpVectors.Vector3[0];\r\n impact.copyFrom(vector).multiplyInPlace(mask);\r\n\r\n const clampedDimensions = TmpVectors.Vector3[1];\r\n clampedDimensions.copyFromFloats(\r\n Math.max(this._attachedSlate!.minDimensions.x, impact.x + dimensions.x),\r\n Math.max(this._attachedSlate!.minDimensions.y, impact.y + dimensions.y),\r\n 0\r\n );\r\n\r\n if (keepAspectRatio) {\r\n // Extra logic to ensure the ratio is maintained when the vector has been clamped\r\n const ratio = dimensions.x / dimensions.y;\r\n clampedDimensions.x = Math.max(clampedDimensions.x, clampedDimensions.y * ratio);\r\n clampedDimensions.y = Math.max(clampedDimensions.y, clampedDimensions.x / ratio);\r\n }\r\n\r\n // Calculating the real impact of vector on clamped dimensions\r\n impact.copyFrom(clampedDimensions).subtractInPlace(dimensions);\r\n\r\n vector.x = Math.sign(vector.x) * Math.abs(impact.x);\r\n vector.y = Math.sign(vector.y) * Math.abs(impact.y);\r\n }\r\n\r\n private _moveHandle(originStart: Vector3, dimensionsStart: Vector3, offset: Vector3, masks: HandleMasks, isCorner: boolean) {\r\n if (!this._attachedSlate) {\r\n return;\r\n }\r\n\r\n if (isCorner) {\r\n const aspectRatio = dimensionsStart.x / dimensionsStart.y;\r\n this._keepAspectRatio(offset, aspectRatio, masks.dimensions.x * masks.dimensions.y < 0);\r\n }\r\n this._clampDimensions(offset, dimensionsStart, masks.dimensions, isCorner);\r\n\r\n const offsetOriginMasked = TmpVectors.Vector3[0];\r\n const offsetDimensionsMasked = TmpVectors.Vector3[1];\r\n offsetOriginMasked.copyFrom(offset).multiplyInPlace(masks.origin);\r\n offsetDimensionsMasked.copyFrom(offset).multiplyInPlace(masks.dimensions);\r\n\r\n this._attachedSlate.origin.copyFrom(originStart).addInPlace(offsetOriginMasked);\r\n this._attachedSlate.dimensions.set(dimensionsStart.x + offsetDimensionsMasked.x, dimensionsStart.y + offsetDimensionsMasked.y);\r\n }\r\n\r\n private _assignDragBehaviorCorners(\r\n handle: GizmoHandle,\r\n moveFn: (originStart: Vector3, dimensionsStart: Vector3, offset: Vector3, masks: HandleMasks) => void,\r\n masks: HandleMasks\r\n ) {\r\n const dimensionsStart = new Vector3();\r\n const originStart = new Vector3();\r\n const dragOrigin = new Vector3();\r\n const toObjectFrame = new Matrix();\r\n const dragPlaneNormal = new Vector3();\r\n\r\n let previousFollowState = false;\r\n const projectToRef = (position: Vector3, normal: Vector3, origin: Vector3, ref: Vector3) => {\r\n // Projects on the plane with its normal and origin\r\n position.subtractToRef(origin, TmpVectors.Vector3[0]);\r\n const dot = Vector3.Dot(TmpVectors.Vector3[0], normal);\r\n TmpVectors.Vector3[1].copyFrom(normal).scaleInPlace(dot);\r\n TmpVectors.Vector3[0].subtractInPlace(TmpVectors.Vector3[1]);\r\n TmpVectors.Vector3[0].addToRef(origin, ref);\r\n };\r\n\r\n const dragStart = (event: { position: Vector3 }) => {\r\n if (this.attachedSlate && this.attachedMesh) {\r\n dimensionsStart.set(this.attachedSlate.dimensions.x, this.attachedSlate.dimensions.y, Epsilon);\r\n originStart.copyFrom(this.attachedSlate.origin);\r\n dragOrigin.copyFrom(event.position);\r\n toObjectFrame.copyFrom(this.attachedMesh.computeWorldMatrix(true));\r\n toObjectFrame.invert();\r\n previousFollowState = this.attachedSlate.defaultBehavior.followBehaviorEnabled;\r\n this.attachedSlate.defaultBehavior.followBehaviorEnabled = false;\r\n Vector3.TransformNormalToRef(Vector3.Forward(), this.attachedMesh.getWorldMatrix(), dragPlaneNormal);\r\n dragPlaneNormal.normalize();\r\n\r\n if (this._handleHovered) {\r\n this._handleDragged = this._handleHovered;\r\n this._handleDragged.drag = true;\r\n }\r\n }\r\n };\r\n\r\n const dragging = (event: { position: Vector3 }) => {\r\n if (this.attachedSlate && this.attachedMesh) {\r\n projectToRef(event.position, dragPlaneNormal, dragOrigin, this._tmpVector);\r\n this._tmpVector.subtractInPlace(dragOrigin);\r\n Vector3.TransformNormalToRef(this._tmpVector, toObjectFrame, this._tmpVector);\r\n\r\n moveFn(originStart, dimensionsStart, this._tmpVector, masks);\r\n this.attachedSlate._positionElements();\r\n this.updateBoundingBox();\r\n }\r\n };\r\n\r\n const dragEnd = () => {\r\n if (this.attachedSlate && this.attachedNode) {\r\n this.attachedSlate._updatePivot();\r\n this.attachedSlate.defaultBehavior.followBehaviorEnabled = previousFollowState;\r\n\r\n if (this._handleDragged) {\r\n this._handleDragged.drag = false;\r\n this._handleDragged = null;\r\n }\r\n }\r\n };\r\n\r\n handle.setDragBehavior(dragStart, dragging, dragEnd);\r\n }\r\n\r\n private _assignDragBehaviorSides(handle: GizmoHandle, dragPlaneNormal: Vector3) {\r\n let quaternionOrigin = new Quaternion();\r\n let dragOrigin = new Vector3();\r\n let directionOrigin = new Vector3();\r\n let worldPivot = new Vector3();\r\n let previousFollowState: boolean;\r\n let worldPlaneNormal = new Vector3();\r\n\r\n const dragStart = (event: { position: Vector3 }) => {\r\n if (this.attachedSlate && this.attachedMesh) {\r\n quaternionOrigin.copyFrom(this.attachedMesh.rotationQuaternion!);\r\n dragOrigin.copyFrom(event.position);\r\n previousFollowState = this.attachedSlate.defaultBehavior.followBehaviorEnabled;\r\n this.attachedSlate.defaultBehavior.followBehaviorEnabled = false;\r\n worldPivot.copyFrom(this.attachedMesh.getAbsolutePivotPoint());\r\n directionOrigin.copyFrom(dragOrigin).subtractInPlace(worldPivot).normalize();\r\n Vector3.TransformNormalToRef(dragPlaneNormal, this.attachedMesh.getWorldMatrix(), worldPlaneNormal);\r\n worldPlaneNormal.normalize();\r\n\r\n if (this._handleHovered) {\r\n this._handleDragged = this._handleHovered;\r\n this._handleDragged.drag = true;\r\n }\r\n }\r\n };\r\n\r\n const dragging = (event: { position: Vector3 }) => {\r\n if (this.attachedSlate && this.attachedMesh) {\r\n this._tmpVector.copyFrom(event.position);\r\n this._tmpVector.subtractInPlace(worldPivot);\r\n this._tmpVector.normalize();\r\n\r\n let angle = -Vector3.GetAngleBetweenVectorsOnPlane(this._tmpVector, directionOrigin, worldPlaneNormal);\r\n Quaternion.RotationAxisToRef(dragPlaneNormal, angle, this._tmpQuaternion);\r\n quaternionOrigin.multiplyToRef(this._tmpQuaternion, this.attachedMesh.rotationQuaternion!);\r\n }\r\n };\r\n\r\n const dragEnd = () => {\r\n if (this.attachedSlate && this.attachedNode) {\r\n this.attachedSlate._updatePivot();\r\n this.attachedSlate.defaultBehavior.followBehaviorEnabled = previousFollowState;\r\n\r\n if (this._handleDragged) {\r\n this._handleDragged.drag = false;\r\n this._handleDragged = null;\r\n }\r\n }\r\n };\r\n\r\n handle.setDragBehavior(dragStart, dragging, dragEnd);\r\n }\r\n\r\n protected _attachedNodeChanged(value: Nullable<AbstractMesh>) {\r\n if (value) {\r\n this.updateBoundingBox();\r\n }\r\n }\r\n\r\n /**\r\n * Updates the bounding box information for the gizmo\r\n */\r\n public updateBoundingBox() {\r\n if (this.attachedMesh) {\r\n PivotTools._RemoveAndStorePivotPoint(this.attachedMesh);\r\n\r\n // Store original parent\r\n const originalParent = this.attachedMesh.parent;\r\n this.attachedMesh.setParent(null);\r\n\r\n this._update();\r\n\r\n // Rotate based on axis\r\n if (!this.attachedMesh.rotationQuaternion) {\r\n this.attachedMesh.rotationQuaternion = Quaternion.RotationYawPitchRoll(this.attachedMesh.rotation.y, this.attachedMesh.rotation.x, this.attachedMesh.rotation.z);\r\n }\r\n\r\n // Store original position and reset mesh to origin before computing the bounding box\r\n this._tmpQuaternion.copyFrom(this.attachedMesh.rotationQuaternion);\r\n this._tmpVector.copyFrom(this.attachedMesh.position);\r\n this.attachedMesh.rotationQuaternion.set(0, 0, 0, 1);\r\n this.attachedMesh.position.set(0, 0, 0);\r\n\r\n // Update bounding dimensions/positions\r\n const boundingMinMax = this.attachedMesh.getHierarchyBoundingVectors();\r\n boundingMinMax.max.subtractToRef(boundingMinMax.min, this._boundingDimensions);\r\n this._boundingBoxGizmo.min = boundingMinMax.min;\r\n this._boundingBoxGizmo.max = boundingMinMax.max;\r\n\r\n // Update handles of the gizmo\r\n this._updateHandlesPosition();\r\n\r\n // Restore position/rotation values\r\n this.attachedMesh.rotationQuaternion.copyFrom(this._tmpQuaternion);\r\n this.attachedMesh.position.copyFrom(this._tmpVector);\r\n\r\n PivotTools._RestorePivotPoint(this.attachedMesh);\r\n\r\n // Restore original parent\r\n this.attachedMesh.setParent(originalParent);\r\n this.attachedMesh.computeWorldMatrix(true);\r\n\r\n this._existingSlateScale.copyFrom(this.attachedMesh.scaling);\r\n }\r\n }\r\n\r\n private _updateHandlesPosition() {\r\n const min = this._boundingBoxGizmo.min.clone();\r\n const max = this._boundingBoxGizmo.max.clone();\r\n\r\n const handleScaling = this._corners[0].node.scaling.length();\r\n min.x -= this._margin * handleScaling;\r\n min.y -= this._margin * handleScaling;\r\n max.x += this._margin * handleScaling;\r\n max.y += this._margin * handleScaling;\r\n\r\n const center = min.add(max).scaleInPlace(0.5);\r\n\r\n this._corners[0].node.position.copyFromFloats(min.x, min.y, 0);\r\n this._corners[1].node.position.copyFromFloats(max.x, min.y, 0);\r\n this._corners[2].node.position.copyFromFloats(max.x, max.y, 0);\r\n this._corners[3].node.position.copyFromFloats(min.x, max.y, 0);\r\n\r\n this._sides[0].node.position.copyFromFloats(min.x, center.y, 0);\r\n this._sides[1].node.position.copyFromFloats(center.x, min.y, 0);\r\n this._sides[2].node.position.copyFromFloats(max.x, center.y, 0);\r\n this._sides[3].node.position.copyFromFloats(center.x, max.y, 0);\r\n }\r\n\r\n protected _update() {\r\n super._update();\r\n\r\n if (!this.gizmoLayer.utilityLayerScene.activeCamera) {\r\n return;\r\n }\r\n\r\n if (this._attachedSlate && this._attachedSlate.mesh) {\r\n if (this.fixedScreenSize) {\r\n this._attachedSlate.mesh.absolutePosition.subtractToRef(this.gizmoLayer.utilityLayerScene.activeCamera.position, this._tmpVector);\r\n var distanceFromCamera = (this.handleSize * this._tmpVector.length()) / this.fixedScreenSizeDistanceFactor;\r\n for (let i = 0; i < this._corners.length; i++) {\r\n this._corners[i].node.scaling.set(distanceFromCamera, distanceFromCamera, distanceFromCamera);\r\n }\r\n }\r\n this._updateHandlesPosition();\r\n }\r\n }\r\n\r\n public dispose() {\r\n this.gizmoLayer.originalScene.onBeforeRenderObservable.remove(this._renderObserver);\r\n\r\n // Will dispose rootMesh and all descendants\r\n super.dispose();\r\n\r\n for (const corner of this._corners) {\r\n corner.dispose();\r\n }\r\n\r\n for (const side of this._sides) {\r\n side.dispose();\r\n }\r\n }\r\n}\r\n"]}
@@ -2,6 +2,7 @@ import { Nullable } from "@babylonjs/core/types";
2
2
  import { Observable } from "@babylonjs/core/Misc/observable";
3
3
  import { Vector3 } from "@babylonjs/core/Maths/math.vector";
4
4
  import { Material } from "@babylonjs/core/Materials/material";
5
+ import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
5
6
  import { UtilityLayerRenderer } from "@babylonjs/core/Rendering/utilityLayerRenderer";
6
7
  import { IDisposable, Scene } from "@babylonjs/core/scene";
7
8
  import { Container3D } from "./controls/container3D";
@@ -17,7 +18,7 @@ export declare class GUI3DManager implements IDisposable {
17
18
  private _rootContainer;
18
19
  private _pointerObserver;
19
20
  private _pointerOutObserver;
20
- private _touchableButtons;
21
+ private _customControlScaling;
21
22
  /** @hidden */
22
23
  _lastPickedControl: Control3D;
23
24
  /** @hidden */
@@ -28,10 +29,15 @@ export declare class GUI3DManager implements IDisposable {
28
29
  _lastControlDown: {
29
30
  [pointerId: number]: Control3D;
30
31
  };
32
+ protected static MRTK_REALISTIC_SCALING: number;
31
33
  /**
32
34
  * Observable raised when the point picked by the pointer events changed
33
35
  */
34
36
  onPickedPointChangedObservable: Observable<Nullable<Vector3>>;
37
+ /**
38
+ * Observable raised when a picking happens
39
+ */
40
+ onPickingObservable: Observable<Nullable<AbstractMesh>>;
35
41
  /** @hidden */
36
42
  _sharedMaterials: {
37
43
  [key: string]: Material;
@@ -44,6 +50,14 @@ export declare class GUI3DManager implements IDisposable {
44
50
  get scene(): Scene;
45
51
  /** Gets associated utility layer */
46
52
  get utilityLayer(): Nullable<UtilityLayerRenderer>;
53
+ /** Gets the scaling for all UI elements owned by this manager */
54
+ get controlScaling(): number;
55
+ /** Sets the scaling adjustment for all UI elements owned by this manager */
56
+ set controlScaling(newScale: number);
57
+ /** Gets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */
58
+ get useRealisticScaling(): boolean;
59
+ /** Sets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */
60
+ set useRealisticScaling(newValue: boolean);
47
61
  /**
48
62
  * Creates a new GUI3DManager
49
63
  * @param scene
@@ -51,7 +65,6 @@ export declare class GUI3DManager implements IDisposable {
51
65
  constructor(scene?: Scene);
52
66
  private _handlePointerOut;
53
67
  private _doPicking;
54
- private _processTouchControls;
55
68
  /**
56
69
  * Gets the root container
57
70
  */
@@ -1,11 +1,10 @@
1
- import { Observable } from "@babylonjs/core/Misc/observable";
2
- import { Vector3 } from "@babylonjs/core/Maths/math.vector";
3
- import { PointerEventTypes } from '@babylonjs/core/Events/pointerEvents';
4
- import { HemisphericLight } from "@babylonjs/core/Lights/hemisphericLight";
5
- import { UtilityLayerRenderer } from "@babylonjs/core/Rendering/utilityLayerRenderer";
6
- import { EngineStore } from "@babylonjs/core/Engines/engineStore";
7
- import { Container3D } from "./controls/container3D";
8
- import { TouchButton3D } from "./controls/touchButton3D";
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 { HemisphericLight } from "@babylonjs/core/Lights/hemisphericLight.js";
5
+ import { UtilityLayerRenderer } from "@babylonjs/core/Rendering/utilityLayerRenderer.js";
6
+ import { EngineStore } from "@babylonjs/core/Engines/engineStore.js";
7
+ import { Container3D } from "./controls/container3D.js";
9
8
  /**
10
9
  * Class used to manage 3D user interface
11
10
  * @see https://doc.babylonjs.com/how_to/gui3d
@@ -17,7 +16,7 @@ var GUI3DManager = /** @class */ (function () {
17
16
  */
18
17
  function GUI3DManager(scene) {
19
18
  var _this = this;
20
- this._touchableButtons = new Set();
19
+ this._customControlScaling = 1.0;
21
20
  /** @hidden */
22
21
  this._lastControlOver = {};
23
22
  /** @hidden */
@@ -26,34 +25,27 @@ var GUI3DManager = /** @class */ (function () {
26
25
  * Observable raised when the point picked by the pointer events changed
27
26
  */
28
27
  this.onPickedPointChangedObservable = new Observable();
28
+ /**
29
+ * Observable raised when a picking happens
30
+ */
31
+ this.onPickingObservable = new Observable();
29
32
  // Shared resources
30
33
  /** @hidden */
31
34
  this._sharedMaterials = {};
32
35
  /** @hidden */
33
36
  this._touchSharedMaterials = {};
34
- this._processTouchControls = function () {
35
- var utilityLayerScene = _this._utilityLayer ? _this._utilityLayer.utilityLayerScene : null;
36
- if (utilityLayerScene) {
37
- var touchMeshes_1 = utilityLayerScene.getMeshesByTags("touchEnabled");
38
- _this._touchableButtons.forEach(function (button) {
39
- touchMeshes_1.forEach(function (mesh) {
40
- button._collisionCheckForStateChange(mesh);
41
- });
42
- });
43
- }
44
- };
45
37
  this._scene = scene || EngineStore.LastCreatedScene;
46
38
  this._sceneDisposeObserver = this._scene.onDisposeObservable.add(function () {
47
39
  _this._sceneDisposeObserver = null;
48
40
  _this._utilityLayer = null;
49
41
  _this.dispose();
50
42
  });
51
- this._utilityLayer = new UtilityLayerRenderer(this._scene);
43
+ this._utilityLayer = UtilityLayerRenderer._CreateDefaultUtilityLayerFromScene(this._scene);
52
44
  this._utilityLayer.onlyCheckPointerDownEvents = false;
53
45
  this._utilityLayer.pickUtilitySceneFirst = false;
54
46
  this._utilityLayer.mainSceneTrackerPredicate = function (mesh) {
55
47
  var _a, _b, _c;
56
- return mesh && ((_c = (_b = (_a = mesh.metadata) === null || _a === void 0 ? void 0 : _a.GUI3D) === null || _b === void 0 ? void 0 : _b.control) === null || _c === void 0 ? void 0 : _c._node);
48
+ return mesh && ((_c = (_b = (_a = mesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) === null || _b === void 0 ? void 0 : _b.control) === null || _c === void 0 ? void 0 : _c._node);
57
49
  };
58
50
  // Root
59
51
  this._rootContainer = new Container3D("RootContainer");
@@ -87,6 +79,39 @@ var GUI3DManager = /** @class */ (function () {
87
79
  enumerable: false,
88
80
  configurable: true
89
81
  });
82
+ Object.defineProperty(GUI3DManager.prototype, "controlScaling", {
83
+ /** Gets the scaling for all UI elements owned by this manager */
84
+ get: function () {
85
+ return this._customControlScaling;
86
+ },
87
+ /** Sets the scaling adjustment for all UI elements owned by this manager */
88
+ set: function (newScale) {
89
+ if (this._customControlScaling !== newScale && newScale > 0) {
90
+ var scaleRatio_1 = newScale / this._customControlScaling;
91
+ this._customControlScaling = newScale;
92
+ this._rootContainer.children.forEach(function (control) {
93
+ control.scaling.scaleInPlace(scaleRatio_1);
94
+ if (newScale !== 1) {
95
+ control._isScaledByManager = true;
96
+ }
97
+ });
98
+ }
99
+ },
100
+ enumerable: false,
101
+ configurable: true
102
+ });
103
+ Object.defineProperty(GUI3DManager.prototype, "useRealisticScaling", {
104
+ /** Gets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */
105
+ get: function () {
106
+ return this.controlScaling === GUI3DManager.MRTK_REALISTIC_SCALING;
107
+ },
108
+ /** Sets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */
109
+ set: function (newValue) {
110
+ this.controlScaling = newValue ? GUI3DManager.MRTK_REALISTIC_SCALING : 1;
111
+ },
112
+ enumerable: false,
113
+ configurable: true
114
+ });
90
115
  GUI3DManager.prototype._handlePointerOut = function (pointerId, isPointerUp) {
91
116
  var previousControlOver = this._lastControlOver[pointerId];
92
117
  if (previousControlOver) {
@@ -102,23 +127,26 @@ var GUI3DManager = /** @class */ (function () {
102
127
  this.onPickedPointChangedObservable.notifyObservers(null);
103
128
  };
104
129
  GUI3DManager.prototype._doPicking = function (pi) {
105
- var _a, _b;
130
+ var _a, _b, _c;
106
131
  if (!this._utilityLayer || !this._utilityLayer.shouldRender || !this._utilityLayer.utilityLayerScene.activeCamera) {
107
132
  return false;
108
133
  }
109
- var pointerEvent = (pi.event);
134
+ var pointerEvent = pi.event;
110
135
  var pointerId = pointerEvent.pointerId || 0;
111
136
  var buttonIndex = pointerEvent.button;
112
137
  var pickingInfo = pi.pickInfo;
138
+ if (pickingInfo) {
139
+ this.onPickingObservable.notifyObservers(pickingInfo.pickedMesh);
140
+ }
113
141
  if (!pickingInfo || !pickingInfo.hit) {
114
142
  this._handlePointerOut(pointerId, pi.type === PointerEventTypes.POINTERUP);
115
143
  return false;
116
144
  }
117
- var control = ((_b = (_a = pickingInfo.pickedMesh.metadata) === null || _a === void 0 ? void 0 : _a.GUI3D) === null || _b === void 0 ? void 0 : _b.control);
118
145
  if (pickingInfo.pickedPoint) {
119
146
  this.onPickedPointChangedObservable.notifyObservers(pickingInfo.pickedPoint);
120
147
  }
121
- if (!control._processObservables(pi.type, pickingInfo.pickedPoint, pointerId, buttonIndex)) {
148
+ var control = (_b = (_a = pickingInfo.pickedMesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) === null || _b === void 0 ? void 0 : _b.control;
149
+ if (!!control && !control._processObservables(pi.type, pickingInfo.pickedPoint, ((_c = pickingInfo.originMesh) === null || _c === void 0 ? void 0 : _c.position) || null, pointerId, buttonIndex)) {
122
150
  if (pi.type === PointerEventTypes.POINTERMOVE) {
123
151
  if (this._lastControlOver[pointerId]) {
124
152
  this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId]);
@@ -162,12 +190,9 @@ var GUI3DManager = /** @class */ (function () {
162
190
  */
163
191
  GUI3DManager.prototype.addControl = function (control) {
164
192
  this._rootContainer.addControl(control);
165
- var utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;
166
- if (utilityLayerScene && (control instanceof TouchButton3D)) {
167
- if (this._touchableButtons.size == 0) {
168
- utilityLayerScene.registerBeforeRender(this._processTouchControls);
169
- }
170
- this._touchableButtons.add(control);
193
+ if (this._customControlScaling !== 1) {
194
+ control.scaling.scaleInPlace(this._customControlScaling);
195
+ control._isScaledByManager = true;
171
196
  }
172
197
  return this;
173
198
  };
@@ -178,12 +203,9 @@ var GUI3DManager = /** @class */ (function () {
178
203
  */
179
204
  GUI3DManager.prototype.removeControl = function (control) {
180
205
  this._rootContainer.removeControl(control);
181
- var utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;
182
- if (utilityLayerScene && (control instanceof TouchButton3D)) {
183
- this._touchableButtons.delete(control);
184
- if (this._touchableButtons.size == 0) {
185
- utilityLayerScene.unregisterBeforeRender(this._processTouchControls);
186
- }
206
+ if (control._isScaledByManager) {
207
+ control.scaling.scaleInPlace(1 / this._customControlScaling);
208
+ control._isScaledByManager = false;
187
209
  }
188
210
  return this;
189
211
  };
@@ -211,11 +233,9 @@ var GUI3DManager = /** @class */ (function () {
211
233
  this._pointerOutObserver = null;
212
234
  }
213
235
  this.onPickedPointChangedObservable.clear();
236
+ this.onPickingObservable.clear();
214
237
  var utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;
215
238
  if (utilityLayerScene) {
216
- if (this._touchableButtons.size != 0) {
217
- utilityLayerScene.unregisterBeforeRender(this._processTouchControls);
218
- }
219
239
  if (this._pointerObserver) {
220
240
  utilityLayerScene.onPointerObservable.remove(this._pointerObserver);
221
241
  this._pointerObserver = null;
@@ -231,6 +251,7 @@ var GUI3DManager = /** @class */ (function () {
231
251
  this._utilityLayer.dispose();
232
252
  }
233
253
  };
254
+ GUI3DManager.MRTK_REALISTIC_SCALING = 0.032;
234
255
  return GUI3DManager;
235
256
  }());
236
257
  export { GUI3DManager };
@@ -1 +1 @@
1
- {"version":3,"file":"gui3DManager.js","sourceRoot":"","sources":["../../../sourceES6/gui/src/3D/gui3DManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { Observable, Observer } from \"@babylonjs/core/Misc/observable\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { PointerInfo, PointerEventTypes } from '@babylonjs/core/Events/pointerEvents';\r\nimport { Material } from \"@babylonjs/core/Materials/material\";\r\nimport { HemisphericLight } from \"@babylonjs/core/Lights/hemisphericLight\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { UtilityLayerRenderer } from \"@babylonjs/core/Rendering/utilityLayerRenderer\";\r\nimport { EngineStore } from \"@babylonjs/core/Engines/engineStore\";\r\nimport { IDisposable, Scene } from \"@babylonjs/core/scene\";\r\n\r\nimport { Container3D } from \"./controls/container3D\";\r\nimport { Control3D } from \"./controls/control3D\";\r\nimport { TouchButton3D } from \"./controls/touchButton3D\";\r\n\r\n/**\r\n * Class used to manage 3D user interface\r\n * @see https://doc.babylonjs.com/how_to/gui3d\r\n */\r\nexport class GUI3DManager implements IDisposable {\r\n private _scene: Scene;\r\n private _sceneDisposeObserver: Nullable<Observer<Scene>>;\r\n private _utilityLayer: Nullable<UtilityLayerRenderer>;\r\n private _rootContainer: Container3D;\r\n private _pointerObserver: Nullable<Observer<PointerInfo>>;\r\n private _pointerOutObserver: Nullable<Observer<number>>;\r\n private _touchableButtons = new Set<TouchButton3D>();\r\n /** @hidden */\r\n public _lastPickedControl: Control3D;\r\n /** @hidden */\r\n public _lastControlOver: { [pointerId: number]: Control3D } = {};\r\n /** @hidden */\r\n public _lastControlDown: { [pointerId: number]: Control3D } = {};\r\n\r\n /**\r\n * Observable raised when the point picked by the pointer events changed\r\n */\r\n public onPickedPointChangedObservable = new Observable<Nullable<Vector3>>();\r\n\r\n // Shared resources\r\n /** @hidden */\r\n public _sharedMaterials: { [key: string]: Material } = {};\r\n\r\n /** @hidden */\r\n public _touchSharedMaterials: { [key: string]: Material } = {};\r\n\r\n /** Gets the hosting scene */\r\n public get scene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /** Gets associated utility layer */\r\n public get utilityLayer(): Nullable<UtilityLayerRenderer> {\r\n return this._utilityLayer;\r\n }\r\n\r\n /**\r\n * Creates a new GUI3DManager\r\n * @param scene\r\n */\r\n public constructor(scene?: Scene) {\r\n this._scene = scene || EngineStore.LastCreatedScene!;\r\n this._sceneDisposeObserver = this._scene.onDisposeObservable.add(() => {\r\n this._sceneDisposeObserver = null;\r\n this._utilityLayer = null;\r\n this.dispose();\r\n });\r\n\r\n this._utilityLayer = new UtilityLayerRenderer(this._scene);\r\n this._utilityLayer.onlyCheckPointerDownEvents = false;\r\n this._utilityLayer.pickUtilitySceneFirst = false;\r\n this._utilityLayer.mainSceneTrackerPredicate = (mesh: Nullable<AbstractMesh>) => {\r\n return mesh && mesh.metadata?.GUI3D?.control?._node;\r\n };\r\n\r\n // Root\r\n this._rootContainer = new Container3D(\"RootContainer\");\r\n this._rootContainer._host = this;\r\n let utilityLayerScene = this._utilityLayer.utilityLayerScene;\r\n\r\n // Events\r\n this._pointerOutObserver = this._utilityLayer.onPointerOutObservable.add((pointerId) => {\r\n this._handlePointerOut(pointerId, true);\r\n });\r\n\r\n this._pointerObserver = utilityLayerScene.onPointerObservable.add((pi, state) => {\r\n this._doPicking(pi);\r\n });\r\n\r\n // Scene\r\n this._utilityLayer.utilityLayerScene.autoClear = false;\r\n this._utilityLayer.utilityLayerScene.autoClearDepthAndStencil = false;\r\n new HemisphericLight(\"hemi\", Vector3.Up(), this._utilityLayer.utilityLayerScene);\r\n }\r\n\r\n private _handlePointerOut(pointerId: number, isPointerUp: boolean) {\r\n var previousControlOver = this._lastControlOver[pointerId];\r\n if (previousControlOver) {\r\n previousControlOver._onPointerOut(previousControlOver);\r\n delete this._lastControlOver[pointerId];\r\n }\r\n\r\n if (isPointerUp) {\r\n if (this._lastControlDown[pointerId]) {\r\n this._lastControlDown[pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerId];\r\n }\r\n }\r\n\r\n this.onPickedPointChangedObservable.notifyObservers(null);\r\n }\r\n\r\n private _doPicking(pi: PointerInfo): boolean {\r\n if (!this._utilityLayer || !this._utilityLayer.shouldRender || !this._utilityLayer.utilityLayerScene.activeCamera) {\r\n return false;\r\n }\r\n\r\n let pointerEvent = <PointerEvent>(pi.event);\r\n\r\n let pointerId = pointerEvent.pointerId || 0;\r\n let buttonIndex = pointerEvent.button;\r\n\r\n let pickingInfo = pi.pickInfo;\r\n if (!pickingInfo || !pickingInfo.hit) {\r\n this._handlePointerOut(pointerId, pi.type === PointerEventTypes.POINTERUP);\r\n return false;\r\n }\r\n\r\n let control = <Control3D>(pickingInfo.pickedMesh!.metadata?.GUI3D?.control);\r\n if (pickingInfo.pickedPoint) {\r\n this.onPickedPointChangedObservable.notifyObservers(pickingInfo.pickedPoint);\r\n }\r\n\r\n if (!control._processObservables(pi.type, pickingInfo.pickedPoint!, pointerId, buttonIndex)) {\r\n\r\n if (pi.type === PointerEventTypes.POINTERMOVE) {\r\n if (this._lastControlOver[pointerId]) {\r\n this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId]);\r\n }\r\n\r\n delete this._lastControlOver[pointerId];\r\n }\r\n }\r\n\r\n if (pi.type === PointerEventTypes.POINTERUP) {\r\n if (this._lastControlDown[pointerEvent.pointerId]) {\r\n this._lastControlDown[pointerEvent.pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerEvent.pointerId];\r\n }\r\n\r\n if (pointerEvent.pointerType === \"touch\") {\r\n this._handlePointerOut(pointerId, false);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private _processTouchControls = () => {\r\n let utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;\r\n if (utilityLayerScene) {\r\n const touchMeshes = utilityLayerScene.getMeshesByTags(\"touchEnabled\");\r\n\r\n this._touchableButtons.forEach(function (button: TouchButton3D) {\r\n touchMeshes.forEach(function (mesh: AbstractMesh) {\r\n button._collisionCheckForStateChange(mesh);\r\n });\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Gets the root container\r\n */\r\n public get rootContainer(): Container3D {\r\n return this._rootContainer;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if the given control is in the root child list\r\n * @param control defines the control to check\r\n * @returns true if the control is in the root child list\r\n */\r\n public containsControl(control: Control3D): boolean {\r\n return this._rootContainer.containsControl(control);\r\n }\r\n\r\n /**\r\n * Adds a control to the root child list\r\n * @param control defines the control to add\r\n * @returns the current manager\r\n */\r\n public addControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.addControl(control);\r\n\r\n let utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;\r\n if (utilityLayerScene && (control instanceof TouchButton3D)) {\r\n if (this._touchableButtons.size == 0) {\r\n utilityLayerScene.registerBeforeRender(this._processTouchControls);\r\n }\r\n\r\n this._touchableButtons.add(control as TouchButton3D);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a control from the root child list\r\n * @param control defines the control to remove\r\n * @returns the current container\r\n */\r\n public removeControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.removeControl(control);\r\n\r\n let utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;\r\n if (utilityLayerScene && (control instanceof TouchButton3D)) {\r\n this._touchableButtons.delete(control);\r\n\r\n if (this._touchableButtons.size == 0) {\r\n utilityLayerScene.unregisterBeforeRender(this._processTouchControls);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n this._rootContainer.dispose();\r\n\r\n for (var materialName in this._sharedMaterials) {\r\n if (!this._sharedMaterials.hasOwnProperty(materialName)) {\r\n continue;\r\n }\r\n\r\n this._sharedMaterials[materialName].dispose();\r\n }\r\n\r\n this._sharedMaterials = {};\r\n\r\n for (var materialName in this._touchSharedMaterials) {\r\n if (!this._touchSharedMaterials.hasOwnProperty(materialName)) {\r\n continue;\r\n }\r\n\r\n this._touchSharedMaterials[materialName].dispose();\r\n }\r\n\r\n this._touchSharedMaterials = {};\r\n\r\n if (this._pointerOutObserver && this._utilityLayer) {\r\n this._utilityLayer.onPointerOutObservable.remove(this._pointerOutObserver);\r\n this._pointerOutObserver = null;\r\n }\r\n\r\n this.onPickedPointChangedObservable.clear();\r\n\r\n let utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;\r\n\r\n if (utilityLayerScene) {\r\n if (this._touchableButtons.size != 0) {\r\n utilityLayerScene.unregisterBeforeRender(this._processTouchControls);\r\n }\r\n\r\n if (this._pointerObserver) {\r\n utilityLayerScene.onPointerObservable.remove(this._pointerObserver);\r\n this._pointerObserver = null;\r\n }\r\n }\r\n if (this._scene) {\r\n if (this._sceneDisposeObserver) {\r\n this._scene.onDisposeObservable.remove(this._sceneDisposeObserver);\r\n this._sceneDisposeObserver = null;\r\n }\r\n }\r\n\r\n if (this._utilityLayer) {\r\n this._utilityLayer.dispose();\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"gui3DManager.js","sourceRoot":"","sources":["../../../sourceES6/gui/src/3D/gui3DManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAY,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAe,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAEtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yCAAyC,CAAC;AAE3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAGlE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD;;;GAGG;AACH;IA2EI;;;OAGG;IACH,sBAAmB,KAAa;QAAhC,iBAiCC;QAzGO,0BAAqB,GAAG,GAAG,CAAC;QAGpC,cAAc;QACP,qBAAgB,GAAuC,EAAE,CAAC;QACjE,cAAc;QACP,qBAAgB,GAAuC,EAAE,CAAC;QAIjE;;WAEG;QACI,mCAA8B,GAAG,IAAI,UAAU,EAAqB,CAAC;QAE5E;;WAEG;QACI,wBAAmB,GAAG,IAAI,UAAU,EAA0B,CAAC;QAEtE,mBAAmB;QACnB,cAAc;QACP,qBAAgB,GAAgC,EAAE,CAAC;QAE1D,cAAc;QACP,0BAAqB,GAAgC,EAAE,CAAC;QAgD3D,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,WAAW,CAAC,gBAAiB,CAAC;QACrD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC;YAC7D,KAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;YAClC,KAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,KAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,mCAAmC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3F,IAAI,CAAC,aAAa,CAAC,0BAA0B,GAAG,KAAK,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,yBAAyB,GAAG,UAAC,IAA4B;;YACxE,OAAO,IAAI,KAAI,MAAA,MAAA,MAAA,IAAI,CAAC,iBAAiB,0CAAE,KAAK,0CAAE,OAAO,0CAAE,KAAK,CAAA,CAAC;QACjE,CAAC,CAAC;QAEF,OAAO;QACP,IAAI,CAAC,cAAc,GAAG,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC;QACjC,IAAI,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC;QAE7D,SAAS;QACT,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAC,SAAS;YAC/E,KAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAC,EAAE,EAAE,KAAK;YACxE,KAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,QAAQ;QACR,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC;QACvD,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,wBAAwB,GAAG,KAAK,CAAC;QACtE,IAAI,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACrF,CAAC;IA7ED,sBAAW,+BAAK;QADhB,6BAA6B;aAC7B;YACI,OAAO,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;;;OAAA;IAGD,sBAAW,sCAAY;QADvB,oCAAoC;aACpC;YACI,OAAO,IAAI,CAAC,aAAa,CAAC;QAC9B,CAAC;;;OAAA;IAGD,sBAAW,wCAAc;QADzB,iEAAiE;aACjE;YACI,OAAO,IAAI,CAAC,qBAAqB,CAAC;QACtC,CAAC;QAED,4EAA4E;aAC5E,UAA0B,QAAgB;YACtC,IAAI,IAAI,CAAC,qBAAqB,KAAK,QAAQ,IAAI,QAAQ,GAAG,CAAC,EAAE;gBACzD,IAAI,YAAU,GAAG,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC;gBACvD,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;gBAEtC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAkB;oBACpD,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,YAAU,CAAC,CAAC;oBAEzC,IAAI,QAAQ,KAAK,CAAC,EAAE;wBAChB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;qBACrC;gBACL,CAAC,CAAC,CAAC;aACN;QACL,CAAC;;;OAhBA;IAmBD,sBAAW,6CAAmB;QAD9B,yHAAyH;aACzH;YACI,OAAO,IAAI,CAAC,cAAc,KAAK,YAAY,CAAC,sBAAsB,CAAC;QACvE,CAAC;QAED,yHAAyH;aACzH,UAA+B,QAAiB;YAC5C,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,CAAC;;;OALA;IA8CO,wCAAiB,GAAzB,UAA0B,SAAiB,EAAE,WAAoB;QAC7D,IAAI,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,mBAAmB,EAAE;YACrB,mBAAmB,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;SAC3C;QAED,IAAI,WAAW,EAAE;YACb,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;gBAClC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC;gBAClD,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;aAC3C;SACJ;QAED,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAEO,iCAAU,GAAlB,UAAmB,EAAe;;QAC9B,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,EAAE;YAC/G,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,YAAY,GAAiB,EAAE,CAAC,KAAK,CAAC;QAE1C,IAAI,SAAS,GAAG,YAAY,CAAC,SAAS,IAAI,CAAC,CAAC;QAC5C,IAAI,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;QAEtC,IAAI,WAAW,GAAG,EAAE,CAAC,QAAQ,CAAC;QAC9B,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;SACpE;QAED,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC3E,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,WAAW,CAAC,WAAW,EAAE;YACzB,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;SAChF;QAED,IAAM,OAAO,GAAc,MAAA,MAAA,WAAW,CAAC,UAAW,CAAC,iBAAiB,0CAAE,KAAK,0CAAE,OAAO,CAAC;QACrF,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,WAAY,EAAE,CAAA,MAAA,WAAW,CAAC,UAAU,0CAAE,QAAQ,KAAI,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE;YAChJ,IAAI,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,WAAW,EAAE;gBAC3C,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;oBAClC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;iBACpF;gBAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;aAC3C;SACJ;QAED,IAAI,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,SAAS,EAAE;YACzC,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;gBAC/C,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC;gBAC/D,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;aACxD;YAED,IAAI,YAAY,CAAC,WAAW,KAAK,OAAO,EAAE;gBACtC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC5C;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAKD,sBAAW,uCAAa;QAHxB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,cAAc,CAAC;QAC/B,CAAC;;;OAAA;IAED;;;;OAIG;IACI,sCAAe,GAAtB,UAAuB,OAAkB;QACrC,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACI,iCAAU,GAAjB,UAAkB,OAAkB;QAChC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,qBAAqB,KAAK,CAAC,EAAE;YAClC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzD,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;SACrC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,oCAAa,GAApB,UAAqB,OAAkB;QACnC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,kBAAkB,EAAE;YAC5B,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC7D,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC;SACtC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,8BAAO,GAAd;QACI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAE9B,KAAK,IAAI,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC5C,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;gBACrD,SAAS;aACZ;YAED,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;SACjD;QAED,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAE3B,KAAK,IAAI,YAAY,IAAI,IAAI,CAAC,qBAAqB,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;gBAC1D,SAAS;aACZ;YAED,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;SACtD;QAED,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;QAEhC,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,aAAa,EAAE;YAChD,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC3E,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACnC;QAED,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE,CAAC;QAC5C,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAEjC,IAAI,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;QAEzF,IAAI,iBAAiB,EAAE;YACnB,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACvB,iBAAiB,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACpE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;aAChC;SACJ;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC5B,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBACnE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;aACrC;SACJ;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;SAChC;IACL,CAAC;IArQgB,mCAAsB,GAAW,KAAK,CAAC;IAsQ5D,mBAAC;CAAA,AArRD,IAqRC;SArRY,YAAY","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { Observable, Observer } from \"@babylonjs/core/Misc/observable\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { PointerInfo, PointerEventTypes } from \"@babylonjs/core/Events/pointerEvents\";\r\nimport { Material } from \"@babylonjs/core/Materials/material\";\r\nimport { HemisphericLight } from \"@babylonjs/core/Lights/hemisphericLight\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { UtilityLayerRenderer } from \"@babylonjs/core/Rendering/utilityLayerRenderer\";\r\nimport { EngineStore } from \"@babylonjs/core/Engines/engineStore\";\r\nimport { IDisposable, Scene } from \"@babylonjs/core/scene\";\r\n\r\nimport { Container3D } from \"./controls/container3D\";\r\nimport { Control3D } from \"./controls/control3D\";\r\n\r\n/**\r\n * Class used to manage 3D user interface\r\n * @see https://doc.babylonjs.com/how_to/gui3d\r\n */\r\nexport class GUI3DManager implements IDisposable {\r\n private _scene: Scene;\r\n private _sceneDisposeObserver: Nullable<Observer<Scene>>;\r\n private _utilityLayer: Nullable<UtilityLayerRenderer>;\r\n private _rootContainer: Container3D;\r\n private _pointerObserver: Nullable<Observer<PointerInfo>>;\r\n private _pointerOutObserver: Nullable<Observer<number>>;\r\n private _customControlScaling = 1.0;\r\n /** @hidden */\r\n public _lastPickedControl: Control3D;\r\n /** @hidden */\r\n public _lastControlOver: { [pointerId: number]: Control3D } = {};\r\n /** @hidden */\r\n public _lastControlDown: { [pointerId: number]: Control3D } = {};\r\n\r\n protected static MRTK_REALISTIC_SCALING: number = 0.032;\r\n\r\n /**\r\n * Observable raised when the point picked by the pointer events changed\r\n */\r\n public onPickedPointChangedObservable = new Observable<Nullable<Vector3>>();\r\n\r\n /**\r\n * Observable raised when a picking happens\r\n */\r\n public onPickingObservable = new Observable<Nullable<AbstractMesh>>();\r\n\r\n // Shared resources\r\n /** @hidden */\r\n public _sharedMaterials: { [key: string]: Material } = {};\r\n\r\n /** @hidden */\r\n public _touchSharedMaterials: { [key: string]: Material } = {};\r\n\r\n /** Gets the hosting scene */\r\n public get scene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /** Gets associated utility layer */\r\n public get utilityLayer(): Nullable<UtilityLayerRenderer> {\r\n return this._utilityLayer;\r\n }\r\n\r\n /** Gets the scaling for all UI elements owned by this manager */\r\n public get controlScaling() {\r\n return this._customControlScaling;\r\n }\r\n\r\n /** Sets the scaling adjustment for all UI elements owned by this manager */\r\n public set controlScaling(newScale: number) {\r\n if (this._customControlScaling !== newScale && newScale > 0) {\r\n let scaleRatio = newScale / this._customControlScaling;\r\n this._customControlScaling = newScale;\r\n\r\n this._rootContainer.children.forEach((control: Control3D) => {\r\n control.scaling.scaleInPlace(scaleRatio);\r\n\r\n if (newScale !== 1) {\r\n control._isScaledByManager = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n /** Gets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */\r\n public get useRealisticScaling() {\r\n return this.controlScaling === GUI3DManager.MRTK_REALISTIC_SCALING;\r\n }\r\n\r\n /** Sets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */\r\n public set useRealisticScaling(newValue: boolean) {\r\n this.controlScaling = newValue ? GUI3DManager.MRTK_REALISTIC_SCALING : 1;\r\n }\r\n\r\n /**\r\n * Creates a new GUI3DManager\r\n * @param scene\r\n */\r\n public constructor(scene?: Scene) {\r\n this._scene = scene || EngineStore.LastCreatedScene!;\r\n this._sceneDisposeObserver = this._scene.onDisposeObservable.add(() => {\r\n this._sceneDisposeObserver = null;\r\n this._utilityLayer = null;\r\n this.dispose();\r\n });\r\n\r\n this._utilityLayer = UtilityLayerRenderer._CreateDefaultUtilityLayerFromScene(this._scene);\r\n this._utilityLayer.onlyCheckPointerDownEvents = false;\r\n this._utilityLayer.pickUtilitySceneFirst = false;\r\n this._utilityLayer.mainSceneTrackerPredicate = (mesh: Nullable<AbstractMesh>) => {\r\n return mesh && mesh.reservedDataStore?.GUI3D?.control?._node;\r\n };\r\n\r\n // Root\r\n this._rootContainer = new Container3D(\"RootContainer\");\r\n this._rootContainer._host = this;\r\n let utilityLayerScene = this._utilityLayer.utilityLayerScene;\r\n\r\n // Events\r\n this._pointerOutObserver = this._utilityLayer.onPointerOutObservable.add((pointerId) => {\r\n this._handlePointerOut(pointerId, true);\r\n });\r\n\r\n this._pointerObserver = utilityLayerScene.onPointerObservable.add((pi, state) => {\r\n this._doPicking(pi);\r\n });\r\n\r\n // Scene\r\n this._utilityLayer.utilityLayerScene.autoClear = false;\r\n this._utilityLayer.utilityLayerScene.autoClearDepthAndStencil = false;\r\n new HemisphericLight(\"hemi\", Vector3.Up(), this._utilityLayer.utilityLayerScene);\r\n }\r\n\r\n private _handlePointerOut(pointerId: number, isPointerUp: boolean) {\r\n var previousControlOver = this._lastControlOver[pointerId];\r\n if (previousControlOver) {\r\n previousControlOver._onPointerOut(previousControlOver);\r\n delete this._lastControlOver[pointerId];\r\n }\r\n\r\n if (isPointerUp) {\r\n if (this._lastControlDown[pointerId]) {\r\n this._lastControlDown[pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerId];\r\n }\r\n }\r\n\r\n this.onPickedPointChangedObservable.notifyObservers(null);\r\n }\r\n\r\n private _doPicking(pi: PointerInfo): boolean {\r\n if (!this._utilityLayer || !this._utilityLayer.shouldRender || !this._utilityLayer.utilityLayerScene.activeCamera) {\r\n return false;\r\n }\r\n\r\n let pointerEvent = <PointerEvent>pi.event;\r\n\r\n let pointerId = pointerEvent.pointerId || 0;\r\n let buttonIndex = pointerEvent.button;\r\n\r\n let pickingInfo = pi.pickInfo;\r\n if (pickingInfo) {\r\n this.onPickingObservable.notifyObservers(pickingInfo.pickedMesh);\r\n }\r\n\r\n if (!pickingInfo || !pickingInfo.hit) {\r\n this._handlePointerOut(pointerId, pi.type === PointerEventTypes.POINTERUP);\r\n return false;\r\n }\r\n\r\n if (pickingInfo.pickedPoint) {\r\n this.onPickedPointChangedObservable.notifyObservers(pickingInfo.pickedPoint);\r\n }\r\n\r\n const control = <Control3D>pickingInfo.pickedMesh!.reservedDataStore?.GUI3D?.control;\r\n if (!!control && !control._processObservables(pi.type, pickingInfo.pickedPoint!, pickingInfo.originMesh?.position || null, pointerId, buttonIndex)) {\r\n if (pi.type === PointerEventTypes.POINTERMOVE) {\r\n if (this._lastControlOver[pointerId]) {\r\n this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId]);\r\n }\r\n\r\n delete this._lastControlOver[pointerId];\r\n }\r\n }\r\n\r\n if (pi.type === PointerEventTypes.POINTERUP) {\r\n if (this._lastControlDown[pointerEvent.pointerId]) {\r\n this._lastControlDown[pointerEvent.pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerEvent.pointerId];\r\n }\r\n\r\n if (pointerEvent.pointerType === \"touch\") {\r\n this._handlePointerOut(pointerId, false);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets the root container\r\n */\r\n public get rootContainer(): Container3D {\r\n return this._rootContainer;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if the given control is in the root child list\r\n * @param control defines the control to check\r\n * @returns true if the control is in the root child list\r\n */\r\n public containsControl(control: Control3D): boolean {\r\n return this._rootContainer.containsControl(control);\r\n }\r\n\r\n /**\r\n * Adds a control to the root child list\r\n * @param control defines the control to add\r\n * @returns the current manager\r\n */\r\n public addControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.addControl(control);\r\n if (this._customControlScaling !== 1) {\r\n control.scaling.scaleInPlace(this._customControlScaling);\r\n control._isScaledByManager = true;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a control from the root child list\r\n * @param control defines the control to remove\r\n * @returns the current container\r\n */\r\n public removeControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.removeControl(control);\r\n if (control._isScaledByManager) {\r\n control.scaling.scaleInPlace(1 / this._customControlScaling);\r\n control._isScaledByManager = false;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n this._rootContainer.dispose();\r\n\r\n for (var materialName in this._sharedMaterials) {\r\n if (!this._sharedMaterials.hasOwnProperty(materialName)) {\r\n continue;\r\n }\r\n\r\n this._sharedMaterials[materialName].dispose();\r\n }\r\n\r\n this._sharedMaterials = {};\r\n\r\n for (var materialName in this._touchSharedMaterials) {\r\n if (!this._touchSharedMaterials.hasOwnProperty(materialName)) {\r\n continue;\r\n }\r\n\r\n this._touchSharedMaterials[materialName].dispose();\r\n }\r\n\r\n this._touchSharedMaterials = {};\r\n\r\n if (this._pointerOutObserver && this._utilityLayer) {\r\n this._utilityLayer.onPointerOutObservable.remove(this._pointerOutObserver);\r\n this._pointerOutObserver = null;\r\n }\r\n\r\n this.onPickedPointChangedObservable.clear();\r\n this.onPickingObservable.clear();\r\n\r\n let utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;\r\n\r\n if (utilityLayerScene) {\r\n if (this._pointerObserver) {\r\n utilityLayerScene.onPointerObservable.remove(this._pointerObserver);\r\n this._pointerObserver = null;\r\n }\r\n }\r\n if (this._scene) {\r\n if (this._sceneDisposeObserver) {\r\n this._scene.onDisposeObservable.remove(this._sceneDisposeObserver);\r\n this._sceneDisposeObserver = null;\r\n }\r\n }\r\n\r\n if (this._utilityLayer) {\r\n this._utilityLayer.dispose();\r\n }\r\n }\r\n}\r\n"]}
package/3D/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export * from "./controls";
2
- export * from "./materials";
1
+ export * from "./controls/index";
2
+ export * from "./materials/index";
3
+ export * from "./gizmos/index";
3
4
  export * from "./gui3DManager";
4
5
  export * from "./vector3WithInfo";
package/3D/index.js CHANGED
@@ -1,5 +1,6 @@
1
- export * from "./controls";
2
- export * from "./materials";
3
- export * from "./gui3DManager";
4
- export * from "./vector3WithInfo";
1
+ export * from "./controls/index.js";
2
+ export * from "./materials/index.js";
3
+ export * from "./gizmos/index.js";
4
+ export * from "./gui3DManager.js";
5
+ export * from "./vector3WithInfo.js";
5
6
  //# sourceMappingURL=index.js.map
package/3D/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../sourceES6/gui/src/3D/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAE5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC","sourcesContent":["export * from \"./controls\";\r\nexport * from \"./materials\";\r\n\r\nexport * from \"./gui3DManager\";\r\nexport * from \"./vector3WithInfo\";"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../sourceES6/gui/src/3D/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC","sourcesContent":["export * from \"./controls/index\";\r\nexport * from \"./materials/index\";\r\nexport * from \"./gizmos/index\";\r\n\r\nexport * from \"./gui3DManager\";\r\nexport * from \"./vector3WithInfo\";\r\n"]}
@@ -0,0 +1,90 @@
1
+ import { Nullable } from "@babylonjs/core/types";
2
+ import { Vector3, Matrix } from "@babylonjs/core/Maths/math.vector";
3
+ import { BaseTexture } from "@babylonjs/core/Materials/Textures/baseTexture";
4
+ import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines";
5
+ import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial";
6
+ import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
7
+ import { SubMesh } from "@babylonjs/core/Meshes/subMesh";
8
+ import { Mesh } from "@babylonjs/core/Meshes/mesh";
9
+ import { Scene } from "@babylonjs/core/scene";
10
+ import { Color3, Color4 } from "@babylonjs/core/Maths/math.color";
11
+ import "./shaders/fluent.vertex";
12
+ import "./shaders/fluent.fragment";
13
+ /** @hidden */
14
+ export declare class FluentMaterialDefines extends MaterialDefines {
15
+ INNERGLOW: boolean;
16
+ BORDER: boolean;
17
+ HOVERLIGHT: boolean;
18
+ TEXTURE: boolean;
19
+ constructor();
20
+ }
21
+ /**
22
+ * Class used to render controls with fluent desgin
23
+ */
24
+ export declare class FluentMaterial extends PushMaterial {
25
+ /**
26
+ * Gets or sets inner glow intensity. A value of 0 means no glow (default is 0.5)
27
+ */
28
+ innerGlowColorIntensity: number;
29
+ /**
30
+ * Gets or sets the inner glow color (white by default)
31
+ */
32
+ innerGlowColor: Color3;
33
+ /**
34
+ * Gets or sets the albedo color (Default is Color3(0.3, 0.35, 0.4))
35
+ */
36
+ albedoColor: Color3;
37
+ /**
38
+ * Gets or sets a boolean indicating if borders must be rendered (default is false)
39
+ */
40
+ renderBorders: boolean;
41
+ /**
42
+ * Gets or sets border width (default is 0.5)
43
+ */
44
+ borderWidth: number;
45
+ /**
46
+ * Gets or sets a value indicating the smoothing value applied to border edges (0.02 by default)
47
+ */
48
+ edgeSmoothingValue: number;
49
+ /**
50
+ * Gets or sets the minimum value that can be applied to border width (default is 0.1)
51
+ */
52
+ borderMinValue: number;
53
+ /**
54
+ * Gets or sets a boolean indicating if hover light must be rendered (default is false)
55
+ */
56
+ renderHoverLight: boolean;
57
+ /**
58
+ * Gets or sets the radius used to render the hover light (default is 1.0)
59
+ */
60
+ hoverRadius: number;
61
+ /**
62
+ * Gets or sets the color used to render the hover light (default is Color4(0.3, 0.3, 0.3, 1.0))
63
+ */
64
+ hoverColor: Color4;
65
+ /**
66
+ * Gets or sets the hover light position in world space (default is Vector3.Zero())
67
+ */
68
+ hoverPosition: Vector3;
69
+ private _albedoTexture;
70
+ /** Gets or sets the texture to use for albedo color */
71
+ albedoTexture: Nullable<BaseTexture>;
72
+ /**
73
+ * Creates a new Fluent material
74
+ * @param name defines the name of the material
75
+ * @param scene defines the hosting scene
76
+ */
77
+ constructor(name: string, scene?: Scene);
78
+ needAlphaBlending(): boolean;
79
+ needAlphaTesting(): boolean;
80
+ getAlphaTestTexture(): Nullable<BaseTexture>;
81
+ isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean;
82
+ bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void;
83
+ getActiveTextures(): BaseTexture[];
84
+ hasTexture(texture: BaseTexture): boolean;
85
+ dispose(forceDisposeEffect?: boolean): void;
86
+ clone(name: string): FluentMaterial;
87
+ serialize(): any;
88
+ getClassName(): string;
89
+ static Parse(source: any, scene: Scene, rootUrl: string): FluentMaterial;
90
+ }