@babylonjs/gui 5.0.0-rc.0 → 5.0.0-rc.11

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 (305) hide show
  1. package/2D/adtInstrumentation.d.ts +52 -52
  2. package/2D/adtInstrumentation.js +126 -126
  3. package/2D/adtInstrumentation.js.map +1 -1
  4. package/2D/advancedDynamicTexture.d.ts +449 -423
  5. package/2D/advancedDynamicTexture.js +1318 -1286
  6. package/2D/advancedDynamicTexture.js.map +1 -1
  7. package/2D/controls/button.d.ts +135 -97
  8. package/2D/controls/button.js +276 -238
  9. package/2D/controls/button.js.map +1 -1
  10. package/2D/controls/checkbox.d.ts +59 -51
  11. package/2D/controls/checkbox.js +188 -178
  12. package/2D/controls/checkbox.js.map +1 -1
  13. package/2D/controls/colorpicker.d.ts +103 -90
  14. package/2D/controls/colorpicker.js +1417 -1400
  15. package/2D/controls/colorpicker.js.map +1 -1
  16. package/2D/controls/container.d.ts +175 -130
  17. package/2D/controls/container.js +570 -525
  18. package/2D/controls/container.js.map +1 -1
  19. package/2D/controls/control.d.ts +866 -743
  20. package/2D/controls/control.js +2433 -2308
  21. package/2D/controls/control.js.map +1 -1
  22. package/2D/controls/displayGrid.d.ts +53 -55
  23. package/2D/controls/displayGrid.js +245 -245
  24. package/2D/controls/displayGrid.js.map +1 -1
  25. package/2D/controls/ellipse.d.ts +21 -21
  26. package/2D/controls/ellipse.js +85 -85
  27. package/2D/controls/ellipse.js.map +1 -1
  28. package/2D/controls/focusableButton.d.ts +59 -52
  29. package/2D/controls/focusableButton.js +99 -92
  30. package/2D/controls/focusableButton.js.map +1 -1
  31. package/2D/controls/focusableControl.d.ts +34 -34
  32. package/2D/controls/focusableControl.js +1 -1
  33. package/2D/controls/focusableControl.js.map +1 -1
  34. package/2D/controls/grid.d.ts +139 -135
  35. package/2D/controls/grid.js +529 -525
  36. package/2D/controls/grid.js.map +1 -1
  37. package/2D/controls/image.d.ts +204 -197
  38. package/2D/controls/image.js +887 -879
  39. package/2D/controls/image.js.map +1 -1
  40. package/2D/controls/index.d.ts +29 -29
  41. package/2D/controls/index.js +29 -29
  42. package/2D/controls/index.js.map +1 -1
  43. package/2D/controls/inputPassword.d.ts +9 -8
  44. package/2D/controls/inputPassword.js +28 -25
  45. package/2D/controls/inputPassword.js.map +1 -1
  46. package/2D/controls/inputText.d.ts +201 -182
  47. package/2D/controls/inputText.js +1119 -1096
  48. package/2D/controls/inputText.js.map +1 -1
  49. package/2D/controls/line.d.ts +66 -66
  50. package/2D/controls/line.js +271 -271
  51. package/2D/controls/line.js.map +1 -1
  52. package/2D/controls/multiLine.d.ts +75 -77
  53. package/2D/controls/multiLine.js +262 -262
  54. package/2D/controls/multiLine.js.map +1 -1
  55. package/2D/controls/radioButton.d.ts +49 -49
  56. package/2D/controls/radioButton.js +205 -205
  57. package/2D/controls/radioButton.js.map +1 -1
  58. package/2D/controls/rectangle.d.ts +29 -29
  59. package/2D/controls/rectangle.js +150 -150
  60. package/2D/controls/rectangle.js.map +1 -1
  61. package/2D/controls/scrollViewers/scrollViewer.d.ts +182 -175
  62. package/2D/controls/scrollViewers/scrollViewer.js +677 -676
  63. package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
  64. package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +57 -45
  65. package/2D/controls/scrollViewers/scrollViewerWindow.js +278 -263
  66. package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
  67. package/2D/controls/selector.d.ts +263 -209
  68. package/2D/controls/selector.js +692 -629
  69. package/2D/controls/selector.js.map +1 -1
  70. package/2D/controls/sliders/baseSlider.d.ts +82 -78
  71. package/2D/controls/sliders/baseSlider.js +347 -343
  72. package/2D/controls/sliders/baseSlider.js.map +1 -1
  73. package/2D/controls/sliders/imageBasedSlider.d.ts +49 -47
  74. package/2D/controls/sliders/imageBasedSlider.js +192 -188
  75. package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
  76. package/2D/controls/sliders/imageScrollBar.d.ts +65 -61
  77. package/2D/controls/sliders/imageScrollBar.js +263 -256
  78. package/2D/controls/sliders/imageScrollBar.js.map +1 -1
  79. package/2D/controls/sliders/scrollBar.d.ts +38 -34
  80. package/2D/controls/sliders/scrollBar.js +143 -136
  81. package/2D/controls/sliders/scrollBar.js.map +1 -1
  82. package/2D/controls/sliders/slider.d.ts +35 -37
  83. package/2D/controls/sliders/slider.js +271 -271
  84. package/2D/controls/sliders/slider.js.map +1 -1
  85. package/2D/controls/stackPanel.d.ts +64 -56
  86. package/2D/controls/stackPanel.js +246 -236
  87. package/2D/controls/stackPanel.js.map +1 -1
  88. package/2D/controls/statics.d.ts +6 -6
  89. package/2D/controls/statics.js +49 -47
  90. package/2D/controls/statics.js.map +1 -1
  91. package/2D/controls/textBlock.d.ts +175 -172
  92. package/2D/controls/textBlock.js +603 -598
  93. package/2D/controls/textBlock.js.map +1 -1
  94. package/2D/controls/textWrapper.d.ts +13 -13
  95. package/2D/controls/textWrapper.js +101 -101
  96. package/2D/controls/textWrapper.js.map +1 -1
  97. package/2D/controls/toggleButton.d.ts +117 -83
  98. package/2D/controls/toggleButton.js +268 -234
  99. package/2D/controls/toggleButton.js.map +1 -1
  100. package/2D/controls/virtualKeyboard.d.ts +96 -96
  101. package/2D/controls/virtualKeyboard.js +256 -256
  102. package/2D/controls/virtualKeyboard.js.map +1 -1
  103. package/2D/index.d.ts +9 -9
  104. package/2D/index.js +10 -9
  105. package/2D/index.js.map +1 -1
  106. package/2D/math2D.d.ts +117 -117
  107. package/2D/math2D.js +221 -221
  108. package/2D/math2D.js.map +1 -1
  109. package/2D/measure.d.ts +77 -77
  110. package/2D/measure.js +139 -149
  111. package/2D/measure.js.map +1 -1
  112. package/2D/multiLinePoint.d.ts +47 -47
  113. package/2D/multiLinePoint.js +127 -127
  114. package/2D/multiLinePoint.js.map +1 -1
  115. package/2D/style.d.ts +46 -46
  116. package/2D/style.js +97 -97
  117. package/2D/style.js.map +1 -1
  118. package/2D/valueAndUnit.d.ts +89 -89
  119. package/2D/valueAndUnit.js +226 -222
  120. package/2D/valueAndUnit.js.map +1 -1
  121. package/2D/xmlLoader.d.ts +60 -60
  122. package/2D/xmlLoader.js +348 -348
  123. package/2D/xmlLoader.js.map +1 -1
  124. package/3D/behaviors/defaultBehavior.d.ts +73 -73
  125. package/3D/behaviors/defaultBehavior.js +121 -121
  126. package/3D/behaviors/defaultBehavior.js.map +1 -1
  127. package/3D/controls/abstractButton3D.d.ts +15 -15
  128. package/3D/controls/abstractButton3D.js +25 -25
  129. package/3D/controls/abstractButton3D.js.map +1 -1
  130. package/3D/controls/button3D.d.ts +30 -30
  131. package/3D/controls/button3D.js +93 -93
  132. package/3D/controls/button3D.js.map +1 -1
  133. package/3D/controls/container3D.d.ts +72 -72
  134. package/3D/controls/container3D.js +139 -140
  135. package/3D/controls/container3D.js.map +1 -1
  136. package/3D/controls/contentDisplay3D.d.ts +30 -30
  137. package/3D/controls/contentDisplay3D.js +79 -78
  138. package/3D/controls/contentDisplay3D.js.map +1 -1
  139. package/3D/controls/control3D.d.ts +201 -165
  140. package/3D/controls/control3D.js +445 -408
  141. package/3D/controls/control3D.js.map +1 -1
  142. package/3D/controls/cylinderPanel.d.ts +17 -17
  143. package/3D/controls/cylinderPanel.js +66 -66
  144. package/3D/controls/cylinderPanel.js.map +1 -1
  145. package/3D/controls/handMenu.d.ts +28 -28
  146. package/3D/controls/handMenu.js +47 -47
  147. package/3D/controls/handMenu.js.map +1 -1
  148. package/3D/controls/holographicBackplate.d.ts +49 -48
  149. package/3D/controls/holographicBackplate.js +120 -120
  150. package/3D/controls/holographicBackplate.js.map +1 -1
  151. package/3D/controls/holographicButton.d.ts +84 -83
  152. package/3D/controls/holographicButton.js +339 -338
  153. package/3D/controls/holographicButton.js.map +1 -1
  154. package/3D/controls/holographicSlate.d.ts +131 -128
  155. package/3D/controls/holographicSlate.js +431 -428
  156. package/3D/controls/holographicSlate.js.map +1 -1
  157. package/3D/controls/index.d.ts +21 -21
  158. package/3D/controls/index.js +21 -21
  159. package/3D/controls/index.js.map +1 -1
  160. package/3D/controls/meshButton3D.d.ts +21 -21
  161. package/3D/controls/meshButton3D.js +62 -61
  162. package/3D/controls/meshButton3D.js.map +1 -1
  163. package/3D/controls/nearMenu.d.ts +44 -44
  164. package/3D/controls/nearMenu.js +114 -112
  165. package/3D/controls/nearMenu.js.map +1 -1
  166. package/3D/controls/planePanel.d.ts +9 -9
  167. package/3D/controls/planePanel.js +36 -36
  168. package/3D/controls/planePanel.js.map +1 -1
  169. package/3D/controls/scatterPanel.d.ts +18 -18
  170. package/3D/controls/scatterPanel.js +108 -108
  171. package/3D/controls/scatterPanel.js.map +1 -1
  172. package/3D/controls/slider3D.d.ts +81 -80
  173. package/3D/controls/slider3D.js +268 -267
  174. package/3D/controls/slider3D.js.map +1 -1
  175. package/3D/controls/spherePanel.d.ts +17 -17
  176. package/3D/controls/spherePanel.js +67 -67
  177. package/3D/controls/spherePanel.js.map +1 -1
  178. package/3D/controls/stackPanel3D.d.ts +22 -22
  179. package/3D/controls/stackPanel3D.js +107 -107
  180. package/3D/controls/stackPanel3D.js.map +1 -1
  181. package/3D/controls/touchButton3D.d.ts +80 -75
  182. package/3D/controls/touchButton3D.js +233 -227
  183. package/3D/controls/touchButton3D.js.map +1 -1
  184. package/3D/controls/touchHolographicButton.d.ts +110 -109
  185. package/3D/controls/touchHolographicButton.js +445 -445
  186. package/3D/controls/touchHolographicButton.js.map +1 -1
  187. package/3D/controls/touchHolographicMenu.d.ts +61 -61
  188. package/3D/controls/touchHolographicMenu.js +149 -148
  189. package/3D/controls/touchHolographicMenu.js.map +1 -1
  190. package/3D/controls/touchMeshButton3D.d.ts +21 -22
  191. package/3D/controls/touchMeshButton3D.js +62 -62
  192. package/3D/controls/touchMeshButton3D.js.map +1 -1
  193. package/3D/controls/volumeBasedPanel.d.ts +53 -52
  194. package/3D/controls/volumeBasedPanel.js +174 -174
  195. package/3D/controls/volumeBasedPanel.js.map +1 -1
  196. package/3D/gizmos/gizmoHandle.d.ts +108 -108
  197. package/3D/gizmos/gizmoHandle.js +209 -209
  198. package/3D/gizmos/gizmoHandle.js.map +1 -1
  199. package/3D/gizmos/index.d.ts +2 -2
  200. package/3D/gizmos/index.js +2 -2
  201. package/3D/gizmos/index.js.map +1 -1
  202. package/3D/gizmos/slateGizmo.d.ts +57 -57
  203. package/3D/gizmos/slateGizmo.js +369 -369
  204. package/3D/gizmos/slateGizmo.js.map +1 -1
  205. package/3D/gui3DManager.d.ts +94 -94
  206. package/3D/gui3DManager.js +257 -257
  207. package/3D/gui3DManager.js.map +1 -1
  208. package/3D/index.d.ts +5 -5
  209. package/3D/index.js +6 -5
  210. package/3D/index.js.map +1 -1
  211. package/3D/materials/fluent/fluentMaterial.d.ts +91 -90
  212. package/3D/materials/fluent/fluentMaterial.js +292 -281
  213. package/3D/materials/fluent/fluentMaterial.js.map +1 -1
  214. package/3D/materials/fluent/index.d.ts +1 -1
  215. package/3D/materials/fluent/index.js +1 -1
  216. package/3D/materials/fluent/index.js.map +1 -1
  217. package/3D/materials/fluent/shaders/fluent.fragment.d.ts +5 -5
  218. package/3D/materials/fluent/shaders/fluent.fragment.js +8 -6
  219. package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -1
  220. package/3D/materials/fluent/shaders/fluent.vertex.d.ts +5 -5
  221. package/3D/materials/fluent/shaders/fluent.vertex.js +8 -6
  222. package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -1
  223. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +155 -154
  224. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +469 -434
  225. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -1
  226. package/3D/materials/fluentBackplate/index.d.ts +1 -1
  227. package/3D/materials/fluentBackplate/index.js +1 -1
  228. package/3D/materials/fluentBackplate/index.js.map +1 -1
  229. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -5
  230. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +8 -6
  231. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -1
  232. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -5
  233. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +8 -6
  234. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -1
  235. package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +190 -189
  236. package/3D/materials/fluentButton/fluentButtonMaterial.js +539 -537
  237. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -1
  238. package/3D/materials/fluentButton/index.d.ts +1 -1
  239. package/3D/materials/fluentButton/index.js +1 -1
  240. package/3D/materials/fluentButton/index.js.map +1 -1
  241. package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -5
  242. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +8 -6
  243. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -1
  244. package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -5
  245. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +8 -6
  246. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -1
  247. package/3D/materials/fluentMaterial.d.ts +4 -4
  248. package/3D/materials/fluentMaterial.js +4 -4
  249. package/3D/materials/fluentMaterial.js.map +1 -1
  250. package/3D/materials/handle/handleMaterial.d.ts +68 -68
  251. package/3D/materials/handle/handleMaterial.js +126 -126
  252. package/3D/materials/handle/handleMaterial.js.map +1 -1
  253. package/3D/materials/handle/index.d.ts +1 -1
  254. package/3D/materials/handle/index.js +1 -1
  255. package/3D/materials/handle/index.js.map +1 -1
  256. package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -5
  257. package/3D/materials/handle/shaders/handle.fragment.js +8 -6
  258. package/3D/materials/handle/shaders/handle.fragment.js.map +1 -1
  259. package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -5
  260. package/3D/materials/handle/shaders/handle.vertex.js +8 -6
  261. package/3D/materials/handle/shaders/handle.vertex.js.map +1 -1
  262. package/3D/materials/index.d.ts +5 -5
  263. package/3D/materials/index.js +6 -5
  264. package/3D/materials/index.js.map +1 -1
  265. package/3D/materials/mrdl/index.d.ts +3 -3
  266. package/3D/materials/mrdl/index.js +3 -3
  267. package/3D/materials/mrdl/index.js.map +1 -1
  268. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +148 -147
  269. package/3D/materials/mrdl/mrdlBackplateMaterial.js +436 -409
  270. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -1
  271. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +334 -333
  272. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +851 -786
  273. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -1
  274. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +334 -333
  275. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +851 -786
  276. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -1
  277. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -5
  278. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +8 -6
  279. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -1
  280. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -5
  281. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +8 -6
  282. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -1
  283. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -5
  284. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +8 -6
  285. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -1
  286. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -5
  287. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +8 -6
  288. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -1
  289. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -5
  290. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +8 -6
  291. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -1
  292. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -5
  293. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +8 -6
  294. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -1
  295. package/3D/vector3WithInfo.d.ts +16 -16
  296. package/3D/vector3WithInfo.js +23 -23
  297. package/3D/vector3WithInfo.js.map +1 -1
  298. package/index.d.ts +2 -2
  299. package/index.js +3 -2
  300. package/index.js.map +1 -1
  301. package/legacy/legacy.d.ts +1 -1
  302. package/legacy/legacy.js +14 -13
  303. package/legacy/legacy.js.map +1 -1
  304. package/package.json +21 -328
  305. package/readme.md +2 -2
