@babylonjs/gui 5.0.0-alpha.6 → 5.0.0-alpha.60

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 (272) hide show
  1. package/2D/adtInstrumentation.js +1 -1
  2. package/2D/advancedDynamicTexture.d.ts +26 -4
  3. package/2D/advancedDynamicTexture.js +107 -47
  4. package/2D/advancedDynamicTexture.js.map +1 -1
  5. package/2D/controls/button.js +10 -10
  6. package/2D/controls/button.js.map +1 -1
  7. package/2D/controls/checkbox.d.ts +2 -1
  8. package/2D/controls/checkbox.js +10 -8
  9. package/2D/controls/checkbox.js.map +1 -1
  10. package/2D/controls/colorpicker.d.ts +4 -3
  11. package/2D/controls/colorpicker.js +40 -23
  12. package/2D/controls/colorpicker.js.map +1 -1
  13. package/2D/controls/container.d.ts +16 -5
  14. package/2D/controls/container.js +89 -11
  15. package/2D/controls/container.js.map +1 -1
  16. package/2D/controls/control.d.ts +40 -15
  17. package/2D/controls/control.js +103 -59
  18. package/2D/controls/control.js.map +1 -1
  19. package/2D/controls/displayGrid.d.ts +2 -1
  20. package/2D/controls/displayGrid.js +6 -6
  21. package/2D/controls/displayGrid.js.map +1 -1
  22. package/2D/controls/ellipse.d.ts +5 -3
  23. package/2D/controls/ellipse.js +9 -5
  24. package/2D/controls/ellipse.js.map +1 -1
  25. package/2D/controls/focusableButton.d.ts +4 -2
  26. package/2D/controls/focusableButton.js +9 -6
  27. package/2D/controls/focusableButton.js.map +1 -1
  28. package/2D/controls/focusableControl.d.ts +2 -1
  29. package/2D/controls/focusableControl.js.map +1 -1
  30. package/2D/controls/grid.d.ts +11 -2
  31. package/2D/controls/grid.js +63 -6
  32. package/2D/controls/grid.js.map +1 -1
  33. package/2D/controls/image.d.ts +20 -12
  34. package/2D/controls/image.js +154 -111
  35. package/2D/controls/image.js.map +1 -1
  36. package/2D/controls/index.js +29 -29
  37. package/2D/controls/inputPassword.js +4 -4
  38. package/2D/controls/inputPassword.js.map +1 -1
  39. package/2D/controls/inputText.d.ts +6 -4
  40. package/2D/controls/inputText.js +39 -13
  41. package/2D/controls/inputText.js.map +1 -1
  42. package/2D/controls/line.d.ts +3 -2
  43. package/2D/controls/line.js +8 -8
  44. package/2D/controls/line.js.map +1 -1
  45. package/2D/controls/multiLine.d.ts +4 -3
  46. package/2D/controls/multiLine.js +6 -6
  47. package/2D/controls/multiLine.js.map +1 -1
  48. package/2D/controls/radioButton.d.ts +2 -1
  49. package/2D/controls/radioButton.js +10 -7
  50. package/2D/controls/radioButton.js.map +1 -1
  51. package/2D/controls/rectangle.d.ts +8 -3
  52. package/2D/controls/rectangle.js +21 -5
  53. package/2D/controls/rectangle.js.map +1 -1
  54. package/2D/controls/scrollViewers/scrollViewer.d.ts +3 -2
  55. package/2D/controls/scrollViewers/scrollViewer.js +9 -9
  56. package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
  57. package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +4 -3
  58. package/2D/controls/scrollViewers/scrollViewerWindow.js +4 -4
  59. package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
  60. package/2D/controls/selector.js +8 -8
  61. package/2D/controls/selector.js.map +1 -1
  62. package/2D/controls/sliders/baseSlider.d.ts +1 -1
  63. package/2D/controls/sliders/baseSlider.js +12 -10
  64. package/2D/controls/sliders/baseSlider.js.map +1 -1
  65. package/2D/controls/sliders/imageBasedSlider.d.ts +10 -1
  66. package/2D/controls/sliders/imageBasedSlider.js +29 -5
  67. package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
  68. package/2D/controls/sliders/imageScrollBar.d.ts +2 -1
  69. package/2D/controls/sliders/imageScrollBar.js +3 -3
  70. package/2D/controls/sliders/imageScrollBar.js.map +1 -1
  71. package/2D/controls/sliders/scrollBar.d.ts +2 -1
  72. package/2D/controls/sliders/scrollBar.js +3 -3
  73. package/2D/controls/sliders/scrollBar.js.map +1 -1
  74. package/2D/controls/sliders/slider.d.ts +2 -1
  75. package/2D/controls/sliders/slider.js +4 -4
  76. package/2D/controls/sliders/slider.js.map +1 -1
  77. package/2D/controls/stackPanel.d.ts +3 -2
  78. package/2D/controls/stackPanel.js +6 -6
  79. package/2D/controls/stackPanel.js.map +1 -1
  80. package/2D/controls/statics.js +3 -3
  81. package/2D/controls/statics.js.map +1 -1
  82. package/2D/controls/textBlock.d.ts +9 -8
  83. package/2D/controls/textBlock.js +25 -15
  84. package/2D/controls/textBlock.js.map +1 -1
  85. package/2D/controls/textWrapper.js +2 -2
  86. package/2D/controls/textWrapper.js.map +1 -1
  87. package/2D/controls/toggleButton.d.ts +1 -13
  88. package/2D/controls/toggleButton.js +29 -38
  89. package/2D/controls/toggleButton.js.map +1 -1
  90. package/2D/controls/virtualKeyboard.js +5 -5
  91. package/2D/controls/virtualKeyboard.js.map +1 -1
  92. package/2D/index.d.ts +1 -1
  93. package/2D/index.js +9 -9
  94. package/2D/index.js.map +1 -1
  95. package/2D/math2D.js +2 -2
  96. package/2D/measure.js +1 -1
  97. package/2D/measure.js.map +1 -1
  98. package/2D/multiLinePoint.js +3 -3
  99. package/2D/style.js +2 -2
  100. package/2D/xmlLoader.d.ts +17 -3
  101. package/2D/xmlLoader.js +54 -15
  102. package/2D/xmlLoader.js.map +1 -1
  103. package/3D/behaviors/defaultBehavior.d.ts +73 -0
  104. package/3D/behaviors/defaultBehavior.js +122 -0
  105. package/3D/behaviors/defaultBehavior.js.map +1 -0
  106. package/3D/controls/abstractButton3D.d.ts +2 -2
  107. package/3D/controls/abstractButton3D.js +3 -3
  108. package/3D/controls/abstractButton3D.js.map +1 -1
  109. package/3D/controls/button3D.d.ts +0 -24
  110. package/3D/controls/button3D.js +7 -83
  111. package/3D/controls/button3D.js.map +1 -1
  112. package/3D/controls/container3D.js +2 -2
  113. package/3D/controls/contentDisplay3D.d.ts +30 -0
  114. package/3D/controls/contentDisplay3D.js +79 -0
  115. package/3D/controls/contentDisplay3D.js.map +1 -0
  116. package/3D/controls/control3D.d.ts +8 -7
  117. package/3D/controls/control3D.js +39 -28
  118. package/3D/controls/control3D.js.map +1 -1
  119. package/3D/controls/cylinderPanel.js +5 -5
  120. package/3D/controls/handMenu.d.ts +28 -0
  121. package/3D/controls/handMenu.js +48 -0
  122. package/3D/controls/handMenu.js.map +1 -0
  123. package/3D/controls/holographicBackplate.d.ts +48 -0
  124. package/3D/controls/holographicBackplate.js +121 -0
  125. package/3D/controls/holographicBackplate.js.map +1 -0
  126. package/3D/controls/holographicButton.d.ts +1 -1
  127. package/3D/controls/holographicButton.js +27 -24
  128. package/3D/controls/holographicButton.js.map +1 -1
  129. package/3D/controls/holographicSlate.d.ts +118 -0
  130. package/3D/controls/holographicSlate.js +360 -0
  131. package/3D/controls/holographicSlate.js.map +1 -0
  132. package/3D/controls/index.d.ts +10 -0
  133. package/3D/controls/index.js +22 -12
  134. package/3D/controls/index.js.map +1 -1
  135. package/3D/controls/meshButton3D.js +2 -2
  136. package/3D/controls/meshButton3D.js.map +1 -1
  137. package/3D/controls/nearMenu.d.ts +45 -0
  138. package/3D/controls/nearMenu.js +111 -0
  139. package/3D/controls/nearMenu.js.map +1 -0
  140. package/3D/controls/planePanel.js +3 -3
  141. package/3D/controls/scatterPanel.js +4 -4
  142. package/3D/controls/slider3D.d.ts +80 -0
  143. package/3D/controls/slider3D.js +268 -0
  144. package/3D/controls/slider3D.js.map +1 -0
  145. package/3D/controls/spherePanel.js +5 -5
  146. package/3D/controls/stackPanel3D.js +3 -3
  147. package/3D/controls/touchButton3D.d.ts +43 -0
  148. package/3D/controls/touchButton3D.js +133 -0
  149. package/3D/controls/touchButton3D.js.map +1 -0
  150. package/3D/controls/touchHolographicButton.d.ts +100 -0
  151. package/3D/controls/touchHolographicButton.js +408 -0
  152. package/3D/controls/touchHolographicButton.js.map +1 -0
  153. package/3D/controls/touchHolographicMenu.d.ts +61 -0
  154. package/3D/controls/touchHolographicMenu.js +147 -0
  155. package/3D/controls/touchHolographicMenu.js.map +1 -0
  156. package/3D/controls/touchMeshButton3D.d.ts +22 -0
  157. package/3D/controls/touchMeshButton3D.js +63 -0
  158. package/3D/controls/touchMeshButton3D.js.map +1 -0
  159. package/3D/controls/touchToggleButton3D.d.ts +35 -0
  160. package/3D/controls/touchToggleButton3D.js +60 -0
  161. package/3D/controls/touchToggleButton3D.js.map +1 -0
  162. package/3D/controls/volumeBasedPanel.d.ts +1 -1
  163. package/3D/controls/volumeBasedPanel.js +5 -5
  164. package/3D/controls/volumeBasedPanel.js.map +1 -1
  165. package/3D/gizmos/gizmoHandle.d.ts +108 -0
  166. package/3D/gizmos/gizmoHandle.js +210 -0
  167. package/3D/gizmos/gizmoHandle.js.map +1 -0
  168. package/3D/gizmos/index.d.ts +2 -0
  169. package/3D/gizmos/index.js +3 -0
  170. package/3D/gizmos/index.js.map +1 -0
  171. package/3D/gizmos/slateGizmo.d.ts +59 -0
  172. package/3D/gizmos/slateGizmo.js +364 -0
  173. package/3D/gizmos/slateGizmo.js.map +1 -0
  174. package/3D/gui3DManager.d.ts +9 -0
  175. package/3D/gui3DManager.js +30 -13
  176. package/3D/gui3DManager.js.map +1 -1
  177. package/3D/index.d.ts +3 -2
  178. package/3D/index.js +5 -4
  179. package/3D/index.js.map +1 -1
  180. package/3D/materials/fluent/fluentMaterial.d.ts +90 -0
  181. package/3D/materials/fluent/fluentMaterial.js +282 -0
  182. package/3D/materials/fluent/fluentMaterial.js.map +1 -0
  183. package/3D/materials/fluent/index.d.ts +1 -0
  184. package/3D/materials/fluent/index.js +2 -0
  185. package/3D/materials/fluent/index.js.map +1 -0
  186. package/3D/materials/{shaders → fluent/shaders}/fluent.fragment.d.ts +0 -0
  187. package/3D/materials/fluent/shaders/fluent.fragment.js +7 -0
  188. package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -0
  189. package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.d.ts +0 -0
  190. package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.js +2 -2
  191. package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -0
  192. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +154 -0
  193. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +435 -0
  194. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -0
  195. package/3D/materials/fluentBackplate/index.d.ts +1 -0
  196. package/3D/materials/fluentBackplate/index.js +2 -0
  197. package/3D/materials/fluentBackplate/index.js.map +1 -0
  198. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -0
  199. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +7 -0
  200. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -0
  201. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -0
  202. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +7 -0
  203. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -0
  204. package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +189 -0
  205. package/3D/materials/fluentButton/fluentButtonMaterial.js +538 -0
  206. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -0
  207. package/3D/materials/fluentButton/index.d.ts +1 -0
  208. package/3D/materials/fluentButton/index.js +2 -0
  209. package/3D/materials/fluentButton/index.js.map +1 -0
  210. package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -0
  211. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +7 -0
  212. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -0
  213. package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -0
  214. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +7 -0
  215. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -0
  216. package/3D/materials/fluentMaterial.d.ts +2 -88
  217. package/3D/materials/fluentMaterial.js +2 -277
  218. package/3D/materials/fluentMaterial.js.map +1 -1
  219. package/3D/materials/handle/handleMaterial.d.ts +68 -0
  220. package/3D/materials/handle/handleMaterial.js +127 -0
  221. package/3D/materials/handle/handleMaterial.js.map +1 -0
  222. package/3D/materials/handle/index.d.ts +1 -0
  223. package/3D/materials/handle/index.js +2 -0
  224. package/3D/materials/handle/index.js.map +1 -0
  225. package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -0
  226. package/3D/materials/handle/shaders/handle.fragment.js +7 -0
  227. package/3D/materials/handle/shaders/handle.fragment.js.map +1 -0
  228. package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -0
  229. package/3D/materials/handle/shaders/handle.vertex.js +7 -0
  230. package/3D/materials/handle/shaders/handle.vertex.js.map +1 -0
  231. package/3D/materials/index.d.ts +5 -1
  232. package/3D/materials/index.js +5 -1
  233. package/3D/materials/index.js.map +1 -1
  234. package/3D/materials/mrdl/index.d.ts +3 -0
  235. package/3D/materials/mrdl/index.js +4 -0
  236. package/3D/materials/mrdl/index.js.map +1 -0
  237. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +147 -0
  238. package/3D/materials/mrdl/mrdlBackplateMaterial.js +410 -0
  239. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -0
  240. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +333 -0
  241. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +787 -0
  242. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -0
  243. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +333 -0
  244. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +787 -0
  245. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -0
  246. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -0
  247. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +7 -0
  248. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -0
  249. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -0
  250. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +7 -0
  251. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -0
  252. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -0
  253. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +7 -0
  254. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -0
  255. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -0
  256. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +7 -0
  257. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -0
  258. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -0
  259. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +7 -0
  260. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -0
  261. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -0
  262. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +7 -0
  263. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -0
  264. package/3D/vector3WithInfo.js +1 -1
  265. package/index.d.ts +2 -2
  266. package/index.js +2 -2
  267. package/index.js.map +1 -1
  268. package/legacy/legacy.js +2 -2
  269. package/package.json +126 -9
  270. package/3D/materials/shaders/fluent.fragment.js +0 -7
  271. package/3D/materials/shaders/fluent.fragment.js.map +0 -1
  272. package/3D/materials/shaders/fluent.vertex.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"advancedDynamicTexture.js","sourceRoot":"","sources":["../../../sourceES6/gui/src/2D/advancedDynamicTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\nimport { Observable, Observer } from \"@babylonjs/core/Misc/observable\";\nimport { Vector2, Vector3, Matrix } from \"@babylonjs/core/Maths/math.vector\";\nimport { Tools } from \"@babylonjs/core/Misc/tools\";\nimport { PointerInfoPre, PointerInfo, PointerEventTypes, PointerInfoBase } from '@babylonjs/core/Events/pointerEvents';\nimport { ClipboardEventTypes, ClipboardInfo } from \"@babylonjs/core/Events/clipboardEvents\";\nimport { KeyboardInfoPre, KeyboardEventTypes } from \"@babylonjs/core/Events/keyboardEvents\";\nimport { Camera } from \"@babylonjs/core/Cameras/camera\";\nimport { StandardMaterial } from \"@babylonjs/core/Materials/standardMaterial\";\nimport { Texture } from \"@babylonjs/core/Materials/Textures/texture\";\nimport { DynamicTexture } from \"@babylonjs/core/Materials/Textures/dynamicTexture\";\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\nimport { Layer } from \"@babylonjs/core/Layers/layer\";\nimport { Engine } from \"@babylonjs/core/Engines/engine\";\nimport { Scene } from \"@babylonjs/core/scene\";\n\nimport { Container } from \"./controls/container\";\nimport { Control } from \"./controls/control\";\nimport { IFocusableControl } from './controls/focusableControl';\nimport { Style } from \"./style\";\nimport { Measure } from \"./measure\";\nimport { Constants } from '@babylonjs/core/Engines/constants';\nimport { Viewport } from '@babylonjs/core/Maths/math.viewport';\nimport { Color3 } from '@babylonjs/core/Maths/math.color';\nimport { WebRequest } from \"@babylonjs/core/Misc/webRequest\";\n\n/**\n* Class used to create texture to support 2D GUI elements\n* @see https://doc.babylonjs.com/how_to/gui\n*/\nexport class AdvancedDynamicTexture extends DynamicTexture {\n /** Define the Uurl to load snippets */\n public static SnippetUrl = \"https://snippet.babylonjs.com\";\n\n /** Snippet ID if the content was created from the snippet server */\n public snippetId: string;\n\n private _isDirty = false;\n private _renderObserver: Nullable<Observer<Camera>>;\n private _resizeObserver: Nullable<Observer<Engine>>;\n private _preKeyboardObserver: Nullable<Observer<KeyboardInfoPre>>;\n private _pointerMoveObserver: Nullable<Observer<PointerInfoPre>>;\n private _pointerObserver: Nullable<Observer<PointerInfo>>;\n private _canvasPointerOutObserver: Nullable<Observer<PointerEvent>>;\n private _canvasBlurObserver: Nullable<Observer<Engine>>;\n private _background: string;\n /** @hidden */\n public _rootContainer = new Container(\"root\");\n /** @hidden */\n public _lastPickedControl: Control;\n /** @hidden */\n public _lastControlOver: { [pointerId: number]: Control } = {};\n /** @hidden */\n public _lastControlDown: { [pointerId: number]: Control } = {};\n /** @hidden */\n public _capturingControl: { [pointerId: number]: Control } = {};\n /** @hidden */\n public _shouldBlockPointer: boolean;\n /** @hidden */\n public _layerToDispose: Nullable<Layer>;\n /** @hidden */\n public _linkedControls = new Array<Control>();\n private _isFullscreen = false;\n private _fullscreenViewport = new Viewport(0, 0, 1, 1);\n private _idealWidth = 0;\n private _idealHeight = 0;\n private _useSmallestIdeal: boolean = false;\n private _renderAtIdealSize = false;\n private _focusedControl: Nullable<IFocusableControl>;\n private _blockNextFocusCheck = false;\n private _renderScale = 1;\n private _rootElement: Nullable<HTMLElement>;\n private _cursorChanged = false;\n private _defaultMousePointerId = 0;\n\n /** @hidden */\n public _numLayoutCalls = 0;\n /** Gets the number of layout calls made the last time the ADT has been rendered */\n public get numLayoutCalls(): number {\n return this._numLayoutCalls;\n }\n\n /** @hidden */\n public _numRenderCalls = 0;\n /** Gets the number of render calls made the last time the ADT has been rendered */\n public get numRenderCalls(): number {\n return this._numRenderCalls;\n }\n\n /**\n * Define type to string to ensure compatibility across browsers\n * Safari doesn't support DataTransfer constructor\n */\n private _clipboardData: string = \"\";\n /**\n * Observable event triggered each time an clipboard event is received from the rendering canvas\n */\n public onClipboardObservable = new Observable<ClipboardInfo>();\n /**\n * Observable event triggered each time a pointer down is intercepted by a control\n */\n public onControlPickedObservable = new Observable<Control>();\n /**\n * Observable event triggered before layout is evaluated\n */\n public onBeginLayoutObservable = new Observable<AdvancedDynamicTexture>();\n /**\n * Observable event triggered after the layout was evaluated\n */\n public onEndLayoutObservable = new Observable<AdvancedDynamicTexture>();\n /**\n * Observable event triggered before the texture is rendered\n */\n public onBeginRenderObservable = new Observable<AdvancedDynamicTexture>();\n /**\n * Observable event triggered after the texture was rendered\n */\n public onEndRenderObservable = new Observable<AdvancedDynamicTexture>();\n /**\n * Gets or sets a boolean defining if alpha is stored as premultiplied\n */\n public premulAlpha = false;\n /**\n * Gets or sets a boolean indicating that the canvas must be reverted on Y when updating the texture\n */\n public applyYInversionOnUpdate = true;\n /**\n * Gets or sets a number used to scale rendering size (2 means that the texture will be twice bigger).\n * Useful when you want more antialiasing\n */\n public get renderScale(): number {\n return this._renderScale;\n }\n public set renderScale(value: number) {\n if (value === this._renderScale) {\n return;\n }\n this._renderScale = value;\n this._onResize();\n }\n /** Gets or sets the background color */\n public get background(): string {\n return this._background;\n }\n public set background(value: string) {\n if (this._background === value) {\n return;\n }\n this._background = value;\n this.markAsDirty();\n }\n /**\n * Gets or sets the ideal width used to design controls.\n * The GUI will then rescale everything accordingly\n * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling\n */\n public get idealWidth(): number {\n return this._idealWidth;\n }\n public set idealWidth(value: number) {\n if (this._idealWidth === value) {\n return;\n }\n this._idealWidth = value;\n this.markAsDirty();\n this._rootContainer._markAllAsDirty();\n }\n /**\n * Gets or sets the ideal height used to design controls.\n * The GUI will then rescale everything accordingly\n * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling\n */\n public get idealHeight(): number {\n return this._idealHeight;\n }\n public set idealHeight(value: number) {\n if (this._idealHeight === value) {\n return;\n }\n this._idealHeight = value;\n this.markAsDirty();\n this._rootContainer._markAllAsDirty();\n }\n /**\n * Gets or sets a boolean indicating if the smallest ideal value must be used if idealWidth and idealHeight are both set\n * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling\n */\n public get useSmallestIdeal(): boolean {\n return this._useSmallestIdeal;\n }\n public set useSmallestIdeal(value: boolean) {\n if (this._useSmallestIdeal === value) {\n return;\n }\n this._useSmallestIdeal = value;\n this.markAsDirty();\n this._rootContainer._markAllAsDirty();\n }\n /**\n * Gets or sets a boolean indicating if adaptive scaling must be used\n * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling\n */\n public get renderAtIdealSize(): boolean {\n return this._renderAtIdealSize;\n }\n public set renderAtIdealSize(value: boolean) {\n if (this._renderAtIdealSize === value) {\n return;\n }\n this._renderAtIdealSize = value;\n this._onResize();\n }\n\n /**\n * Gets the ratio used when in \"ideal mode\"\n * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling\n * */\n public get idealRatio(): number {\n var rwidth: number = 0;\n var rheight: number = 0;\n\n if (this._idealWidth) {\n rwidth = (this.getSize().width) / this._idealWidth;\n }\n\n if (this._idealHeight) {\n rheight = (this.getSize().height) / this._idealHeight;\n }\n\n if (this._useSmallestIdeal && this._idealWidth && this._idealHeight) {\n return window.innerWidth < window.innerHeight ? rwidth : rheight;\n }\n\n if (this._idealWidth) { // horizontal\n return rwidth;\n }\n\n if (this._idealHeight) { // vertical\n return rheight;\n }\n\n return 1;\n }\n\n /**\n * Gets the underlying layer used to render the texture when in fullscreen mode\n */\n public get layer(): Nullable<Layer> {\n return this._layerToDispose;\n }\n /**\n * Gets the root container control\n */\n public get rootContainer(): Container {\n return this._rootContainer;\n }\n /**\n * Returns an array containing the root container.\n * This is mostly used to let the Inspector introspects the ADT\n * @returns an array containing the rootContainer\n */\n public getChildren(): Array<Container> {\n return [this._rootContainer];\n }\n /**\n * Will return all controls that are inside this texture\n * @param directDescendantsOnly defines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered\n * @param predicate defines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored\n * @return all child controls\n */\n public getDescendants(directDescendantsOnly?: boolean, predicate?: (control: Control) => boolean): Control[] {\n return this._rootContainer.getDescendants(directDescendantsOnly, predicate);\n }\n /**\n * Gets or sets the current focused control\n */\n public get focusedControl(): Nullable<IFocusableControl> {\n return this._focusedControl;\n }\n public set focusedControl(control: Nullable<IFocusableControl>) {\n if (this._focusedControl == control) {\n return;\n }\n if (this._focusedControl) {\n this._focusedControl.onBlur();\n }\n if (control) {\n control.onFocus();\n }\n this._focusedControl = control;\n }\n /**\n * Gets or sets a boolean indicating if the texture must be rendered in background or foreground when in fullscreen mode\n */\n public get isForeground(): boolean {\n if (!this.layer) {\n return true;\n }\n return (!this.layer.isBackground);\n }\n public set isForeground(value: boolean) {\n if (!this.layer) {\n return;\n }\n if (this.layer.isBackground === !value) {\n return;\n }\n this.layer.isBackground = !value;\n }\n /**\n * Gets or set information about clipboardData\n */\n public get clipboardData(): string {\n return this._clipboardData;\n }\n public set clipboardData(value: string) {\n this._clipboardData = value;\n }\n /**\n * Creates a new AdvancedDynamicTexture\n * @param name defines the name of the texture\n * @param width defines the width of the texture\n * @param height defines the height of the texture\n * @param scene defines the hosting scene\n * @param generateMipMaps defines a boolean indicating if mipmaps must be generated (false by default)\n * @param samplingMode defines the texture sampling mode (Texture.NEAREST_SAMPLINGMODE by default)\n * @param invertY defines if the texture needs to be inverted on the y axis during loading (true by default)\n */\n constructor(name: string, width = 0, height = 0, scene: Nullable<Scene>, generateMipMaps = false, samplingMode = Texture.NEAREST_SAMPLINGMODE, invertY?: boolean) {\n super(name, { width: width, height: height }, scene, generateMipMaps, samplingMode, Constants.TEXTUREFORMAT_RGBA, invertY);\n scene = this.getScene();\n if (!scene || !this._texture) {\n return;\n }\n this._rootElement = scene.getEngine()!.getInputElement()!;\n this._renderObserver = scene.onBeforeCameraRenderObservable.add((camera: Camera) => this._checkUpdate(camera));\n this._preKeyboardObserver = scene.onPreKeyboardObservable.add((info) => {\n if (!this._focusedControl) {\n return;\n }\n if (info.type === KeyboardEventTypes.KEYDOWN) {\n this._focusedControl.processKeyboard(info.event);\n }\n info.skipOnPointerObservable = true;\n });\n this._rootContainer._link(this);\n this.hasAlpha = true;\n if (!width || !height) {\n this._resizeObserver = scene.getEngine().onResizeObservable.add(() => this._onResize());\n this._onResize();\n }\n this._texture.isReady = true;\n }\n /**\n * Get the current class name of the texture useful for serialization or dynamic coding.\n * @returns \"AdvancedDynamicTexture\"\n */\n public getClassName(): string {\n return \"AdvancedDynamicTexture\";\n }\n /**\n * Function used to execute a function on all controls\n * @param func defines the function to execute\n * @param container defines the container where controls belong. If null the root container will be used\n */\n public executeOnAllControls(func: (control: Control) => void, container?: Container) {\n if (!container) {\n container = this._rootContainer;\n }\n func(container);\n for (var child of container.children) {\n if ((<any>child).children) {\n this.executeOnAllControls(func, (<Container>child));\n continue;\n }\n func(child);\n }\n }\n\n private _useInvalidateRectOptimization = true;\n\n /**\n * Gets or sets a boolean indicating if the InvalidateRect optimization should be turned on\n */\n public get useInvalidateRectOptimization(): boolean {\n return this._useInvalidateRectOptimization;\n }\n\n public set useInvalidateRectOptimization(value: boolean) {\n this._useInvalidateRectOptimization = value;\n }\n\n // Invalidated rectangle which is the combination of all invalidated controls after they have been rotated into absolute position\n private _invalidatedRectangle: Nullable<Measure> = null;\n /**\n * Invalidates a rectangle area on the gui texture\n * @param invalidMinX left most position of the rectangle to invalidate in the texture\n * @param invalidMinY top most position of the rectangle to invalidate in the texture\n * @param invalidMaxX right most position of the rectangle to invalidate in the texture\n * @param invalidMaxY bottom most position of the rectangle to invalidate in the texture\n */\n public invalidateRect(invalidMinX: number, invalidMinY: number, invalidMaxX: number, invalidMaxY: number) {\n if (!this._useInvalidateRectOptimization) {\n return;\n }\n if (!this._invalidatedRectangle) {\n this._invalidatedRectangle = new Measure(invalidMinX, invalidMinY, invalidMaxX - invalidMinX + 1, invalidMaxY - invalidMinY + 1);\n } else {\n // Compute intersection\n var maxX = Math.ceil(Math.max(this._invalidatedRectangle.left + this._invalidatedRectangle.width - 1, invalidMaxX));\n var maxY = Math.ceil(Math.max(this._invalidatedRectangle.top + this._invalidatedRectangle.height - 1, invalidMaxY));\n this._invalidatedRectangle.left = Math.floor(Math.min(this._invalidatedRectangle.left, invalidMinX));\n this._invalidatedRectangle.top = Math.floor(Math.min(this._invalidatedRectangle.top, invalidMinY));\n this._invalidatedRectangle.width = maxX - this._invalidatedRectangle.left + 1;\n this._invalidatedRectangle.height = maxY - this._invalidatedRectangle.top + 1;\n }\n }\n /**\n * Marks the texture as dirty forcing a complete update\n */\n public markAsDirty() {\n this._isDirty = true;\n }\n /**\n * Helper function used to create a new style\n * @returns a new style\n * @see https://doc.babylonjs.com/how_to/gui#styles\n */\n public createStyle(): Style {\n return new Style(this);\n }\n /**\n * Adds a new control to the root container\n * @param control defines the control to add\n * @returns the current texture\n */\n public addControl(control: Control): AdvancedDynamicTexture {\n this._rootContainer.addControl(control);\n return this;\n }\n /**\n * Removes a control from the root container\n * @param control defines the control to remove\n * @returns the current texture\n */\n public removeControl(control: Control): AdvancedDynamicTexture {\n this._rootContainer.removeControl(control);\n return this;\n }\n /**\n * Release all resources\n */\n public dispose(): void {\n let scene = this.getScene();\n if (!scene) {\n return;\n }\n this._rootElement = null;\n scene.onBeforeCameraRenderObservable.remove(this._renderObserver);\n if (this._resizeObserver) {\n scene.getEngine().onResizeObservable.remove(this._resizeObserver);\n }\n if (this._pointerMoveObserver) {\n scene.onPrePointerObservable.remove(this._pointerMoveObserver);\n }\n if (this._pointerObserver) {\n scene.onPointerObservable.remove(this._pointerObserver);\n }\n if (this._preKeyboardObserver) {\n scene.onPreKeyboardObservable.remove(this._preKeyboardObserver);\n }\n if (this._canvasPointerOutObserver) {\n scene.getEngine().onCanvasPointerOutObservable.remove(this._canvasPointerOutObserver);\n }\n if (this._canvasBlurObserver) {\n scene.getEngine().onCanvasBlurObservable.remove(this._canvasBlurObserver);\n }\n if (this._layerToDispose) {\n this._layerToDispose.texture = null;\n this._layerToDispose.dispose();\n this._layerToDispose = null;\n }\n this._rootContainer.dispose();\n this.onClipboardObservable.clear();\n this.onControlPickedObservable.clear();\n this.onBeginRenderObservable.clear();\n this.onEndRenderObservable.clear();\n this.onBeginLayoutObservable.clear();\n this.onEndLayoutObservable.clear();\n super.dispose();\n }\n private _onResize(): void {\n let scene = this.getScene();\n if (!scene) {\n return;\n }\n // Check size\n var engine = scene.getEngine();\n var textureSize = this.getSize();\n var renderWidth = engine.getRenderWidth() * this._renderScale;\n var renderHeight = engine.getRenderHeight() * this._renderScale;\n\n if (this._renderAtIdealSize) {\n if (this._idealWidth) {\n renderHeight = (renderHeight * this._idealWidth) / renderWidth;\n renderWidth = this._idealWidth;\n } else if (this._idealHeight) {\n renderWidth = (renderWidth * this._idealHeight) / renderHeight;\n renderHeight = this._idealHeight;\n }\n }\n if (textureSize.width !== renderWidth || textureSize.height !== renderHeight) {\n this.scaleTo(renderWidth, renderHeight);\n this.markAsDirty();\n if (this._idealWidth || this._idealHeight) {\n this._rootContainer._markAllAsDirty();\n }\n }\n this.invalidateRect(0, 0, textureSize.width - 1, textureSize.height - 1);\n }\n /** @hidden */\n public _getGlobalViewport(scene: Scene): Viewport {\n var engine = scene.getEngine();\n return this._fullscreenViewport.toGlobal(engine.getRenderWidth(), engine.getRenderHeight());\n }\n /**\n * Get screen coordinates for a vector3\n * @param position defines the position to project\n * @param worldMatrix defines the world matrix to use\n * @returns the projected position\n */\n public getProjectedPosition(position: Vector3, worldMatrix: Matrix): Vector2 {\n var scene = this.getScene();\n if (!scene) {\n return Vector2.Zero();\n }\n var globalViewport = this._getGlobalViewport(scene);\n var projectedPosition = Vector3.Project(position, worldMatrix, scene.getTransformMatrix(), globalViewport);\n projectedPosition.scaleInPlace(this.renderScale);\n return new Vector2(projectedPosition.x, projectedPosition.y);\n }\n /**\n * Get screen coordinates for a vector3\n * @param position defines the position to project\n * @param worldMatrix defines the world matrix to use\n * @returns the projected position with Z\n */\n public getProjectedPositionWithZ(position: Vector3, worldMatrix: Matrix): Vector3 {\n var scene = this.getScene();\n if (!scene) {\n return Vector3.Zero();\n }\n var globalViewport = this._getGlobalViewport(scene);\n var projectedPosition = Vector3.Project(position, worldMatrix, scene.getTransformMatrix(), globalViewport);\n projectedPosition.scaleInPlace(this.renderScale);\n return new Vector3(projectedPosition.x, projectedPosition.y, projectedPosition.z);\n }\n private _checkUpdate(camera: Camera): void {\n if (this._layerToDispose) {\n if ((camera.layerMask & this._layerToDispose.layerMask) === 0) {\n return;\n }\n }\n if (this._isFullscreen && this._linkedControls.length) {\n var scene = this.getScene();\n if (!scene) {\n return;\n }\n var globalViewport = this._getGlobalViewport(scene);\n for (let control of this._linkedControls) {\n if (!control.isVisible) {\n continue;\n }\n let mesh = control._linkedMesh as AbstractMesh;\n if (!mesh || mesh.isDisposed()) {\n Tools.SetImmediate(() => {\n control.linkWithMesh(null);\n });\n continue;\n }\n let position = mesh.getBoundingInfo ? mesh.getBoundingInfo().boundingSphere.center : (Vector3.ZeroReadOnly as Vector3);\n let projectedPosition = Vector3.Project(position, mesh.getWorldMatrix(), scene.getTransformMatrix(), globalViewport);\n if (projectedPosition.z < 0 || projectedPosition.z > 1) {\n control.notRenderable = true;\n continue;\n }\n control.notRenderable = false;\n // Account for RenderScale.\n projectedPosition.scaleInPlace(this.renderScale);\n control._moveToProjectedPosition(projectedPosition);\n }\n }\n if (!this._isDirty && !this._rootContainer.isDirty) {\n return;\n }\n this._isDirty = false;\n this._render();\n this.update(this.applyYInversionOnUpdate, this.premulAlpha);\n }\n\n private _clearMeasure = new Measure(0, 0, 0, 0);\n\n private _render(): void {\n var textureSize = this.getSize();\n var renderWidth = textureSize.width;\n var renderHeight = textureSize.height;\n\n var context = this.getContext();\n context.font = \"18px Arial\";\n context.strokeStyle = \"white\";\n\n // Layout\n this.onBeginLayoutObservable.notifyObservers(this);\n var measure = new Measure(0, 0, renderWidth, renderHeight);\n this._numLayoutCalls = 0;\n this._rootContainer._layout(measure, context);\n this.onEndLayoutObservable.notifyObservers(this);\n this._isDirty = false; // Restoring the dirty state that could have been set by controls during layout processing\n\n // Clear\n if (this._invalidatedRectangle) {\n this._clearMeasure.copyFrom(this._invalidatedRectangle);\n } else {\n this._clearMeasure.copyFromFloats(0, 0, renderWidth, renderHeight);\n }\n context.clearRect(this._clearMeasure.left, this._clearMeasure.top, this._clearMeasure.width, this._clearMeasure.height);\n if (this._background) {\n context.save();\n context.fillStyle = this._background;\n context.fillRect(this._clearMeasure.left, this._clearMeasure.top, this._clearMeasure.width, this._clearMeasure.height);\n context.restore();\n }\n\n // Render\n this.onBeginRenderObservable.notifyObservers(this);\n this._numRenderCalls = 0;\n this._rootContainer._render(context, this._invalidatedRectangle);\n this.onEndRenderObservable.notifyObservers(this);\n this._invalidatedRectangle = null;\n }\n /** @hidden */\n public _changeCursor(cursor: string) {\n if (this._rootElement) {\n this._rootElement.style.cursor = cursor;\n this._cursorChanged = true;\n }\n }\n /** @hidden */\n public _registerLastControlDown(control: Control, pointerId: number) {\n this._lastControlDown[pointerId] = control;\n this.onControlPickedObservable.notifyObservers(control);\n }\n private _doPicking(x: number, y: number, pi: PointerInfoBase, type: number, pointerId: number, buttonIndex: number, deltaX?: number, deltaY?: number): void {\n var scene = this.getScene();\n if (!scene) {\n return;\n }\n var engine = scene.getEngine();\n var textureSize = this.getSize();\n if (this._isFullscreen) {\n let camera = scene.cameraToUseForPointers || scene.activeCamera;\n let viewport = camera!.viewport;\n x = x * (textureSize.width / (engine.getRenderWidth() * viewport.width));\n y = y * (textureSize.height / (engine.getRenderHeight() * viewport.height));\n }\n if (this._capturingControl[pointerId]) {\n this._capturingControl[pointerId]._processObservables(type, x, y, pi, pointerId, buttonIndex);\n return;\n }\n\n this._cursorChanged = false;\n if (!this._rootContainer._processPicking(x, y, pi, type, pointerId, buttonIndex, deltaX, deltaY)) {\n this._changeCursor(\"\");\n if (type === PointerEventTypes.POINTERMOVE) {\n if (this._lastControlOver[pointerId]) {\n this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId], pi);\n delete this._lastControlOver[pointerId];\n }\n }\n }\n\n if (!this._cursorChanged) {\n this._changeCursor(\"\");\n }\n this._manageFocus();\n }\n /** @hidden */\n public _cleanControlAfterRemovalFromList(list: { [pointerId: number]: Control }, control: Control) {\n for (var pointerId in list) {\n if (!list.hasOwnProperty(pointerId)) {\n continue;\n }\n var lastControlOver = list[pointerId];\n if (lastControlOver === control) {\n delete list[pointerId];\n }\n }\n }\n /** @hidden */\n public _cleanControlAfterRemoval(control: Control) {\n this._cleanControlAfterRemovalFromList(this._lastControlDown, control);\n this._cleanControlAfterRemovalFromList(this._lastControlOver, control);\n }\n /** Attach to all scene events required to support pointer events */\n public attach(): void {\n var scene = this.getScene();\n if (!scene) {\n return;\n }\n\n let tempViewport = new Viewport(0, 0, 0, 0);\n\n this._pointerMoveObserver = scene.onPrePointerObservable.add((pi, state) => {\n if (scene!.isPointerCaptured((<PointerEvent>(pi.event)).pointerId)) {\n return;\n }\n if (pi.type !== PointerEventTypes.POINTERMOVE\n && pi.type !== PointerEventTypes.POINTERUP\n && pi.type !== PointerEventTypes.POINTERDOWN\n && pi.type !== PointerEventTypes.POINTERWHEEL) {\n return;\n }\n if (!scene) {\n return;\n }\n\n if (pi.type === PointerEventTypes.POINTERMOVE && (pi.event as PointerEvent).pointerId) {\n this._defaultMousePointerId = (pi.event as PointerEvent).pointerId; // This is required to make sure we have the correct pointer ID for wheel\n }\n\n let camera = scene.cameraToUseForPointers || scene.activeCamera;\n let engine = scene.getEngine();\n\n if (!camera) {\n tempViewport.x = 0;\n tempViewport.y = 0;\n tempViewport.width = engine.getRenderWidth();\n tempViewport.height = engine.getRenderHeight();\n } else {\n camera.viewport.toGlobalToRef(engine.getRenderWidth(), engine.getRenderHeight(), tempViewport);\n }\n\n let x = scene.pointerX / engine.getHardwareScalingLevel() - tempViewport.x;\n let y = scene.pointerY / engine.getHardwareScalingLevel() - (engine.getRenderHeight() - tempViewport.y - tempViewport.height);\n this._shouldBlockPointer = false;\n // Do picking modifies _shouldBlockPointer\n let pointerId = (pi.event as PointerEvent).pointerId || this._defaultMousePointerId;\n this._doPicking(x, y, pi, pi.type, pointerId, pi.event.button, (<MouseWheelEvent>pi.event).deltaX, (<MouseWheelEvent>pi.event).deltaY);\n // Avoid overwriting a true skipOnPointerObservable to false\n if (this._shouldBlockPointer) {\n pi.skipOnPointerObservable = this._shouldBlockPointer;\n }\n });\n this._attachToOnPointerOut(scene);\n this._attachToOnBlur(scene);\n }\n /** @hidden */\n private onClipboardCopy = (rawEvt: Event) => {\n const evt = rawEvt as ClipboardEvent;\n let ev = new ClipboardInfo(ClipboardEventTypes.COPY, evt);\n this.onClipboardObservable.notifyObservers(ev);\n evt.preventDefault();\n }\n /** @hidden */\n private onClipboardCut = (rawEvt: Event) => {\n const evt = rawEvt as ClipboardEvent;\n let ev = new ClipboardInfo(ClipboardEventTypes.CUT, evt);\n this.onClipboardObservable.notifyObservers(ev);\n evt.preventDefault();\n }\n /** @hidden */\n private onClipboardPaste = (rawEvt: Event) => {\n const evt = rawEvt as ClipboardEvent;\n let ev = new ClipboardInfo(ClipboardEventTypes.PASTE, evt);\n this.onClipboardObservable.notifyObservers(ev);\n evt.preventDefault();\n }\n /**\n * Register the clipboard Events onto the canvas\n */\n public registerClipboardEvents(): void {\n self.addEventListener(\"copy\", this.onClipboardCopy, false);\n self.addEventListener(\"cut\", this.onClipboardCut, false);\n self.addEventListener(\"paste\", this.onClipboardPaste, false);\n }\n /**\n * Unregister the clipboard Events from the canvas\n */\n public unRegisterClipboardEvents(): void {\n self.removeEventListener(\"copy\", this.onClipboardCopy);\n self.removeEventListener(\"cut\", this.onClipboardCut);\n self.removeEventListener(\"paste\", this.onClipboardPaste);\n }\n /**\n * Connect the texture to a hosting mesh to enable interactions\n * @param mesh defines the mesh to attach to\n * @param supportPointerMove defines a boolean indicating if pointer move events must be catched as well\n */\n public attachToMesh(mesh: AbstractMesh, supportPointerMove = true): void {\n var scene = this.getScene();\n if (!scene) {\n return;\n }\n this._pointerObserver = scene.onPointerObservable.add((pi, state) => {\n if (pi.type !== PointerEventTypes.POINTERMOVE\n && pi.type !== PointerEventTypes.POINTERUP\n && pi.type !== PointerEventTypes.POINTERDOWN) {\n return;\n }\n\n var pointerId = (pi.event as PointerEvent).pointerId || this._defaultMousePointerId;\n if (pi.pickInfo && pi.pickInfo.hit && pi.pickInfo.pickedMesh === mesh) {\n var uv = pi.pickInfo.getTextureCoordinates();\n if (uv) {\n let size = this.getSize();\n this._doPicking(uv.x * size.width, (this.applyYInversionOnUpdate ? (1.0 - uv.y) : uv.y) * size.height, pi, pi.type, pointerId, pi.event.button);\n }\n } else if (pi.type === PointerEventTypes.POINTERUP) {\n if (this._lastControlDown[pointerId]) {\n this._lastControlDown[pointerId]._forcePointerUp(pointerId);\n }\n delete this._lastControlDown[pointerId];\n if (this.focusedControl) {\n const friendlyControls = this.focusedControl.keepsFocusWith();\n let canMoveFocus = true;\n if (friendlyControls) {\n for (var control of friendlyControls) {\n // Same host, no need to keep the focus\n if (this === control._host) {\n continue;\n }\n // Different hosts\n const otherHost = control._host;\n if (otherHost._lastControlOver[pointerId] && otherHost._lastControlOver[pointerId].isAscendant(control)) {\n canMoveFocus = false;\n break;\n }\n }\n }\n if (canMoveFocus) {\n this.focusedControl = null;\n }\n }\n } else if (pi.type === PointerEventTypes.POINTERMOVE) {\n if (this._lastControlOver[pointerId]) {\n this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId], pi, true);\n }\n delete this._lastControlOver[pointerId];\n }\n });\n mesh.enablePointerMoveEvents = supportPointerMove;\n this._attachToOnPointerOut(scene);\n this._attachToOnBlur(scene);\n }\n /**\n * Move the focus to a specific control\n * @param control defines the control which will receive the focus\n */\n public moveFocusToControl(control: IFocusableControl): void {\n this.focusedControl = control;\n this._lastPickedControl = <any>control;\n this._blockNextFocusCheck = true;\n }\n private _manageFocus(): void {\n if (this._blockNextFocusCheck) {\n this._blockNextFocusCheck = false;\n this._lastPickedControl = <any>this._focusedControl;\n return;\n }\n // Focus management\n if (this._focusedControl) {\n if (this._focusedControl !== (<any>this._lastPickedControl)) {\n if (this._lastPickedControl.isFocusInvisible) {\n return;\n }\n this.focusedControl = null;\n }\n }\n }\n private _attachToOnPointerOut(scene: Scene): void {\n this._canvasPointerOutObserver = scene.getEngine().onCanvasPointerOutObservable.add((pointerEvent) => {\n if (this._lastControlOver[pointerEvent.pointerId]) {\n this._lastControlOver[pointerEvent.pointerId]._onPointerOut(this._lastControlOver[pointerEvent.pointerId], null);\n }\n delete this._lastControlOver[pointerEvent.pointerId];\n if (this._lastControlDown[pointerEvent.pointerId] && this._lastControlDown[pointerEvent.pointerId] !== this._capturingControl[pointerEvent.pointerId]) {\n this._lastControlDown[pointerEvent.pointerId]._forcePointerUp();\n delete this._lastControlDown[pointerEvent.pointerId];\n }\n });\n }\n private _attachToOnBlur(scene: Scene): void {\n this._canvasBlurObserver = scene.getEngine().onCanvasBlurObservable.add((pointerEvent) => {\n Object.entries(this._lastControlDown).forEach(([key, value]) => {\n value._onCanvasBlur();\n });\n this._lastControlDown = {};\n });\n }\n\n /**\n * Serializes the entire GUI system\n * @returns an object with the JSON serialized data\n */\n public serializeContent(): any {\n let serializationObject = {\n root: {}\n };\n\n this._rootContainer.serialize(serializationObject.root);\n\n return serializationObject;\n }\n\n /**\n * Recreate the content of the ADT from a JSON object\n * @param serializedObject define the JSON serialized object to restore from\n */\n public parseContent(serializedObject: any) {\n this._rootContainer = Control.Parse(serializedObject.root, this) as Container;\n }\n\n /**\n * Recreate the content of the ADT from a snippet saved by the GUI editor\n * @param snippetId defines the snippet to load\n * @returns a promise that will resolve on success\n */\n public parseFromSnippetAsync(snippetId: string): Promise<void> {\n if (snippetId === \"_BLANK\") {\n return Promise.resolve();\n }\n\n return new Promise((resolve, reject) => {\n var request = new WebRequest();\n request.addEventListener(\"readystatechange\", () => {\n if (request.readyState == 4) {\n if (request.status == 200) {\n var snippet = JSON.parse(JSON.parse(request.responseText).jsonPayload);\n let serializationObject = JSON.parse(snippet.gui);\n\n this.parseContent(serializationObject);\n this.snippetId = snippetId;\n\n resolve();\n } else {\n reject(\"Unable to load the snippet \" + snippetId);\n }\n }\n });\n\n request.open(\"GET\", AdvancedDynamicTexture.SnippetUrl + \"/\" + snippetId.replace(/#/g, \"/\"));\n request.send();\n });\n }\n\n // Statics\n /**\n * Creates a new AdvancedDynamicTexture in projected mode (ie. attached to a mesh)\n * @param mesh defines the mesh which will receive the texture\n * @param width defines the texture width (1024 by default)\n * @param height defines the texture height (1024 by default)\n * @param supportPointerMove defines a boolean indicating if the texture must capture move events (true by default)\n * @param onlyAlphaTesting defines a boolean indicating that alpha blending will not be used (only alpha testing) (false by default)\n * @param invertY defines if the texture needs to be inverted on the y axis during loading (true by default)\n * @returns a new AdvancedDynamicTexture\n */\n public static CreateForMesh(mesh: AbstractMesh, width = 1024, height = 1024, supportPointerMove = true, onlyAlphaTesting = false, invertY?: boolean): AdvancedDynamicTexture {\n var result = new AdvancedDynamicTexture(mesh.name + \" AdvancedDynamicTexture\", width, height, mesh.getScene(), true, Texture.TRILINEAR_SAMPLINGMODE, invertY);\n var material = new StandardMaterial(\"AdvancedDynamicTextureMaterial\", mesh.getScene());\n material.backFaceCulling = false;\n material.diffuseColor = Color3.Black();\n material.specularColor = Color3.Black();\n if (onlyAlphaTesting) {\n material.diffuseTexture = result;\n material.emissiveTexture = result;\n result.hasAlpha = true;\n } else {\n material.emissiveTexture = result;\n material.opacityTexture = result;\n }\n mesh.material = material;\n result.attachToMesh(mesh, supportPointerMove);\n return result;\n }\n\n /**\n * Creates a new AdvancedDynamicTexture in projected mode (ie. attached to a mesh) BUT do not create a new material for the mesh. You will be responsible for connecting the texture\n * @param mesh defines the mesh which will receive the texture\n * @param width defines the texture width (1024 by default)\n * @param height defines the texture height (1024 by default)\n * @param supportPointerMove defines a boolean indicating if the texture must capture move events (true by default)\n * @param invertY defines if the texture needs to be inverted on the y axis during loading (true by default)\n * @returns a new AdvancedDynamicTexture\n */\n public static CreateForMeshTexture(mesh: AbstractMesh, width = 1024, height = 1024, supportPointerMove = true, invertY?: boolean): AdvancedDynamicTexture {\n var result = new AdvancedDynamicTexture(mesh.name + \" AdvancedDynamicTexture\", width, height, mesh.getScene(), true, Texture.TRILINEAR_SAMPLINGMODE, invertY);\n result.attachToMesh(mesh, supportPointerMove);\n return result;\n }\n /**\n * Creates a new AdvancedDynamicTexture in fullscreen mode.\n * In this mode the texture will rely on a layer for its rendering.\n * This allows it to be treated like any other layer.\n * As such, if you have a multi camera setup, you can set the layerMask on the GUI as well.\n * LayerMask is set through advancedTexture.layer.layerMask\n * @param name defines name for the texture\n * @param foreground defines a boolean indicating if the texture must be rendered in foreground (default is true)\n * @param scene defines the hsoting scene\n * @param sampling defines the texture sampling mode (Texture.BILINEAR_SAMPLINGMODE by default)\n * @returns a new AdvancedDynamicTexture\n */\n public static CreateFullscreenUI(name: string, foreground: boolean = true, scene: Nullable<Scene> = null, sampling = Texture.BILINEAR_SAMPLINGMODE): AdvancedDynamicTexture {\n var result = new AdvancedDynamicTexture(name, 0, 0, scene, false, sampling);\n // Display\n var layer = new Layer(name + \"_layer\", null, scene, !foreground);\n layer.texture = result;\n result._layerToDispose = layer;\n result._isFullscreen = true;\n // Attach\n result.attach();\n return result;\n }\n}\n"]}
