@babylonjs/gui 5.19.0 → 5.22.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 (180) hide show
  1. package/2D/adtInstrumentation.js +70 -90
  2. package/2D/adtInstrumentation.js.map +1 -1
  3. package/2D/advancedDynamicTexture.d.ts +8 -0
  4. package/2D/advancedDynamicTexture.js +559 -620
  5. package/2D/advancedDynamicTexture.js.map +1 -1
  6. package/2D/controls/button.js +76 -90
  7. package/2D/controls/button.js.map +1 -1
  8. package/2D/controls/checkbox.js +86 -106
  9. package/2D/controls/checkbox.js.map +1 -1
  10. package/2D/controls/colorpicker.js +395 -415
  11. package/2D/controls/colorpicker.js.map +1 -1
  12. package/2D/controls/container.js +187 -230
  13. package/2D/controls/container.js.map +1 -1
  14. package/2D/controls/control.js +1073 -1353
  15. package/2D/controls/control.js.map +1 -1
  16. package/2D/controls/displayGrid.js +152 -196
  17. package/2D/controls/displayGrid.js.map +1 -1
  18. package/2D/controls/ellipse.js +32 -40
  19. package/2D/controls/ellipse.js.map +1 -1
  20. package/2D/controls/focusableButton.js +30 -35
  21. package/2D/controls/focusableButton.js.map +1 -1
  22. package/2D/controls/grid.js +172 -212
  23. package/2D/controls/grid.js.map +1 -1
  24. package/2D/controls/image.js +489 -592
  25. package/2D/controls/image.js.map +1 -1
  26. package/2D/controls/inputPassword.js +9 -16
  27. package/2D/controls/inputPassword.js.map +1 -1
  28. package/2D/controls/inputText.js +380 -467
  29. package/2D/controls/inputText.js.map +1 -1
  30. package/2D/controls/inputTextArea.js +234 -273
  31. package/2D/controls/inputTextArea.js.map +1 -1
  32. package/2D/controls/line.js +147 -198
  33. package/2D/controls/line.js.map +1 -1
  34. package/2D/controls/multiLine.js +87 -113
  35. package/2D/controls/multiLine.js.map +1 -1
  36. package/2D/controls/radioButton.js +106 -127
  37. package/2D/controls/radioButton.js.map +1 -1
  38. package/2D/controls/rectangle.js +64 -76
  39. package/2D/controls/rectangle.js.map +1 -1
  40. package/2D/controls/scrollViewers/scrollViewer.js +439 -543
  41. package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
  42. package/2D/controls/scrollViewers/scrollViewerWindow.js +99 -118
  43. package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
  44. package/2D/controls/selector.js +241 -329
  45. package/2D/controls/selector.js.map +1 -1
  46. package/2D/controls/sliders/baseSlider.js +182 -230
  47. package/2D/controls/sliders/baseSlider.js.map +1 -1
  48. package/2D/controls/sliders/imageBasedSlider.js +86 -109
  49. package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
  50. package/2D/controls/sliders/imageScrollBar.d.ts +4 -0
  51. package/2D/controls/sliders/imageScrollBar.js +149 -163
  52. package/2D/controls/sliders/imageScrollBar.js.map +1 -1
  53. package/2D/controls/sliders/scrollBar.d.ts +4 -0
  54. package/2D/controls/sliders/scrollBar.js +65 -65
  55. package/2D/controls/sliders/scrollBar.js.map +1 -1
  56. package/2D/controls/sliders/slider.js +91 -115
  57. package/2D/controls/sliders/slider.js.map +1 -1
  58. package/2D/controls/stackPanel.js +114 -135
  59. package/2D/controls/stackPanel.js.map +1 -1
  60. package/2D/controls/statics.js +5 -5
  61. package/2D/controls/statics.js.map +1 -1
  62. package/2D/controls/textBlock.js +322 -384
  63. package/2D/controls/textBlock.js.map +1 -1
  64. package/2D/controls/textWrapper.js +27 -41
  65. package/2D/controls/textWrapper.js.map +1 -1
  66. package/2D/controls/toggleButton.js +105 -121
  67. package/2D/controls/toggleButton.js.map +1 -1
  68. package/2D/controls/virtualKeyboard.js +101 -123
  69. package/2D/controls/virtualKeyboard.js.map +1 -1
  70. package/2D/math2D.js +62 -70
  71. package/2D/math2D.js.map +1 -1
  72. package/2D/measure.js +30 -32
  73. package/2D/measure.js.map +1 -1
  74. package/2D/multiLinePoint.js +71 -89
  75. package/2D/multiLinePoint.js.map +1 -1
  76. package/2D/style.js +55 -73
  77. package/2D/style.js.map +1 -1
  78. package/2D/valueAndUnit.js +71 -104
  79. package/2D/valueAndUnit.js.map +1 -1
  80. package/2D/xmlLoader.js +70 -84
  81. package/2D/xmlLoader.js.map +1 -1
  82. package/3D/behaviors/defaultBehavior.js +40 -59
  83. package/3D/behaviors/defaultBehavior.js.map +1 -1
  84. package/3D/controls/abstractButton3D.js +8 -12
  85. package/3D/controls/abstractButton3D.js.map +1 -1
  86. package/3D/controls/button3D.js +30 -35
  87. package/3D/controls/button3D.js.map +1 -1
  88. package/3D/controls/container3D.js +57 -71
  89. package/3D/controls/container3D.js.map +1 -1
  90. package/3D/controls/contentDisplay3D.js +47 -60
  91. package/3D/controls/contentDisplay3D.js.map +1 -1
  92. package/3D/controls/control3D.js +123 -158
  93. package/3D/controls/control3D.js.map +1 -1
  94. package/3D/controls/cylinderPanel.js +28 -38
  95. package/3D/controls/cylinderPanel.js.map +1 -1
  96. package/3D/controls/handMenu.js +20 -29
  97. package/3D/controls/handMenu.js.map +1 -1
  98. package/3D/controls/holographicBackplate.js +52 -72
  99. package/3D/controls/holographicBackplate.js.map +1 -1
  100. package/3D/controls/holographicButton.js +160 -200
  101. package/3D/controls/holographicButton.js.map +1 -1
  102. package/3D/controls/holographicSlate.js +176 -206
  103. package/3D/controls/holographicSlate.js.map +1 -1
  104. package/3D/controls/meshButton3D.js +24 -30
  105. package/3D/controls/meshButton3D.js.map +1 -1
  106. package/3D/controls/nearMenu.js +57 -71
  107. package/3D/controls/nearMenu.js.map +1 -1
  108. package/3D/controls/planePanel.js +6 -13
  109. package/3D/controls/planePanel.js.map +1 -1
  110. package/3D/controls/scatterPanel.js +43 -54
  111. package/3D/controls/scatterPanel.js.map +1 -1
  112. package/3D/controls/slider3D.js +168 -222
  113. package/3D/controls/slider3D.js.map +1 -1
  114. package/3D/controls/spherePanel.js +29 -39
  115. package/3D/controls/spherePanel.js.map +1 -1
  116. package/3D/controls/stackPanel3D.js +36 -49
  117. package/3D/controls/stackPanel3D.js.map +1 -1
  118. package/3D/controls/touchButton3D.js +126 -154
  119. package/3D/controls/touchButton3D.js.map +1 -1
  120. package/3D/controls/touchHolographicButton.js +223 -272
  121. package/3D/controls/touchHolographicButton.js.map +1 -1
  122. package/3D/controls/touchHolographicMenu.js +55 -66
  123. package/3D/controls/touchHolographicMenu.js.map +1 -1
  124. package/3D/controls/touchMeshButton3D.js +24 -30
  125. package/3D/controls/touchMeshButton3D.js.map +1 -1
  126. package/3D/controls/volumeBasedPanel.js +85 -107
  127. package/3D/controls/volumeBasedPanel.js.map +1 -1
  128. package/3D/gizmos/gizmoHandle.js +68 -103
  129. package/3D/gizmos/gizmoHandle.js.map +1 -1
  130. package/3D/gizmos/slateGizmo.js +165 -182
  131. package/3D/gizmos/slateGizmo.js.map +1 -1
  132. package/3D/gui3DManager.js +76 -101
  133. package/3D/gui3DManager.js.map +1 -1
  134. package/3D/materials/fluent/fluentMaterial.js +110 -119
  135. package/3D/materials/fluent/fluentMaterial.js.map +1 -1
  136. package/3D/materials/fluent/shaders/fluent.fragment.js +20 -3
  137. package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -1
  138. package/3D/materials/fluent/shaders/fluent.vertex.js +11 -3
  139. package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -1
  140. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +168 -177
  141. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -1
  142. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +9 -3
  143. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -1
  144. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +15 -3
  145. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -1
  146. package/3D/materials/fluentButton/fluentButtonMaterial.js +205 -213
  147. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -1
  148. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +6 -3
  149. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -1
  150. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +6 -3
  151. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -1
  152. package/3D/materials/handle/handleMaterial.js +56 -69
  153. package/3D/materials/handle/handleMaterial.js.map +1 -1
  154. package/3D/materials/handle/shaders/handle.fragment.js +3 -3
  155. package/3D/materials/handle/shaders/handle.fragment.js.map +1 -1
  156. package/3D/materials/handle/shaders/handle.vertex.js +3 -3
  157. package/3D/materials/handle/shaders/handle.vertex.js.map +1 -1
  158. package/3D/materials/mrdl/mrdlBackplateMaterial.js +158 -166
  159. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -1
  160. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +322 -330
  161. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -1
  162. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +322 -330
  163. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -1
  164. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +9 -3
  165. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -1
  166. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +6 -3
  167. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -1
  168. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +24 -3
  169. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -1
  170. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +12 -3
  171. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -1
  172. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +24 -3
  173. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -1
  174. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +12 -3
  175. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -1
  176. package/3D/vector3WithInfo.js +6 -12
  177. package/3D/vector3WithInfo.js.map +1 -1
  178. package/legacy/legacy.js +1 -1
  179. package/legacy/legacy.js.map +1 -1
  180. package/package.json +2 -5