@@ -1,538 +1,540 @@
1
- import { __decorate, __extends } from "tslib";
2
- import { serializeAsColor4, serializeAsVector3, serialize, SerializationHelper } from "@babylonjs/core/Misc/decorators.js";
3
- import { Vector3, Vector4 } from "@babylonjs/core/Maths/math.vector.js";
4
- import { Texture } from "@babylonjs/core/Materials/Textures/texture.js";
5
- import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
6
- import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper.js";
7
- import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
8
- import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
9
- import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
10
- import { Color3, Color4 } from "@babylonjs/core/Maths/math.color.js";
11
- import { EffectFallbacks } from "@babylonjs/core/Materials/effectFallbacks.js";
12
- import { Constants } from "@babylonjs/core/Engines/constants.js";
13
- import "./shaders/fluentButton.fragment.js";
14
- import "./shaders/fluentButton.vertex.js";
15
- /** @hidden */
16
- var FluentButtonMaterialDefines = /** @class */ (function (_super) {
17
- __extends(FluentButtonMaterialDefines, _super);
18
- function FluentButtonMaterialDefines() {
19
- var _this = _super.call(this) || this;
20
- _this.RELATIVE_WIDTH = true;
21
- _this.ENABLE_FADE = true;
22
- _this._needNormals = true;
23
- _this._needUVs = true;
24
- _this.rebuild();
25
- return _this;
26
- }
27
- return FluentButtonMaterialDefines;
28
- }(MaterialDefines));
29
- /**
30
- * Class used to render square buttons with fluent desgin
31
- * @since 5.0.0
32
- */
33
- var FluentButtonMaterial = /** @class */ (function (_super) {
34
- __extends(FluentButtonMaterial, _super);
35
- function FluentButtonMaterial(name, scene) {
36
- var _this = _super.call(this, name, scene) || this;
37
- /**
38
- * Gets or sets the width of the glowing edge, relative to the scale of the button.
39
- * (Default is 4% of the height).
40
- */
41
- _this.edgeWidth = 0.04;
42
- /**
43
- * Gets or sets the color of the glowing edge.
44
- */
45
- _this.edgeColor = new Color4(0.592157, 0.592157, 0.592157, 1.0);
46
- /**
47
- * Gets or sets the maximum intensity of the proximity light.
48
- */
49
- _this.proximityMaxIntensity = 0.45;
50
- /**
51
- * Gets or sets the maximum distance for the proximity light (Default is 16mm).
52
- */
53
- _this.proximityFarDistance = 0.16;
54
- /**
55
- * Gets or sets the radius of the proximity light when near to the surface.
56
- */
57
- _this.proximityNearRadius = 1.5;
58
- /**
59
- * Gets or sets the anisotropy of the proximity light.
60
- */
61
- _this.proximityAnisotropy = 1;
62
- /**
63
- * Gets or sets the amount of fuzzing in the selection focus.
64
- */
65
- _this.selectionFuzz = 0.5;
66
- /**
67
- * Gets or sets an override value to display the button as selected.
68
- */
69
- _this.selected = 0;
70
- /**
71
- * Gets or sets a value to manually fade the blob size.
72
- */
73
- _this.selectionFade = 0;
74
- /**
75
- * Gets or sets a value to manually shrink the blob size as it fades (see selectionFade).
76
- */
77
- _this.selectionFadeSize = 0.3;
78
- /**
79
- * Gets or sets the distance from the button the cursor should be for the button
80
- * to appear selected (Default is 8cm).
81
- */
82
- _this.selectedDistance = 0.08;
83
- /**
84
- * Gets or sets the fall-off distance for the selection fade (Default is 8cm).
85
- */
86
- _this.selectedFadeLength = 0.08;
87
- /**
88
- * Gets or sets the intensity of the luminous blob (Ranges 0-1, default is 0.5).
89
- */
90
- _this.blobIntensity = 0.5;
91
- /**
92
- * The size of the blob when the pointer is at the blobFarDistance (Default is 5cm).
93
- */
94
- _this.blobFarSize = 0.05;
95
- /**
96
- * The distance at which the pointer is considered near. See [left|right]BlobNearSize. (Default is 0cm).
97
- */
98
- _this.blobNearDistance = 0;
99
- /**
100
- * The distance at which the pointer is considered far. See [left|right]BlobFarSize. (Default is 8cm).
101
- */
102
- _this.blobFarDistance = 0.08;
103
- /**
104
- * The distance over which the blob intensity fades from full to none (Default is 8cm).
105
- */
106
- _this.blobFadeLength = 0.08;
107
- /**
108
- * Gets or sets whether the blob corresponding to the left index finger is enabled.
109
- */
110
- _this.leftBlobEnable = true;
111
- /**
112
- * Gets or sets the size of the left blob when the left pointer is considered near. See blobNearDistance. (Default is 2.5cm).
113
- */
114
- _this.leftBlobNearSize = 0.025;
115
- /**
116
- * Gets or sets the progress of the pulse animation on the left blob (Ranges 0-1).
117
- */
118
- _this.leftBlobPulse = 0;
119
- /**
120
- * Gets or sets the fade factor on the left blob.
121
- */
122
- _this.leftBlobFade = 1;
123
- /**
124
- * Gets or sets the inner fade on the left blob;
125
- */
126
- _this.leftBlobInnerFade = 0.01;
127
- /**
128
- * Gets or sets whether the blob corresponding to the right index finger is enabled.
129
- */
130
- _this.rightBlobEnable = true;
131
- /**
132
- * Gets or sets the size of the right blob when the right pointer is considered near. See blobNearDistance. (Default is 2.5cm).
133
- */
134
- _this.rightBlobNearSize = 0.025;
135
- /**
136
- * Gets or sets the progress of the pulse animation on the right blob (Ranges 0-1).
137
- */
138
- _this.rightBlobPulse = 0;
139
- /**
140
- * Gets or sets the fade factor on the right blob.
141
- */
142
- _this.rightBlobFade = 1;
143
- /**
144
- * Gets or sets the inner fade on the right blob;
145
- */
146
- _this.rightBlobInnerFade = 0.01;
147
- /**
148
- * Gets or sets the direction of the active face before the world transform is applied.
149
- * This should almost always be set to -z.
150
- */
151
- _this.activeFaceDir = new Vector3(0, 0, -1);
152
- /**
153
- * Gets or sets the button's up direction before the world transform is applied.
154
- * This should almost always be set to +y.
155
- */
156
- _this.activeFaceUp = new Vector3(0, 1, 0);
157
- /**
158
- * Gets or sets whether the edge fade effect is enabled.
159
- */
160
- _this.enableFade = true;
161
- /**
162
- * Gets or sets a value corresponding to the width of the edge fade effect (Default 1.5).
163
- */
164
- _this.fadeWidth = 1.5;
165
- /**
166
- * Gets or sets whether the active face is smoothly interpolated.
167
- */
168
- _this.smoothActiveFace = true;
169
- /**
170
- * Gets or sets whether the frame of the fluent button model is visible.
171
- * This is usually only enabled for debugging purposes.
172
- */
173
- _this.showFrame = false;
174
- /**
175
- * Gets or sets whether the blob color texture is used for the proximity
176
- * light effect. This is usually only disabled for debugging purposes.
177
- */
178
- _this.useBlobTexture = true;
179
- /**
180
- * Gets or sets the world-space position of the tip of the left index finger.
181
- */
182
- _this.globalLeftIndexTipPosition = Vector3.Zero();
183
- /**
184
- * Gets or sets the world-space position of the tip of the right index finger.
185
- */
186
- _this.globalRightIndexTipPosition = Vector3.Zero();
187
- _this.alphaMode = Constants.ALPHA_ADD;
188
- _this.disableDepthWrite = true;
189
- _this.backFaceCulling = false;
190
- _this._blobTexture = new Texture(FluentButtonMaterial.BLOB_TEXTURE_URL, _this.getScene(), true, false, Texture.NEAREST_SAMPLINGMODE);
191
- return _this;
192
- }
193
- FluentButtonMaterial.prototype.needAlphaBlending = function () {
194
- return true;
195
- };
196
- FluentButtonMaterial.prototype.needAlphaTesting = function () {
197
- return true;
198
- };
199
- FluentButtonMaterial.prototype.getAlphaTestTexture = function () {
200
- return null;
201
- };
202
- // Methods
203
- FluentButtonMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
204
- if (this.isFrozen) {
205
- if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
206
- return true;
207
- }
208
- }
209
- if (!subMesh.materialDefines) {
210
- subMesh.materialDefines = new FluentButtonMaterialDefines();
211
- }
212
- var defines = subMesh.materialDefines;
213
- var scene = this.getScene();
214
- if (this._isReadyForSubMesh(subMesh)) {
215
- return true;
216
- }
217
- var engine = scene.getEngine();
218
- // Attribs
219
- MaterialHelper.PrepareDefinesForAttributes(mesh, defines, true, false);
220
- // Get correct effect
221
- if (defines.isDirty) {
222
- defines.markAsProcessed();
223
- scene.resetCachedMaterial();
224
- // Fallbacks
225
- var fallbacks = new EffectFallbacks();
226
- if (defines.FOG) {
227
- fallbacks.addFallback(1, "FOG");
228
- }
229
- MaterialHelper.HandleFallbacksForShadows(defines, fallbacks);
230
- defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
231
- //Attributes
232
- var attribs = [VertexBuffer.PositionKind];
233
- if (defines.NORMAL) {
234
- attribs.push(VertexBuffer.NormalKind);
235
- }
236
- if (defines.UV1) {
237
- attribs.push(VertexBuffer.UVKind);
238
- }
239
- if (defines.UV2) {
240
- attribs.push(VertexBuffer.UV2Kind);
241
- }
242
- if (defines.VERTEXCOLOR) {
243
- attribs.push(VertexBuffer.ColorKind);
244
- }
245
- if (defines.TANGENT) {
246
- attribs.push(VertexBuffer.TangentKind);
247
- }
248
- MaterialHelper.PrepareAttributesForInstances(attribs, defines);
249
- // Legacy browser patch
250
- var shaderName = "fluentButton";
251
- var join = defines.toString();
252
- var uniforms = [
253
- "world", "viewProjection", "cameraPosition",
254
- "_Edge_Width_",
255
- "_Edge_Color_",
256
- "_Relative_Width_",
257
- "_Proximity_Max_Intensity_",
258
- "_Proximity_Far_Distance_",
259
- "_Proximity_Near_Radius_",
260
- "_Proximity_Anisotropy_",
261
- "_Selection_Fuzz_",
262
- "_Selected_",
263
- "_Selection_Fade_",
264
- "_Selection_Fade_Size_",
265
- "_Selected_Distance_",
266
- "_Selected_Fade_Length_",
267
- "_Blob_Enable_",
268
- "_Blob_Position_",
269
- "_Blob_Intensity_",
270
- "_Blob_Near_Size_",
271
- "_Blob_Far_Size_",
272
- "_Blob_Near_Distance_",
273
- "_Blob_Far_Distance_",
274
- "_Blob_Fade_Length_",
275
- "_Blob_Inner_Fade_",
276
- "_Blob_Pulse_",
277
- "_Blob_Fade_",
278
- "_Blob_Texture_",
279
- "_Blob_Enable_2_",
280
- "_Blob_Position_2_",
281
- "_Blob_Near_Size_2_",
282
- "_Blob_Inner_Fade_2_",
283
- "_Blob_Pulse_2_",
284
- "_Blob_Fade_2_",
285
- "_Active_Face_Dir_",
286
- "_Active_Face_Up_",
287
- "_Enable_Fade_",
288
- "_Fade_Width_",
289
- "_Smooth_Active_Face_",
290
- "_Show_Frame_",
291
- "_Use_Blob_Texture_",
292
- "Use_Global_Left_Index",
293
- "Use_Global_Right_Index",
294
- "Global_Left_Index_Tip_Position",
295
- "Global_Right_Index_Tip_Position",
296
- "Global_Left_Thumb_Tip_Position",
297
- "Global_Right_Thumb_Tip_Position",
298
- "Global_Left_Index_Tip_Proximity",
299
- "Global_Right_Index_Tip_Proximity"
300
- ];
301
- var samplers = ["_Blob_Texture_"];
302
- var uniformBuffers = new Array();
303
- MaterialHelper.PrepareUniformsAndSamplersList({
304
- uniformsNames: uniforms,
305
- uniformBuffersNames: uniformBuffers,
306
- samplers: samplers,
307
- defines: defines,
308
- maxSimultaneousLights: 4
309
- });
310
- subMesh.setEffect(scene.getEngine().createEffect(shaderName, {
311
- attributes: attribs,
312
- uniformsNames: uniforms,
313
- uniformBuffersNames: uniformBuffers,
314
- samplers: samplers,
315
- defines: join,
316
- fallbacks: fallbacks,
317
- onCompiled: this.onCompiled,
318
- onError: this.onError,
319
- indexParameters: { maxSimultaneousLights: 4 }
320
- }, engine), defines, this._materialContext);
321
- }
322
- if (!subMesh.effect || !subMesh.effect.isReady()) {
323
- return false;
324
- }
325
- defines._renderId = scene.getRenderId();
326
- subMesh.effect._wasPreviouslyReady = true;
327
- return true;
328
- };
329
- FluentButtonMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
330
- var scene = this.getScene();
331
- var defines = subMesh.materialDefines;
332
- if (!defines) {
333
- return;
334
- }
335
- var effect = subMesh.effect;
336
- if (!effect) {
337
- return;
338
- }
339
- this._activeEffect = effect;
340
- // Matrices
341
- this.bindOnlyWorldMatrix(world);
342
- this._activeEffect.setMatrix("viewProjection", scene.getTransformMatrix());
343
- this._activeEffect.setVector3("cameraPosition", scene.activeCamera.position);
344
- // "Blob Texture"
345
- this._activeEffect.setTexture("_Blob_Texture_", this._blobTexture);
346
- // "Wireframe"
347
- this._activeEffect.setFloat("_Edge_Width_", this.edgeWidth);
348
- this._activeEffect.setColor4("_Edge_Color_", new Color3(this.edgeColor.r, this.edgeColor.g, this.edgeColor.b), this.edgeColor.a);
349
- //define _Relative_Width_ true;
350
- // "Proximity"
351
- this._activeEffect.setFloat("_Proximity_Max_Intensity_", this.proximityMaxIntensity);
352
- this._activeEffect.setFloat("_Proximity_Far_Distance_", this.proximityFarDistance);
353
- this._activeEffect.setFloat("_Proximity_Near_Radius_", this.proximityNearRadius);
354
- this._activeEffect.setFloat("_Proximity_Anisotropy_", this.proximityAnisotropy);
355
- // "Selection"
356
- this._activeEffect.setFloat("_Selection_Fuzz_", this.selectionFuzz);
357
- this._activeEffect.setFloat("_Selected_", this.selected);
358
- this._activeEffect.setFloat("_Selection_Fade_", this.selectionFade);
359
- this._activeEffect.setFloat("_Selection_Fade_Size_", this.selectionFadeSize);
360
- this._activeEffect.setFloat("_Selected_Distance_", this.selectedDistance);
361
- this._activeEffect.setFloat("_Selected_Fade_Length_", this.selectedFadeLength);
362
- // "Blob"
363
- this._activeEffect.setFloat("_Blob_Enable_", this.leftBlobEnable ? 1.0 : 0.0);
364
- this._activeEffect.setFloat("_Blob_Intensity_", this.blobIntensity);
365
- this._activeEffect.setFloat("_Blob_Near_Size_", this.leftBlobNearSize);
366
- this._activeEffect.setFloat("_Blob_Far_Size_", this.blobFarSize);
367
- this._activeEffect.setFloat("_Blob_Near_Distance_", this.blobNearDistance);
368
- this._activeEffect.setFloat("_Blob_Far_Distance_", this.blobFarDistance);
369
- this._activeEffect.setFloat("_Blob_Fade_Length_", this.blobFadeLength);
370
- this._activeEffect.setFloat("_Blob_Inner_Fade_", this.leftBlobInnerFade);
371
- this._activeEffect.setFloat("_Blob_Pulse_", this.leftBlobPulse);
372
- this._activeEffect.setFloat("_Blob_Fade_", this.leftBlobFade);
373
- // "Blob 2"
374
- this._activeEffect.setFloat("_Blob_Enable_2_", this.rightBlobEnable ? 1.0 : 0.0);
375
- this._activeEffect.setFloat("_Blob_Near_Size_2_", this.rightBlobNearSize);
376
- this._activeEffect.setFloat("_Blob_Inner_Fade_2_", this.rightBlobInnerFade);
377
- this._activeEffect.setFloat("_Blob_Pulse_2_", this.rightBlobPulse);
378
- this._activeEffect.setFloat("_Blob_Fade_2_", this.rightBlobFade);
379
- // "Active Face"
380
- this._activeEffect.setVector3("_Active_Face_Dir_", this.activeFaceDir);
381
- this._activeEffect.setVector3("_Active_Face_Up_", this.activeFaceUp);
382
- // "Hololens Edge Fade"
383
- //define _Enable_Fade_ true;
384
- this._activeEffect.setFloat("_Fade_Width_", this.fadeWidth);
385
- this._activeEffect.setFloat("_Smooth_Active_Face_", this.smoothActiveFace ? 1.0 : 0.0);
386
- // "Debug"
387
- this._activeEffect.setFloat("_Show_Frame_", this.showFrame ? 1.0 : 0.0);
388
- this._activeEffect.setFloat("_Use_Blob_Texture_", this.useBlobTexture ? 1.0 : 0.0);
389
- // Global inputs
390
- this._activeEffect.setFloat("Use_Global_Left_Index", 1.0);
391
- this._activeEffect.setFloat("Use_Global_Right_Index", 1.0);
392
- this._activeEffect.setVector4("Global_Left_Index_Tip_Position", new Vector4(this.globalLeftIndexTipPosition.x, this.globalLeftIndexTipPosition.y, this.globalLeftIndexTipPosition.z, 1.0));
393
- this._activeEffect.setVector4("Global_Right_Index_Tip_Position", new Vector4(this.globalRightIndexTipPosition.x, this.globalRightIndexTipPosition.y, this.globalRightIndexTipPosition.z, 1.0));
394
- this._afterBind(mesh, this._activeEffect);
395
- };
396
- /**
397
- * Get the list of animatables in the material.
398
- * @returns the list of animatables object used in the material
399
- */
400
- FluentButtonMaterial.prototype.getAnimatables = function () {
401
- return [];
402
- };
403
- FluentButtonMaterial.prototype.dispose = function (forceDisposeEffect) {
404
- _super.prototype.dispose.call(this, forceDisposeEffect);
405
- };
406
- FluentButtonMaterial.prototype.clone = function (name) {
407
- var _this = this;
408
- return SerializationHelper.Clone(function () { return new FluentButtonMaterial(name, _this.getScene()); }, this);
409
- };
410
- FluentButtonMaterial.prototype.serialize = function () {
411
- var serializationObject = _super.prototype.serialize.call(this);
412
- serializationObject.customType = "BABYLON.FluentButtonMaterial";
413
- return serializationObject;
414
- };
415
- FluentButtonMaterial.prototype.getClassName = function () {
416
- return "FluentButtonMaterial";
417
- };
418
- // Statics
419
- FluentButtonMaterial.Parse = function (source, scene, rootUrl) {
420
- return SerializationHelper.Parse(function () { return new FluentButtonMaterial(source.name, scene); }, source, scene, rootUrl);
421
- };
422
- /**
423
- * URL pointing to the texture used to define the coloring for the fluent blob effect.
424
- */
425
- FluentButtonMaterial.BLOB_TEXTURE_URL = "https://assets.babylonjs.com/meshes/MRTK/mrtk-fluent-button-blob.png";
426
- __decorate([
427
- serialize()
428
- ], FluentButtonMaterial.prototype, "edgeWidth", void 0);
429
- __decorate([
430
- serializeAsColor4()
431
- ], FluentButtonMaterial.prototype, "edgeColor", void 0);
432
- __decorate([
433
- serialize()
434
- ], FluentButtonMaterial.prototype, "proximityMaxIntensity", void 0);
435
- __decorate([
436
- serialize()
437
- ], FluentButtonMaterial.prototype, "proximityFarDistance", void 0);
438
- __decorate([
439
- serialize()
440
- ], FluentButtonMaterial.prototype, "proximityNearRadius", void 0);
441
- __decorate([
442
- serialize()
443
- ], FluentButtonMaterial.prototype, "proximityAnisotropy", void 0);
444
- __decorate([
445
- serialize()
446
- ], FluentButtonMaterial.prototype, "selectionFuzz", void 0);
447
- __decorate([
448
- serialize()
449
- ], FluentButtonMaterial.prototype, "selected", void 0);
450
- __decorate([
451
- serialize()
452
- ], FluentButtonMaterial.prototype, "selectionFade", void 0);
453
- __decorate([
454
- serialize()
455
- ], FluentButtonMaterial.prototype, "selectionFadeSize", void 0);
456
- __decorate([
457
- serialize()
458
- ], FluentButtonMaterial.prototype, "selectedDistance", void 0);
459
- __decorate([
460
- serialize()
461
- ], FluentButtonMaterial.prototype, "selectedFadeLength", void 0);
462
- __decorate([
463
- serialize()
464
- ], FluentButtonMaterial.prototype, "blobIntensity", void 0);
465
- __decorate([
466
- serialize()
467
- ], FluentButtonMaterial.prototype, "blobFarSize", void 0);
468
- __decorate([
469
- serialize()
470
- ], FluentButtonMaterial.prototype, "blobNearDistance", void 0);
471
- __decorate([
472
- serialize()
473
- ], FluentButtonMaterial.prototype, "blobFarDistance", void 0);
474
- __decorate([
475
- serialize()
476
- ], FluentButtonMaterial.prototype, "blobFadeLength", void 0);
477
- __decorate([
478
- serialize()
479
- ], FluentButtonMaterial.prototype, "leftBlobEnable", void 0);
480
- __decorate([
481
- serialize()
482
- ], FluentButtonMaterial.prototype, "leftBlobNearSize", void 0);
483
- __decorate([
484
- serialize()
485
- ], FluentButtonMaterial.prototype, "leftBlobPulse", void 0);
486
- __decorate([
487
- serialize()
488
- ], FluentButtonMaterial.prototype, "leftBlobFade", void 0);
489
- __decorate([
490
- serialize()
491
- ], FluentButtonMaterial.prototype, "leftBlobInnerFade", void 0);
492
- __decorate([
493
- serialize()
494
- ], FluentButtonMaterial.prototype, "rightBlobEnable", void 0);
495
- __decorate([
496
- serialize()
497
- ], FluentButtonMaterial.prototype, "rightBlobNearSize", void 0);
498
- __decorate([
499
- serialize()
500
- ], FluentButtonMaterial.prototype, "rightBlobPulse", void 0);
501
- __decorate([
502
- serialize()
503
- ], FluentButtonMaterial.prototype, "rightBlobFade", void 0);
504
- __decorate([
505
- serialize()
506
- ], FluentButtonMaterial.prototype, "rightBlobInnerFade", void 0);
507
- __decorate([
508
- serializeAsVector3()
509
- ], FluentButtonMaterial.prototype, "activeFaceDir", void 0);
510
- __decorate([
511
- serializeAsVector3()
512
- ], FluentButtonMaterial.prototype, "activeFaceUp", void 0);
513
- __decorate([
514
- serialize()
515
- ], FluentButtonMaterial.prototype, "enableFade", void 0);
516
- __decorate([
517
- serialize()
518
- ], FluentButtonMaterial.prototype, "fadeWidth", void 0);
519
- __decorate([
520
- serialize()
521
- ], FluentButtonMaterial.prototype, "smoothActiveFace", void 0);
522
- __decorate([
523
- serialize()
524
- ], FluentButtonMaterial.prototype, "showFrame", void 0);
525
- __decorate([
526
- serialize()
527
- ], FluentButtonMaterial.prototype, "useBlobTexture", void 0);
528
- __decorate([
529
- serializeAsVector3()
530
- ], FluentButtonMaterial.prototype, "globalLeftIndexTipPosition", void 0);
531
- __decorate([
532
- serializeAsVector3()
533
- ], FluentButtonMaterial.prototype, "globalRightIndexTipPosition", void 0);
534
- return FluentButtonMaterial;
535
- }(PushMaterial));
536
- export { FluentButtonMaterial };
537
- RegisterClass("BABYLON.GUI.FluentButtonMaterial", FluentButtonMaterial);
1
+ import { __decorate, __extends } from "tslib";
2
+ import { serializeAsColor4, serializeAsVector3, serialize, SerializationHelper } from "@babylonjs/core/Misc/decorators.js";
3
+ import { Vector3, Vector4 } from "@babylonjs/core/Maths/math.vector.js";
4
+ import { Texture } from "@babylonjs/core/Materials/Textures/texture.js";
5
+ import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
6
+ import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper.js";
7
+ import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
8
+ import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
9
+ import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
10
+ import { Color3, Color4 } from "@babylonjs/core/Maths/math.color.js";
11
+ import { EffectFallbacks } from "@babylonjs/core/Materials/effectFallbacks.js";
12
+ import { Constants } from "@babylonjs/core/Engines/constants.js";
13
+ import "./shaders/fluentButton.fragment";
14
+ import "./shaders/fluentButton.vertex";
15
+ /** @hidden */
16
+ var FluentButtonMaterialDefines = /** @class */ (function (_super) {
17
+ __extends(FluentButtonMaterialDefines, _super);
18
+ function FluentButtonMaterialDefines() {
19
+ var _this = _super.call(this) || this;
20
+ _this.RELATIVE_WIDTH = true;
21
+ _this.ENABLE_FADE = true;
22
+ _this._needNormals = true;
23
+ _this._needUVs = true;
24
+ _this.rebuild();
25
+ return _this;
26
+ }
27
+ return FluentButtonMaterialDefines;
28
+ }(MaterialDefines));
29
+ /**
30
+ * Class used to render square buttons with fluent design
31
+ * @since 5.0.0
32
+ */
33
+ var FluentButtonMaterial = /** @class */ (function (_super) {
34
+ __extends(FluentButtonMaterial, _super);
35
+ function FluentButtonMaterial(name, scene) {
36
+ var _this = _super.call(this, name, scene) || this;
37
+ /**
38
+ * Gets or sets the width of the glowing edge, relative to the scale of the button.
39
+ * (Default is 4% of the height).
40
+ */
41
+ _this.edgeWidth = 0.04;
42
+ /**
43
+ * Gets or sets the color of the glowing edge.
44
+ */
45
+ _this.edgeColor = new Color4(0.592157, 0.592157, 0.592157, 1.0);
46
+ /**
47
+ * Gets or sets the maximum intensity of the proximity light.
48
+ */
49
+ _this.proximityMaxIntensity = 0.45;
50
+ /**
51
+ * Gets or sets the maximum distance for the proximity light (Default is 16mm).
52
+ */
53
+ _this.proximityFarDistance = 0.16;
54
+ /**
55
+ * Gets or sets the radius of the proximity light when near to the surface.
56
+ */
57
+ _this.proximityNearRadius = 1.5;
58
+ /**
59
+ * Gets or sets the anisotropy of the proximity light.
60
+ */
61
+ _this.proximityAnisotropy = 1;
62
+ /**
63
+ * Gets or sets the amount of fuzzing in the selection focus.
64
+ */
65
+ _this.selectionFuzz = 0.5;
66
+ /**
67
+ * Gets or sets an override value to display the button as selected.
68
+ */
69
+ _this.selected = 0;
70
+ /**
71
+ * Gets or sets a value to manually fade the blob size.
72
+ */
73
+ _this.selectionFade = 0;
74
+ /**
75
+ * Gets or sets a value to manually shrink the blob size as it fades (see selectionFade).
76
+ */
77
+ _this.selectionFadeSize = 0.3;
78
+ /**
79
+ * Gets or sets the distance from the button the cursor should be for the button
80
+ * to appear selected (Default is 8cm).
81
+ */
82
+ _this.selectedDistance = 0.08;
83
+ /**
84
+ * Gets or sets the fall-off distance for the selection fade (Default is 8cm).
85
+ */
86
+ _this.selectedFadeLength = 0.08;
87
+ /**
88
+ * Gets or sets the intensity of the luminous blob (Ranges 0-1, default is 0.5).
89
+ */
90
+ _this.blobIntensity = 0.5;
91
+ /**
92
+ * The size of the blob when the pointer is at the blobFarDistance (Default is 5cm).
93
+ */
94
+ _this.blobFarSize = 0.05;
95
+ /**
96
+ * The distance at which the pointer is considered near. See [left|right]BlobNearSize. (Default is 0cm).
97
+ */
98
+ _this.blobNearDistance = 0;
99
+ /**
100
+ * The distance at which the pointer is considered far. See [left|right]BlobFarSize. (Default is 8cm).
101
+ */
102
+ _this.blobFarDistance = 0.08;
103
+ /**
104
+ * The distance over which the blob intensity fades from full to none (Default is 8cm).
105
+ */
106
+ _this.blobFadeLength = 0.08;
107
+ /**
108
+ * Gets or sets whether the blob corresponding to the left index finger is enabled.
109
+ */
110
+ _this.leftBlobEnable = true;
111
+ /**
112
+ * Gets or sets the size of the left blob when the left pointer is considered near. See blobNearDistance. (Default is 2.5cm).
113
+ */
114
+ _this.leftBlobNearSize = 0.025;
115
+ /**
116
+ * Gets or sets the progress of the pulse animation on the left blob (Ranges 0-1).
117
+ */
118
+ _this.leftBlobPulse = 0;
119
+ /**
120
+ * Gets or sets the fade factor on the left blob.
121
+ */
122
+ _this.leftBlobFade = 1;
123
+ /**
124
+ * Gets or sets the inner fade on the left blob;
125
+ */
126
+ _this.leftBlobInnerFade = 0.01;
127
+ /**
128
+ * Gets or sets whether the blob corresponding to the right index finger is enabled.
129
+ */
130
+ _this.rightBlobEnable = true;
131
+ /**
132
+ * Gets or sets the size of the right blob when the right pointer is considered near. See blobNearDistance. (Default is 2.5cm).
133
+ */
134
+ _this.rightBlobNearSize = 0.025;
135
+ /**
136
+ * Gets or sets the progress of the pulse animation on the right blob (Ranges 0-1).
137
+ */
138
+ _this.rightBlobPulse = 0;
139
+ /**
140
+ * Gets or sets the fade factor on the right blob.
141
+ */
142
+ _this.rightBlobFade = 1;
143
+ /**
144
+ * Gets or sets the inner fade on the right blob;
145
+ */
146
+ _this.rightBlobInnerFade = 0.01;
147
+ /**
148
+ * Gets or sets the direction of the active face before the world transform is applied.
149
+ * This should almost always be set to -z.
150
+ */
151
+ _this.activeFaceDir = new Vector3(0, 0, -1);
152
+ /**
153
+ * Gets or sets the button's up direction before the world transform is applied.
154
+ * This should almost always be set to +y.
155
+ */
156
+ _this.activeFaceUp = new Vector3(0, 1, 0);
157
+ /**
158
+ * Gets or sets whether the edge fade effect is enabled.
159
+ */
160
+ _this.enableFade = true;
161
+ /**
162
+ * Gets or sets a value corresponding to the width of the edge fade effect (Default 1.5).
163
+ */
164
+ _this.fadeWidth = 1.5;
165
+ /**
166
+ * Gets or sets whether the active face is smoothly interpolated.
167
+ */
168
+ _this.smoothActiveFace = true;
169
+ /**
170
+ * Gets or sets whether the frame of the fluent button model is visible.
171
+ * This is usually only enabled for debugging purposes.
172
+ */
173
+ _this.showFrame = false;
174
+ /**
175
+ * Gets or sets whether the blob color texture is used for the proximity
176
+ * light effect. This is usually only disabled for debugging purposes.
177
+ */
178
+ _this.useBlobTexture = true;
179
+ /**
180
+ * Gets or sets the world-space position of the tip of the left index finger.
181
+ */
182
+ _this.globalLeftIndexTipPosition = Vector3.Zero();
183
+ /**
184
+ * Gets or sets the world-space position of the tip of the right index finger.
185
+ */
186
+ _this.globalRightIndexTipPosition = Vector3.Zero();
187
+ _this.alphaMode = Constants.ALPHA_ADD;
188
+ _this.disableDepthWrite = true;
189
+ _this.backFaceCulling = false;
190
+ _this._blobTexture = new Texture(FluentButtonMaterial.BLOB_TEXTURE_URL, _this.getScene(), true, false, Texture.NEAREST_SAMPLINGMODE);
191
+ return _this;
192
+ }
193
+ FluentButtonMaterial.prototype.needAlphaBlending = function () {
194
+ return true;
195
+ };
196
+ FluentButtonMaterial.prototype.needAlphaTesting = function () {
197
+ return true;
198
+ };
199
+ FluentButtonMaterial.prototype.getAlphaTestTexture = function () {
200
+ return null;
201
+ };
202
+ // Methods
203
+ FluentButtonMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh) {
204
+ if (this.isFrozen) {
205
+ if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
206
+ return true;
207
+ }
208
+ }
209
+ if (!subMesh.materialDefines) {
210
+ subMesh.materialDefines = new FluentButtonMaterialDefines();
211
+ }
212
+ var defines = subMesh.materialDefines;
213
+ var scene = this.getScene();
214
+ if (this._isReadyForSubMesh(subMesh)) {
215
+ return true;
216
+ }
217
+ var engine = scene.getEngine();
218
+ // Attribs
219
+ MaterialHelper.PrepareDefinesForAttributes(mesh, defines, true, false);
220
+ // Get correct effect
221
+ if (defines.isDirty) {
222
+ defines.markAsProcessed();
223
+ scene.resetCachedMaterial();
224
+ // Fallbacks
225
+ var fallbacks = new EffectFallbacks();
226
+ if (defines.FOG) {
227
+ fallbacks.addFallback(1, "FOG");
228
+ }
229
+ MaterialHelper.HandleFallbacksForShadows(defines, fallbacks);
230
+ defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
231
+ //Attributes
232
+ var attribs = [VertexBuffer.PositionKind];
233
+ if (defines.NORMAL) {
234
+ attribs.push(VertexBuffer.NormalKind);
235
+ }
236
+ if (defines.UV1) {
237
+ attribs.push(VertexBuffer.UVKind);
238
+ }
239
+ if (defines.UV2) {
240
+ attribs.push(VertexBuffer.UV2Kind);
241
+ }
242
+ if (defines.VERTEXCOLOR) {
243
+ attribs.push(VertexBuffer.ColorKind);
244
+ }
245
+ if (defines.TANGENT) {
246
+ attribs.push(VertexBuffer.TangentKind);
247
+ }
248
+ MaterialHelper.PrepareAttributesForInstances(attribs, defines);
249
+ // Legacy browser patch
250
+ var shaderName = "fluentButton";
251
+ var join = defines.toString();
252
+ var uniforms = [
253
+ "world",
254
+ "viewProjection",
255
+ "cameraPosition",
256
+ "_Edge_Width_",
257
+ "_Edge_Color_",
258
+ "_Relative_Width_",
259
+ "_Proximity_Max_Intensity_",
260
+ "_Proximity_Far_Distance_",
261
+ "_Proximity_Near_Radius_",
262
+ "_Proximity_Anisotropy_",
263
+ "_Selection_Fuzz_",
264
+ "_Selected_",
265
+ "_Selection_Fade_",
266
+ "_Selection_Fade_Size_",
267
+ "_Selected_Distance_",
268
+ "_Selected_Fade_Length_",
269
+ "_Blob_Enable_",
270
+ "_Blob_Position_",
271
+ "_Blob_Intensity_",
272
+ "_Blob_Near_Size_",
273
+ "_Blob_Far_Size_",
274
+ "_Blob_Near_Distance_",
275
+ "_Blob_Far_Distance_",
276
+ "_Blob_Fade_Length_",
277
+ "_Blob_Inner_Fade_",
278
+ "_Blob_Pulse_",
279
+ "_Blob_Fade_",
280
+ "_Blob_Texture_",
281
+ "_Blob_Enable_2_",
282
+ "_Blob_Position_2_",
283
+ "_Blob_Near_Size_2_",
284
+ "_Blob_Inner_Fade_2_",
285
+ "_Blob_Pulse_2_",
286
+ "_Blob_Fade_2_",
287
+ "_Active_Face_Dir_",
288
+ "_Active_Face_Up_",
289
+ "_Enable_Fade_",
290
+ "_Fade_Width_",
291
+ "_Smooth_Active_Face_",
292
+ "_Show_Frame_",
293
+ "_Use_Blob_Texture_",
294
+ "Use_Global_Left_Index",
295
+ "Use_Global_Right_Index",
296
+ "Global_Left_Index_Tip_Position",
297
+ "Global_Right_Index_Tip_Position",
298
+ "Global_Left_Thumb_Tip_Position",
299
+ "Global_Right_Thumb_Tip_Position",
300
+ "Global_Left_Index_Tip_Proximity",
301
+ "Global_Right_Index_Tip_Proximity",
302
+ ];
303
+ var samplers = ["_Blob_Texture_"];
304
+ var uniformBuffers = new Array();
305
+ MaterialHelper.PrepareUniformsAndSamplersList({
306
+ uniformsNames: uniforms,
307
+ uniformBuffersNames: uniformBuffers,
308
+ samplers: samplers,
309
+ defines: defines,
310
+ maxSimultaneousLights: 4,
311
+ });
312
+ subMesh.setEffect(scene.getEngine().createEffect(shaderName, {
313
+ attributes: attribs,
314
+ uniformsNames: uniforms,
315
+ uniformBuffersNames: uniformBuffers,
316
+ samplers: samplers,
317
+ defines: join,
318
+ fallbacks: fallbacks,
319
+ onCompiled: this.onCompiled,
320
+ onError: this.onError,
321
+ indexParameters: { maxSimultaneousLights: 4 },
322
+ }, engine), defines, this._materialContext);
323
+ }
324
+ if (!subMesh.effect || !subMesh.effect.isReady()) {
325
+ return false;
326
+ }
327
+ defines._renderId = scene.getRenderId();
328
+ subMesh.effect._wasPreviouslyReady = true;
329
+ return true;
330
+ };
331
+ FluentButtonMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
332
+ var scene = this.getScene();
333
+ var defines = subMesh.materialDefines;
334
+ if (!defines) {
335
+ return;
336
+ }
337
+ var effect = subMesh.effect;
338
+ if (!effect) {
339
+ return;
340
+ }
341
+ this._activeEffect = effect;
342
+ // Matrices
343
+ this.bindOnlyWorldMatrix(world);
344
+ this._activeEffect.setMatrix("viewProjection", scene.getTransformMatrix());
345
+ this._activeEffect.setVector3("cameraPosition", scene.activeCamera.position);
346
+ // "Blob Texture"
347
+ this._activeEffect.setTexture("_Blob_Texture_", this._blobTexture);
348
+ // "Wireframe"
349
+ this._activeEffect.setFloat("_Edge_Width_", this.edgeWidth);
350
+ this._activeEffect.setColor4("_Edge_Color_", new Color3(this.edgeColor.r, this.edgeColor.g, this.edgeColor.b), this.edgeColor.a);
351
+ //define _Relative_Width_ true;
352
+ // "Proximity"
353
+ this._activeEffect.setFloat("_Proximity_Max_Intensity_", this.proximityMaxIntensity);
354
+ this._activeEffect.setFloat("_Proximity_Far_Distance_", this.proximityFarDistance);
355
+ this._activeEffect.setFloat("_Proximity_Near_Radius_", this.proximityNearRadius);
356
+ this._activeEffect.setFloat("_Proximity_Anisotropy_", this.proximityAnisotropy);
357
+ // "Selection"
358
+ this._activeEffect.setFloat("_Selection_Fuzz_", this.selectionFuzz);
359
+ this._activeEffect.setFloat("_Selected_", this.selected);
360
+ this._activeEffect.setFloat("_Selection_Fade_", this.selectionFade);
361
+ this._activeEffect.setFloat("_Selection_Fade_Size_", this.selectionFadeSize);
362
+ this._activeEffect.setFloat("_Selected_Distance_", this.selectedDistance);
363
+ this._activeEffect.setFloat("_Selected_Fade_Length_", this.selectedFadeLength);
364
+ // "Blob"
365
+ this._activeEffect.setFloat("_Blob_Enable_", this.leftBlobEnable ? 1.0 : 0.0);
366
+ this._activeEffect.setFloat("_Blob_Intensity_", this.blobIntensity);
367
+ this._activeEffect.setFloat("_Blob_Near_Size_", this.leftBlobNearSize);
368
+ this._activeEffect.setFloat("_Blob_Far_Size_", this.blobFarSize);
369
+ this._activeEffect.setFloat("_Blob_Near_Distance_", this.blobNearDistance);
370
+ this._activeEffect.setFloat("_Blob_Far_Distance_", this.blobFarDistance);
371
+ this._activeEffect.setFloat("_Blob_Fade_Length_", this.blobFadeLength);
372
+ this._activeEffect.setFloat("_Blob_Inner_Fade_", this.leftBlobInnerFade);
373
+ this._activeEffect.setFloat("_Blob_Pulse_", this.leftBlobPulse);
374
+ this._activeEffect.setFloat("_Blob_Fade_", this.leftBlobFade);
375
+ // "Blob 2"
376
+ this._activeEffect.setFloat("_Blob_Enable_2_", this.rightBlobEnable ? 1.0 : 0.0);
377
+ this._activeEffect.setFloat("_Blob_Near_Size_2_", this.rightBlobNearSize);
378
+ this._activeEffect.setFloat("_Blob_Inner_Fade_2_", this.rightBlobInnerFade);
379
+ this._activeEffect.setFloat("_Blob_Pulse_2_", this.rightBlobPulse);
380
+ this._activeEffect.setFloat("_Blob_Fade_2_", this.rightBlobFade);
381
+ // "Active Face"
382
+ this._activeEffect.setVector3("_Active_Face_Dir_", this.activeFaceDir);
383
+ this._activeEffect.setVector3("_Active_Face_Up_", this.activeFaceUp);
384
+ // "Hololens Edge Fade"
385
+ //define _Enable_Fade_ true;
386
+ this._activeEffect.setFloat("_Fade_Width_", this.fadeWidth);
387
+ this._activeEffect.setFloat("_Smooth_Active_Face_", this.smoothActiveFace ? 1.0 : 0.0);
388
+ // "Debug"
389
+ this._activeEffect.setFloat("_Show_Frame_", this.showFrame ? 1.0 : 0.0);
390
+ this._activeEffect.setFloat("_Use_Blob_Texture_", this.useBlobTexture ? 1.0 : 0.0);
391
+ // Global inputs
392
+ this._activeEffect.setFloat("Use_Global_Left_Index", 1.0);
393
+ this._activeEffect.setFloat("Use_Global_Right_Index", 1.0);
394
+ this._activeEffect.setVector4("Global_Left_Index_Tip_Position", new Vector4(this.globalLeftIndexTipPosition.x, this.globalLeftIndexTipPosition.y, this.globalLeftIndexTipPosition.z, 1.0));
395
+ this._activeEffect.setVector4("Global_Right_Index_Tip_Position", new Vector4(this.globalRightIndexTipPosition.x, this.globalRightIndexTipPosition.y, this.globalRightIndexTipPosition.z, 1.0));
396
+ this._afterBind(mesh, this._activeEffect);
397
+ };
398
+ /**
399
+ * Get the list of animatables in the material.
400
+ * @returns the list of animatables object used in the material
401
+ */
402
+ FluentButtonMaterial.prototype.getAnimatables = function () {
403
+ return [];
404
+ };
405
+ FluentButtonMaterial.prototype.dispose = function (forceDisposeEffect) {
406
+ _super.prototype.dispose.call(this, forceDisposeEffect);
407
+ };
408
+ FluentButtonMaterial.prototype.clone = function (name) {
409
+ var _this = this;
410
+ return SerializationHelper.Clone(function () { return new FluentButtonMaterial(name, _this.getScene()); }, this);
411
+ };
412
+ FluentButtonMaterial.prototype.serialize = function () {
413
+ var serializationObject = _super.prototype.serialize.call(this);
414
+ serializationObject.customType = "BABYLON.FluentButtonMaterial";
415
+ return serializationObject;
416
+ };
417
+ FluentButtonMaterial.prototype.getClassName = function () {
418
+ return "FluentButtonMaterial";
419
+ };
420
+ // Statics
421
+ FluentButtonMaterial.Parse = function (source, scene, rootUrl) {
422
+ return SerializationHelper.Parse(function () { return new FluentButtonMaterial(source.name, scene); }, source, scene, rootUrl);
423
+ };
424
+ /**
425
+ * URL pointing to the texture used to define the coloring for the fluent blob effect.
426
+ */
427
+ FluentButtonMaterial.BLOB_TEXTURE_URL = "https://assets.babylonjs.com/meshes/MRTK/mrtk-fluent-button-blob.png";
428
+ __decorate([
429
+ serialize()
430
+ ], FluentButtonMaterial.prototype, "edgeWidth", void 0);
431
+ __decorate([
432
+ serializeAsColor4()
433
+ ], FluentButtonMaterial.prototype, "edgeColor", void 0);
434
+ __decorate([
435
+ serialize()
436
+ ], FluentButtonMaterial.prototype, "proximityMaxIntensity", void 0);
437
+ __decorate([
438
+ serialize()
439
+ ], FluentButtonMaterial.prototype, "proximityFarDistance", void 0);
440
+ __decorate([
441
+ serialize()
442
+ ], FluentButtonMaterial.prototype, "proximityNearRadius", void 0);
443
+ __decorate([
444
+ serialize()
445
+ ], FluentButtonMaterial.prototype, "proximityAnisotropy", void 0);
446
+ __decorate([
447
+ serialize()
448
+ ], FluentButtonMaterial.prototype, "selectionFuzz", void 0);
449
+ __decorate([
450
+ serialize()
451
+ ], FluentButtonMaterial.prototype, "selected", void 0);
452
+ __decorate([
453
+ serialize()
454
+ ], FluentButtonMaterial.prototype, "selectionFade", void 0);
455
+ __decorate([
456
+ serialize()
457
+ ], FluentButtonMaterial.prototype, "selectionFadeSize", void 0);
458
+ __decorate([
459
+ serialize()
460
+ ], FluentButtonMaterial.prototype, "selectedDistance", void 0);
461
+ __decorate([
462
+ serialize()
463
+ ], FluentButtonMaterial.prototype, "selectedFadeLength", void 0);
464
+ __decorate([
465
+ serialize()
466
+ ], FluentButtonMaterial.prototype, "blobIntensity", void 0);
467
+ __decorate([
468
+ serialize()
469
+ ], FluentButtonMaterial.prototype, "blobFarSize", void 0);
470
+ __decorate([
471
+ serialize()
472
+ ], FluentButtonMaterial.prototype, "blobNearDistance", void 0);
473
+ __decorate([
474
+ serialize()
475
+ ], FluentButtonMaterial.prototype, "blobFarDistance", void 0);
476
+ __decorate([
477
+ serialize()
478
+ ], FluentButtonMaterial.prototype, "blobFadeLength", void 0);
479
+ __decorate([
480
+ serialize()
481
+ ], FluentButtonMaterial.prototype, "leftBlobEnable", void 0);
482
+ __decorate([
483
+ serialize()
484
+ ], FluentButtonMaterial.prototype, "leftBlobNearSize", void 0);
485
+ __decorate([
486
+ serialize()
487
+ ], FluentButtonMaterial.prototype, "leftBlobPulse", void 0);
488
+ __decorate([
489
+ serialize()
490
+ ], FluentButtonMaterial.prototype, "leftBlobFade", void 0);
491
+ __decorate([
492
+ serialize()
493
+ ], FluentButtonMaterial.prototype, "leftBlobInnerFade", void 0);
494
+ __decorate([
495
+ serialize()
496
+ ], FluentButtonMaterial.prototype, "rightBlobEnable", void 0);
497
+ __decorate([
498
+ serialize()
499
+ ], FluentButtonMaterial.prototype, "rightBlobNearSize", void 0);
500
+ __decorate([
501
+ serialize()
502
+ ], FluentButtonMaterial.prototype, "rightBlobPulse", void 0);
503
+ __decorate([
504
+ serialize()
505
+ ], FluentButtonMaterial.prototype, "rightBlobFade", void 0);
506
+ __decorate([
507
+ serialize()
508
+ ], FluentButtonMaterial.prototype, "rightBlobInnerFade", void 0);
509
+ __decorate([
510
+ serializeAsVector3()
511
+ ], FluentButtonMaterial.prototype, "activeFaceDir", void 0);
512
+ __decorate([
513
+ serializeAsVector3()
514
+ ], FluentButtonMaterial.prototype, "activeFaceUp", void 0);
515
+ __decorate([
516
+ serialize()
517
+ ], FluentButtonMaterial.prototype, "enableFade", void 0);
518
+ __decorate([
519
+ serialize()
520
+ ], FluentButtonMaterial.prototype, "fadeWidth", void 0);
521
+ __decorate([
522
+ serialize()
523
+ ], FluentButtonMaterial.prototype, "smoothActiveFace", void 0);
524
+ __decorate([
525
+ serialize()
526
+ ], FluentButtonMaterial.prototype, "showFrame", void 0);
527
+ __decorate([
528
+ serialize()
529
+ ], FluentButtonMaterial.prototype, "useBlobTexture", void 0);
530
+ __decorate([
531
+ serializeAsVector3()
532
+ ], FluentButtonMaterial.prototype, "globalLeftIndexTipPosition", void 0);
533
+ __decorate([
534
+ serializeAsVector3()
535
+ ], FluentButtonMaterial.prototype, "globalRightIndexTipPosition", void 0);
536
+ return FluentButtonMaterial;
537
+ }(PushMaterial));
538
+ export { FluentButtonMaterial };
539
+ RegisterClass("BABYLON.GUI.FluentButtonMaterial", FluentButtonMaterial);
538
540
  //# sourceMappingURL=fluentButtonMaterial.js.map