@babylonjs/gui 9.12.1 → 9.14.0

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 (283) hide show
  1. package/2D/FrameGraph/pure.d.ts +2 -0
  2. package/2D/FrameGraph/pure.js +3 -0
  3. package/2D/FrameGraph/pure.js.map +1 -0
  4. package/2D/FrameGraph/renderGraphGUIBlock.d.ts +3 -41
  5. package/2D/FrameGraph/renderGraphGUIBlock.js +5 -64
  6. package/2D/FrameGraph/renderGraphGUIBlock.js.map +1 -1
  7. package/2D/FrameGraph/renderGraphGUIBlock.pure.d.ts +48 -0
  8. package/2D/FrameGraph/renderGraphGUIBlock.pure.js +78 -0
  9. package/2D/FrameGraph/renderGraphGUIBlock.pure.js.map +1 -0
  10. package/2D/controls/button.d.ts +3 -107
  11. package/2D/controls/button.js +5 -243
  12. package/2D/controls/button.js.map +1 -1
  13. package/2D/controls/button.pure.d.ts +114 -0
  14. package/2D/controls/button.pure.js +257 -0
  15. package/2D/controls/button.pure.js.map +1 -0
  16. package/2D/controls/checkbox.d.ts +3 -51
  17. package/2D/controls/checkbox.js +5 -161
  18. package/2D/controls/checkbox.js.map +1 -1
  19. package/2D/controls/checkbox.pure.d.ts +58 -0
  20. package/2D/controls/checkbox.pure.js +175 -0
  21. package/2D/controls/checkbox.pure.js.map +1 -0
  22. package/2D/controls/colorpicker.d.ts +5 -101
  23. package/2D/controls/colorpicker.js +7 -1394
  24. package/2D/controls/colorpicker.js.map +1 -1
  25. package/2D/controls/colorpicker.pure.d.ts +106 -0
  26. package/2D/controls/colorpicker.pure.js +1406 -0
  27. package/2D/controls/colorpicker.pure.js.map +1 -0
  28. package/2D/controls/container.d.ts +3 -177
  29. package/2D/controls/container.js +5 -615
  30. package/2D/controls/container.js.map +1 -1
  31. package/2D/controls/container.pure.d.ts +184 -0
  32. package/2D/controls/container.pure.js +629 -0
  33. package/2D/controls/container.pure.js.map +1 -0
  34. package/2D/controls/control.d.ts +3 -944
  35. package/2D/controls/control.js +5 -2457
  36. package/2D/controls/control.js.map +1 -1
  37. package/2D/controls/control.pure.d.ts +951 -0
  38. package/2D/controls/control.pure.js +2471 -0
  39. package/2D/controls/control.pure.js.map +1 -0
  40. package/2D/controls/displayGrid.d.ts +5 -53
  41. package/2D/controls/displayGrid.js +7 -201
  42. package/2D/controls/displayGrid.js.map +1 -1
  43. package/2D/controls/displayGrid.pure.d.ts +58 -0
  44. package/2D/controls/displayGrid.pure.js +213 -0
  45. package/2D/controls/displayGrid.pure.js.map +1 -0
  46. package/2D/controls/ellipse.d.ts +5 -25
  47. package/2D/controls/ellipse.js +7 -92
  48. package/2D/controls/ellipse.js.map +1 -1
  49. package/2D/controls/ellipse.pure.d.ts +30 -0
  50. package/2D/controls/ellipse.pure.js +104 -0
  51. package/2D/controls/ellipse.pure.js.map +1 -0
  52. package/2D/controls/focusableButton.d.ts +3 -15
  53. package/2D/controls/focusableButton.js +5 -22
  54. package/2D/controls/focusableButton.js.map +1 -1
  55. package/2D/controls/focusableButton.pure.d.ts +22 -0
  56. package/2D/controls/focusableButton.pure.js +36 -0
  57. package/2D/controls/focusableButton.pure.js.map +1 -0
  58. package/2D/controls/gradient/LinearGradient.d.ts +3 -43
  59. package/2D/controls/gradient/LinearGradient.js +5 -70
  60. package/2D/controls/gradient/LinearGradient.js.map +1 -1
  61. package/2D/controls/gradient/LinearGradient.pure.d.ts +50 -0
  62. package/2D/controls/gradient/LinearGradient.pure.js +84 -0
  63. package/2D/controls/gradient/LinearGradient.pure.js.map +1 -0
  64. package/2D/controls/gradient/RadialGradient.d.ts +3 -51
  65. package/2D/controls/gradient/RadialGradient.js +5 -86
  66. package/2D/controls/gradient/RadialGradient.js.map +1 -1
  67. package/2D/controls/gradient/RadialGradient.pure.d.ts +58 -0
  68. package/2D/controls/gradient/RadialGradient.pure.js +100 -0
  69. package/2D/controls/gradient/RadialGradient.pure.js.map +1 -0
  70. package/2D/controls/gradient/pure.d.ts +3 -0
  71. package/2D/controls/gradient/pure.js +4 -0
  72. package/2D/controls/gradient/pure.js.map +1 -0
  73. package/2D/controls/grid.d.ts +3 -149
  74. package/2D/controls/grid.js +5 -525
  75. package/2D/controls/grid.js.map +1 -1
  76. package/2D/controls/grid.pure.d.ts +156 -0
  77. package/2D/controls/grid.pure.js +539 -0
  78. package/2D/controls/grid.pure.js.map +1 -0
  79. package/2D/controls/image.d.ts +3 -226
  80. package/2D/controls/image.js +5 -913
  81. package/2D/controls/image.js.map +1 -1
  82. package/2D/controls/image.pure.d.ts +233 -0
  83. package/2D/controls/image.pure.js +927 -0
  84. package/2D/controls/image.pure.js.map +1 -0
  85. package/2D/controls/inputPassword.d.ts +3 -7
  86. package/2D/controls/inputPassword.js +5 -19
  87. package/2D/controls/inputPassword.js.map +1 -1
  88. package/2D/controls/inputPassword.pure.d.ts +14 -0
  89. package/2D/controls/inputPassword.pure.js +33 -0
  90. package/2D/controls/inputPassword.pure.js.map +1 -0
  91. package/2D/controls/inputText.d.ts +3 -202
  92. package/2D/controls/inputText.js +5 -1050
  93. package/2D/controls/inputText.js.map +1 -1
  94. package/2D/controls/inputText.pure.d.ts +209 -0
  95. package/2D/controls/inputText.pure.js +1064 -0
  96. package/2D/controls/inputText.pure.js.map +1 -0
  97. package/2D/controls/inputTextArea.d.ts +3 -140
  98. package/2D/controls/inputTextArea.js +5 -1023
  99. package/2D/controls/inputTextArea.js.map +1 -1
  100. package/2D/controls/inputTextArea.pure.d.ts +147 -0
  101. package/2D/controls/inputTextArea.pure.js +1037 -0
  102. package/2D/controls/inputTextArea.pure.js.map +1 -0
  103. package/2D/controls/line.d.ts +5 -74
  104. package/2D/controls/line.js +7 -234
  105. package/2D/controls/line.js.map +1 -1
  106. package/2D/controls/line.pure.d.ts +79 -0
  107. package/2D/controls/line.pure.js +246 -0
  108. package/2D/controls/line.pure.js.map +1 -0
  109. package/2D/controls/multiLine.d.ts +3 -73
  110. package/2D/controls/multiLine.js +5 -234
  111. package/2D/controls/multiLine.js.map +1 -1
  112. package/2D/controls/multiLine.pure.d.ts +80 -0
  113. package/2D/controls/multiLine.pure.js +248 -0
  114. package/2D/controls/multiLine.pure.js.map +1 -0
  115. package/2D/controls/pure.d.ts +38 -0
  116. package/2D/controls/pure.js +39 -0
  117. package/2D/controls/pure.js.map +1 -0
  118. package/2D/controls/radioButton.d.ts +3 -47
  119. package/2D/controls/radioButton.js +5 -182
  120. package/2D/controls/radioButton.js.map +1 -1
  121. package/2D/controls/radioButton.pure.d.ts +54 -0
  122. package/2D/controls/radioButton.pure.js +196 -0
  123. package/2D/controls/radioButton.pure.js.map +1 -0
  124. package/2D/controls/rectangle.d.ts +5 -43
  125. package/2D/controls/rectangle.js +7 -205
  126. package/2D/controls/rectangle.js.map +1 -1
  127. package/2D/controls/rectangle.pure.d.ts +48 -0
  128. package/2D/controls/rectangle.pure.js +217 -0
  129. package/2D/controls/rectangle.pure.js.map +1 -0
  130. package/2D/controls/scrollViewers/pure.d.ts +2 -0
  131. package/2D/controls/scrollViewers/pure.js +3 -0
  132. package/2D/controls/scrollViewers/pure.js.map +1 -0
  133. package/2D/controls/scrollViewers/scrollViewer.d.ts +3 -176
  134. package/2D/controls/scrollViewers/scrollViewer.js +5 -584
  135. package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
  136. package/2D/controls/scrollViewers/scrollViewer.pure.d.ts +183 -0
  137. package/2D/controls/scrollViewers/scrollViewer.pure.js +598 -0
  138. package/2D/controls/scrollViewers/scrollViewer.pure.js.map +1 -0
  139. package/2D/controls/sliders/imageBasedSlider.d.ts +3 -45
  140. package/2D/controls/sliders/imageBasedSlider.js +5 -165
  141. package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
  142. package/2D/controls/sliders/imageBasedSlider.pure.d.ts +52 -0
  143. package/2D/controls/sliders/imageBasedSlider.pure.js +179 -0
  144. package/2D/controls/sliders/imageBasedSlider.pure.js.map +1 -0
  145. package/2D/controls/sliders/pure.d.ts +4 -0
  146. package/2D/controls/sliders/pure.js +5 -0
  147. package/2D/controls/sliders/pure.js.map +1 -0
  148. package/2D/controls/sliders/scrollBar.d.ts +3 -48
  149. package/2D/controls/sliders/scrollBar.js +5 -170
  150. package/2D/controls/sliders/scrollBar.js.map +1 -1
  151. package/2D/controls/sliders/scrollBar.pure.d.ts +55 -0
  152. package/2D/controls/sliders/scrollBar.pure.js +184 -0
  153. package/2D/controls/sliders/scrollBar.pure.js.map +1 -0
  154. package/2D/controls/sliders/slider.d.ts +3 -44
  155. package/2D/controls/sliders/slider.js +5 -278
  156. package/2D/controls/sliders/slider.js.map +1 -1
  157. package/2D/controls/sliders/slider.pure.d.ts +51 -0
  158. package/2D/controls/sliders/slider.pure.js +292 -0
  159. package/2D/controls/sliders/slider.pure.js.map +1 -0
  160. package/2D/controls/stackPanel.d.ts +3 -62
  161. package/2D/controls/stackPanel.js +5 -243
  162. package/2D/controls/stackPanel.js.map +1 -1
  163. package/2D/controls/stackPanel.pure.d.ts +69 -0
  164. package/2D/controls/stackPanel.pure.js +257 -0
  165. package/2D/controls/stackPanel.pure.js.map +1 -0
  166. package/2D/controls/statics.d.ts +3 -4
  167. package/2D/controls/statics.js +5 -47
  168. package/2D/controls/statics.js.map +1 -1
  169. package/2D/controls/statics.pure.d.ts +11 -0
  170. package/2D/controls/statics.pure.js +61 -0
  171. package/2D/controls/statics.pure.js.map +1 -0
  172. package/2D/controls/textBlock.d.ts +3 -217
  173. package/2D/controls/textBlock.js +5 -676
  174. package/2D/controls/textBlock.js.map +1 -1
  175. package/2D/controls/textBlock.pure.d.ts +224 -0
  176. package/2D/controls/textBlock.pure.js +690 -0
  177. package/2D/controls/textBlock.pure.js.map +1 -0
  178. package/2D/controls/toggleButton.d.ts +3 -91
  179. package/2D/controls/toggleButton.js +5 -226
  180. package/2D/controls/toggleButton.js.map +1 -1
  181. package/2D/controls/toggleButton.pure.d.ts +98 -0
  182. package/2D/controls/toggleButton.pure.js +240 -0
  183. package/2D/controls/toggleButton.pure.js.map +1 -0
  184. package/2D/controls/virtualKeyboard.d.ts +3 -100
  185. package/2D/controls/virtualKeyboard.js +5 -272
  186. package/2D/controls/virtualKeyboard.js.map +1 -1
  187. package/2D/controls/virtualKeyboard.pure.d.ts +107 -0
  188. package/2D/controls/virtualKeyboard.pure.js +286 -0
  189. package/2D/controls/virtualKeyboard.pure.js.map +1 -0
  190. package/2D/pure.d.ts +13 -0
  191. package/2D/pure.js +15 -0
  192. package/2D/pure.js.map +1 -0
  193. package/3D/controls/pure.d.ts +23 -0
  194. package/3D/controls/pure.js +24 -0
  195. package/3D/controls/pure.js.map +1 -0
  196. package/3D/gizmos/pure.d.ts +3 -0
  197. package/3D/gizmos/pure.js +4 -0
  198. package/3D/gizmos/pure.js.map +1 -0
  199. package/3D/materials/fluent/fluentMaterial.d.ts +5 -100
  200. package/3D/materials/fluent/fluentMaterial.js +7 -305
  201. package/3D/materials/fluent/fluentMaterial.js.map +1 -1
  202. package/3D/materials/fluent/fluentMaterial.pure.d.ts +105 -0
  203. package/3D/materials/fluent/fluentMaterial.pure.js +317 -0
  204. package/3D/materials/fluent/fluentMaterial.pure.js.map +1 -0
  205. package/3D/materials/fluent/pure.d.ts +2 -0
  206. package/3D/materials/fluent/pure.js +3 -0
  207. package/3D/materials/fluent/pure.js.map +1 -0
  208. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +5 -164
  209. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +7 -488
  210. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -1
  211. package/3D/materials/fluentBackplate/fluentBackplateMaterial.pure.d.ts +169 -0
  212. package/3D/materials/fluentBackplate/fluentBackplateMaterial.pure.js +500 -0
  213. package/3D/materials/fluentBackplate/fluentBackplateMaterial.pure.js.map +1 -0
  214. package/3D/materials/fluentBackplate/pure.d.ts +2 -0
  215. package/3D/materials/fluentBackplate/pure.js +3 -0
  216. package/3D/materials/fluentBackplate/pure.js.map +1 -0
  217. package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +5 -200
  218. package/3D/materials/fluentButton/fluentButtonMaterial.js +7 -563
  219. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -1
  220. package/3D/materials/fluentButton/fluentButtonMaterial.pure.d.ts +205 -0
  221. package/3D/materials/fluentButton/fluentButtonMaterial.pure.js +575 -0
  222. package/3D/materials/fluentButton/fluentButtonMaterial.pure.js.map +1 -0
  223. package/3D/materials/fluentButton/pure.d.ts +2 -0
  224. package/3D/materials/fluentButton/pure.js +3 -0
  225. package/3D/materials/fluentButton/pure.js.map +1 -0
  226. package/3D/materials/handle/handleMaterial.d.ts +5 -66
  227. package/3D/materials/handle/handleMaterial.js +5 -118
  228. package/3D/materials/handle/handleMaterial.js.map +1 -1
  229. package/3D/materials/handle/handleMaterial.pure.d.ts +66 -0
  230. package/3D/materials/handle/handleMaterial.pure.js +119 -0
  231. package/3D/materials/handle/handleMaterial.pure.js.map +1 -0
  232. package/3D/materials/handle/pure.d.ts +2 -0
  233. package/3D/materials/handle/pure.js +3 -0
  234. package/3D/materials/handle/pure.js.map +1 -0
  235. package/3D/materials/mrdl/mrdlBackglowMaterial.d.ts +5 -85
  236. package/3D/materials/mrdl/mrdlBackglowMaterial.js +7 -299
  237. package/3D/materials/mrdl/mrdlBackglowMaterial.js.map +1 -1
  238. package/3D/materials/mrdl/mrdlBackglowMaterial.pure.d.ts +90 -0
  239. package/3D/materials/mrdl/mrdlBackglowMaterial.pure.js +311 -0
  240. package/3D/materials/mrdl/mrdlBackglowMaterial.pure.js.map +1 -0
  241. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +5 -145
  242. package/3D/materials/mrdl/mrdlBackplateMaterial.js +7 -433
  243. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -1
  244. package/3D/materials/mrdl/mrdlBackplateMaterial.pure.d.ts +157 -0
  245. package/3D/materials/mrdl/mrdlBackplateMaterial.pure.js +452 -0
  246. package/3D/materials/mrdl/mrdlBackplateMaterial.pure.js.map +1 -0
  247. package/3D/materials/mrdl/mrdlFrontplateMaterial.d.ts +5 -183
  248. package/3D/materials/mrdl/mrdlFrontplateMaterial.js +7 -532
  249. package/3D/materials/mrdl/mrdlFrontplateMaterial.js.map +1 -1
  250. package/3D/materials/mrdl/mrdlFrontplateMaterial.pure.d.ts +188 -0
  251. package/3D/materials/mrdl/mrdlFrontplateMaterial.pure.js +544 -0
  252. package/3D/materials/mrdl/mrdlFrontplateMaterial.pure.js.map +1 -0
  253. package/3D/materials/mrdl/mrdlInnerquadMaterial.d.ts +5 -54
  254. package/3D/materials/mrdl/mrdlInnerquadMaterial.js +7 -227
  255. package/3D/materials/mrdl/mrdlInnerquadMaterial.js.map +1 -1
  256. package/3D/materials/mrdl/mrdlInnerquadMaterial.pure.d.ts +59 -0
  257. package/3D/materials/mrdl/mrdlInnerquadMaterial.pure.js +239 -0
  258. package/3D/materials/mrdl/mrdlInnerquadMaterial.pure.js.map +1 -0
  259. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +5 -334
  260. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +7 -855
  261. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -1
  262. package/3D/materials/mrdl/mrdlSliderBarMaterial.pure.d.ts +346 -0
  263. package/3D/materials/mrdl/mrdlSliderBarMaterial.pure.js +874 -0
  264. package/3D/materials/mrdl/mrdlSliderBarMaterial.pure.js.map +1 -0
  265. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +5 -334
  266. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +7 -855
  267. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -1
  268. package/3D/materials/mrdl/mrdlSliderThumbMaterial.pure.d.ts +346 -0
  269. package/3D/materials/mrdl/mrdlSliderThumbMaterial.pure.js +874 -0
  270. package/3D/materials/mrdl/mrdlSliderThumbMaterial.pure.js.map +1 -0
  271. package/3D/materials/mrdl/pure.d.ts +7 -0
  272. package/3D/materials/mrdl/pure.js +8 -0
  273. package/3D/materials/mrdl/pure.js.map +1 -0
  274. package/3D/materials/pure.d.ts +6 -0
  275. package/3D/materials/pure.js +8 -0
  276. package/3D/materials/pure.js.map +1 -0
  277. package/3D/pure.d.ts +6 -0
  278. package/3D/pure.js +8 -0
  279. package/3D/pure.js.map +1 -0
  280. package/package.json +50 -3
  281. package/pure.d.ts +3 -0
  282. package/pure.js +5 -0
  283. package/pure.js.map +1 -0