@@ -1,4 +1,3 @@
1
- import { __extends } from "tslib";
2
1
  import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
3
2
  import { StandardMaterial } from "@babylonjs/core/Materials/standardMaterial.js";
4
3
  import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
@@ -21,63 +20,60 @@ import { Scalar } from "@babylonjs/core/Maths/math.scalar.js";
21
20
  * Class used to create a holographic button in 3D
22
21
  * @since 5.0.0
23
22
  */
24
- var TouchHolographicButton = /** @class */ (function (_super) {
25
- __extends(TouchHolographicButton, _super);
23
+ export class TouchHolographicButton extends TouchButton3D {
26
24
  /**
27
25
  * Creates a new button
28
26
  * @param name defines the control name
29
27
  * @param shareMaterials
30
28
  */
31
- function TouchHolographicButton(name, shareMaterials) {
32
- if (shareMaterials === void 0) { shareMaterials = true; }
33
- var _this = _super.call(this, name) || this;
34
- _this._shareMaterials = true;
35
- _this._isBackplateVisible = true;
36
- _this._frontPlateDepth = 0.5;
37
- _this._backPlateDepth = 0.04;
38
- _this._backplateColor = new Color3(0.08, 0.15, 0.55);
39
- _this._backplateToggledColor = new Color3(0.25, 0.4, 0.95);
40
- _this._shareMaterials = shareMaterials;
41
- _this.pointerEnterAnimation = function () {
42
- _this._frontMaterial.leftBlobEnable = true;
43
- _this._frontMaterial.rightBlobEnable = true;
29
+ constructor(name, shareMaterials = true) {
30
+ super(name);
31
+ this._shareMaterials = true;
32
+ this._isBackplateVisible = true;
33
+ this._frontPlateDepth = 0.5;
34
+ this._backPlateDepth = 0.04;
35
+ this._backplateColor = new Color3(0.08, 0.15, 0.55);
36
+ this._backplateToggledColor = new Color3(0.25, 0.4, 0.95);
37
+ this._shareMaterials = shareMaterials;
38
+ this.pointerEnterAnimation = () => {
39
+ this._frontMaterial.leftBlobEnable = true;
40
+ this._frontMaterial.rightBlobEnable = true;
44
41
  };
45
- _this.pointerOutAnimation = function () {
46
- _this._frontMaterial.leftBlobEnable = false;
47
- _this._frontMaterial.rightBlobEnable = false;
42
+ this.pointerOutAnimation = () => {
43
+ this._frontMaterial.leftBlobEnable = false;
44
+ this._frontMaterial.rightBlobEnable = false;
48
45
  };
49
- _this.pointerDownAnimation = function () {
50
- if (_this._frontPlate && !_this.isActiveNearInteraction) {
51
- _this._frontPlate.scaling.z = _this._frontPlateDepth * 0.2;
52
- _this._frontPlate.position = Vector3.Forward(_this._frontPlate._scene.useRightHandedSystem).scale((_this._frontPlateDepth - 0.2 * _this._frontPlateDepth) / 2);
53
- _this._textPlate.position = Vector3.Forward(_this._textPlate._scene.useRightHandedSystem).scale(-(_this._backPlateDepth + 0.2 * _this._frontPlateDepth) / 2);
46
+ this.pointerDownAnimation = () => {
47
+ if (this._frontPlate && !this.isActiveNearInteraction) {
48
+ this._frontPlate.scaling.z = this._frontPlateDepth * 0.2;
49
+ this._frontPlate.position = Vector3.Forward(this._frontPlate._scene.useRightHandedSystem).scale((this._frontPlateDepth - 0.2 * this._frontPlateDepth) / 2);
50
+ this._textPlate.position = Vector3.Forward(this._textPlate._scene.useRightHandedSystem).scale(-(this._backPlateDepth + 0.2 * this._frontPlateDepth) / 2);
54
51
  }
55
52
  };
56
- _this.pointerUpAnimation = function () {
57
- if (_this._frontPlate) {
58
- _this._frontPlate.scaling.z = _this._frontPlateDepth;
59
- _this._frontPlate.position = Vector3.Forward(_this._frontPlate._scene.useRightHandedSystem).scale((_this._frontPlateDepth - _this._frontPlateDepth) / 2);
60
- _this._textPlate.position = Vector3.Forward(_this._textPlate._scene.useRightHandedSystem).scale(-(_this._backPlateDepth + _this._frontPlateDepth) / 2);
53
+ this.pointerUpAnimation = () => {
54
+ if (this._frontPlate) {
55
+ this._frontPlate.scaling.z = this._frontPlateDepth;
56
+ this._frontPlate.position = Vector3.Forward(this._frontPlate._scene.useRightHandedSystem).scale((this._frontPlateDepth - this._frontPlateDepth) / 2);
57
+ this._textPlate.position = Vector3.Forward(this._textPlate._scene.useRightHandedSystem).scale(-(this._backPlateDepth + this._frontPlateDepth) / 2);
61
58
  }
62
59
  };
63
- _this.onPointerMoveObservable.add(function (position) {
64
- if (_this._frontPlate && _this.isActiveNearInteraction) {
65
- var scale = Vector3.Zero();
66
- if (_this._backPlate.getWorldMatrix().decompose(scale, undefined, undefined)) {
67
- var interactionHeight = _this._getInteractionHeight(position, _this._backPlate.getAbsolutePosition()) / scale.z;
68
- interactionHeight = Scalar.Clamp(interactionHeight - _this._backPlateDepth / 2, 0.2 * _this._frontPlateDepth, _this._frontPlateDepth);
69
- _this._frontPlate.scaling.z = interactionHeight;
70
- _this._frontPlate.position = Vector3.Forward(_this._frontPlate._scene.useRightHandedSystem).scale((_this._frontPlateDepth - interactionHeight) / 2);
71
- _this._textPlate.position = Vector3.Forward(_this._textPlate._scene.useRightHandedSystem).scale(-(_this._backPlateDepth + interactionHeight) / 2);
60
+ this.onPointerMoveObservable.add((position) => {
61
+ if (this._frontPlate && this.isActiveNearInteraction) {
62
+ const scale = Vector3.Zero();
63
+ if (this._backPlate.getWorldMatrix().decompose(scale, undefined, undefined)) {
64
+ let interactionHeight = this._getInteractionHeight(position, this._backPlate.getAbsolutePosition()) / scale.z;
65
+ interactionHeight = Scalar.Clamp(interactionHeight - this._backPlateDepth / 2, 0.2 * this._frontPlateDepth, this._frontPlateDepth);
66
+ this._frontPlate.scaling.z = interactionHeight;
67
+ this._frontPlate.position = Vector3.Forward(this._frontPlate._scene.useRightHandedSystem).scale((this._frontPlateDepth - interactionHeight) / 2);
68
+ this._textPlate.position = Vector3.Forward(this._textPlate._scene.useRightHandedSystem).scale(-(this._backPlateDepth + interactionHeight) / 2);
72
69
  }
73
70
  }
74
71
  });
75
- _this._pointerHoverObserver = _this.onPointerMoveObservable.add(function (hoverPosition) {
76
- _this._frontMaterial.globalLeftIndexTipPosition = hoverPosition;
72
+ this._pointerHoverObserver = this.onPointerMoveObservable.add((hoverPosition) => {
73
+ this._frontMaterial.globalLeftIndexTipPosition = hoverPosition;
77
74
  });
78
- return _this;
79
75
  }
80
- TouchHolographicButton.prototype._disposeTooltip = function () {
76
+ _disposeTooltip() {
81
77
  this._tooltipFade = null;
82
78
  if (this._tooltipTextBlock) {
83
79
  this._tooltipTextBlock.dispose();
@@ -90,197 +86,156 @@ var TouchHolographicButton = /** @class */ (function (_super) {
90
86
  }
91
87
  this.onPointerEnterObservable.remove(this._tooltipHoverObserver);
92
88
  this.onPointerOutObservable.remove(this._tooltipOutObserver);
93
- };
94
- Object.defineProperty(TouchHolographicButton.prototype, "renderingGroupId", {
95
- get: function () {
96
- return this._backPlate.renderingGroupId;
97
- },
98
- /**
99
- * Rendering ground id of all the mesh in the button
100
- */
101
- set: function (id) {
102
- this._backPlate.renderingGroupId = id;
103
- this._textPlate.renderingGroupId = id;
104
- this._frontPlate.renderingGroupId = id;
105
- if (this._tooltipMesh) {
106
- this._tooltipMesh.renderingGroupId = id;
107
- }
108
- },
109
- enumerable: false,
110
- configurable: true
111
- });
112
- Object.defineProperty(TouchHolographicButton.prototype, "mesh", {
113
- /**
114
- * Gets the mesh used to render this control
115
- */
116
- get: function () {
117
- return this._backPlate;
118
- },
119
- enumerable: false,
120
- configurable: true
121
- });
122
- Object.defineProperty(TouchHolographicButton.prototype, "tooltipText", {
123
- get: function () {
124
- if (this._tooltipTextBlock) {
125
- return this._tooltipTextBlock.text;
126
- }
127
- return null;
128
- },
129
- /**
130
- * Text to be displayed on the tooltip shown when hovering on the button. When set to null tooltip is disabled. (Default: null)
131
- */
132
- set: function (text) {
133
- var _this = this;
134
- if (!text) {
135
- this._disposeTooltip();
136
- return;
137
- }
138
- if (!this._tooltipFade) {
139
- var rightHandedScene = this._backPlate._scene.useRightHandedSystem;
140
- // Create tooltip with mesh and text
141
- this._tooltipMesh = CreatePlane("", { size: 1 }, this._backPlate._scene);
142
- var tooltipBackground = CreatePlane("", { size: 1, sideOrientation: Mesh.DOUBLESIDE }, this._backPlate._scene);
143
- var mat = new StandardMaterial("", this._backPlate._scene);
144
- mat.diffuseColor = Color3.FromHexString("#212121");
145
- tooltipBackground.material = mat;
146
- tooltipBackground.isPickable = false;
147
- this._tooltipMesh.addChild(tooltipBackground);
148
- tooltipBackground.position = Vector3.Forward(rightHandedScene).scale(0.05);
149
- this._tooltipMesh.scaling.y = 1 / 3;
150
- this._tooltipMesh.position = Vector3.Up().scale(0.7).add(Vector3.Forward(rightHandedScene).scale(-0.15));
151
- this._tooltipMesh.isPickable = false;
152
- this._tooltipMesh.parent = this._backPlate;
153
- // Create text texture for the tooltip
154
- this._tooltipTexture = AdvancedDynamicTexture.CreateForMesh(this._tooltipMesh);
155
- this._tooltipTextBlock = new TextBlock();
156
- this._tooltipTextBlock.scaleY = 3;
157
- this._tooltipTextBlock.color = "white";
158
- this._tooltipTextBlock.fontSize = 130;
159
- this._tooltipTexture.addControl(this._tooltipTextBlock);
160
- // Add hover action to tooltip
161
- this._tooltipFade = new FadeInOutBehavior();
162
- this._tooltipFade.delay = 500;
163
- this._tooltipMesh.addBehavior(this._tooltipFade);
164
- this._tooltipHoverObserver = this.onPointerEnterObservable.add(function () {
165
- if (_this._tooltipFade) {
166
- _this._tooltipFade.fadeIn(true);
167
- }
168
- });
169
- this._tooltipOutObserver = this.onPointerOutObservable.add(function () {
170
- if (_this._tooltipFade) {
171
- _this._tooltipFade.fadeIn(false);
172
- }
173
- });
174
- }
175
- if (this._tooltipTextBlock) {
176
- this._tooltipTextBlock.text = text;
177
- }
178
- },
179
- enumerable: false,
180
- configurable: true
181
- });
182
- Object.defineProperty(TouchHolographicButton.prototype, "text", {
183
- /**
184
- * Gets or sets text for the button
185
- */
186
- get: function () {
187
- return this._text;
188
- },
189
- set: function (value) {
190
- if (this._text === value) {
191
- return;
192
- }
193
- this._text = value;
194
- this._rebuildContent();
195
- },
196
- enumerable: false,
197
- configurable: true
198
- });
199
- Object.defineProperty(TouchHolographicButton.prototype, "imageUrl", {
200
- /**
201
- * Gets or sets the image url for the button
202
- */
203
- get: function () {
204
- return this._imageUrl;
205
- },
206
- set: function (value) {
207
- if (this._imageUrl === value) {
208
- return;
209
- }
210
- this._imageUrl = value;
211
- this._rebuildContent();
212
- },
213
- enumerable: false,
214
- configurable: true
215
- });
216
- Object.defineProperty(TouchHolographicButton.prototype, "backMaterial", {
217
- /**
218
- * Gets the back material used by this button
219
- */
220
- get: function () {
221
- return this._backMaterial;
222
- },
223
- enumerable: false,
224
- configurable: true
225
- });
226
- Object.defineProperty(TouchHolographicButton.prototype, "frontMaterial", {
227
- /**
228
- * Gets the front material used by this button
229
- */
230
- get: function () {
231
- return this._frontMaterial;
232
- },
233
- enumerable: false,
234
- configurable: true
235
- });
236
- Object.defineProperty(TouchHolographicButton.prototype, "plateMaterial", {
237
- /**
238
- * Gets the plate material used by this button
239
- */
240
- get: function () {
241
- return this._plateMaterial;
242
- },
243
- enumerable: false,
244
- configurable: true
245
- });
246
- Object.defineProperty(TouchHolographicButton.prototype, "shareMaterials", {
247
- /**
248
- * Gets a boolean indicating if this button shares its material with other HolographicButtons
249
- */
250
- get: function () {
251
- return this._shareMaterials;
252
- },
253
- enumerable: false,
254
- configurable: true
255
- });
256
- Object.defineProperty(TouchHolographicButton.prototype, "isBackplateVisible", {
257
- /**
258
- * Sets whether the backplate is visible or hidden. Hiding the backplate is not recommended without some sort of replacement
259
- */
260
- set: function (isVisible) {
261
- if (this.mesh && !!this._backMaterial) {
262
- if (isVisible && !this._isBackplateVisible) {
263
- this._backPlate.visibility = 1;
89
+ }
90
+ /**
91
+ * Rendering ground id of all the mesh in the button
92
+ */
93
+ set renderingGroupId(id) {
94
+ this._backPlate.renderingGroupId = id;
95
+ this._textPlate.renderingGroupId = id;
96
+ this._frontPlate.renderingGroupId = id;
97
+ if (this._tooltipMesh) {
98
+ this._tooltipMesh.renderingGroupId = id;
99
+ }
100
+ }
101
+ get renderingGroupId() {
102
+ return this._backPlate.renderingGroupId;
103
+ }
104
+ /**
105
+ * Gets the mesh used to render this control
106
+ */
107
+ get mesh() {
108
+ return this._backPlate;
109
+ }
110
+ /**
111
+ * Text to be displayed on the tooltip shown when hovering on the button. When set to null tooltip is disabled. (Default: null)
112
+ */
113
+ set tooltipText(text) {
114
+ if (!text) {
115
+ this._disposeTooltip();
116
+ return;
117
+ }
118
+ if (!this._tooltipFade) {
119
+ const rightHandedScene = this._backPlate._scene.useRightHandedSystem;
120
+ // Create tooltip with mesh and text
121
+ this._tooltipMesh = CreatePlane("", { size: 1 }, this._backPlate._scene);
122
+ const tooltipBackground = CreatePlane("", { size: 1, sideOrientation: Mesh.DOUBLESIDE }, this._backPlate._scene);
123
+ const mat = new StandardMaterial("", this._backPlate._scene);
124
+ mat.diffuseColor = Color3.FromHexString("#212121");
125
+ tooltipBackground.material = mat;
126
+ tooltipBackground.isPickable = false;
127
+ this._tooltipMesh.addChild(tooltipBackground);
128
+ tooltipBackground.position = Vector3.Forward(rightHandedScene).scale(0.05);
129
+ this._tooltipMesh.scaling.y = 1 / 3;
130
+ this._tooltipMesh.position = Vector3.Up().scale(0.7).add(Vector3.Forward(rightHandedScene).scale(-0.15));
131
+ this._tooltipMesh.isPickable = false;
132
+ this._tooltipMesh.parent = this._backPlate;
133
+ // Create text texture for the tooltip
134
+ this._tooltipTexture = AdvancedDynamicTexture.CreateForMesh(this._tooltipMesh);
135
+ this._tooltipTextBlock = new TextBlock();
136
+ this._tooltipTextBlock.scaleY = 3;
137
+ this._tooltipTextBlock.color = "white";
138
+ this._tooltipTextBlock.fontSize = 130;
139
+ this._tooltipTexture.addControl(this._tooltipTextBlock);
140
+ // Add hover action to tooltip
141
+ this._tooltipFade = new FadeInOutBehavior();
142
+ this._tooltipFade.delay = 500;
143
+ this._tooltipMesh.addBehavior(this._tooltipFade);
144
+ this._tooltipHoverObserver = this.onPointerEnterObservable.add(() => {
145
+ if (this._tooltipFade) {
146
+ this._tooltipFade.fadeIn(true);
264
147
  }
265
- else if (!isVisible && this._isBackplateVisible) {
266
- this._backPlate.visibility = 0;
148
+ });
149
+ this._tooltipOutObserver = this.onPointerOutObservable.add(() => {
150
+ if (this._tooltipFade) {
151
+ this._tooltipFade.fadeIn(false);
267
152
  }
153
+ });
154
+ }
155
+ if (this._tooltipTextBlock) {
156
+ this._tooltipTextBlock.text = text;
157
+ }
158
+ }
159
+ get tooltipText() {
160
+ if (this._tooltipTextBlock) {
161
+ return this._tooltipTextBlock.text;
162
+ }
163
+ return null;
164
+ }
165
+ /**
166
+ * Gets or sets text for the button
167
+ */
168
+ get text() {
169
+ return this._text;
170
+ }
171
+ set text(value) {
172
+ if (this._text === value) {
173
+ return;
174
+ }
175
+ this._text = value;
176
+ this._rebuildContent();
177
+ }
178
+ /**
179
+ * Gets or sets the image url for the button
180
+ */
181
+ get imageUrl() {
182
+ return this._imageUrl;
183
+ }
184
+ set imageUrl(value) {
185
+ if (this._imageUrl === value) {
186
+ return;
187
+ }
188
+ this._imageUrl = value;
189
+ this._rebuildContent();
190
+ }
191
+ /**
192
+ * Gets the back material used by this button
193
+ */
194
+ get backMaterial() {
195
+ return this._backMaterial;
196
+ }
197
+ /**
198
+ * Gets the front material used by this button
199
+ */
200
+ get frontMaterial() {
201
+ return this._frontMaterial;
202
+ }
203
+ /**
204
+ * Gets the plate material used by this button
205
+ */
206
+ get plateMaterial() {
207
+ return this._plateMaterial;
208
+ }
209
+ /**
210
+ * Gets a boolean indicating if this button shares its material with other HolographicButtons
211
+ */
212
+ get shareMaterials() {
213
+ return this._shareMaterials;
214
+ }
215
+ /**
216
+ * Sets whether the backplate is visible or hidden. Hiding the backplate is not recommended without some sort of replacement
217
+ */
218
+ set isBackplateVisible(isVisible) {
219
+ if (this.mesh && !!this._backMaterial) {
220
+ if (isVisible && !this._isBackplateVisible) {
221
+ this._backPlate.visibility = 1;
222
+ }
223
+ else if (!isVisible && this._isBackplateVisible) {
224
+ this._backPlate.visibility = 0;
268
225
  }
269
- this._isBackplateVisible = isVisible;
270
- },
271
- enumerable: false,
272
- configurable: true
273
- });
274
- TouchHolographicButton.prototype._getTypeName = function () {
226
+ }
227
+ this._isBackplateVisible = isVisible;
228
+ }
229
+ _getTypeName() {
275
230
  return "TouchHolographicButton";
276
- };
277
- TouchHolographicButton.prototype._rebuildContent = function () {
231
+ }
232
+ _rebuildContent() {
278
233
  this._disposeFacadeTexture();
279
- var panel = new StackPanel();
234
+ const panel = new StackPanel();
280
235
  panel.isVertical = true;
281
236
  if (DomManagement.IsDocumentAvailable() && !!document.createElement) {
282
237
  if (this._imageUrl) {
283
- var image = new Image();
238
+ const image = new Image();
284
239
  image.source = this._imageUrl;
285
240
  image.paddingTop = "40px";
286
241
  image.height = "180px";
@@ -290,7 +245,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
290
245
  }
291
246
  }
292
247
  if (this._text) {
293
- var text = new TextBlock();
248
+ const text = new TextBlock();
294
249
  text.text = this._text;
295
250
  text.color = "white";
296
251
  text.height = "30px";
@@ -298,13 +253,11 @@ var TouchHolographicButton = /** @class */ (function (_super) {
298
253
  panel.addControl(text);
299
254
  }
300
255
  this.content = panel;
301
- };
256
+ }
302
257
  // Mesh association
303
- TouchHolographicButton.prototype._createNode = function (scene) {
304
- var _this = this;
305
- var _a;
306
- this.name = (_a = this.name) !== null && _a !== void 0 ? _a : "TouchHolographicButton";
307
- var collisionMesh = CreateBox("".concat(this.name, "_collisionMesh"), {
258
+ _createNode(scene) {
259
+ this.name = this.name ?? "TouchHolographicButton";
260
+ const collisionMesh = CreateBox(`${this.name}_collisionMesh`, {
308
261
  width: 1.0,
309
262
  height: 1.0,
310
263
  depth: this._frontPlateDepth,
@@ -313,8 +266,8 @@ var TouchHolographicButton = /** @class */ (function (_super) {
313
266
  collisionMesh.isNearPickable = true;
314
267
  collisionMesh.visibility = 0;
315
268
  collisionMesh.position = Vector3.Forward(scene.useRightHandedSystem).scale(-this._frontPlateDepth / 2);
316
- SceneLoader.ImportMeshAsync(undefined, TouchHolographicButton.MODEL_BASE_URL, TouchHolographicButton.MODEL_FILENAME, scene).then(function (result) {
317
- var alphaMesh = CreateBox("${this.name}_alphaMesh", {
269
+ SceneLoader.ImportMeshAsync(undefined, TouchHolographicButton.MODEL_BASE_URL, TouchHolographicButton.MODEL_FILENAME, scene).then((result) => {
270
+ const alphaMesh = CreateBox("${this.name}_alphaMesh", {
318
271
  width: 1.0,
319
272
  height: 1.0,
320
273
  depth: 1.0,
@@ -322,55 +275,55 @@ var TouchHolographicButton = /** @class */ (function (_super) {
322
275
  alphaMesh.isPickable = false;
323
276
  alphaMesh.material = new StandardMaterial("${this.name}_alphaMesh_material", scene);
324
277
  alphaMesh.material.alpha = 0.15;
325
- var importedFrontPlate = result.meshes[1];
326
- importedFrontPlate.name = "".concat(_this.name, "_frontPlate");
278
+ const importedFrontPlate = result.meshes[1];
279
+ importedFrontPlate.name = `${this.name}_frontPlate`;
327
280
  importedFrontPlate.isPickable = false;
328
- importedFrontPlate.scaling.z = _this._frontPlateDepth;
281
+ importedFrontPlate.scaling.z = this._frontPlateDepth;
329
282
  alphaMesh.parent = importedFrontPlate;
330
283
  importedFrontPlate.parent = collisionMesh;
331
- if (_this._frontMaterial) {
332
- importedFrontPlate.material = _this._frontMaterial;
284
+ if (this._frontMaterial) {
285
+ importedFrontPlate.material = this._frontMaterial;
333
286
  }
334
- _this._frontPlate = importedFrontPlate;
287
+ this._frontPlate = importedFrontPlate;
335
288
  });
336
- this._backPlate = CreateBox("".concat(this.name, "_backPlate"), {
289
+ this._backPlate = CreateBox(`${this.name}_backPlate`, {
337
290
  width: 1.0,
338
291
  height: 1.0,
339
292
  depth: this._backPlateDepth,
340
293
  }, scene);
341
294
  this._backPlate.position = Vector3.Forward(scene.useRightHandedSystem).scale(this._backPlateDepth / 2);
342
295
  this._backPlate.isPickable = false;
343
- this._textPlate = _super.prototype._createNode.call(this, scene);
344
- this._textPlate.name = "".concat(this.name, "_textPlate");
296
+ this._textPlate = super._createNode(scene);
297
+ this._textPlate.name = `${this.name}_textPlate`;
345
298
  this._textPlate.isPickable = false;
346
299
  this._textPlate.position = Vector3.Forward(scene.useRightHandedSystem).scale(-this._frontPlateDepth / 2);
347
300
  this._backPlate.addChild(collisionMesh);
348
301
  this._backPlate.addChild(this._textPlate);
349
- var tn = new TransformNode("{this.name}_root", scene);
302
+ const tn = new TransformNode(`{this.name}_root`, scene);
350
303
  this._backPlate.setParent(tn);
351
304
  this.collisionMesh = collisionMesh;
352
305
  this.collidableFrontDirection = this._backPlate.forward.negate(); // Mesh is facing the wrong way
353
306
  return tn;
354
- };
355
- TouchHolographicButton.prototype._applyFacade = function (facadeTexture) {
307
+ }
308
+ _applyFacade(facadeTexture) {
356
309
  this._plateMaterial.emissiveTexture = facadeTexture;
357
310
  this._plateMaterial.opacityTexture = facadeTexture;
358
311
  this._plateMaterial.diffuseColor = new Color3(0.4, 0.4, 0.4);
359
- };
360
- TouchHolographicButton.prototype._createBackMaterial = function (mesh) {
312
+ }
313
+ _createBackMaterial(mesh) {
361
314
  this._backMaterial = new FluentMaterial(this.name + "backPlateMaterial", mesh.getScene());
362
315
  this._backMaterial.albedoColor = this._backplateColor;
363
316
  this._backMaterial.renderBorders = true;
364
317
  this._backMaterial.renderHoverLight = false;
365
- };
366
- TouchHolographicButton.prototype._createFrontMaterial = function (mesh) {
318
+ }
319
+ _createFrontMaterial(mesh) {
367
320
  this._frontMaterial = new FluentButtonMaterial(this.name + "Front Material", mesh.getScene());
368
- };
369
- TouchHolographicButton.prototype._createPlateMaterial = function (mesh) {
321
+ }
322
+ _createPlateMaterial(mesh) {
370
323
  this._plateMaterial = new StandardMaterial(this.name + "Plate Material", mesh.getScene());
371
324
  this._plateMaterial.specularColor = Color3.Black();
372
- };
373
- TouchHolographicButton.prototype._onToggle = function (newState) {
325
+ }
326
+ _onToggle(newState) {
374
327
  if (this._backMaterial) {
375
328
  if (newState) {
376
329
  this._backMaterial.albedoColor = this._backplateToggledColor;
@@ -379,9 +332,9 @@ var TouchHolographicButton = /** @class */ (function (_super) {
379
332
  this._backMaterial.albedoColor = this._backplateColor;
380
333
  }
381
334
  }
382
- _super.prototype._onToggle.call(this, newState);
383
- };
384
- TouchHolographicButton.prototype._affectMaterial = function (mesh) {
335
+ super._onToggle(newState);
336
+ }
337
+ _affectMaterial(mesh) {
385
338
  if (this._shareMaterials) {
386
339
  // Back
387
340
  if (!this._host._touchSharedMaterials["backFluentMaterial"]) {
@@ -414,12 +367,12 @@ var TouchHolographicButton = /** @class */ (function (_super) {
414
367
  this._frontPlate.material = this._frontMaterial;
415
368
  }
416
369
  this._rebuildContent();
417
- };
370
+ }
418
371
  /**
419
372
  * Releases all associated resources
420
373
  */
421
- TouchHolographicButton.prototype.dispose = function () {
422
- _super.prototype.dispose.call(this); // will dispose main mesh ie. back plate
374
+ dispose() {
375
+ super.dispose(); // will dispose main mesh ie. back plate
423
376
  this._disposeTooltip();
424
377
  this.onPointerMoveObservable.remove(this._pointerHoverObserver);
425
378
  if (!this.shareMaterials) {
@@ -431,16 +384,14 @@ var TouchHolographicButton = /** @class */ (function (_super) {
431
384
  this._pickedPointObserver = null;
432
385
  }
433
386
  }
434
- };
435
- /**
436
- * Base Url for the button model.
437
- */
438
- TouchHolographicButton.MODEL_BASE_URL = "https://assets.babylonjs.com/meshes/MRTK/";
439
- /**
440
- * File name for the button model.
441
- */
442
- TouchHolographicButton.MODEL_FILENAME = "mrtk-fluent-button.glb";
443
- return TouchHolographicButton;
444
- }(TouchButton3D));
445
- export { TouchHolographicButton };
387
+ }
388
+ }
389
+ /**
390
+ * Base Url for the button model.
391
+ */
392
+ TouchHolographicButton.MODEL_BASE_URL = "https://assets.babylonjs.com/meshes/MRTK/";
393
+ /**
394
+ * File name for the button model.
395
+ */
396
+ TouchHolographicButton.MODEL_FILENAME = "mrtk-fluent-button.glb";
446
397
  //# sourceMappingURL=touchHolographicButton.js.map