1
+ {"version":3,"file":"advancedDynamicTexture.js","sourceRoot":"","sources":["../../../sourceES6/gui/src/2D/advancedDynamicTexture.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\nimport { Observable, Observer } from \"@babylonjs/core/Misc/observable\";\nimport { Vector2, Vector3, Matrix } from \"@babylonjs/core/Maths/math.vector\";\nimport { Tools } from \"@babylonjs/core/Misc/tools\";\nimport { PointerInfoPre, PointerInfo, PointerEventTypes, PointerInfoBase } from '@babylonjs/core/Events/pointerEvents';\nimport { ClipboardEventTypes, ClipboardInfo } from \"@babylonjs/core/Events/clipboardEvents\";\nimport { KeyboardInfoPre, KeyboardEventTypes } from \"@babylonjs/core/Events/keyboardEvents\";\nimport { Camera } from \"@babylonjs/core/Cameras/camera\";\nimport { StandardMaterial } from \"@babylonjs/core/Materials/standardMaterial\";\nimport { Texture } from \"@babylonjs/core/Materials/Textures/texture\";\nimport { DynamicTexture } from \"@babylonjs/core/Materials/Textures/dynamicTexture\";\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\nimport { Layer } from \"@babylonjs/core/Layers/layer\";\nimport { Engine } from \"@babylonjs/core/Engines/engine\";\nimport { Scene } from \"@babylonjs/core/scene\";\n\nimport { Container } from \"./controls/container\";\nimport { Control } from \"./controls/control\";\nimport { IFocusableControl } from './controls/focusableControl';\nimport { Style } from \"./style\";\nimport { Measure } from \"./measure\";\nimport { Constants } from '@babylonjs/core/Engines/constants';\nimport { Viewport } from '@babylonjs/core/Maths/math.viewport';\nimport { Color3 } from '@babylonjs/core/Maths/math.color';\nimport { WebRequest } from \"@babylonjs/core/Misc/webRequest\";\nimport { IPointerEvent, IWheelEvent } from '@babylonjs/core/Events/deviceInputEvents';\n\n/**\n* Class used to create texture to support 2D GUI elements\n* @see https://doc.babylonjs.com/how_to/gui\n*/\nexport class AdvancedDynamicTexture extends DynamicTexture {\n /** Define the Uurl to load snippets */\n public static SnippetUrl = \"https://snippet.babylonjs.com\";\n\n /** Snippet ID if the content was created from the snippet server */\n public snippetId: string;\n\n private _isDirty = false;\n private _renderObserver: Nullable<Observer<Camera>>;\n private _resizeObserver: Nullable<Observer<Engine>>;\n private _preKeyboardObserver: Nullable<Observer<KeyboardInfoPre>>;\n private _pointerMoveObserver: Nullable<Observer<PointerInfoPre>>;\n private _pointerObserver: Nullable<Observer<PointerInfo>>;\n private _canvasPointerOutObserver: Nullable<Observer<IPointerEvent>>;\n private _canvasBlurObserver: Nullable<Observer<Engine>>;\n private _background: string;\n /** @hidden */\n public _rootContainer = new Container(\"root\");\n /** @hidden */\n public _lastPickedControl: Control;\n /** @hidden */\n public _lastControlOver: { [pointerId: number]: Control } = {};\n /** @hidden */\n public _lastControlDown: { [pointerId: number]: Control } = {};\n /** @hidden */\n public _capturingControl: { [pointerId: number]: Control } = {};\n /** @hidden */\n public _shouldBlockPointer: boolean;\n /** @hidden */\n public _layerToDispose: Nullable<Layer>;\n /** @hidden */\n public _linkedControls = new Array<Control>();\n private _isFullscreen = false;\n private _fullscreenViewport = new Viewport(0, 0, 1, 1);\n private _idealWidth = 0;\n private _idealHeight = 0;\n private _useSmallestIdeal: boolean = false;\n private _renderAtIdealSize = false;\n private _focusedControl: Nullable<IFocusableControl>;\n private _blockNextFocusCheck = false;\n private _renderScale = 1;\n private _rootElement: Nullable<HTMLElement>;\n private _cursorChanged = false;\n private _defaultMousePointerId = 0;\n\n /** @hidden */\n public _numLayoutCalls = 0;\n /** Gets the number of layout calls made the last time the ADT has been rendered */\n public get numLayoutCalls(): number {\n return this._numLayoutCalls;\n }\n\n /** @hidden */\n public _numRenderCalls = 0;\n /** Gets the number of render calls made the last time the ADT has been rendered */\n public get numRenderCalls(): number {\n return this._numRenderCalls;\n }\n\n /**\n * Define type to string to ensure compatibility across browsers\n * Safari doesn't support DataTransfer constructor\n */\n private _clipboardData: string = \"\";\n /**\n * Observable event triggered each time an clipboard event is received from the rendering canvas\n */\n public onClipboardObservable = new Observable<ClipboardInfo>();\n /**\n * Observable event triggered each time a pointer down is intercepted by a control\n */\n public onControlPickedObservable = new Observable<Control>();\n /**\n * Observable event triggered before layout is evaluated\n */\n public onBeginLayoutObservable = new Observable<AdvancedDynamicTexture>();\n /**\n * Observable event triggered after the layout was evaluated\n */\n public onEndLayoutObservable = new Observable<AdvancedDynamicTexture>();\n /**\n * Observable event triggered before the texture is rendered\n */\n public onBeginRenderObservable = new Observable<AdvancedDynamicTexture>();\n /**\n * Observable event triggered after the texture was rendered\n */\n public onEndRenderObservable = new Observable<AdvancedDynamicTexture>();\n /**\n * Gets or sets a boolean defining if alpha is stored as premultiplied\n */\n public premulAlpha = false;\n /**\n * Gets or sets a boolean indicating that the canvas must be reverted on Y when updating the texture\n */\n public applyYInversionOnUpdate = true;\n /**\n * Gets or sets a number used to scale rendering size (2 means that the texture will be twice bigger).\n * Useful when you want more antialiasing\n */\n public get renderScale(): number {\n return this._renderScale;\n }\n public set renderScale(value: number) {\n if (value === this._renderScale) {\n return;\n }\n this._renderScale = value;\n this._onResize();\n }\n /** Gets or sets the background color */\n public get background(): string {\n return this._background;\n }\n public set background(value: string) {\n if (this._background === value) {\n return;\n }\n this._background = value;\n this.markAsDirty();\n }\n /**\n * Gets or sets the ideal width used to design controls.\n * The GUI will then rescale everything accordingly\n * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling\n */\n public get idealWidth(): number {\n return this._idealWidth;\n }\n public set idealWidth(value: number) {\n if (this._idealWidth === value) {\n return;\n }\n this._idealWidth = value;\n this.markAsDirty();\n this._rootContainer._markAllAsDirty();\n }\n /**\n * Gets or sets the ideal height used to design controls.\n * The GUI will then rescale everything accordingly\n * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling\n */\n public get idealHeight(): number {\n return this._idealHeight;\n }\n public set idealHeight(value: number) {\n if (this._idealHeight === value) {\n return;\n }\n this._idealHeight = value;\n this.markAsDirty();\n this._rootContainer._markAllAsDirty();\n }\n /**\n * Gets or sets a boolean indicating if the smallest ideal value must be used if idealWidth and idealHeight are both set\n * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling\n */\n public get useSmallestIdeal(): boolean {\n return this._useSmallestIdeal;\n }\n public set useSmallestIdeal(value: boolean) {\n if (this._useSmallestIdeal === value) {\n return;\n }\n this._useSmallestIdeal = value;\n this.markAsDirty();\n this._rootContainer._markAllAsDirty();\n }\n /**\n * Gets or sets a boolean indicating if adaptive scaling must be used\n * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling\n */\n public get renderAtIdealSize(): boolean {\n return this._renderAtIdealSize;\n }\n public set renderAtIdealSize(value: boolean) {\n if (this._renderAtIdealSize === value) {\n return;\n }\n this._renderAtIdealSize = value;\n this._onResize();\n }\n\n /**\n * Gets the ratio used when in \"ideal mode\"\n * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling\n * */\n public get idealRatio(): number {\n var rwidth: number = 0;\n var rheight: number = 0;\n\n if (this._idealWidth) {\n rwidth = (this.getSize().width) / this._idealWidth;\n }\n\n if (this._idealHeight) {\n rheight = (this.getSize().height) / this._idealHeight;\n }\n\n if (this._useSmallestIdeal && this._idealWidth && this._idealHeight) {\n return window.innerWidth < window.innerHeight ? rwidth : rheight;\n }\n\n if (this._idealWidth) { // horizontal\n return rwidth;\n }\n\n if (this._idealHeight) { // vertical\n return rheight;\n }\n\n return 1;\n }\n\n /**\n * Gets the underlying layer used to render the texture when in fullscreen mode\n */\n public get layer(): Nullable<Layer> {\n return this._layerToDispose;\n }\n /**\n * Gets the root container control\n */\n public get rootContainer(): Container {\n return this._rootContainer;\n }\n /**\n * Returns an array containing the root container.\n * This is mostly used to let the Inspector introspects the ADT\n * @returns an array containing the rootContainer\n */\n public getChildren(): Array<Container> {\n return [this._rootContainer];\n }\n /**\n * Will return all controls that are inside this texture\n * @param directDescendantsOnly defines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered\n * @param predicate defines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored\n * @return all child controls\n */\n public getDescendants(directDescendantsOnly?: boolean, predicate?: (control: Control) => boolean): Control[] {\n return this._rootContainer.getDescendants(directDescendantsOnly, predicate);\n }\n\n /**\n * Will return all controls with the given type name\n * @param typeName defines the type name to search for\n * @returns an array of all controls found\n */\n public getControlsByType(typeName: string): Control[] {\n return this._rootContainer.getDescendants(false, (control) => control.typeName === typeName);\n }\n\n /**\n * Will return the first control with the given name\n * @param name defines the name to search for\n * @return the first control found or null\n */\n public getControlByName(name: string): Nullable<Control> {\n return this._getControlByKey(\"name\", name);\n }\n\n private _getControlByKey(key: string, value: any): Nullable<Control> {\n return this._rootContainer.getDescendants().find((control) => control[key as keyof Control] === value) || null;\n }\n\n /**\n * Gets or sets the current focused control\n */\n public get focusedControl(): Nullable<IFocusableControl> {\n return this._focusedControl;\n }\n public set focusedControl(control: Nullable<IFocusableControl>) {\n if (this._focusedControl == control) {\n return;\n }\n if (this._focusedControl) {\n this._focusedControl.onBlur();\n }\n if (control) {\n control.onFocus();\n }\n this._focusedControl = control;\n }\n /**\n * Gets or sets a boolean indicating if the texture must be rendered in background or foreground when in fullscreen mode\n */\n public get isForeground(): boolean {\n if (!this.layer) {\n return true;\n }\n return (!this.layer.isBackground);\n }\n public set isForeground(value: boolean) {\n if (!this.layer) {\n return;\n }\n if (this.layer.isBackground === !value) {\n return;\n }\n this.layer.isBackground = !value;\n }\n /**\n * Gets or set information about clipboardData\n */\n public get clipboardData(): string {\n return this._clipboardData;\n }\n public set clipboardData(value: string) {\n this._clipboardData = value;\n }\n /**\n * Creates a new AdvancedDynamicTexture\n * @param name defines the name of the texture\n * @param width defines the width of the texture\n * @param height defines the height of the texture\n * @param scene defines the hosting scene\n * @param generateMipMaps defines a boolean indicating if mipmaps must be generated (false by default)\n * @param samplingMode defines the texture sampling mode (Texture.NEAREST_SAMPLINGMODE by default)\n * @param invertY defines if the texture needs to be inverted on the y axis during loading (true by default)\n */\n constructor(name: string, width = 0, height = 0, scene: Nullable<Scene>, generateMipMaps = false, samplingMode = Texture.NEAREST_SAMPLINGMODE, invertY = true) {\n super(name, { width: width, height: height }, scene, generateMipMaps, samplingMode, Constants.TEXTUREFORMAT_RGBA, invertY);\n scene = this.getScene();\n if (!scene || !this._texture) {\n return;\n }\n this.applyYInversionOnUpdate = invertY;\n this._rootElement = scene.getEngine().getInputElement();\n this._renderObserver = scene.onBeforeCameraRenderObservable.add((camera: Camera) => this._checkUpdate(camera));\n this._preKeyboardObserver = scene.onPreKeyboardObservable.add((info) => {\n if (!this._focusedControl) {\n return;\n }\n if (info.type === KeyboardEventTypes.KEYDOWN) {\n this._focusedControl.processKeyboard(info.event);\n }\n info.skipOnPointerObservable = true;\n });\n this._rootContainer._link(this);\n this.hasAlpha = true;\n if (!width || !height) {\n this._resizeObserver = scene.getEngine().onResizeObservable.add(() => this._onResize());\n this._onResize();\n }\n this._texture.isReady = true;\n }\n /**\n * Get the current class name of the texture useful for serialization or dynamic coding.\n * @returns \"AdvancedDynamicTexture\"\n */\n public getClassName(): string {\n return \"AdvancedDynamicTexture\";\n }\n /**\n * Function used to execute a function on all controls\n * @param func defines the function to execute\n * @param container defines the container where controls belong. If null the root container will be used\n */\n public executeOnAllControls(func: (control: Control) => void, container?: Container) {\n if (!container) {\n container = this._rootContainer;\n }\n func(container);\n for (var child of container.children) {\n if ((<any>child).children) {\n this.executeOnAllControls(func, (<Container>child));\n continue;\n }\n func(child);\n }\n }\n\n private _useInvalidateRectOptimization = true;\n\n /**\n * Gets or sets a boolean indicating if the InvalidateRect optimization should be turned on\n */\n public get useInvalidateRectOptimization(): boolean {\n return this._useInvalidateRectOptimization;\n }\n\n public set useInvalidateRectOptimization(value: boolean) {\n this._useInvalidateRectOptimization = value;\n }\n\n // Invalidated rectangle which is the combination of all invalidated controls after they have been rotated into absolute position\n private _invalidatedRectangle: Nullable<Measure> = null;\n /**\n * Invalidates a rectangle area on the gui texture\n * @param invalidMinX left most position of the rectangle to invalidate in the texture\n * @param invalidMinY top most position of the rectangle to invalidate in the texture\n * @param invalidMaxX right most position of the rectangle to invalidate in the texture\n * @param invalidMaxY bottom most position of the rectangle to invalidate in the texture\n */\n public invalidateRect(invalidMinX: number, invalidMinY: number, invalidMaxX: number, invalidMaxY: number) {\n if (!this._useInvalidateRectOptimization) {\n return;\n }\n if (!this._invalidatedRectangle) {\n this._invalidatedRectangle = new Measure(invalidMinX, invalidMinY, invalidMaxX - invalidMinX + 1, invalidMaxY - invalidMinY + 1);\n } else {\n // Compute intersection\n var maxX = Math.ceil(Math.max(this._invalidatedRectangle.left + this._invalidatedRectangle.width - 1, invalidMaxX));\n var maxY = Math.ceil(Math.max(this._invalidatedRectangle.top + this._invalidatedRectangle.height - 1, invalidMaxY));\n this._invalidatedRectangle.left = Math.floor(Math.min(this._invalidatedRectangle.left, invalidMinX));\n this._invalidatedRectangle.top = Math.floor(Math.min(this._invalidatedRectangle.top, invalidMinY));\n this._invalidatedRectangle.width = maxX - this._invalidatedRectangle.left + 1;\n this._invalidatedRectangle.height = maxY - this._invalidatedRectangle.top + 1;\n }\n }\n /**\n * Marks the texture as dirty forcing a complete update\n */\n public markAsDirty() {\n this._isDirty = true;\n }\n /**\n * Helper function used to create a new style\n * @returns a new style\n * @see https://doc.babylonjs.com/how_to/gui#styles\n */\n public createStyle(): Style {\n return new Style(this);\n }\n /**\n * Adds a new control to the root container\n * @param control defines the control to add\n * @returns the current texture\n */\n public addControl(control: Control): AdvancedDynamicTexture {\n this._rootContainer.addControl(control);\n return this;\n }\n /**\n * Removes a control from the root container\n * @param control defines the control to remove\n * @returns the current texture\n */\n public removeControl(control: Control): AdvancedDynamicTexture {\n this._rootContainer.removeControl(control);\n return this;\n }\n /**\n * Release all resources\n */\n public dispose(): void {\n let scene = this.getScene();\n if (!scene) {\n return;\n }\n this._rootElement = null;\n scene.onBeforeCameraRenderObservable.remove(this._renderObserver);\n if (this._resizeObserver) {\n scene.getEngine().onResizeObservable.remove(this._resizeObserver);\n }\n if (this._pointerMoveObserver) {\n scene.onPrePointerObservable.remove(this._pointerMoveObserver);\n }\n if (this._pointerObserver) {\n scene.onPointerObservable.remove(this._pointerObserver);\n }\n if (this._preKeyboardObserver) {\n scene.onPreKeyboardObservable.remove(this._preKeyboardObserver);\n }\n if (this._canvasPointerOutObserver) {\n scene.getEngine().onCanvasPointerOutObservable.remove(this._canvasPointerOutObserver);\n }\n if (this._canvasBlurObserver) {\n scene.getEngine().onCanvasBlurObservable.remove(this._canvasBlurObserver);\n }\n if (this._layerToDispose) {\n this._layerToDispose.texture = null;\n this._layerToDispose.dispose();\n this._layerToDispose = null;\n }\n this._rootContainer.dispose();\n this.onClipboardObservable.clear();\n this.onControlPickedObservable.clear();\n this.onBeginRenderObservable.clear();\n this.onEndRenderObservable.clear();\n this.onBeginLayoutObservable.clear();\n this.onEndLayoutObservable.clear();\n super.dispose();\n }\n private _onResize(): void {\n let scene = this.getScene();\n if (!scene) {\n return;\n }\n // Check size\n var engine = scene.getEngine();\n var textureSize = this.getSize();\n var renderWidth = engine.getRenderWidth() * this._renderScale;\n var renderHeight = engine.getRenderHeight() * this._renderScale;\n\n if (this._renderAtIdealSize) {\n if (this._idealWidth) {\n renderHeight = (renderHeight * this._idealWidth) / renderWidth;\n renderWidth = this._idealWidth;\n } else if (this._idealHeight) {\n renderWidth = (renderWidth * this._idealHeight) / renderHeight;\n renderHeight = this._idealHeight;\n }\n }\n if (textureSize.width !== renderWidth || textureSize.height !== renderHeight) {\n this.scaleTo(renderWidth, renderHeight);\n this.markAsDirty();\n if (this._idealWidth || this._idealHeight) {\n this._rootContainer._markAllAsDirty();\n }\n }\n this.invalidateRect(0, 0, textureSize.width - 1, textureSize.height - 1);\n }\n /** @hidden */\n public _getGlobalViewport(): Viewport {\n var size = this.getSize();\n return this._fullscreenViewport.toGlobal(size.width, size.height);\n }\n /**\n * Get screen coordinates for a vector3\n * @param position defines the position to project\n * @param worldMatrix defines the world matrix to use\n * @returns the projected position\n */\n public getProjectedPosition(position: Vector3, worldMatrix: Matrix): Vector2 {\n const result = this.getProjectedPositionWithZ(position, worldMatrix);\n return new Vector2(result.x, result.y);\n }\n\n /**\n * Get screen coordinates for a vector3\n * @param position defines the position to project\n * @param worldMatrix defines the world matrix to use\n * @returns the projected position with Z\n */\n public getProjectedPositionWithZ(position: Vector3, worldMatrix: Matrix): Vector3 {\n var scene = this.getScene();\n if (!scene) {\n return Vector3.Zero();\n }\n var globalViewport = this._getGlobalViewport();\n var projectedPosition = Vector3.Project(position, worldMatrix, scene.getTransformMatrix(), globalViewport);\n return new Vector3(projectedPosition.x, projectedPosition.y, projectedPosition.z);\n }\n\n private _checkUpdate(camera: Camera): void {\n if (this._layerToDispose) {\n if ((camera.layerMask & this._layerToDispose.layerMask) === 0) {\n return;\n }\n }\n if (this._isFullscreen && this._linkedControls.length) {\n var scene = this.getScene();\n if (!scene) {\n return;\n }\n var globalViewport = this._getGlobalViewport();\n for (let control of this._linkedControls) {\n if (!control.isVisible) {\n continue;\n }\n let mesh = control._linkedMesh as AbstractMesh;\n if (!mesh || mesh.isDisposed()) {\n Tools.SetImmediate(() => {\n control.linkWithMesh(null);\n });\n continue;\n }\n let position = mesh.getBoundingInfo ? mesh.getBoundingInfo().boundingSphere.center : (Vector3.ZeroReadOnly as Vector3);\n let projectedPosition = Vector3.Project(position, mesh.getWorldMatrix(), scene.getTransformMatrix(), globalViewport);\n if (projectedPosition.z < 0 || projectedPosition.z > 1) {\n control.notRenderable = true;\n continue;\n }\n control.notRenderable = false;\n\n control._moveToProjectedPosition(projectedPosition);\n }\n }\n if (!this._isDirty && !this._rootContainer.isDirty) {\n return;\n }\n this._isDirty = false;\n this._render();\n this.update(this.applyYInversionOnUpdate, this.premulAlpha);\n }\n\n private _clearMeasure = new Measure(0, 0, 0, 0);\n\n private _render(): void {\n var textureSize = this.getSize();\n var renderWidth = textureSize.width;\n var renderHeight = textureSize.height;\n\n var context = this.getContext();\n context.font = \"18px Arial\";\n context.strokeStyle = \"white\";\n\n // Layout\n this.onBeginLayoutObservable.notifyObservers(this);\n var measure = new Measure(0, 0, renderWidth, renderHeight);\n this._numLayoutCalls = 0;\n this._rootContainer._layout(measure, context);\n this.onEndLayoutObservable.notifyObservers(this);\n this._isDirty = false; // Restoring the dirty state that could have been set by controls during layout processing\n\n // Clear\n if (this._invalidatedRectangle) {\n this._clearMeasure.copyFrom(this._invalidatedRectangle);\n } else {\n this._clearMeasure.copyFromFloats(0, 0, renderWidth, renderHeight);\n }\n context.clearRect(this._clearMeasure.left, this._clearMeasure.top, this._clearMeasure.width, this._clearMeasure.height);\n if (this._background) {\n context.save();\n context.fillStyle = this._background;\n context.fillRect(this._clearMeasure.left, this._clearMeasure.top, this._clearMeasure.width, this._clearMeasure.height);\n context.restore();\n }\n\n // Render\n this.onBeginRenderObservable.notifyObservers(this);\n this._numRenderCalls = 0;\n this._rootContainer._render(context, this._invalidatedRectangle);\n this.onEndRenderObservable.notifyObservers(this);\n this._invalidatedRectangle = null;\n }\n /** @hidden */\n public _changeCursor(cursor: string) {\n if (this._rootElement) {\n this._rootElement.style.cursor = cursor;\n this._cursorChanged = true;\n }\n }\n /** @hidden */\n public _registerLastControlDown(control: Control, pointerId: number) {\n this._lastControlDown[pointerId] = control;\n this.onControlPickedObservable.notifyObservers(control);\n }\n private _doPicking(x: number, y: number, pi: PointerInfoBase, type: number, pointerId: number, buttonIndex: number, deltaX?: number, deltaY?: number): void {\n var scene = this.getScene();\n if (!scene) {\n return;\n }\n var engine = scene.getEngine();\n var textureSize = this.getSize();\n if (this._isFullscreen) {\n let camera = scene.cameraToUseForPointers || scene.activeCamera;\n if (!camera) {\n return;\n }\n let viewport = camera.viewport;\n x = x * (textureSize.width / (engine.getRenderWidth() * viewport.width));\n y = y * (textureSize.height / (engine.getRenderHeight() * viewport.height));\n }\n if (this._capturingControl[pointerId]) {\n this._capturingControl[pointerId]._processObservables(type, x, y, pi, pointerId, buttonIndex);\n return;\n }\n\n this._cursorChanged = false;\n if (!this._rootContainer._processPicking(x, y, pi, type, pointerId, buttonIndex, deltaX, deltaY)) {\n if (!scene.doNotHandleCursors) {\n this._changeCursor(\"\");\n }\n if (type === PointerEventTypes.POINTERMOVE) {\n if (this._lastControlOver[pointerId]) {\n this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId], pi);\n delete this._lastControlOver[pointerId];\n }\n }\n }\n\n if (!this._cursorChanged && !scene.doNotHandleCursors) {\n this._changeCursor(\"\");\n }\n this._manageFocus();\n }\n /** @hidden */\n public _cleanControlAfterRemovalFromList(list: { [pointerId: number]: Control }, control: Control) {\n for (var pointerId in list) {\n if (!list.hasOwnProperty(pointerId)) {\n continue;\n }\n var lastControlOver = list[pointerId];\n if (lastControlOver === control) {\n delete list[pointerId];\n }\n }\n }\n /** @hidden */\n public _cleanControlAfterRemoval(control: Control) {\n this._cleanControlAfterRemovalFromList(this._lastControlDown, control);\n this._cleanControlAfterRemovalFromList(this._lastControlOver, control);\n }\n /** Attach to all scene events required to support pointer events */\n public attach(): void {\n const scene = this.getScene();\n if (!scene) {\n return;\n }\n\n let tempViewport = new Viewport(0, 0, 0, 0);\n\n this._pointerMoveObserver = scene.onPrePointerObservable.add((pi, state) => {\n if (scene.isPointerCaptured((<IPointerEvent>(pi.event)).pointerId)) {\n return;\n }\n if (pi.type !== PointerEventTypes.POINTERMOVE\n && pi.type !== PointerEventTypes.POINTERUP\n && pi.type !== PointerEventTypes.POINTERDOWN\n && pi.type !== PointerEventTypes.POINTERWHEEL) {\n return;\n }\n\n if (pi.type === PointerEventTypes.POINTERMOVE && (pi.event as IPointerEvent).pointerId) {\n this._defaultMousePointerId = (pi.event as IPointerEvent).pointerId; // This is required to make sure we have the correct pointer ID for wheel\n }\n\n let camera = scene.cameraToUseForPointers || scene.activeCamera;\n let engine = scene.getEngine();\n\n if (!camera) {\n tempViewport.x = 0;\n tempViewport.y = 0;\n tempViewport.width = engine.getRenderWidth();\n tempViewport.height = engine.getRenderHeight();\n } else {\n camera.viewport.toGlobalToRef(engine.getRenderWidth(), engine.getRenderHeight(), tempViewport);\n }\n\n let x = scene.pointerX / engine.getHardwareScalingLevel() - tempViewport.x;\n let y = scene.pointerY / engine.getHardwareScalingLevel() - (engine.getRenderHeight() - tempViewport.y - tempViewport.height);\n this._shouldBlockPointer = false;\n // Do picking modifies _shouldBlockPointer\n let pointerId = (pi.event as IPointerEvent).pointerId || this._defaultMousePointerId;\n this._doPicking(x, y, pi, pi.type, pointerId, pi.event.button, (<IWheelEvent>pi.event).deltaX, (<IWheelEvent>pi.event).deltaY);\n // Avoid overwriting a true skipOnPointerObservable to false\n if (this._shouldBlockPointer) {\n pi.skipOnPointerObservable = this._shouldBlockPointer;\n }\n });\n this._attachToOnPointerOut(scene);\n this._attachToOnBlur(scene);\n }\n /** @hidden */\n private onClipboardCopy = (rawEvt: Event) => {\n const evt = rawEvt as ClipboardEvent;\n let ev = new ClipboardInfo(ClipboardEventTypes.COPY, evt);\n this.onClipboardObservable.notifyObservers(ev);\n evt.preventDefault();\n }\n /** @hidden */\n private onClipboardCut = (rawEvt: Event) => {\n const evt = rawEvt as ClipboardEvent;\n let ev = new ClipboardInfo(ClipboardEventTypes.CUT, evt);\n this.onClipboardObservable.notifyObservers(ev);\n evt.preventDefault();\n }\n /** @hidden */\n private onClipboardPaste = (rawEvt: Event) => {\n const evt = rawEvt as ClipboardEvent;\n let ev = new ClipboardInfo(ClipboardEventTypes.PASTE, evt);\n this.onClipboardObservable.notifyObservers(ev);\n evt.preventDefault();\n }\n /**\n * Register the clipboard Events onto the canvas\n */\n public registerClipboardEvents(): void {\n self.addEventListener(\"copy\", this.onClipboardCopy, false);\n self.addEventListener(\"cut\", this.onClipboardCut, false);\n self.addEventListener(\"paste\", this.onClipboardPaste, false);\n }\n /**\n * Unregister the clipboard Events from the canvas\n */\n public unRegisterClipboardEvents(): void {\n self.removeEventListener(\"copy\", this.onClipboardCopy);\n self.removeEventListener(\"cut\", this.onClipboardCut);\n self.removeEventListener(\"paste\", this.onClipboardPaste);\n }\n /**\n * Connect the texture to a hosting mesh to enable interactions\n * @param mesh defines the mesh to attach to\n * @param supportPointerMove defines a boolean indicating if pointer move events must be catched as well\n */\n public attachToMesh(mesh: AbstractMesh, supportPointerMove = true): void {\n var scene = this.getScene();\n if (!scene) {\n return;\n }\n this._pointerObserver = scene.onPointerObservable.add((pi, state) => {\n if (pi.type !== PointerEventTypes.POINTERMOVE\n && pi.type !== PointerEventTypes.POINTERUP\n && pi.type !== PointerEventTypes.POINTERDOWN\n && pi.type !== PointerEventTypes.POINTERWHEEL) {\n return;\n }\n\n if (pi.type === PointerEventTypes.POINTERMOVE && (pi.event as IPointerEvent).pointerId) {\n this._defaultMousePointerId = (pi.event as IPointerEvent).pointerId; // This is required to make sure we have the correct pointer ID for wheel\n }\n\n var pointerId = (pi.event as IPointerEvent).pointerId || this._defaultMousePointerId;\n if (pi.pickInfo && pi.pickInfo.hit && pi.pickInfo.pickedMesh === mesh) {\n var uv = pi.pickInfo.getTextureCoordinates();\n if (uv) {\n let size = this.getSize();\n this._doPicking(uv.x * size.width, (this.applyYInversionOnUpdate ? (1.0 - uv.y) : uv.y) * size.height, pi, pi.type, pointerId, pi.event.button, (<IWheelEvent>pi.event).deltaX, (<IWheelEvent>pi.event).deltaY);\n }\n } else if (pi.type === PointerEventTypes.POINTERUP) {\n if (this._lastControlDown[pointerId]) {\n this._lastControlDown[pointerId]._forcePointerUp(pointerId);\n }\n delete this._lastControlDown[pointerId];\n if (this.focusedControl) {\n const friendlyControls = this.focusedControl.keepsFocusWith();\n let canMoveFocus = true;\n if (friendlyControls) {\n for (var control of friendlyControls) {\n // Same host, no need to keep the focus\n if (this === control._host) {\n continue;\n }\n // Different hosts\n const otherHost = control._host;\n if (otherHost._lastControlOver[pointerId] && otherHost._lastControlOver[pointerId].isAscendant(control)) {\n canMoveFocus = false;\n break;\n }\n }\n }\n if (canMoveFocus) {\n this.focusedControl = null;\n }\n }\n } else if (pi.type === PointerEventTypes.POINTERMOVE) {\n if (this._lastControlOver[pointerId]) {\n this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId], pi, true);\n }\n delete this._lastControlOver[pointerId];\n }\n });\n mesh.enablePointerMoveEvents = supportPointerMove;\n this._attachToOnPointerOut(scene);\n this._attachToOnBlur(scene);\n }\n /**\n * Move the focus to a specific control\n * @param control defines the control which will receive the focus\n */\n public moveFocusToControl(control: IFocusableControl): void {\n this.focusedControl = control;\n this._lastPickedControl = <any>control;\n this._blockNextFocusCheck = true;\n }\n private _manageFocus(): void {\n if (this._blockNextFocusCheck) {\n this._blockNextFocusCheck = false;\n this._lastPickedControl = <any>this._focusedControl;\n return;\n }\n // Focus management\n if (this._focusedControl) {\n if (this._focusedControl !== (<any>this._lastPickedControl)) {\n if (this._lastPickedControl.isFocusInvisible) {\n return;\n }\n this.focusedControl = null;\n }\n }\n }\n private _attachToOnPointerOut(scene: Scene): void {\n this._canvasPointerOutObserver = scene.getEngine().onCanvasPointerOutObservable.add((pointerEvent) => {\n if (this._lastControlOver[pointerEvent.pointerId]) {\n this._lastControlOver[pointerEvent.pointerId]._onPointerOut(this._lastControlOver[pointerEvent.pointerId], null);\n }\n delete this._lastControlOver[pointerEvent.pointerId];\n if (this._lastControlDown[pointerEvent.pointerId] && this._lastControlDown[pointerEvent.pointerId] !== this._capturingControl[pointerEvent.pointerId]) {\n this._lastControlDown[pointerEvent.pointerId]._forcePointerUp();\n delete this._lastControlDown[pointerEvent.pointerId];\n }\n });\n }\n private _attachToOnBlur(scene: Scene): void {\n this._canvasBlurObserver = scene.getEngine().onCanvasBlurObservable.add((pointerEvent) => {\n Object.entries(this._lastControlDown).forEach(([key, value]) => {\n value._onCanvasBlur();\n });\n this.focusedControl = null;\n this._lastControlDown = {};\n });\n }\n\n /**\n * Serializes the entire GUI system\n * @returns an object with the JSON serialized data\n */\n public serializeContent(): any {\n const size = this.getSize();\n let serializationObject = {\n root: {},\n width: size.width,\n height: size.height,\n };\n\n this._rootContainer.serialize(serializationObject.root);\n\n return serializationObject;\n }\n\n /**\n * Recreate the content of the ADT from a JSON object\n * @param serializedObject define the JSON serialized object to restore from\n * @param scaleToSize defines whether to scale to texture to the saved size\n */\n public parseContent(serializedObject: any, scaleToSize?: boolean) {\n this._rootContainer = Control.Parse(serializedObject.root, this) as Container;\n if (scaleToSize) {\n const width = serializedObject.width;\n const height = serializedObject.height;\n if (typeof (width) === \"number\" && typeof (height) === \"number\" && width >= 0 && height >= 0) {\n this.scaleTo(width, height);\n }\n }\n }\n\n /**\n * Recreate the content of the ADT from a snippet saved by the GUI editor\n * @param snippetId defines the snippet to load\n * @param scaleToSize defines whether to scale to texture to the saved size\n * @returns a promise that will resolve on success\n */\n public parseFromSnippetAsync(snippetId: string, scaleToSize?: boolean): Promise<void> {\n if (snippetId === \"_BLANK\") {\n return Promise.resolve();\n }\n\n return new Promise((resolve, reject) => {\n var request = new WebRequest();\n request.addEventListener(\"readystatechange\", () => {\n if (request.readyState == 4) {\n if (request.status == 200) {\n var snippet = JSON.parse(JSON.parse(request.responseText).jsonPayload);\n let serializationObject = JSON.parse(snippet.gui);\n\n this.parseContent(serializationObject, scaleToSize);\n this.snippetId = snippetId;\n\n resolve();\n } else {\n reject(\"Unable to load the snippet \" + snippetId);\n }\n }\n });\n\n request.open(\"GET\", AdvancedDynamicTexture.SnippetUrl + \"/\" + snippetId.replace(/#/g, \"/\"));\n request.send();\n });\n }\n\n /**\n * Recreate the content of the ADT from a url json\n * @param url defines the url to load\n * @param scaleToSize defines whether to scale to texture to the saved size\n * @returns a promise that will resolve on success\n */\n public parseFromURLAsync(url: string, scaleToSize?: boolean): Promise<void> {\n if (url === \"\") {\n return Promise.resolve();\n }\n\n return new Promise((resolve, reject) => {\n var request = new WebRequest();\n request.addEventListener(\"readystatechange\", () => {\n if (request.readyState == 4) {\n if (request.status == 200) {\n var gui = request.responseText;\n let serializationObject = JSON.parse(gui);\n this.parseContent(serializationObject, scaleToSize);\n\n resolve();\n } else {\n reject(\"Unable to load\");\n }\n }\n });\n request.open(\"GET\", url);\n request.send();\n });\n }\n\n // Statics\n /**\n * Creates a new AdvancedDynamicTexture in projected mode (ie. attached to a mesh)\n * @param mesh defines the mesh which will receive the texture\n * @param width defines the texture width (1024 by default)\n * @param height defines the texture height (1024 by default)\n * @param supportPointerMove defines a boolean indicating if the texture must capture move events (true by default)\n * @param onlyAlphaTesting defines a boolean indicating that alpha blending will not be used (only alpha testing) (false by default)\n * @param invertY defines if the texture needs to be inverted on the y axis during loading (true by default)\n * @returns a new AdvancedDynamicTexture\n */\n public static CreateForMesh(mesh: AbstractMesh, width = 1024, height = 1024, supportPointerMove = true, onlyAlphaTesting = false, invertY?: boolean): AdvancedDynamicTexture {\n var result = new AdvancedDynamicTexture(mesh.name + \" AdvancedDynamicTexture\", width, height, mesh.getScene(), true, Texture.TRILINEAR_SAMPLINGMODE, invertY);\n var material = new StandardMaterial(\"AdvancedDynamicTextureMaterial\", mesh.getScene());\n material.backFaceCulling = false;\n material.diffuseColor = Color3.Black();\n material.specularColor = Color3.Black();\n if (onlyAlphaTesting) {\n material.diffuseTexture = result;\n material.emissiveTexture = result;\n result.hasAlpha = true;\n } else {\n material.emissiveTexture = result;\n material.opacityTexture = result;\n }\n mesh.material = material;\n result.attachToMesh(mesh, supportPointerMove);\n return result;\n }\n\n /**\n * Creates a new AdvancedDynamicTexture in projected mode (ie. attached to a mesh) BUT do not create a new material for the mesh. You will be responsible for connecting the texture\n * @param mesh defines the mesh which will receive the texture\n * @param width defines the texture width (1024 by default)\n * @param height defines the texture height (1024 by default)\n * @param supportPointerMove defines a boolean indicating if the texture must capture move events (true by default)\n * @param invertY defines if the texture needs to be inverted on the y axis during loading (true by default)\n * @returns a new AdvancedDynamicTexture\n */\n public static CreateForMeshTexture(mesh: AbstractMesh, width = 1024, height = 1024, supportPointerMove = true, invertY?: boolean): AdvancedDynamicTexture {\n var result = new AdvancedDynamicTexture(mesh.name + \" AdvancedDynamicTexture\", width, height, mesh.getScene(), true, Texture.TRILINEAR_SAMPLINGMODE, invertY);\n result.attachToMesh(mesh, supportPointerMove);\n return result;\n }\n /**\n * Creates a new AdvancedDynamicTexture in fullscreen mode.\n * In this mode the texture will rely on a layer for its rendering.\n * This allows it to be treated like any other layer.\n * As such, if you have a multi camera setup, you can set the layerMask on the GUI as well.\n * LayerMask is set through advancedTexture.layer.layerMask\n * @param name defines name for the texture\n * @param foreground defines a boolean indicating if the texture must be rendered in foreground (default is true)\n * @param scene defines the hosting scene\n * @param sampling defines the texture sampling mode (Texture.BILINEAR_SAMPLINGMODE by default)\n * @returns a new AdvancedDynamicTexture\n */\n public static CreateFullscreenUI(name: string, foreground: boolean = true, scene: Nullable<Scene> = null, sampling = Texture.BILINEAR_SAMPLINGMODE): AdvancedDynamicTexture {\n var result = new AdvancedDynamicTexture(name, 0, 0, scene, false, sampling);\n // Display\n var layer = new Layer(name + \"_layer\", null, scene, !foreground);\n layer.texture = result;\n result._layerToDispose = layer;\n result._isFullscreen = true;\n // Attach\n result.attach();\n return result;\n }\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  import { __extends } from "tslib";
2
- import { Rectangle } from "./rectangle";
3
- import { Control } from "./control";
4
- import { TextBlock } from "./textBlock";
5
- import { Image } from "./image";
6
- import { _TypeStore } from '@babylonjs/core/Misc/typeStore';
2
+ import { Rectangle } from "./rectangle.js";
3
+ import { Control } from "./control.js";
4
+ import { TextBlock } from "./textBlock.js";
5
+ import { Image } from "./image.js";
6
+ import { RegisterClass } from '@babylonjs/core/Misc/typeStore.js';
7
7
  /**
8
8
  * Class used to create 2D buttons
9
9
  */
@@ -95,7 +95,7 @@ var Button = /** @class */ (function (_super) {
95
95
  if (!_super.prototype._onPointerEnter.call(this, target, pi)) {
96
96
  return false;
97
97
  }
98
- if (this.pointerEnterAnimation) {
98
+ if (!this.isReadOnly && this.pointerEnterAnimation) {
99
99
  this.pointerEnterAnimation();
100
100
  }
101
101
  return true;
@@ -103,7 +103,7 @@ var Button = /** @class */ (function (_super) {
103
103
  /** @hidden */
104
104
  Button.prototype._onPointerOut = function (target, pi, force) {
105
105
  if (force === void 0) { force = false; }
106
- if (this.pointerOutAnimation) {
106
+ if (!this.isReadOnly && this.pointerOutAnimation) {
107
107
  this.pointerOutAnimation();
108
108
  }
109
109
  _super.prototype._onPointerOut.call(this, target, pi, force);
@@ -113,14 +113,14 @@ var Button = /** @class */ (function (_super) {
113
113
  if (!_super.prototype._onPointerDown.call(this, target, coordinates, pointerId, buttonIndex, pi)) {
114
114
  return false;
115
115
  }
116
- if (this.pointerDownAnimation) {
116
+ if (!this.isReadOnly && this.pointerDownAnimation) {
117
117
  this.pointerDownAnimation();
118
118
  }
119
119
  return true;
120
120
  };
121
121
  /** @hidden */
122
122
  Button.prototype._onPointerUp = function (target, coordinates, pointerId, buttonIndex, notifyClick, pi) {
123
- if (this.pointerUpAnimation) {
123
+ if (!this.isReadOnly && this.pointerUpAnimation) {
124
124
  this.pointerUpAnimation();
125
125
  }
126
126
  _super.prototype._onPointerUp.call(this, target, coordinates, pointerId, buttonIndex, notifyClick, pi);
@@ -212,5 +212,5 @@ var Button = /** @class */ (function (_super) {
212
212
  return Button;
213
213
  }(Rectangle));
214
214
  export { Button };
215
- _TypeStore.RegisteredTypes["BABYLON.GUI.Button"] = Button;
215
+ RegisterClass("BABYLON.GUI.Button", Button);
216
216
  //# sourceMappingURL=button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/2D/controls/button.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAG5D;;GAEG;AACH;IAA4B,0BAAS;IAuCjC;;;OAGG;IACH,gBAAmB,IAAa;QAAhC,YACI,kBAAM,IAAI,CAAC,SA2Bd;QA5BkB,UAAI,GAAJ,IAAI,CAAS;QAzBhC;;WAEG;QACI,+BAAyB,GAAG,KAAK,CAAC;QAyBrC,KAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,KAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,IAAI,UAAU,GAAqB,IAAI,CAAC;QAExC,KAAI,CAAC,qBAAqB,GAAG;YACzB,UAAU,GAAG,KAAI,CAAC,KAAK,CAAC;YACxB,KAAI,CAAC,KAAK,IAAI,GAAG,CAAC;QACtB,CAAC,CAAC;QAEF,KAAI,CAAC,mBAAmB,GAAG;YACvB,IAAI,UAAU,KAAK,IAAI,EAAE;gBACrB,KAAI,CAAC,KAAK,GAAG,UAAU,CAAC;aAC3B;QACL,CAAC,CAAC;QAEF,KAAI,CAAC,oBAAoB,GAAG;YACxB,KAAI,CAAC,MAAM,IAAI,IAAI,CAAC;YACpB,KAAI,CAAC,MAAM,IAAI,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,KAAI,CAAC,kBAAkB,GAAG;YACtB,KAAI,CAAC,MAAM,IAAI,IAAI,CAAC;YACpB,KAAI,CAAC,MAAM,IAAI,IAAI,CAAC;QACxB,CAAC,CAAC;;IACN,CAAC;IA5CD,sBAAW,yBAAK;QAHhB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;;;OAAA;IAMD,sBAAW,6BAAS;QAHpB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,UAAU,CAAC;QAC3B,CAAC;;;OAAA;IAoCS,6BAAY,GAAtB;QACI,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,8DAA8D;IAC9D,cAAc;IACP,gCAAe,GAAtB,UAAuB,CAAS,EAAE,CAAS,EAAE,EAAmB,EAAE,IAAY,EAAE,SAAiB,EAAE,WAAmB,EAAE,MAAe,EAAE,MAAe;QACpJ,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE;YACrF,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,CAAC,iBAAM,QAAQ,YAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YACvB,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,IAAI,CAAC,yBAAyB,EAAE;YAChC,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;gBAC7D,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAClC,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;oBAC9G,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;iBACT;aACJ;YAED,IAAI,CAAC,QAAQ,EAAE;gBACX,OAAO,KAAK,CAAC;aAChB;SACJ;QAED,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAEjF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc;IACP,gCAAe,GAAtB,UAAuB,MAAe,EAAE,EAAmB;QACvD,IAAI,CAAC,iBAAM,eAAe,YAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACpC,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAChC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc;IACP,8BAAa,GAApB,UAAqB,MAAe,EAAE,EAAmB,EAAE,KAAa;QAAb,sBAAA,EAAA,aAAa;QACpE,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;QAED,iBAAM,aAAa,YAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,cAAc;IACP,+BAAc,GAArB,UAAsB,MAAe,EAAE,WAAoB,EAAE,SAAiB,EAAE,WAAmB,EAAE,EAAmB;QACpH,IAAI,CAAC,iBAAM,cAAc,YAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE;YACxE,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC/B;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc;IACP,6BAAY,GAAnB,UAAoB,MAAe,EAAE,WAAoB,EAAE,SAAiB,EAAE,WAAmB,EAAE,WAAoB,EAAE,EAAmB;QACxI,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B;QAED,iBAAM,YAAY,YAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,UAAU;IACV;;;;;;OAMG;IACW,wBAAiB,GAA/B,UAAgC,IAAY,EAAE,IAAY,EAAE,QAAgB;QACxE,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5B,cAAc;QACd,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC;QACtD,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;QAC9B,SAAS,CAAC,uBAAuB,GAAG,OAAO,CAAC,2BAA2B,CAAC;QACxE,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC;QAC9B,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE7B,eAAe;QACf,IAAI,SAAS,GAAG,IAAI,KAAK,CAAC,IAAI,GAAG,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;QACxB,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC;QAC1C,SAAS,CAAC,mBAAmB,GAAG,OAAO,CAAC,yBAAyB,CAAC;QAClE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE7B,QAAQ;QACR,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;QAE9B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACW,4BAAqB,GAAnC,UAAoC,IAAY,EAAE,QAAgB;QAC9D,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5B,eAAe;QACf,IAAI,SAAS,GAAG,IAAI,KAAK,CAAC,IAAI,GAAG,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,SAAS,CAAC,mBAAmB,GAAG,OAAO,CAAC,yBAAyB,CAAC;QAClE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE7B,QAAQ;QACR,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;QAE1B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACW,yBAAkB,GAAhC,UAAiC,IAAY,EAAE,IAAY;QACvD,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5B,cAAc;QACd,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC;QACtD,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;QAC9B,SAAS,CAAC,uBAAuB,GAAG,OAAO,CAAC,2BAA2B,CAAC;QACxE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE7B,QAAQ;QACR,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;QAE9B,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;OAMG;IACW,sCAA+B,GAA7C,UAA8C,IAAY,EAAE,IAAY,EAAE,QAAgB;QACtF,IAAI,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5B,eAAe;QACf,IAAI,SAAS,GAAG,IAAI,KAAK,CAAC,IAAI,GAAG,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE7B,cAAc;QACd,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC;QACtD,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;QAC9B,SAAS,CAAC,uBAAuB,GAAG,OAAO,CAAC,2BAA2B,CAAC;QACxE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAE7B,QAAQ;QACR,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;QAE9B,OAAO,MAAM,CAAC;IAClB,CAAC;IACL,aAAC;AAAD,CAAC,AA7PD,CAA4B,SAAS,GA6PpC;;AACD,UAAU,CAAC,eAAe,CAAC,oBAAoB,CAAC,GAAG,MAAM,CAAC","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { Vector2 } from \"@babylonjs/core/Maths/math.vector\";\r\n\r\nimport { Rectangle } from \"./rectangle\";\r\nimport { Control } from \"./control\";\r\nimport { TextBlock } from \"./textBlock\";\r\nimport { Image } from \"./image\";\r\nimport { _TypeStore } from '@babylonjs/core/Misc/typeStore';\r\nimport { PointerInfoBase } from '@babylonjs/core/Events/pointerEvents';\r\n\r\n/**\r\n * Class used to create 2D buttons\r\n */\r\nexport class Button extends Rectangle {\r\n /**\r\n * Function called to generate a pointer enter animation\r\n */\r\n public pointerEnterAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer out animation\r\n */\r\n public pointerOutAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer down animation\r\n */\r\n public pointerDownAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer up animation\r\n */\r\n public pointerUpAnimation: () => void;\r\n\r\n /**\r\n * Gets or sets a boolean indicating that the button will let internal controls handle picking instead of doing it directly using its bounding info\r\n */\r\n public delegatePickingToChildren = false;\r\n\r\n private _image: Nullable<Image>;\r\n /**\r\n * Returns the image part of the button (if any)\r\n */\r\n public get image(): Nullable<Image> {\r\n return this._image;\r\n }\r\n\r\n private _textBlock: Nullable<TextBlock>;\r\n /**\r\n * Returns the image part of the button (if any)\r\n */\r\n public get textBlock(): Nullable<TextBlock> {\r\n return this._textBlock;\r\n }\r\n\r\n /**\r\n * Creates a new Button\r\n * @param name defines the name of the button\r\n */\r\n constructor(public name?: string) {\r\n super(name);\r\n\r\n this.thickness = 1;\r\n this.isPointerBlocker = true;\r\n\r\n let alphaStore: Nullable<number> = null;\r\n\r\n this.pointerEnterAnimation = () => {\r\n alphaStore = this.alpha;\r\n this.alpha -= 0.1;\r\n };\r\n\r\n this.pointerOutAnimation = () => {\r\n if (alphaStore !== null) {\r\n this.alpha = alphaStore;\r\n }\r\n };\r\n\r\n this.pointerDownAnimation = () => {\r\n this.scaleX -= 0.05;\r\n this.scaleY -= 0.05;\r\n };\r\n\r\n this.pointerUpAnimation = () => {\r\n this.scaleX += 0.05;\r\n this.scaleY += 0.05;\r\n };\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"Button\";\r\n }\r\n\r\n // While being a container, the button behaves like a control.\r\n /** @hidden */\r\n public _processPicking(x: number, y: number, pi: PointerInfoBase, type: number, pointerId: number, buttonIndex: number, deltaX?: number, deltaY?: number): boolean {\r\n if (!this._isEnabled || !this.isHitTestVisible || !this.isVisible || this.notRenderable) {\r\n return false;\r\n }\r\n\r\n if (!super.contains(x, y)) {\r\n return false;\r\n }\r\n\r\n if (this.delegatePickingToChildren) {\r\n let contains = false;\r\n for (var index = this._children.length - 1; index >= 0; index--) {\r\n var child = this._children[index];\r\n if (child.isEnabled && child.isHitTestVisible && child.isVisible && !child.notRenderable && child.contains(x, y)) {\r\n contains = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!contains) {\r\n return false;\r\n }\r\n }\r\n\r\n this._processObservables(type, x, y, pi, pointerId, buttonIndex, deltaX, deltaY);\r\n\r\n return true;\r\n }\r\n\r\n /** @hidden */\r\n public _onPointerEnter(target: Control, pi: PointerInfoBase): boolean {\r\n if (!super._onPointerEnter(target, pi)) {\r\n return false;\r\n }\r\n\r\n if (this.pointerEnterAnimation) {\r\n this.pointerEnterAnimation();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** @hidden */\r\n public _onPointerOut(target: Control, pi: PointerInfoBase, force = false): void {\r\n if (this.pointerOutAnimation) {\r\n this.pointerOutAnimation();\r\n }\r\n\r\n super._onPointerOut(target, pi, force);\r\n }\r\n\r\n /** @hidden */\r\n public _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean {\r\n if (!super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi)) {\r\n return false;\r\n }\r\n\r\n if (this.pointerDownAnimation) {\r\n this.pointerDownAnimation();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** @hidden */\r\n public _onPointerUp(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, notifyClick: boolean, pi: PointerInfoBase): void {\r\n if (this.pointerUpAnimation) {\r\n this.pointerUpAnimation();\r\n }\r\n\r\n super._onPointerUp(target, coordinates, pointerId, buttonIndex, notifyClick, pi);\r\n }\r\n\r\n // Statics\r\n /**\r\n * Creates a new button made with an image and a text\r\n * @param name defines the name of the button\r\n * @param text defines the text of the button\r\n * @param imageUrl defines the url of the image\r\n * @returns a new Button\r\n */\r\n public static CreateImageButton(name: string, text: string, imageUrl: string): Button {\r\n var result = new this(name);\r\n\r\n // Adding text\r\n var textBlock = new TextBlock(name + \"_button\", text);\r\n textBlock.textWrapping = true;\r\n textBlock.textHorizontalAlignment = Control.HORIZONTAL_ALIGNMENT_CENTER;\r\n textBlock.paddingLeft = \"20%\";\r\n result.addControl(textBlock);\r\n\r\n // Adding image\r\n var iconImage = new Image(name + \"_icon\", imageUrl);\r\n iconImage.width = \"20%\";\r\n iconImage.stretch = Image.STRETCH_UNIFORM;\r\n iconImage.horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n result.addControl(iconImage);\r\n\r\n // Store\r\n result._image = iconImage;\r\n result._textBlock = textBlock;\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a new button made with an image\r\n * @param name defines the name of the button\r\n * @param imageUrl defines the url of the image\r\n * @returns a new Button\r\n */\r\n public static CreateImageOnlyButton(name: string, imageUrl: string): Button {\r\n var result = new this(name);\r\n\r\n // Adding image\r\n var iconImage = new Image(name + \"_icon\", imageUrl);\r\n iconImage.stretch = Image.STRETCH_FILL;\r\n iconImage.horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n result.addControl(iconImage);\r\n\r\n // Store\r\n result._image = iconImage;\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a new button made with a text\r\n * @param name defines the name of the button\r\n * @param text defines the text of the button\r\n * @returns a new Button\r\n */\r\n public static CreateSimpleButton(name: string, text: string): Button {\r\n var result = new this(name);\r\n\r\n // Adding text\r\n var textBlock = new TextBlock(name + \"_button\", text);\r\n textBlock.textWrapping = true;\r\n textBlock.textHorizontalAlignment = Control.HORIZONTAL_ALIGNMENT_CENTER;\r\n result.addControl(textBlock);\r\n\r\n // Store\r\n result._textBlock = textBlock;\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a new button made with an image and a centered text\r\n * @param name defines the name of the button\r\n * @param text defines the text of the button\r\n * @param imageUrl defines the url of the image\r\n * @returns a new Button\r\n */\r\n public static CreateImageWithCenterTextButton(name: string, text: string, imageUrl: string): Button {\r\n var result = new this(name);\r\n\r\n // Adding image\r\n var iconImage = new Image(name + \"_icon\", imageUrl);\r\n iconImage.stretch = Image.STRETCH_FILL;\r\n result.addControl(iconImage);\r\n\r\n // Adding text\r\n var textBlock = new TextBlock(name + \"_button\", text);\r\n textBlock.textWrapping = true;\r\n textBlock.textHorizontalAlignment = Control.HORIZONTAL_ALIGNMENT_CENTER;\r\n result.addControl(textBlock);\r\n\r\n // Store\r\n result._image = iconImage;\r\n result._textBlock = textBlock;\r\n\r\n return result;\r\n }\r\n}\r\n_TypeStore.RegisteredTypes[\"BABYLON.GUI.Button\"] = Button;"]}
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/2D/controls/button.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { Vector2 } from \"@babylonjs/core/Maths/math.vector\";\r\n\r\nimport { Rectangle } from \"./rectangle\";\r\nimport { Control } from \"./control\";\r\nimport { TextBlock } from \"./textBlock\";\r\nimport { Image } from \"./image\";\r\nimport { RegisterClass } from '@babylonjs/core/Misc/typeStore';\r\nimport { PointerInfoBase } from '@babylonjs/core/Events/pointerEvents';\r\n\r\n/**\r\n * Class used to create 2D buttons\r\n */\r\nexport class Button extends Rectangle {\r\n /**\r\n * Function called to generate a pointer enter animation\r\n */\r\n public pointerEnterAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer out animation\r\n */\r\n public pointerOutAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer down animation\r\n */\r\n public pointerDownAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer up animation\r\n */\r\n public pointerUpAnimation: () => void;\r\n\r\n /**\r\n * Gets or sets a boolean indicating that the button will let internal controls handle picking instead of doing it directly using its bounding info\r\n */\r\n public delegatePickingToChildren = false;\r\n\r\n private _image: Nullable<Image>;\r\n /**\r\n * Returns the image part of the button (if any)\r\n */\r\n public get image(): Nullable<Image> {\r\n return this._image;\r\n }\r\n\r\n private _textBlock: Nullable<TextBlock>;\r\n /**\r\n * Returns the image part of the button (if any)\r\n */\r\n public get textBlock(): Nullable<TextBlock> {\r\n return this._textBlock;\r\n }\r\n\r\n /**\r\n * Creates a new Button\r\n * @param name defines the name of the button\r\n */\r\n constructor(public name?: string) {\r\n super(name);\r\n\r\n this.thickness = 1;\r\n this.isPointerBlocker = true;\r\n\r\n let alphaStore: Nullable<number> = null;\r\n\r\n this.pointerEnterAnimation = () => {\r\n alphaStore = this.alpha;\r\n this.alpha -= 0.1;\r\n };\r\n\r\n this.pointerOutAnimation = () => {\r\n if (alphaStore !== null) {\r\n this.alpha = alphaStore;\r\n }\r\n };\r\n\r\n this.pointerDownAnimation = () => {\r\n this.scaleX -= 0.05;\r\n this.scaleY -= 0.05;\r\n };\r\n\r\n this.pointerUpAnimation = () => {\r\n this.scaleX += 0.05;\r\n this.scaleY += 0.05;\r\n };\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"Button\";\r\n }\r\n\r\n // While being a container, the button behaves like a control.\r\n /** @hidden */\r\n public _processPicking(x: number, y: number, pi: PointerInfoBase, type: number, pointerId: number, buttonIndex: number, deltaX?: number, deltaY?: number): boolean {\r\n if (!this._isEnabled || !this.isHitTestVisible || !this.isVisible || this.notRenderable) {\r\n return false;\r\n }\r\n\r\n if (!super.contains(x, y)) {\r\n return false;\r\n }\r\n\r\n if (this.delegatePickingToChildren) {\r\n let contains = false;\r\n for (var index = this._children.length - 1; index >= 0; index--) {\r\n var child = this._children[index];\r\n if (child.isEnabled && child.isHitTestVisible && child.isVisible && !child.notRenderable && child.contains(x, y)) {\r\n contains = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!contains) {\r\n return false;\r\n }\r\n }\r\n\r\n this._processObservables(type, x, y, pi, pointerId, buttonIndex, deltaX, deltaY);\r\n\r\n return true;\r\n }\r\n\r\n /** @hidden */\r\n public _onPointerEnter(target: Control, pi: PointerInfoBase): boolean {\r\n if (!super._onPointerEnter(target, pi)) {\r\n return false;\r\n }\r\n\r\n if (!this.isReadOnly && this.pointerEnterAnimation) {\r\n this.pointerEnterAnimation();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** @hidden */\r\n public _onPointerOut(target: Control, pi: PointerInfoBase, force = false): void {\r\n if (!this.isReadOnly && this.pointerOutAnimation) {\r\n this.pointerOutAnimation();\r\n }\r\n\r\n super._onPointerOut(target, pi, force);\r\n }\r\n\r\n /** @hidden */\r\n public _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean {\r\n if (!super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi)) {\r\n return false;\r\n }\r\n\r\n if (!this.isReadOnly && this.pointerDownAnimation) {\r\n this.pointerDownAnimation();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /** @hidden */\r\n public _onPointerUp(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, notifyClick: boolean, pi: PointerInfoBase): void {\r\n if (!this.isReadOnly && this.pointerUpAnimation) {\r\n this.pointerUpAnimation();\r\n }\r\n\r\n super._onPointerUp(target, coordinates, pointerId, buttonIndex, notifyClick, pi);\r\n }\r\n\r\n // Statics\r\n /**\r\n * Creates a new button made with an image and a text\r\n * @param name defines the name of the button\r\n * @param text defines the text of the button\r\n * @param imageUrl defines the url of the image\r\n * @returns a new Button\r\n */\r\n public static CreateImageButton(name: string, text: string, imageUrl: string): Button {\r\n var result = new this(name);\r\n\r\n // Adding text\r\n var textBlock = new TextBlock(name + \"_button\", text);\r\n textBlock.textWrapping = true;\r\n textBlock.textHorizontalAlignment = Control.HORIZONTAL_ALIGNMENT_CENTER;\r\n textBlock.paddingLeft = \"20%\";\r\n result.addControl(textBlock);\r\n\r\n // Adding image\r\n var iconImage = new Image(name + \"_icon\", imageUrl);\r\n iconImage.width = \"20%\";\r\n iconImage.stretch = Image.STRETCH_UNIFORM;\r\n iconImage.horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n result.addControl(iconImage);\r\n\r\n // Store\r\n result._image = iconImage;\r\n result._textBlock = textBlock;\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a new button made with an image\r\n * @param name defines the name of the button\r\n * @param imageUrl defines the url of the image\r\n * @returns a new Button\r\n */\r\n public static CreateImageOnlyButton(name: string, imageUrl: string): Button {\r\n var result = new this(name);\r\n\r\n // Adding image\r\n var iconImage = new Image(name + \"_icon\", imageUrl);\r\n iconImage.stretch = Image.STRETCH_FILL;\r\n iconImage.horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n result.addControl(iconImage);\r\n\r\n // Store\r\n result._image = iconImage;\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a new button made with a text\r\n * @param name defines the name of the button\r\n * @param text defines the text of the button\r\n * @returns a new Button\r\n */\r\n public static CreateSimpleButton(name: string, text: string): Button {\r\n var result = new this(name);\r\n\r\n // Adding text\r\n var textBlock = new TextBlock(name + \"_button\", text);\r\n textBlock.textWrapping = true;\r\n textBlock.textHorizontalAlignment = Control.HORIZONTAL_ALIGNMENT_CENTER;\r\n result.addControl(textBlock);\r\n\r\n // Store\r\n result._textBlock = textBlock;\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Creates a new button made with an image and a centered text\r\n * @param name defines the name of the button\r\n * @param text defines the text of the button\r\n * @param imageUrl defines the url of the image\r\n * @returns a new Button\r\n */\r\n public static CreateImageWithCenterTextButton(name: string, text: string, imageUrl: string): Button {\r\n var result = new this(name);\r\n\r\n // Adding image\r\n var iconImage = new Image(name + \"_icon\", imageUrl);\r\n iconImage.stretch = Image.STRETCH_FILL;\r\n result.addControl(iconImage);\r\n\r\n // Adding text\r\n var textBlock = new TextBlock(name + \"_button\", text);\r\n textBlock.textWrapping = true;\r\n textBlock.textHorizontalAlignment = Control.HORIZONTAL_ALIGNMENT_CENTER;\r\n result.addControl(textBlock);\r\n\r\n // Store\r\n result._image = iconImage;\r\n result._textBlock = textBlock;\r\n\r\n return result;\r\n }\r\n}\r\nRegisterClass(\"BABYLON.GUI.Button\", Button);"]}
@@ -5,6 +5,7 @@ import { StackPanel } from "./stackPanel";
5
5
  import { Nullable } from '@babylonjs/core/types';
6
6
  import { Measure } from '../measure';
7
7
  import { PointerInfoBase } from '@babylonjs/core/Events/pointerEvents';
8
+ import { ICanvasRenderingContext } from '@babylonjs/core/Engines/ICanvas';
8
9
  /**
9
10
  * Class used to represent a 2D checkbox
10
11
  */
@@ -37,7 +38,7 @@ export declare class Checkbox extends Control {
37
38
  constructor(name?: string | undefined);
38
39
  protected _getTypeName(): string;
39
40
  /** @hidden */
40
- _draw(context: CanvasRenderingContext2D, invalidatedRectangle?: Nullable<Measure>): void;
41
+ _draw(context: ICanvasRenderingContext, invalidatedRectangle?: Nullable<Measure>): void;
41
42
  /** @hidden */
42
43
  _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean;
43
44
  /**
@@ -1,10 +1,10 @@
1
1
  import { __decorate, __extends } from "tslib";
2
- import { Observable } from "@babylonjs/core/Misc/observable";
3
- import { Control } from "./control";
4
- import { StackPanel } from "./stackPanel";
5
- import { TextBlock } from "./textBlock";
6
- import { _TypeStore } from '@babylonjs/core/Misc/typeStore';
7
- import { serialize } from '@babylonjs/core/Misc/decorators';
2
+ import { Observable } from "@babylonjs/core/Misc/observable.js";
3
+ import { Control } from "./control.js";
4
+ import { StackPanel } from "./stackPanel.js";
5
+ import { TextBlock } from "./textBlock.js";
6
+ import { RegisterClass } from '@babylonjs/core/Misc/typeStore.js';
7
+ import { serialize } from '@babylonjs/core/Misc/decorators.js';
8
8
  /**
9
9
  * Class used to represent a 2D checkbox
10
10
  */
@@ -129,7 +129,9 @@ var Checkbox = /** @class */ (function (_super) {
129
129
  if (!_super.prototype._onPointerDown.call(this, target, coordinates, pointerId, buttonIndex, pi)) {
130
130
  return false;
131
131
  }
132
- this.isChecked = !this.isChecked;
132
+ if (!this.isReadOnly) {
133
+ this.isChecked = !this.isChecked;
134
+ }
133
135
  return true;
134
136
  };
135
137
  /**
@@ -173,5 +175,5 @@ var Checkbox = /** @class */ (function (_super) {
173
175
  return Checkbox;
174
176
  }(Control));
175
177
  export { Checkbox };
176
- _TypeStore.RegisteredTypes["BABYLON.GUI.Checkbox"] = Checkbox;
178
+ RegisterClass("BABYLON.GUI.Checkbox", Checkbox);
177
179
  //# sourceMappingURL=checkbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/2D/controls/checkbox.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from \"@babylonjs/core/Misc/observable\";\r\nimport { Vector2 } from \"@babylonjs/core/Maths/math.vector\";\r\n\r\nimport { Control } from \"./control\";\r\nimport { StackPanel } from \"./stackPanel\";\r\nimport { TextBlock } from \"./textBlock\";\r\nimport { _TypeStore } from '@babylonjs/core/Misc/typeStore';\r\nimport { Nullable } from '@babylonjs/core/types';\r\nimport { Measure } from '../measure';\r\nimport { PointerInfoBase } from '@babylonjs/core/Events/pointerEvents';\r\nimport { serialize } from '@babylonjs/core/Misc/decorators';\r\n\r\n/**\r\n * Class used to represent a 2D checkbox\r\n */\r\nexport class Checkbox extends Control {\r\n private _isChecked = false;\r\n private _background = \"black\";\r\n private _checkSizeRatio = 0.8;\r\n private _thickness = 1;\r\n\r\n /** Gets or sets border thickness */\r\n @serialize()\r\n public get thickness(): number {\r\n return this._thickness;\r\n }\r\n\r\n public set thickness(value: number) {\r\n if (this._thickness === value) {\r\n return;\r\n }\r\n\r\n this._thickness = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Observable raised when isChecked property changes\r\n */\r\n public onIsCheckedChangedObservable = new Observable<boolean>();\r\n\r\n /** Gets or sets a value indicating the ratio between overall size and check size */\r\n @serialize()\r\n public get checkSizeRatio(): number {\r\n return this._checkSizeRatio;\r\n }\r\n\r\n public set checkSizeRatio(value: number) {\r\n value = Math.max(Math.min(1, value), 0);\r\n\r\n if (this._checkSizeRatio === value) {\r\n return;\r\n }\r\n\r\n this._checkSizeRatio = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background color */\r\n @serialize()\r\n public get background(): string {\r\n return this._background;\r\n }\r\n\r\n public set background(value: string) {\r\n if (this._background === value) {\r\n return;\r\n }\r\n\r\n this._background = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the checkbox is checked or not */\r\n @serialize()\r\n public get isChecked(): boolean {\r\n return this._isChecked;\r\n }\r\n\r\n public set isChecked(value: boolean) {\r\n if (this._isChecked === value) {\r\n return;\r\n }\r\n\r\n this._isChecked = value;\r\n this._markAsDirty();\r\n\r\n this.onIsCheckedChangedObservable.notifyObservers(value);\r\n }\r\n\r\n /**\r\n * Creates a new CheckBox\r\n * @param name defines the control name\r\n */\r\n constructor(public name?: string) {\r\n super(name);\r\n this.isPointerBlocker = true;\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"Checkbox\";\r\n }\r\n\r\n /** @hidden */\r\n public _draw(context: CanvasRenderingContext2D, invalidatedRectangle?: Nullable<Measure>): void {\r\n context.save();\r\n\r\n this._applyStates(context);\r\n let actualWidth = this._currentMeasure.width - this._thickness;\r\n let actualHeight = this._currentMeasure.height - this._thickness;\r\n\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowColor = this.shadowColor;\r\n context.shadowBlur = this.shadowBlur;\r\n context.shadowOffsetX = this.shadowOffsetX;\r\n context.shadowOffsetY = this.shadowOffsetY;\r\n }\r\n\r\n context.fillStyle = this._isEnabled ? this._background : this._disabledColor;\r\n context.fillRect(this._currentMeasure.left + this._thickness / 2, this._currentMeasure.top + this._thickness / 2, actualWidth, actualHeight);\r\n\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowBlur = 0;\r\n context.shadowOffsetX = 0;\r\n context.shadowOffsetY = 0;\r\n }\r\n\r\n if (this._isChecked) {\r\n context.fillStyle = this._isEnabled ? this.color : this._disabledColorItem;\r\n let offsetWidth = actualWidth * this._checkSizeRatio;\r\n let offseHeight = actualHeight * this._checkSizeRatio;\r\n\r\n context.fillRect(this._currentMeasure.left + this._thickness / 2 + (actualWidth - offsetWidth) / 2, this._currentMeasure.top + this._thickness / 2 + (actualHeight - offseHeight) / 2, offsetWidth, offseHeight);\r\n }\r\n\r\n context.strokeStyle = this.color;\r\n context.lineWidth = this._thickness;\r\n\r\n context.strokeRect(this._currentMeasure.left + this._thickness / 2, this._currentMeasure.top + this._thickness / 2, actualWidth, actualHeight);\r\n\r\n context.restore();\r\n }\r\n\r\n // Events\r\n\r\n /** @hidden */\r\n public _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean {\r\n if (!super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi)) {\r\n return false;\r\n }\r\n\r\n this.isChecked = !this.isChecked;\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Utility function to easily create a checkbox with a header\r\n * @param title defines the label to use for the header\r\n * @param onValueChanged defines the callback to call when value changes\r\n * @returns a StackPanel containing the checkbox and a textBlock\r\n */\r\n public static AddCheckBoxWithHeader(title: string, onValueChanged: (value: boolean) => void): StackPanel {\r\n var panel = new StackPanel();\r\n panel.isVertical = false;\r\n panel.height = \"30px\";\r\n\r\n var checkbox = new Checkbox();\r\n checkbox.width = \"20px\";\r\n checkbox.height = \"20px\";\r\n checkbox.isChecked = true;\r\n checkbox.color = \"green\";\r\n checkbox.onIsCheckedChangedObservable.add(onValueChanged);\r\n panel.addControl(checkbox);\r\n\r\n var header = new TextBlock();\r\n header.text = title;\r\n header.width = \"180px\";\r\n header.paddingLeft = \"5px\";\r\n header.textHorizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n header.color = \"white\";\r\n panel.addControl(header);\r\n\r\n return panel;\r\n }\r\n}\r\n_TypeStore.RegisteredTypes[\"BABYLON.GUI.Checkbox\"] = Checkbox;\r\n"]}
1
+ {"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/2D/controls/checkbox.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable } from \"@babylonjs/core/Misc/observable\";\r\nimport { Vector2 } from \"@babylonjs/core/Maths/math.vector\";\r\n\r\nimport { Control } from \"./control\";\r\nimport { StackPanel } from \"./stackPanel\";\r\nimport { TextBlock } from \"./textBlock\";\r\nimport { RegisterClass } from '@babylonjs/core/Misc/typeStore';\r\nimport { Nullable } from '@babylonjs/core/types';\r\nimport { Measure } from '../measure';\r\nimport { PointerInfoBase } from '@babylonjs/core/Events/pointerEvents';\r\nimport { serialize } from '@babylonjs/core/Misc/decorators';\r\nimport { ICanvasRenderingContext } from '@babylonjs/core/Engines/ICanvas';\r\n\r\n/**\r\n * Class used to represent a 2D checkbox\r\n */\r\nexport class Checkbox extends Control {\r\n private _isChecked = false;\r\n private _background = \"black\";\r\n private _checkSizeRatio = 0.8;\r\n private _thickness = 1;\r\n\r\n /** Gets or sets border thickness */\r\n @serialize()\r\n public get thickness(): number {\r\n return this._thickness;\r\n }\r\n\r\n public set thickness(value: number) {\r\n if (this._thickness === value) {\r\n return;\r\n }\r\n\r\n this._thickness = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /**\r\n * Observable raised when isChecked property changes\r\n */\r\n public onIsCheckedChangedObservable = new Observable<boolean>();\r\n\r\n /** Gets or sets a value indicating the ratio between overall size and check size */\r\n @serialize()\r\n public get checkSizeRatio(): number {\r\n return this._checkSizeRatio;\r\n }\r\n\r\n public set checkSizeRatio(value: number) {\r\n value = Math.max(Math.min(1, value), 0);\r\n\r\n if (this._checkSizeRatio === value) {\r\n return;\r\n }\r\n\r\n this._checkSizeRatio = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background color */\r\n @serialize()\r\n public get background(): string {\r\n return this._background;\r\n }\r\n\r\n public set background(value: string) {\r\n if (this._background === value) {\r\n return;\r\n }\r\n\r\n this._background = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets a boolean indicating if the checkbox is checked or not */\r\n @serialize()\r\n public get isChecked(): boolean {\r\n return this._isChecked;\r\n }\r\n\r\n public set isChecked(value: boolean) {\r\n if (this._isChecked === value) {\r\n return;\r\n }\r\n\r\n this._isChecked = value;\r\n this._markAsDirty();\r\n\r\n this.onIsCheckedChangedObservable.notifyObservers(value);\r\n }\r\n\r\n /**\r\n * Creates a new CheckBox\r\n * @param name defines the control name\r\n */\r\n constructor(public name?: string) {\r\n super(name);\r\n this.isPointerBlocker = true;\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"Checkbox\";\r\n }\r\n\r\n /** @hidden */\r\n public _draw(context: ICanvasRenderingContext, invalidatedRectangle?: Nullable<Measure>): void {\r\n context.save();\r\n\r\n this._applyStates(context);\r\n let actualWidth = this._currentMeasure.width - this._thickness;\r\n let actualHeight = this._currentMeasure.height - this._thickness;\r\n\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowColor = this.shadowColor;\r\n context.shadowBlur = this.shadowBlur;\r\n context.shadowOffsetX = this.shadowOffsetX;\r\n context.shadowOffsetY = this.shadowOffsetY;\r\n }\r\n\r\n context.fillStyle = this._isEnabled ? this._background : this._disabledColor;\r\n context.fillRect(this._currentMeasure.left + this._thickness / 2, this._currentMeasure.top + this._thickness / 2, actualWidth, actualHeight);\r\n\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowBlur = 0;\r\n context.shadowOffsetX = 0;\r\n context.shadowOffsetY = 0;\r\n }\r\n\r\n if (this._isChecked) {\r\n context.fillStyle = this._isEnabled ? this.color : this._disabledColorItem;\r\n let offsetWidth = actualWidth * this._checkSizeRatio;\r\n let offseHeight = actualHeight * this._checkSizeRatio;\r\n\r\n context.fillRect(this._currentMeasure.left + this._thickness / 2 + (actualWidth - offsetWidth) / 2, this._currentMeasure.top + this._thickness / 2 + (actualHeight - offseHeight) / 2, offsetWidth, offseHeight);\r\n }\r\n\r\n context.strokeStyle = this.color;\r\n context.lineWidth = this._thickness;\r\n\r\n context.strokeRect(this._currentMeasure.left + this._thickness / 2, this._currentMeasure.top + this._thickness / 2, actualWidth, actualHeight);\r\n\r\n context.restore();\r\n }\r\n\r\n // Events\r\n\r\n /** @hidden */\r\n public _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean {\r\n if (!super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi)) {\r\n return false;\r\n }\r\n\r\n if (!this.isReadOnly) {\r\n this.isChecked = !this.isChecked;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Utility function to easily create a checkbox with a header\r\n * @param title defines the label to use for the header\r\n * @param onValueChanged defines the callback to call when value changes\r\n * @returns a StackPanel containing the checkbox and a textBlock\r\n */\r\n public static AddCheckBoxWithHeader(title: string, onValueChanged: (value: boolean) => void): StackPanel {\r\n var panel = new StackPanel();\r\n panel.isVertical = false;\r\n panel.height = \"30px\";\r\n\r\n var checkbox = new Checkbox();\r\n checkbox.width = \"20px\";\r\n checkbox.height = \"20px\";\r\n checkbox.isChecked = true;\r\n checkbox.color = \"green\";\r\n checkbox.onIsCheckedChangedObservable.add(onValueChanged);\r\n panel.addControl(checkbox);\r\n\r\n var header = new TextBlock();\r\n header.text = title;\r\n header.width = \"180px\";\r\n header.paddingLeft = \"5px\";\r\n header.textHorizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n header.color = \"white\";\r\n panel.addControl(header);\r\n\r\n return panel;\r\n }\r\n}\r\nRegisterClass(\"BABYLON.GUI.Checkbox\", Checkbox);\r\n"]}