@@ -0,0 +1,575 @@
1
+ import { __decorate } from "@babylonjs/core/tslib.es6.js";
2
+ import { serializeAsColor4, serializeAsVector3, serialize } from "@babylonjs/core/Misc/decorators.js";
3
+ import { SerializationHelper } from "@babylonjs/core/Misc/decorators.serialization.js";
4
+ import { Vector3, Vector4 } from "@babylonjs/core/Maths/math.vector.pure.js";
5
+ import { Texture } from "@babylonjs/core/Materials/Textures/texture.pure.js";
6
+ import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
7
+ import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
8
+ import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.pure.js";
9
+ import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
10
+ import { Color3, Color4 } from "@babylonjs/core/Maths/math.color.pure.js";
11
+ import { EffectFallbacks } from "@babylonjs/core/Materials/effectFallbacks.js";
12
+ import { Constants } from "@babylonjs/core/Engines/constants.js";
13
+ import { HandleFallbacksForShadows, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareUniformsAndSamplersList } from "@babylonjs/core/Materials/materialHelper.functions.js";
14
+ import { Tools } from "@babylonjs/core/Misc/tools.pure.js";
15
+ /** @internal */
16
+ class FluentButtonMaterialDefines extends MaterialDefines {
17
+ constructor() {
18
+ super();
19
+ this.RELATIVE_WIDTH = true;
20
+ this.ENABLE_FADE = true;
21
+ this._needNormals = true;
22
+ this._needUVs = true;
23
+ this.rebuild();
24
+ }
25
+ }
26
+ /**
27
+ * Class used to render square buttons with fluent design
28
+ * @since 5.0.0
29
+ */
30
+ export class FluentButtonMaterial extends PushMaterial {
31
+ constructor(name, scene) {
32
+ super(name, scene);
33
+ this._shadersLoaded = false;
34
+ /**
35
+ * Gets or sets the width of the glowing edge, relative to the scale of the button.
36
+ * (Default is 4% of the height).
37
+ */
38
+ this.edgeWidth = 0.04;
39
+ /**
40
+ * Gets or sets the color of the glowing edge.
41
+ */
42
+ this.edgeColor = new Color4(0.592157, 0.592157, 0.592157, 1.0);
43
+ /**
44
+ * Gets or sets the maximum intensity of the proximity light.
45
+ */
46
+ this.proximityMaxIntensity = 0.45;
47
+ /**
48
+ * Gets or sets the maximum distance for the proximity light (Default is 16mm).
49
+ */
50
+ this.proximityFarDistance = 0.16;
51
+ /**
52
+ * Gets or sets the radius of the proximity light when near to the surface.
53
+ */
54
+ this.proximityNearRadius = 1.5;
55
+ /**
56
+ * Gets or sets the anisotropy of the proximity light.
57
+ */
58
+ this.proximityAnisotropy = 1;
59
+ /**
60
+ * Gets or sets the amount of fuzzing in the selection focus.
61
+ */
62
+ this.selectionFuzz = 0.5;
63
+ /**
64
+ * Gets or sets an override value to display the button as selected.
65
+ */
66
+ this.selected = 0;
67
+ /**
68
+ * Gets or sets a value to manually fade the blob size.
69
+ */
70
+ this.selectionFade = 0;
71
+ /**
72
+ * Gets or sets a value to manually shrink the blob size as it fades (see selectionFade).
73
+ */
74
+ this.selectionFadeSize = 0.3;
75
+ /**
76
+ * Gets or sets the distance from the button the cursor should be for the button
77
+ * to appear selected (Default is 8cm).
78
+ */
79
+ this.selectedDistance = 0.08;
80
+ /**
81
+ * Gets or sets the fall-off distance for the selection fade (Default is 8cm).
82
+ */
83
+ this.selectedFadeLength = 0.08;
84
+ /**
85
+ * Gets or sets the intensity of the luminous blob (Ranges 0-1, default is 0.5).
86
+ */
87
+ this.blobIntensity = 0.5;
88
+ /**
89
+ * The size of the blob when the pointer is at the blobFarDistance (Default is 5cm).
90
+ */
91
+ this.blobFarSize = 0.05;
92
+ /**
93
+ * The distance at which the pointer is considered near. See [left|right]BlobNearSize. (Default is 0cm).
94
+ */
95
+ this.blobNearDistance = 0;
96
+ /**
97
+ * The distance at which the pointer is considered far. See [left|right]BlobFarSize. (Default is 8cm).
98
+ */
99
+ this.blobFarDistance = 0.08;
100
+ /**
101
+ * The distance over which the blob intensity fades from full to none (Default is 8cm).
102
+ */
103
+ this.blobFadeLength = 0.08;
104
+ /**
105
+ * Gets or sets whether the blob corresponding to the left index finger is enabled.
106
+ */
107
+ this.leftBlobEnable = true;
108
+ /**
109
+ * Gets or sets the size of the left blob when the left pointer is considered near. See blobNearDistance. (Default is 2.5cm).
110
+ */
111
+ this.leftBlobNearSize = 0.025;
112
+ /**
113
+ * Gets or sets the progress of the pulse animation on the left blob (Ranges 0-1).
114
+ */
115
+ this.leftBlobPulse = 0;
116
+ /**
117
+ * Gets or sets the fade factor on the left blob.
118
+ */
119
+ this.leftBlobFade = 1;
120
+ /**
121
+ * Gets or sets the inner fade on the left blob;
122
+ */
123
+ this.leftBlobInnerFade = 0.01;
124
+ /**
125
+ * Gets or sets whether the blob corresponding to the right index finger is enabled.
126
+ */
127
+ this.rightBlobEnable = true;
128
+ /**
129
+ * Gets or sets the size of the right blob when the right pointer is considered near. See blobNearDistance. (Default is 2.5cm).
130
+ */
131
+ this.rightBlobNearSize = 0.025;
132
+ /**
133
+ * Gets or sets the progress of the pulse animation on the right blob (Ranges 0-1).
134
+ */
135
+ this.rightBlobPulse = 0;
136
+ /**
137
+ * Gets or sets the fade factor on the right blob.
138
+ */
139
+ this.rightBlobFade = 1;
140
+ /**
141
+ * Gets or sets the inner fade on the right blob;
142
+ */
143
+ this.rightBlobInnerFade = 0.01;
144
+ /**
145
+ * Gets or sets the direction of the active face before the world transform is applied.
146
+ * This should almost always be set to -z.
147
+ */
148
+ this.activeFaceDir = new Vector3(0, 0, -1);
149
+ /**
150
+ * Gets or sets the button's up direction before the world transform is applied.
151
+ * This should almost always be set to +y.
152
+ */
153
+ this.activeFaceUp = new Vector3(0, 1, 0);
154
+ /**
155
+ * Gets or sets whether the edge fade effect is enabled.
156
+ */
157
+ this.enableFade = true;
158
+ /**
159
+ * Gets or sets a value corresponding to the width of the edge fade effect (Default 1.5).
160
+ */
161
+ this.fadeWidth = 1.5;
162
+ /**
163
+ * Gets or sets whether the active face is smoothly interpolated.
164
+ */
165
+ this.smoothActiveFace = true;
166
+ /**
167
+ * Gets or sets whether the frame of the fluent button model is visible.
168
+ * This is usually only enabled for debugging purposes.
169
+ */
170
+ this.showFrame = false;
171
+ /**
172
+ * Gets or sets whether the blob color texture is used for the proximity
173
+ * light effect. This is usually only disabled for debugging purposes.
174
+ */
175
+ this.useBlobTexture = true;
176
+ /**
177
+ * Gets or sets the world-space position of the tip of the left index finger.
178
+ */
179
+ this.globalLeftIndexTipPosition = Vector3.Zero();
180
+ /**
181
+ * Gets or sets the world-space position of the tip of the right index finger.
182
+ */
183
+ this.globalRightIndexTipPosition = Vector3.Zero();
184
+ this.alphaMode = Constants.ALPHA_ADD;
185
+ this.disableDepthWrite = true;
186
+ this.backFaceCulling = false;
187
+ this._blobTextureUrl = Tools.GetAssetUrl(FluentButtonMaterial.BLOB_TEXTURE_URL);
188
+ this._blobTexture = new Texture(this._blobTextureUrl, this.getScene(), true, false, Texture.NEAREST_SAMPLINGMODE);
189
+ }
190
+ needAlphaBlending() {
191
+ return true;
192
+ }
193
+ needAlphaTesting() {
194
+ return true;
195
+ }
196
+ getAlphaTestTexture() {
197
+ return null;
198
+ }
199
+ // Methods
200
+ isReadyForSubMesh(mesh, subMesh) {
201
+ const drawWrapper = subMesh._drawWrapper;
202
+ if (this.isFrozen) {
203
+ if (drawWrapper.effect && drawWrapper._wasPreviouslyReady) {
204
+ return true;
205
+ }
206
+ }
207
+ if (!subMesh.materialDefines) {
208
+ subMesh.materialDefines = new FluentButtonMaterialDefines();
209
+ }
210
+ const defines = subMesh.materialDefines;
211
+ const scene = this.getScene();
212
+ const blobTextureError = this._blobTexture.errorObject;
213
+ if (this._blobTexture.loadingError || blobTextureError) {
214
+ const textureErrorMessage = blobTextureError?.message || (blobTextureError?.exception instanceof Error ? blobTextureError.exception.message : undefined);
215
+ throw new Error(`FluentButtonMaterial "${this.name}" failed to load blob texture "${this._blobTextureUrl}"${textureErrorMessage ? `: ${textureErrorMessage}` : ""}. Check FluentButtonMaterial.BLOB_TEXTURE_URL and asset availability.`, { cause: blobTextureError?.exception });
216
+ }
217
+ if (!this._blobTexture.isReady()) {
218
+ return false;
219
+ }
220
+ if (this._isReadyForSubMesh(subMesh)) {
221
+ return true;
222
+ }
223
+ const engine = scene.getEngine();
224
+ // Attribs
225
+ PrepareDefinesForAttributes(mesh, defines, true, false);
226
+ // Get correct effect
227
+ if (defines.isDirty) {
228
+ defines.markAsProcessed();
229
+ scene.resetCachedMaterial();
230
+ // Fallbacks
231
+ const fallbacks = new EffectFallbacks();
232
+ if (defines.FOG) {
233
+ fallbacks.addFallback(1, "FOG");
234
+ }
235
+ HandleFallbacksForShadows(defines, fallbacks);
236
+ defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;
237
+ //Attributes
238
+ const attribs = [VertexBuffer.PositionKind];
239
+ if (defines.NORMAL) {
240
+ attribs.push(VertexBuffer.NormalKind);
241
+ }
242
+ if (defines.UV1) {
243
+ attribs.push(VertexBuffer.UVKind);
244
+ }
245
+ if (defines.UV2) {
246
+ attribs.push(VertexBuffer.UV2Kind);
247
+ }
248
+ if (defines.VERTEXCOLOR) {
249
+ attribs.push(VertexBuffer.ColorKind);
250
+ }
251
+ if (defines.TANGENT) {
252
+ attribs.push(VertexBuffer.TangentKind);
253
+ }
254
+ PrepareAttributesForInstances(attribs, defines);
255
+ // Legacy browser patch
256
+ const shaderName = "fluentButton";
257
+ const join = defines.toString();
258
+ const uniforms = [
259
+ "world",
260
+ "viewProjection",
261
+ "cameraPosition",
262
+ "_Edge_Width_",
263
+ "_Edge_Color_",
264
+ "_Relative_Width_",
265
+ "_Proximity_Max_Intensity_",
266
+ "_Proximity_Far_Distance_",
267
+ "_Proximity_Near_Radius_",
268
+ "_Proximity_Anisotropy_",
269
+ "_Selection_Fuzz_",
270
+ "_Selected_",
271
+ "_Selection_Fade_",
272
+ "_Selection_Fade_Size_",
273
+ "_Selected_Distance_",
274
+ "_Selected_Fade_Length_",
275
+ "_Blob_Enable_",
276
+ "_Blob_Position_",
277
+ "_Blob_Intensity_",
278
+ "_Blob_Near_Size_",
279
+ "_Blob_Far_Size_",
280
+ "_Blob_Near_Distance_",
281
+ "_Blob_Far_Distance_",
282
+ "_Blob_Fade_Length_",
283
+ "_Blob_Inner_Fade_",
284
+ "_Blob_Pulse_",
285
+ "_Blob_Fade_",
286
+ "_Blob_Texture_",
287
+ "_Blob_Enable_2_",
288
+ "_Blob_Position_2_",
289
+ "_Blob_Near_Size_2_",
290
+ "_Blob_Inner_Fade_2_",
291
+ "_Blob_Pulse_2_",
292
+ "_Blob_Fade_2_",
293
+ "_Active_Face_Dir_",
294
+ "_Active_Face_Up_",
295
+ "_Enable_Fade_",
296
+ "_Fade_Width_",
297
+ "_Smooth_Active_Face_",
298
+ "_Show_Frame_",
299
+ "_Use_Blob_Texture_",
300
+ "Use_Global_Left_Index",
301
+ "Use_Global_Right_Index",
302
+ "Global_Left_Index_Tip_Position",
303
+ "Global_Right_Index_Tip_Position",
304
+ "Global_Left_Thumb_Tip_Position",
305
+ "Global_Right_Thumb_Tip_Position",
306
+ "Global_Left_Index_Tip_Proximity",
307
+ "Global_Right_Index_Tip_Proximity",
308
+ ];
309
+ const samplers = ["_Blob_Texture_"];
310
+ const uniformBuffers = [];
311
+ PrepareUniformsAndSamplersList({
312
+ uniformsNames: uniforms,
313
+ uniformBuffersNames: uniformBuffers,
314
+ samplers: samplers,
315
+ defines: defines,
316
+ maxSimultaneousLights: 4,
317
+ shaderLanguage: this._shaderLanguage,
318
+ });
319
+ subMesh.setEffect(scene.getEngine().createEffect(shaderName, {
320
+ attributes: attribs,
321
+ uniformsNames: uniforms,
322
+ uniformBuffersNames: uniformBuffers,
323
+ samplers: samplers,
324
+ defines: join,
325
+ fallbacks: fallbacks,
326
+ onCompiled: this.onCompiled,
327
+ onError: this.onError,
328
+ indexParameters: { maxSimultaneousLights: 4 },
329
+ shaderLanguage: this._shaderLanguage,
330
+ extraInitializationsAsync: this._shadersLoaded
331
+ ? undefined
332
+ : async () => {
333
+ if (this.shaderLanguage === 1 /* ShaderLanguage.WGSL */) {
334
+ await Promise.all([import("./wgsl/fluentButton.vertex.js"), import("./wgsl/fluentButton.fragment.js")]);
335
+ }
336
+ this._shadersLoaded = true;
337
+ },
338
+ }, engine), defines, this._materialContext);
339
+ }
340
+ if (!subMesh.effect || !subMesh.effect.isReady()) {
341
+ return false;
342
+ }
343
+ defines._renderId = scene.getRenderId();
344
+ drawWrapper._wasPreviouslyReady = true;
345
+ return true;
346
+ }
347
+ bindForSubMesh(world, mesh, subMesh) {
348
+ const scene = this.getScene();
349
+ const defines = subMesh.materialDefines;
350
+ if (!defines) {
351
+ return;
352
+ }
353
+ const effect = subMesh.effect;
354
+ if (!effect) {
355
+ return;
356
+ }
357
+ this._activeEffect = effect;
358
+ // Matrices
359
+ this.bindOnlyWorldMatrix(world);
360
+ this._activeEffect.setMatrix("viewProjection", scene.getTransformMatrix());
361
+ this._activeEffect.setVector3("cameraPosition", scene.activeCamera.position);
362
+ // "Blob Texture"
363
+ this._activeEffect.setTexture("_Blob_Texture_", this._blobTexture);
364
+ // "Wireframe"
365
+ this._activeEffect.setFloat("_Edge_Width_", this.edgeWidth);
366
+ this._activeEffect.setColor4("_Edge_Color_", new Color3(this.edgeColor.r, this.edgeColor.g, this.edgeColor.b), this.edgeColor.a);
367
+ //define _Relative_Width_ true;
368
+ // "Proximity"
369
+ this._activeEffect.setFloat("_Proximity_Max_Intensity_", this.proximityMaxIntensity);
370
+ this._activeEffect.setFloat("_Proximity_Far_Distance_", this.proximityFarDistance);
371
+ this._activeEffect.setFloat("_Proximity_Near_Radius_", this.proximityNearRadius);
372
+ this._activeEffect.setFloat("_Proximity_Anisotropy_", this.proximityAnisotropy);
373
+ // "Selection"
374
+ this._activeEffect.setFloat("_Selection_Fuzz_", this.selectionFuzz);
375
+ this._activeEffect.setFloat("_Selected_", this.selected);
376
+ this._activeEffect.setFloat("_Selection_Fade_", this.selectionFade);
377
+ this._activeEffect.setFloat("_Selection_Fade_Size_", this.selectionFadeSize);
378
+ this._activeEffect.setFloat("_Selected_Distance_", this.selectedDistance);
379
+ this._activeEffect.setFloat("_Selected_Fade_Length_", this.selectedFadeLength);
380
+ // "Blob"
381
+ this._activeEffect.setFloat("_Blob_Enable_", this.leftBlobEnable ? 1.0 : 0.0);
382
+ this._activeEffect.setFloat("_Blob_Intensity_", this.blobIntensity);
383
+ this._activeEffect.setFloat("_Blob_Near_Size_", this.leftBlobNearSize);
384
+ this._activeEffect.setFloat("_Blob_Far_Size_", this.blobFarSize);
385
+ this._activeEffect.setFloat("_Blob_Near_Distance_", this.blobNearDistance);
386
+ this._activeEffect.setFloat("_Blob_Far_Distance_", this.blobFarDistance);
387
+ this._activeEffect.setFloat("_Blob_Fade_Length_", this.blobFadeLength);
388
+ this._activeEffect.setFloat("_Blob_Inner_Fade_", this.leftBlobInnerFade);
389
+ this._activeEffect.setFloat("_Blob_Pulse_", this.leftBlobPulse);
390
+ this._activeEffect.setFloat("_Blob_Fade_", this.leftBlobFade);
391
+ // "Blob 2"
392
+ this._activeEffect.setFloat("_Blob_Enable_2_", this.rightBlobEnable ? 1.0 : 0.0);
393
+ this._activeEffect.setFloat("_Blob_Near_Size_2_", this.rightBlobNearSize);
394
+ this._activeEffect.setFloat("_Blob_Inner_Fade_2_", this.rightBlobInnerFade);
395
+ this._activeEffect.setFloat("_Blob_Pulse_2_", this.rightBlobPulse);
396
+ this._activeEffect.setFloat("_Blob_Fade_2_", this.rightBlobFade);
397
+ // "Active Face"
398
+ this._activeEffect.setVector3("_Active_Face_Dir_", this.activeFaceDir);
399
+ this._activeEffect.setVector3("_Active_Face_Up_", this.activeFaceUp);
400
+ // "Hololens Edge Fade"
401
+ //define _Enable_Fade_ true;
402
+ this._activeEffect.setFloat("_Fade_Width_", this.fadeWidth);
403
+ this._activeEffect.setFloat("_Smooth_Active_Face_", this.smoothActiveFace ? 1.0 : 0.0);
404
+ // "Debug"
405
+ this._activeEffect.setFloat("_Show_Frame_", this.showFrame ? 1.0 : 0.0);
406
+ this._activeEffect.setFloat("_Use_Blob_Texture_", this.useBlobTexture ? 1.0 : 0.0);
407
+ // Global inputs
408
+ this._activeEffect.setFloat("Use_Global_Left_Index", 1.0);
409
+ this._activeEffect.setFloat("Use_Global_Right_Index", 1.0);
410
+ this._activeEffect.setVector4("Global_Left_Index_Tip_Position", new Vector4(this.globalLeftIndexTipPosition.x, this.globalLeftIndexTipPosition.y, this.globalLeftIndexTipPosition.z, 1.0));
411
+ this._activeEffect.setVector4("Global_Right_Index_Tip_Position", new Vector4(this.globalRightIndexTipPosition.x, this.globalRightIndexTipPosition.y, this.globalRightIndexTipPosition.z, 1.0));
412
+ this._afterBind(mesh, this._activeEffect, subMesh);
413
+ }
414
+ /**
415
+ * Get the list of animatables in the material.
416
+ * @returns the list of animatables object used in the material
417
+ */
418
+ getAnimatables() {
419
+ return [];
420
+ }
421
+ /**
422
+ * Disposes the material.
423
+ * @param forceDisposeEffect specifies if effects should be forcefully disposed
424
+ */
425
+ dispose(forceDisposeEffect) {
426
+ super.dispose(forceDisposeEffect);
427
+ }
428
+ clone(name) {
429
+ return SerializationHelper.Clone(() => new FluentButtonMaterial(name, this.getScene()), this);
430
+ }
431
+ serialize() {
432
+ const serializationObject = super.serialize();
433
+ serializationObject.customType = "BABYLON.FluentButtonMaterial";
434
+ return serializationObject;
435
+ }
436
+ getClassName() {
437
+ return "FluentButtonMaterial";
438
+ }
439
+ // Statics
440
+ /**
441
+ * Creates a fluent button material from parsed material data.
442
+ * @param source defines the JSON representation of the material
443
+ * @param scene defines the hosting scene
444
+ * @param rootUrl defines the root URL to use to load textures and relative dependencies
445
+ * @returns a new fluent button material
446
+ */
447
+ static Parse(source, scene, rootUrl) {
448
+ return SerializationHelper.Parse(() => new FluentButtonMaterial(source.name, scene), source, scene, rootUrl);
449
+ }
450
+ }
451
+ /**
452
+ * URL pointing to the texture used to define the coloring for the fluent blob effect.
453
+ */
454
+ FluentButtonMaterial.BLOB_TEXTURE_URL = "https://assets.babylonjs.com/core/MRTK/mrtk-fluent-button-blob.png";
455
+ __decorate([
456
+ serialize()
457
+ ], FluentButtonMaterial.prototype, "edgeWidth", void 0);
458
+ __decorate([
459
+ serializeAsColor4()
460
+ ], FluentButtonMaterial.prototype, "edgeColor", void 0);
461
+ __decorate([
462
+ serialize()
463
+ ], FluentButtonMaterial.prototype, "proximityMaxIntensity", void 0);
464
+ __decorate([
465
+ serialize()
466
+ ], FluentButtonMaterial.prototype, "proximityFarDistance", void 0);
467
+ __decorate([
468
+ serialize()
469
+ ], FluentButtonMaterial.prototype, "proximityNearRadius", void 0);
470
+ __decorate([
471
+ serialize()
472
+ ], FluentButtonMaterial.prototype, "proximityAnisotropy", void 0);
473
+ __decorate([
474
+ serialize()
475
+ ], FluentButtonMaterial.prototype, "selectionFuzz", void 0);
476
+ __decorate([
477
+ serialize()
478
+ ], FluentButtonMaterial.prototype, "selected", void 0);
479
+ __decorate([
480
+ serialize()
481
+ ], FluentButtonMaterial.prototype, "selectionFade", void 0);
482
+ __decorate([
483
+ serialize()
484
+ ], FluentButtonMaterial.prototype, "selectionFadeSize", void 0);
485
+ __decorate([
486
+ serialize()
487
+ ], FluentButtonMaterial.prototype, "selectedDistance", void 0);
488
+ __decorate([
489
+ serialize()
490
+ ], FluentButtonMaterial.prototype, "selectedFadeLength", void 0);
491
+ __decorate([
492
+ serialize()
493
+ ], FluentButtonMaterial.prototype, "blobIntensity", void 0);
494
+ __decorate([
495
+ serialize()
496
+ ], FluentButtonMaterial.prototype, "blobFarSize", void 0);
497
+ __decorate([
498
+ serialize()
499
+ ], FluentButtonMaterial.prototype, "blobNearDistance", void 0);
500
+ __decorate([
501
+ serialize()
502
+ ], FluentButtonMaterial.prototype, "blobFarDistance", void 0);
503
+ __decorate([
504
+ serialize()
505
+ ], FluentButtonMaterial.prototype, "blobFadeLength", void 0);
506
+ __decorate([
507
+ serialize()
508
+ ], FluentButtonMaterial.prototype, "leftBlobEnable", void 0);
509
+ __decorate([
510
+ serialize()
511
+ ], FluentButtonMaterial.prototype, "leftBlobNearSize", void 0);
512
+ __decorate([
513
+ serialize()
514
+ ], FluentButtonMaterial.prototype, "leftBlobPulse", void 0);
515
+ __decorate([
516
+ serialize()
517
+ ], FluentButtonMaterial.prototype, "leftBlobFade", void 0);
518
+ __decorate([
519
+ serialize()
520
+ ], FluentButtonMaterial.prototype, "leftBlobInnerFade", void 0);
521
+ __decorate([
522
+ serialize()
523
+ ], FluentButtonMaterial.prototype, "rightBlobEnable", void 0);
524
+ __decorate([
525
+ serialize()
526
+ ], FluentButtonMaterial.prototype, "rightBlobNearSize", void 0);
527
+ __decorate([
528
+ serialize()
529
+ ], FluentButtonMaterial.prototype, "rightBlobPulse", void 0);
530
+ __decorate([
531
+ serialize()
532
+ ], FluentButtonMaterial.prototype, "rightBlobFade", void 0);
533
+ __decorate([
534
+ serialize()
535
+ ], FluentButtonMaterial.prototype, "rightBlobInnerFade", void 0);
536
+ __decorate([
537
+ serializeAsVector3()
538
+ ], FluentButtonMaterial.prototype, "activeFaceDir", void 0);
539
+ __decorate([
540
+ serializeAsVector3()
541
+ ], FluentButtonMaterial.prototype, "activeFaceUp", void 0);
542
+ __decorate([
543
+ serialize()
544
+ ], FluentButtonMaterial.prototype, "enableFade", void 0);
545
+ __decorate([
546
+ serialize()
547
+ ], FluentButtonMaterial.prototype, "fadeWidth", void 0);
548
+ __decorate([
549
+ serialize()
550
+ ], FluentButtonMaterial.prototype, "smoothActiveFace", void 0);
551
+ __decorate([
552
+ serialize()
553
+ ], FluentButtonMaterial.prototype, "showFrame", void 0);
554
+ __decorate([
555
+ serialize()
556
+ ], FluentButtonMaterial.prototype, "useBlobTexture", void 0);
557
+ __decorate([
558
+ serializeAsVector3()
559
+ ], FluentButtonMaterial.prototype, "globalLeftIndexTipPosition", void 0);
560
+ __decorate([
561
+ serializeAsVector3()
562
+ ], FluentButtonMaterial.prototype, "globalRightIndexTipPosition", void 0);
563
+ let _Registered = false;
564
+ /**
565
+ * Registers the FluentButtonMaterial class with the type store for serialization support.
566
+ * Safe to call multiple times; only the first call has an effect.
567
+ */
568
+ export function RegisterFluentButtonMaterial() {
569
+ if (_Registered) {
570
+ return;
571
+ }
572
+ _Registered = true;
573
+ RegisterClass("BABYLON.GUI.FluentButtonMaterial", FluentButtonMaterial);
574
+ }
575
+ //# sourceMappingURL=fluentButtonMaterial.pure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fluentButtonMaterial.pure.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/3D/materials/fluentButton/fluentButtonMaterial.pure.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { type Nullable } from \"core/types\";\r\nimport { serializeAsColor4, serializeAsVector3, serialize } from \"core/Misc/decorators\";\r\nimport { SerializationHelper } from \"core/Misc/decorators.serialization\";\r\nimport { type Matrix, Vector3, Vector4 } from \"core/Maths/math.vector.pure\";\r\nimport { type IAnimatable } from \"core/Animations/animatable.interface\";\r\nimport { type BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { Texture } from \"core/Materials/Textures/texture.pure\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport { type IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer.pure\";\r\nimport { type AbstractMesh } from \"core/Meshes/abstractMesh.pure\";\r\nimport { type SubMesh } from \"core/Meshes/subMesh\";\r\nimport { type Mesh } from \"core/Meshes/mesh\";\r\nimport { type Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { Color3, Color4 } from \"core/Maths/math.color.pure\";\r\nimport { EffectFallbacks } from \"core/Materials/effectFallbacks\";\r\nimport { Constants } from \"core/Engines/constants\";\r\nimport { ShaderLanguage } from \"core/Materials/shaderLanguage\";\r\n\r\nimport { HandleFallbacksForShadows, PrepareAttributesForInstances, PrepareDefinesForAttributes, PrepareUniformsAndSamplersList } from \"core/Materials/materialHelper.functions\";\r\nimport { Tools } from \"core/Misc/tools.pure\";\r\n\r\n/** @internal */\r\nclass FluentButtonMaterialDefines extends MaterialDefines {\r\n public RELATIVE_WIDTH = true;\r\n public ENABLE_FADE = true;\r\n\r\n constructor() {\r\n super();\r\n this._needNormals = true;\r\n this._needUVs = true;\r\n this.rebuild();\r\n }\r\n}\r\n\r\n/**\r\n * Class used to render square buttons with fluent design\r\n * @since 5.0.0\r\n */\r\nexport class FluentButtonMaterial extends PushMaterial {\r\n private _shadersLoaded = false;\r\n\r\n /**\r\n * URL pointing to the texture used to define the coloring for the fluent blob effect.\r\n */\r\n public static BLOB_TEXTURE_URL = \"https://assets.babylonjs.com/core/MRTK/mrtk-fluent-button-blob.png\";\r\n\r\n /**\r\n * Gets or sets the width of the glowing edge, relative to the scale of the button.\r\n * (Default is 4% of the height).\r\n */\r\n @serialize()\r\n public edgeWidth = 0.04;\r\n\r\n /**\r\n * Gets or sets the color of the glowing edge.\r\n */\r\n @serializeAsColor4()\r\n public edgeColor = new Color4(0.592157, 0.592157, 0.592157, 1.0);\r\n\r\n /**\r\n * Gets or sets the maximum intensity of the proximity light.\r\n */\r\n @serialize()\r\n public proximityMaxIntensity = 0.45;\r\n\r\n /**\r\n * Gets or sets the maximum distance for the proximity light (Default is 16mm).\r\n */\r\n @serialize()\r\n public proximityFarDistance = 0.16;\r\n\r\n /**\r\n * Gets or sets the radius of the proximity light when near to the surface.\r\n */\r\n @serialize()\r\n public proximityNearRadius = 1.5;\r\n\r\n /**\r\n * Gets or sets the anisotropy of the proximity light.\r\n */\r\n @serialize()\r\n public proximityAnisotropy = 1;\r\n\r\n /**\r\n * Gets or sets the amount of fuzzing in the selection focus.\r\n */\r\n @serialize()\r\n public selectionFuzz = 0.5;\r\n\r\n /**\r\n * Gets or sets an override value to display the button as selected.\r\n */\r\n @serialize()\r\n public selected = 0;\r\n\r\n /**\r\n * Gets or sets a value to manually fade the blob size.\r\n */\r\n @serialize()\r\n public selectionFade = 0;\r\n\r\n /**\r\n * Gets or sets a value to manually shrink the blob size as it fades (see selectionFade).\r\n */\r\n @serialize()\r\n public selectionFadeSize = 0.3;\r\n\r\n /**\r\n * Gets or sets the distance from the button the cursor should be for the button\r\n * to appear selected (Default is 8cm).\r\n */\r\n @serialize()\r\n public selectedDistance = 0.08;\r\n\r\n /**\r\n * Gets or sets the fall-off distance for the selection fade (Default is 8cm).\r\n */\r\n @serialize()\r\n public selectedFadeLength = 0.08;\r\n\r\n /**\r\n * Gets or sets the intensity of the luminous blob (Ranges 0-1, default is 0.5).\r\n */\r\n @serialize()\r\n public blobIntensity = 0.5;\r\n\r\n /**\r\n * The size of the blob when the pointer is at the blobFarDistance (Default is 5cm).\r\n */\r\n @serialize()\r\n public blobFarSize = 0.05;\r\n\r\n /**\r\n * The distance at which the pointer is considered near. See [left|right]BlobNearSize. (Default is 0cm).\r\n */\r\n @serialize()\r\n public blobNearDistance = 0;\r\n\r\n /**\r\n * The distance at which the pointer is considered far. See [left|right]BlobFarSize. (Default is 8cm).\r\n */\r\n @serialize()\r\n public blobFarDistance = 0.08;\r\n\r\n /**\r\n * The distance over which the blob intensity fades from full to none (Default is 8cm).\r\n */\r\n @serialize()\r\n public blobFadeLength = 0.08;\r\n\r\n /**\r\n * Gets or sets whether the blob corresponding to the left index finger is enabled.\r\n */\r\n @serialize()\r\n public leftBlobEnable = true;\r\n\r\n /**\r\n * Gets or sets the size of the left blob when the left pointer is considered near. See blobNearDistance. (Default is 2.5cm).\r\n */\r\n @serialize()\r\n public leftBlobNearSize = 0.025;\r\n\r\n /**\r\n * Gets or sets the progress of the pulse animation on the left blob (Ranges 0-1).\r\n */\r\n @serialize()\r\n public leftBlobPulse = 0;\r\n\r\n /**\r\n * Gets or sets the fade factor on the left blob.\r\n */\r\n @serialize()\r\n public leftBlobFade = 1;\r\n\r\n /**\r\n * Gets or sets the inner fade on the left blob;\r\n */\r\n @serialize()\r\n public leftBlobInnerFade = 0.01;\r\n\r\n /**\r\n * Gets or sets whether the blob corresponding to the right index finger is enabled.\r\n */\r\n @serialize()\r\n public rightBlobEnable = true;\r\n\r\n /**\r\n * Gets or sets the size of the right blob when the right pointer is considered near. See blobNearDistance. (Default is 2.5cm).\r\n */\r\n @serialize()\r\n public rightBlobNearSize = 0.025;\r\n\r\n /**\r\n * Gets or sets the progress of the pulse animation on the right blob (Ranges 0-1).\r\n */\r\n @serialize()\r\n public rightBlobPulse = 0;\r\n\r\n /**\r\n * Gets or sets the fade factor on the right blob.\r\n */\r\n @serialize()\r\n public rightBlobFade = 1;\r\n\r\n /**\r\n * Gets or sets the inner fade on the right blob;\r\n */\r\n @serialize()\r\n public rightBlobInnerFade = 0.01;\r\n\r\n /**\r\n * Gets or sets the direction of the active face before the world transform is applied.\r\n * This should almost always be set to -z.\r\n */\r\n @serializeAsVector3()\r\n public activeFaceDir = new Vector3(0, 0, -1);\r\n\r\n /**\r\n * Gets or sets the button's up direction before the world transform is applied.\r\n * This should almost always be set to +y.\r\n */\r\n @serializeAsVector3()\r\n public activeFaceUp = new Vector3(0, 1, 0);\r\n\r\n /**\r\n * Gets or sets whether the edge fade effect is enabled.\r\n */\r\n @serialize()\r\n public enableFade = true;\r\n\r\n /**\r\n * Gets or sets a value corresponding to the width of the edge fade effect (Default 1.5).\r\n */\r\n @serialize()\r\n public fadeWidth = 1.5;\r\n\r\n /**\r\n * Gets or sets whether the active face is smoothly interpolated.\r\n */\r\n @serialize()\r\n public smoothActiveFace = true;\r\n\r\n /**\r\n * Gets or sets whether the frame of the fluent button model is visible.\r\n * This is usually only enabled for debugging purposes.\r\n */\r\n @serialize()\r\n public showFrame = false;\r\n\r\n /**\r\n * Gets or sets whether the blob color texture is used for the proximity\r\n * light effect. This is usually only disabled for debugging purposes.\r\n */\r\n @serialize()\r\n public useBlobTexture = true;\r\n\r\n /**\r\n * Gets or sets the world-space position of the tip of the left index finger.\r\n */\r\n @serializeAsVector3()\r\n public globalLeftIndexTipPosition = Vector3.Zero();\r\n\r\n /**\r\n * Gets or sets the world-space position of the tip of the right index finger.\r\n */\r\n @serializeAsVector3()\r\n public globalRightIndexTipPosition = Vector3.Zero();\r\n\r\n private _blobTexture: Texture;\r\n private _blobTextureUrl: string;\r\n\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n this.alphaMode = Constants.ALPHA_ADD;\r\n this.disableDepthWrite = true;\r\n this.backFaceCulling = false;\r\n this._blobTextureUrl = Tools.GetAssetUrl(FluentButtonMaterial.BLOB_TEXTURE_URL);\r\n this._blobTexture = new Texture(this._blobTextureUrl, this.getScene(), true, false, Texture.NEAREST_SAMPLINGMODE);\r\n }\r\n\r\n public override needAlphaBlending(): boolean {\r\n return true;\r\n }\r\n\r\n public override needAlphaTesting(): boolean {\r\n return true;\r\n }\r\n\r\n public override getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n // Methods\r\n public override isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh): boolean {\r\n const drawWrapper = subMesh._drawWrapper;\r\n\r\n if (this.isFrozen) {\r\n if (drawWrapper.effect && drawWrapper._wasPreviouslyReady) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new FluentButtonMaterialDefines();\r\n }\r\n\r\n const defines = <FluentButtonMaterialDefines>subMesh.materialDefines;\r\n const scene = this.getScene();\r\n\r\n const blobTextureError = this._blobTexture.errorObject;\r\n if (this._blobTexture.loadingError || blobTextureError) {\r\n const textureErrorMessage = blobTextureError?.message || (blobTextureError?.exception instanceof Error ? blobTextureError.exception.message : undefined);\r\n throw new Error(\r\n `FluentButtonMaterial \"${this.name}\" failed to load blob texture \"${this._blobTextureUrl}\"${textureErrorMessage ? `: ${textureErrorMessage}` : \"\"}. Check FluentButtonMaterial.BLOB_TEXTURE_URL and asset availability.`,\r\n { cause: blobTextureError?.exception }\r\n );\r\n }\r\n\r\n if (!this._blobTexture.isReady()) {\r\n return false;\r\n }\r\n\r\n if (this._isReadyForSubMesh(subMesh)) {\r\n return true;\r\n }\r\n\r\n const engine = scene.getEngine();\r\n\r\n // Attribs\r\n PrepareDefinesForAttributes(mesh, defines, true, false);\r\n\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n\r\n scene.resetCachedMaterial();\r\n\r\n // Fallbacks\r\n const fallbacks = new EffectFallbacks();\r\n if (defines.FOG) {\r\n fallbacks.addFallback(1, \"FOG\");\r\n }\r\n\r\n HandleFallbacksForShadows(defines, fallbacks);\r\n\r\n defines.IMAGEPROCESSINGPOSTPROCESS = scene.imageProcessingConfiguration.applyByPostProcess;\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n\r\n if (defines.NORMAL) {\r\n attribs.push(VertexBuffer.NormalKind);\r\n }\r\n\r\n if (defines.UV1) {\r\n attribs.push(VertexBuffer.UVKind);\r\n }\r\n\r\n if (defines.UV2) {\r\n attribs.push(VertexBuffer.UV2Kind);\r\n }\r\n\r\n if (defines.VERTEXCOLOR) {\r\n attribs.push(VertexBuffer.ColorKind);\r\n }\r\n\r\n if (defines.TANGENT) {\r\n attribs.push(VertexBuffer.TangentKind);\r\n }\r\n\r\n PrepareAttributesForInstances(attribs, defines);\r\n\r\n // Legacy browser patch\r\n const shaderName = \"fluentButton\";\r\n const join = defines.toString();\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"viewProjection\",\r\n \"cameraPosition\",\r\n\r\n \"_Edge_Width_\",\r\n \"_Edge_Color_\",\r\n \"_Relative_Width_\",\r\n \"_Proximity_Max_Intensity_\",\r\n \"_Proximity_Far_Distance_\",\r\n \"_Proximity_Near_Radius_\",\r\n \"_Proximity_Anisotropy_\",\r\n \"_Selection_Fuzz_\",\r\n \"_Selected_\",\r\n \"_Selection_Fade_\",\r\n \"_Selection_Fade_Size_\",\r\n \"_Selected_Distance_\",\r\n \"_Selected_Fade_Length_\",\r\n \"_Blob_Enable_\",\r\n \"_Blob_Position_\",\r\n \"_Blob_Intensity_\",\r\n \"_Blob_Near_Size_\",\r\n \"_Blob_Far_Size_\",\r\n \"_Blob_Near_Distance_\",\r\n \"_Blob_Far_Distance_\",\r\n \"_Blob_Fade_Length_\",\r\n \"_Blob_Inner_Fade_\",\r\n \"_Blob_Pulse_\",\r\n \"_Blob_Fade_\",\r\n \"_Blob_Texture_\",\r\n \"_Blob_Enable_2_\",\r\n \"_Blob_Position_2_\",\r\n \"_Blob_Near_Size_2_\",\r\n \"_Blob_Inner_Fade_2_\",\r\n \"_Blob_Pulse_2_\",\r\n \"_Blob_Fade_2_\",\r\n \"_Active_Face_Dir_\",\r\n \"_Active_Face_Up_\",\r\n \"_Enable_Fade_\",\r\n \"_Fade_Width_\",\r\n \"_Smooth_Active_Face_\",\r\n \"_Show_Frame_\",\r\n \"_Use_Blob_Texture_\",\r\n\r\n \"Use_Global_Left_Index\",\r\n \"Use_Global_Right_Index\",\r\n \"Global_Left_Index_Tip_Position\",\r\n \"Global_Right_Index_Tip_Position\",\r\n \"Global_Left_Thumb_Tip_Position\",\r\n \"Global_Right_Thumb_Tip_Position\",\r\n \"Global_Left_Index_Tip_Proximity\",\r\n \"Global_Right_Index_Tip_Proximity\",\r\n ];\r\n const samplers: string[] = [\"_Blob_Texture_\"];\r\n const uniformBuffers: string[] = [];\r\n\r\n PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 4,\r\n shaderLanguage: this._shaderLanguage,\r\n });\r\n\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: fallbacks,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 4 },\r\n shaderLanguage: this._shaderLanguage,\r\n extraInitializationsAsync: this._shadersLoaded\r\n ? undefined\r\n : async () => {\r\n if (this.shaderLanguage === ShaderLanguage.WGSL) {\r\n await Promise.all([import(\"./wgsl/fluentButton.vertex\"), import(\"./wgsl/fluentButton.fragment\")]);\r\n }\r\n\r\n this._shadersLoaded = true;\r\n },\r\n },\r\n engine\r\n ),\r\n defines,\r\n this._materialContext\r\n );\r\n }\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n drawWrapper._wasPreviouslyReady = true;\r\n\r\n return true;\r\n }\r\n\r\n public override bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <FluentButtonMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n this._activeEffect.setVector3(\"cameraPosition\", scene.activeCamera!.position);\r\n\r\n // \"Blob Texture\"\r\n this._activeEffect.setTexture(\"_Blob_Texture_\", this._blobTexture);\r\n\r\n // \"Wireframe\"\r\n this._activeEffect.setFloat(\"_Edge_Width_\", this.edgeWidth);\r\n this._activeEffect.setColor4(\"_Edge_Color_\", new Color3(this.edgeColor.r, this.edgeColor.g, this.edgeColor.b), this.edgeColor.a);\r\n //define _Relative_Width_ true;\r\n\r\n // \"Proximity\"\r\n this._activeEffect.setFloat(\"_Proximity_Max_Intensity_\", this.proximityMaxIntensity);\r\n this._activeEffect.setFloat(\"_Proximity_Far_Distance_\", this.proximityFarDistance);\r\n this._activeEffect.setFloat(\"_Proximity_Near_Radius_\", this.proximityNearRadius);\r\n this._activeEffect.setFloat(\"_Proximity_Anisotropy_\", this.proximityAnisotropy);\r\n\r\n // \"Selection\"\r\n this._activeEffect.setFloat(\"_Selection_Fuzz_\", this.selectionFuzz);\r\n this._activeEffect.setFloat(\"_Selected_\", this.selected);\r\n this._activeEffect.setFloat(\"_Selection_Fade_\", this.selectionFade);\r\n this._activeEffect.setFloat(\"_Selection_Fade_Size_\", this.selectionFadeSize);\r\n this._activeEffect.setFloat(\"_Selected_Distance_\", this.selectedDistance);\r\n this._activeEffect.setFloat(\"_Selected_Fade_Length_\", this.selectedFadeLength);\r\n\r\n // \"Blob\"\r\n this._activeEffect.setFloat(\"_Blob_Enable_\", this.leftBlobEnable ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Blob_Intensity_\", this.blobIntensity);\r\n this._activeEffect.setFloat(\"_Blob_Near_Size_\", this.leftBlobNearSize);\r\n this._activeEffect.setFloat(\"_Blob_Far_Size_\", this.blobFarSize);\r\n this._activeEffect.setFloat(\"_Blob_Near_Distance_\", this.blobNearDistance);\r\n this._activeEffect.setFloat(\"_Blob_Far_Distance_\", this.blobFarDistance);\r\n this._activeEffect.setFloat(\"_Blob_Fade_Length_\", this.blobFadeLength);\r\n this._activeEffect.setFloat(\"_Blob_Inner_Fade_\", this.leftBlobInnerFade);\r\n this._activeEffect.setFloat(\"_Blob_Pulse_\", this.leftBlobPulse);\r\n this._activeEffect.setFloat(\"_Blob_Fade_\", this.leftBlobFade);\r\n\r\n // \"Blob 2\"\r\n this._activeEffect.setFloat(\"_Blob_Enable_2_\", this.rightBlobEnable ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Blob_Near_Size_2_\", this.rightBlobNearSize);\r\n this._activeEffect.setFloat(\"_Blob_Inner_Fade_2_\", this.rightBlobInnerFade);\r\n this._activeEffect.setFloat(\"_Blob_Pulse_2_\", this.rightBlobPulse);\r\n this._activeEffect.setFloat(\"_Blob_Fade_2_\", this.rightBlobFade);\r\n\r\n // \"Active Face\"\r\n this._activeEffect.setVector3(\"_Active_Face_Dir_\", this.activeFaceDir);\r\n this._activeEffect.setVector3(\"_Active_Face_Up_\", this.activeFaceUp);\r\n\r\n // \"Hololens Edge Fade\"\r\n //define _Enable_Fade_ true;\r\n this._activeEffect.setFloat(\"_Fade_Width_\", this.fadeWidth);\r\n this._activeEffect.setFloat(\"_Smooth_Active_Face_\", this.smoothActiveFace ? 1.0 : 0.0);\r\n\r\n // \"Debug\"\r\n this._activeEffect.setFloat(\"_Show_Frame_\", this.showFrame ? 1.0 : 0.0);\r\n this._activeEffect.setFloat(\"_Use_Blob_Texture_\", this.useBlobTexture ? 1.0 : 0.0);\r\n\r\n // Global inputs\r\n this._activeEffect.setFloat(\"Use_Global_Left_Index\", 1.0);\r\n this._activeEffect.setFloat(\"Use_Global_Right_Index\", 1.0);\r\n\r\n this._activeEffect.setVector4(\r\n \"Global_Left_Index_Tip_Position\",\r\n new Vector4(this.globalLeftIndexTipPosition.x, this.globalLeftIndexTipPosition.y, this.globalLeftIndexTipPosition.z, 1.0)\r\n );\r\n this._activeEffect.setVector4(\r\n \"Global_Right_Index_Tip_Position\",\r\n new Vector4(this.globalRightIndexTipPosition.x, this.globalRightIndexTipPosition.y, this.globalRightIndexTipPosition.z, 1.0)\r\n );\r\n\r\n this._afterBind(mesh, this._activeEffect, subMesh);\r\n }\r\n\r\n /**\r\n * Get the list of animatables in the material.\r\n * @returns the list of animatables object used in the material\r\n */\r\n public override getAnimatables(): IAnimatable[] {\r\n return [];\r\n }\r\n\r\n /**\r\n * Disposes the material.\r\n * @param forceDisposeEffect specifies if effects should be forcefully disposed\r\n */\r\n public override dispose(forceDisposeEffect?: boolean): void {\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public override clone(name: string): FluentButtonMaterial {\r\n return SerializationHelper.Clone(() => new FluentButtonMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public override serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.FluentButtonMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public override getClassName(): string {\r\n return \"FluentButtonMaterial\";\r\n }\r\n\r\n // Statics\r\n /**\r\n * Creates a fluent button material from parsed material data.\r\n * @param source defines the JSON representation of the material\r\n * @param scene defines the hosting scene\r\n * @param rootUrl defines the root URL to use to load textures and relative dependencies\r\n * @returns a new fluent button material\r\n */\r\n public static override Parse(source: any, scene: Scene, rootUrl: string): FluentButtonMaterial {\r\n return SerializationHelper.Parse(() => new FluentButtonMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the FluentButtonMaterial class with the type store for serialization support.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterFluentButtonMaterial(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GUI.FluentButtonMaterial\", FluentButtonMaterial);\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ /** Pure barrel — re-exports only side-effect-free modules */
2
+ export * from "./fluentButtonMaterial.pure.js";
@@ -0,0 +1,3 @@
1
+ /** Pure barrel — re-exports only side-effect-free modules */
2
+ export * from "./fluentButtonMaterial.pure.js";
3
+ //# sourceMappingURL=pure.js.map