@babylonjs/gui 5.0.0-rc.5 → 5.0.0-rc.9

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 (203) hide show
  1. package/2D/adtInstrumentation.d.ts +52 -52
  2. package/2D/adtInstrumentation.js +126 -126
  3. package/2D/advancedDynamicTexture.d.ts +448 -448
  4. package/2D/advancedDynamicTexture.js +1318 -1318
  5. package/2D/controls/button.d.ts +135 -135
  6. package/2D/controls/button.js +276 -276
  7. package/2D/controls/checkbox.d.ts +59 -59
  8. package/2D/controls/checkbox.js +188 -188
  9. package/2D/controls/colorpicker.d.ts +103 -103
  10. package/2D/controls/colorpicker.js +1417 -1417
  11. package/2D/controls/container.d.ts +175 -175
  12. package/2D/controls/container.js +570 -570
  13. package/2D/controls/control.d.ts +866 -866
  14. package/2D/controls/control.js +2433 -2433
  15. package/2D/controls/displayGrid.d.ts +53 -53
  16. package/2D/controls/displayGrid.js +245 -245
  17. package/2D/controls/ellipse.d.ts +21 -21
  18. package/2D/controls/ellipse.js +85 -85
  19. package/2D/controls/focusableButton.d.ts +59 -59
  20. package/2D/controls/focusableButton.js +99 -99
  21. package/2D/controls/focusableControl.d.ts +34 -34
  22. package/2D/controls/focusableControl.js +1 -1
  23. package/2D/controls/grid.d.ts +139 -139
  24. package/2D/controls/grid.js +529 -529
  25. package/2D/controls/image.d.ts +204 -204
  26. package/2D/controls/image.js +887 -887
  27. package/2D/controls/index.d.ts +29 -29
  28. package/2D/controls/index.js +29 -29
  29. package/2D/controls/inputPassword.d.ts +8 -8
  30. package/2D/controls/inputPassword.js +25 -25
  31. package/2D/controls/inputText.d.ts +201 -201
  32. package/2D/controls/inputText.js +1119 -1119
  33. package/2D/controls/line.d.ts +66 -66
  34. package/2D/controls/line.js +271 -271
  35. package/2D/controls/multiLine.d.ts +75 -75
  36. package/2D/controls/multiLine.js +262 -262
  37. package/2D/controls/radioButton.d.ts +49 -49
  38. package/2D/controls/radioButton.js +205 -205
  39. package/2D/controls/rectangle.d.ts +29 -29
  40. package/2D/controls/rectangle.js +150 -150
  41. package/2D/controls/scrollViewers/scrollViewer.d.ts +182 -182
  42. package/2D/controls/scrollViewers/scrollViewer.js +677 -677
  43. package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +57 -57
  44. package/2D/controls/scrollViewers/scrollViewerWindow.js +278 -278
  45. package/2D/controls/selector.d.ts +263 -263
  46. package/2D/controls/selector.js +692 -692
  47. package/2D/controls/sliders/baseSlider.d.ts +82 -82
  48. package/2D/controls/sliders/baseSlider.js +347 -347
  49. package/2D/controls/sliders/imageBasedSlider.d.ts +49 -49
  50. package/2D/controls/sliders/imageBasedSlider.js +192 -192
  51. package/2D/controls/sliders/imageScrollBar.d.ts +65 -65
  52. package/2D/controls/sliders/imageScrollBar.js +263 -263
  53. package/2D/controls/sliders/scrollBar.d.ts +38 -38
  54. package/2D/controls/sliders/scrollBar.js +143 -143
  55. package/2D/controls/sliders/slider.d.ts +35 -35
  56. package/2D/controls/sliders/slider.js +271 -271
  57. package/2D/controls/stackPanel.d.ts +64 -64
  58. package/2D/controls/stackPanel.js +246 -246
  59. package/2D/controls/statics.d.ts +6 -6
  60. package/2D/controls/statics.js +49 -49
  61. package/2D/controls/textBlock.d.ts +175 -175
  62. package/2D/controls/textBlock.js +603 -603
  63. package/2D/controls/textWrapper.d.ts +13 -13
  64. package/2D/controls/textWrapper.js +101 -101
  65. package/2D/controls/toggleButton.d.ts +117 -117
  66. package/2D/controls/toggleButton.js +268 -268
  67. package/2D/controls/virtualKeyboard.d.ts +96 -96
  68. package/2D/controls/virtualKeyboard.js +256 -256
  69. package/2D/index.d.ts +9 -9
  70. package/2D/index.js +9 -9
  71. package/2D/math2D.d.ts +117 -117
  72. package/2D/math2D.js +221 -221
  73. package/2D/measure.d.ts +77 -77
  74. package/2D/measure.js +139 -139
  75. package/2D/multiLinePoint.d.ts +47 -47
  76. package/2D/multiLinePoint.js +127 -127
  77. package/2D/style.d.ts +46 -46
  78. package/2D/style.js +97 -97
  79. package/2D/valueAndUnit.d.ts +89 -89
  80. package/2D/valueAndUnit.js +226 -226
  81. package/2D/xmlLoader.d.ts +60 -60
  82. package/2D/xmlLoader.js +348 -348
  83. package/3D/behaviors/defaultBehavior.d.ts +73 -73
  84. package/3D/behaviors/defaultBehavior.js +121 -121
  85. package/3D/controls/abstractButton3D.d.ts +15 -15
  86. package/3D/controls/abstractButton3D.js +25 -25
  87. package/3D/controls/button3D.d.ts +30 -30
  88. package/3D/controls/button3D.js +93 -93
  89. package/3D/controls/container3D.d.ts +72 -72
  90. package/3D/controls/container3D.js +139 -139
  91. package/3D/controls/contentDisplay3D.d.ts +30 -30
  92. package/3D/controls/contentDisplay3D.js +79 -79
  93. package/3D/controls/control3D.d.ts +201 -201
  94. package/3D/controls/control3D.js +445 -445
  95. package/3D/controls/cylinderPanel.d.ts +17 -17
  96. package/3D/controls/cylinderPanel.js +66 -66
  97. package/3D/controls/handMenu.d.ts +28 -28
  98. package/3D/controls/handMenu.js +47 -47
  99. package/3D/controls/holographicBackplate.d.ts +49 -49
  100. package/3D/controls/holographicBackplate.js +120 -120
  101. package/3D/controls/holographicButton.d.ts +84 -84
  102. package/3D/controls/holographicButton.js +339 -339
  103. package/3D/controls/holographicSlate.d.ts +131 -131
  104. package/3D/controls/holographicSlate.js +431 -431
  105. package/3D/controls/index.d.ts +21 -21
  106. package/3D/controls/index.js +21 -21
  107. package/3D/controls/meshButton3D.d.ts +21 -21
  108. package/3D/controls/meshButton3D.js +62 -62
  109. package/3D/controls/nearMenu.d.ts +44 -44
  110. package/3D/controls/nearMenu.js +114 -114
  111. package/3D/controls/planePanel.d.ts +9 -9
  112. package/3D/controls/planePanel.js +36 -36
  113. package/3D/controls/scatterPanel.d.ts +18 -18
  114. package/3D/controls/scatterPanel.js +108 -108
  115. package/3D/controls/slider3D.d.ts +81 -81
  116. package/3D/controls/slider3D.js +268 -268
  117. package/3D/controls/spherePanel.d.ts +17 -17
  118. package/3D/controls/spherePanel.js +67 -67
  119. package/3D/controls/stackPanel3D.d.ts +22 -22
  120. package/3D/controls/stackPanel3D.js +107 -107
  121. package/3D/controls/touchButton3D.d.ts +80 -80
  122. package/3D/controls/touchButton3D.js +233 -233
  123. package/3D/controls/touchHolographicButton.d.ts +110 -110
  124. package/3D/controls/touchHolographicButton.js +445 -445
  125. package/3D/controls/touchHolographicMenu.d.ts +61 -61
  126. package/3D/controls/touchHolographicMenu.js +149 -149
  127. package/3D/controls/touchMeshButton3D.d.ts +21 -21
  128. package/3D/controls/touchMeshButton3D.js +62 -62
  129. package/3D/controls/volumeBasedPanel.d.ts +53 -53
  130. package/3D/controls/volumeBasedPanel.js +174 -174
  131. package/3D/gizmos/gizmoHandle.d.ts +108 -108
  132. package/3D/gizmos/gizmoHandle.js +209 -209
  133. package/3D/gizmos/index.d.ts +2 -2
  134. package/3D/gizmos/index.js +2 -2
  135. package/3D/gizmos/slateGizmo.d.ts +57 -57
  136. package/3D/gizmos/slateGizmo.js +369 -369
  137. package/3D/gui3DManager.d.ts +94 -94
  138. package/3D/gui3DManager.js +257 -257
  139. package/3D/index.d.ts +5 -5
  140. package/3D/index.js +5 -5
  141. package/3D/materials/fluent/fluentMaterial.d.ts +90 -90
  142. package/3D/materials/fluent/fluentMaterial.js +292 -292
  143. package/3D/materials/fluent/index.d.ts +1 -1
  144. package/3D/materials/fluent/index.js +1 -1
  145. package/3D/materials/fluent/shaders/fluent.fragment.d.ts +5 -5
  146. package/3D/materials/fluent/shaders/fluent.fragment.js +8 -8
  147. package/3D/materials/fluent/shaders/fluent.vertex.d.ts +5 -5
  148. package/3D/materials/fluent/shaders/fluent.vertex.js +8 -8
  149. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +154 -154
  150. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +469 -469
  151. package/3D/materials/fluentBackplate/index.d.ts +1 -1
  152. package/3D/materials/fluentBackplate/index.js +1 -1
  153. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -5
  154. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +8 -8
  155. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -5
  156. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +8 -8
  157. package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +189 -189
  158. package/3D/materials/fluentButton/fluentButtonMaterial.js +539 -539
  159. package/3D/materials/fluentButton/index.d.ts +1 -1
  160. package/3D/materials/fluentButton/index.js +1 -1
  161. package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -5
  162. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +8 -8
  163. package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -5
  164. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +8 -8
  165. package/3D/materials/fluentMaterial.d.ts +4 -4
  166. package/3D/materials/fluentMaterial.js +4 -4
  167. package/3D/materials/handle/handleMaterial.d.ts +68 -68
  168. package/3D/materials/handle/handleMaterial.js +126 -126
  169. package/3D/materials/handle/index.d.ts +1 -1
  170. package/3D/materials/handle/index.js +1 -1
  171. package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -5
  172. package/3D/materials/handle/shaders/handle.fragment.js +8 -8
  173. package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -5
  174. package/3D/materials/handle/shaders/handle.vertex.js +8 -8
  175. package/3D/materials/index.d.ts +5 -5
  176. package/3D/materials/index.js +5 -5
  177. package/3D/materials/mrdl/index.d.ts +3 -3
  178. package/3D/materials/mrdl/index.js +3 -3
  179. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +147 -147
  180. package/3D/materials/mrdl/mrdlBackplateMaterial.js +436 -436
  181. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +333 -333
  182. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +851 -851
  183. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +333 -333
  184. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +851 -851
  185. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -5
  186. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +8 -8
  187. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -5
  188. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +8 -8
  189. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -5
  190. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +8 -8
  191. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -5
  192. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +8 -8
  193. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -5
  194. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +8 -8
  195. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -5
  196. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +8 -8
  197. package/3D/vector3WithInfo.d.ts +16 -16
  198. package/3D/vector3WithInfo.js +23 -23
  199. package/index.d.ts +2 -2
  200. package/index.js +2 -2
  201. package/legacy/legacy.d.ts +1 -1
  202. package/legacy/legacy.js +13 -13
  203. package/package.json +2 -2
@@ -1,540 +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 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);
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);
540
540
  //# sourceMappingURL=fluentButtonMaterial.js.map