@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,234 +1,234 @@
1
- // Assumptions: absolute position of button mesh is inside the mesh
2
- import { __extends } from "tslib";
3
- import { Vector3, TmpVectors } from "@babylonjs/core/Maths/math.vector.js";
4
- import { PointerEventTypes } from "@babylonjs/core/Events/pointerEvents.js";
5
- import { Observable } from "@babylonjs/core/Misc/observable.js";
6
- import { Button3D } from "./button3D.js";
7
- /**
8
- * Class used to create a touchable button in 3D
9
- */
10
- var TouchButton3D = /** @class */ (function (_super) {
11
- __extends(TouchButton3D, _super);
12
- /**
13
- * Creates a new touchable button
14
- * @param name defines the control name
15
- * @param collisionMesh mesh to track collisions with
16
- */
17
- function TouchButton3D(name, collisionMesh) {
18
- var _this = _super.call(this, name) || this;
19
- _this._isNearPressed = false;
20
- _this._interactionSurfaceHeight = 0;
21
- _this._isToggleButton = false;
22
- _this._toggleState = false;
23
- _this._toggleButtonCallback = function () {
24
- _this._onToggle(!_this._toggleState);
25
- };
26
- /**
27
- * An event triggered when the button is toggled. Only fired if 'isToggleButton' is true
28
- */
29
- _this.onToggleObservable = new Observable();
30
- _this.collidableFrontDirection = Vector3.Zero();
31
- if (collisionMesh) {
32
- _this.collisionMesh = collisionMesh;
33
- }
34
- return _this;
35
- }
36
- Object.defineProperty(TouchButton3D.prototype, "isActiveNearInteraction", {
37
- /**
38
- * Whether the current interaction is caused by near interaction or not
39
- */
40
- get: function () {
41
- return this._isNearPressed;
42
- },
43
- enumerable: false,
44
- configurable: true
45
- });
46
- Object.defineProperty(TouchButton3D.prototype, "collidableFrontDirection", {
47
- /**
48
- * Returns the front-facing direction of the button, or Vector3.Zero if there is no 'front'
49
- */
50
- get: function () {
51
- if (this._collisionMesh) {
52
- // Update the front direction to reflect any rotations of the collision mesh
53
- var transformedDirection = TmpVectors.Vector3[0];
54
- Vector3.TransformNormalToRef(this._collidableFrontDirection, this._collisionMesh.getWorldMatrix(), transformedDirection);
55
- return transformedDirection.normalize();
56
- }
57
- return this._collidableFrontDirection;
58
- },
59
- /**
60
- * Sets the front-facing direction of the button. Pass in Vector3.Zero to allow interactions from any direction
61
- * @param frontWorldDir the forward direction of the button
62
- */
63
- set: function (frontWorldDir) {
64
- this._collidableFrontDirection = frontWorldDir.normalize();
65
- if (this._collisionMesh) {
66
- var invert = TmpVectors.Matrix[0];
67
- invert.copyFrom(this._collisionMesh.getWorldMatrix());
68
- invert.invert();
69
- Vector3.TransformNormalToRef(this._collidableFrontDirection, invert, this._collidableFrontDirection);
70
- this._collidableFrontDirection.normalize();
71
- }
72
- },
73
- enumerable: false,
74
- configurable: true
75
- });
76
- Object.defineProperty(TouchButton3D.prototype, "collisionMesh", {
77
- /**
78
- * Sets the mesh used for testing input collision
79
- * @param collisionMesh the new collision mesh for the button
80
- */
81
- set: function (collisionMesh) {
82
- var _this = this;
83
- var _a;
84
- // Remove the GUI3DManager's data from the previous collision mesh's reserved data store, and reset interactability
85
- if (this._collisionMesh) {
86
- this._collisionMesh.isNearPickable = false;
87
- if ((_a = this._collisionMesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) {
88
- this._collisionMesh.reservedDataStore.GUI3D = {};
89
- }
90
- this._collisionMesh.getChildMeshes().forEach(function (mesh) {
91
- var _a;
92
- mesh.isNearPickable = false;
93
- if ((_a = mesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) {
94
- mesh.reservedDataStore.GUI3D = {};
95
- }
96
- });
97
- }
98
- this._collisionMesh = collisionMesh;
99
- this._injectGUI3DReservedDataStore(this._collisionMesh).control = this;
100
- this._collisionMesh.isNearPickable = true;
101
- this._collisionMesh.getChildMeshes().forEach(function (mesh) {
102
- _this._injectGUI3DReservedDataStore(mesh).control = _this;
103
- mesh.isNearPickable = true;
104
- });
105
- this.collidableFrontDirection = collisionMesh.forward;
106
- },
107
- enumerable: false,
108
- configurable: true
109
- });
110
- Object.defineProperty(TouchButton3D.prototype, "isToggleButton", {
111
- get: function () {
112
- return this._isToggleButton;
113
- },
114
- /**
115
- * Setter for if this TouchButton3D should be treated as a toggle button
116
- * @param value If this TouchHolographicButton should act like a toggle button
117
- */
118
- set: function (value) {
119
- if (value === this._isToggleButton) {
120
- return;
121
- }
122
- this._isToggleButton = value;
123
- if (value) {
124
- this.onPointerUpObservable.add(this._toggleButtonCallback);
125
- }
126
- else {
127
- this.onPointerUpObservable.removeCallback(this._toggleButtonCallback);
128
- // Safety check, reset the button if it's toggled on but no longer a toggle button
129
- if (this._toggleState) {
130
- this._onToggle(false);
131
- }
132
- }
133
- },
134
- enumerable: false,
135
- configurable: true
136
- });
137
- Object.defineProperty(TouchButton3D.prototype, "isToggled", {
138
- get: function () {
139
- return this._toggleState;
140
- },
141
- /**
142
- * A public entrypoint to set the toggle state of the TouchHolographicButton. Only works if 'isToggleButton' is true
143
- * @param newState The new state to set the TouchHolographicButton's toggle state to
144
- */
145
- set: function (newState) {
146
- if (this._isToggleButton && this._toggleState !== newState) {
147
- this._onToggle(newState);
148
- }
149
- },
150
- enumerable: false,
151
- configurable: true
152
- });
153
- TouchButton3D.prototype._onToggle = function (newState) {
154
- this._toggleState = newState;
155
- this.onToggleObservable.notifyObservers(newState);
156
- };
157
- // Returns true if the collidable is in front of the button, or if the button has no front direction
158
- TouchButton3D.prototype._isInteractionInFrontOfButton = function (collidablePos) {
159
- return this._getInteractionHeight(collidablePos, this._collisionMesh.getAbsolutePosition()) > 0;
160
- };
161
- /**
162
- * Get the height of the touchPoint from the collidable part of the button
163
- * @param touchPoint the point to compare to the button, in absolute position
164
- * @returns the depth of the touch point into the front of the button
165
- */
166
- TouchButton3D.prototype.getPressDepth = function (touchPoint) {
167
- if (!this._isNearPressed) {
168
- return 0;
169
- }
170
- var interactionHeight = this._getInteractionHeight(touchPoint, this._collisionMesh.getAbsolutePosition());
171
- return this._interactionSurfaceHeight - interactionHeight;
172
- };
173
- // Returns true if the collidable is in front of the button, or if the button has no front direction
174
- TouchButton3D.prototype._getInteractionHeight = function (interactionPos, basePos) {
175
- var frontDir = this.collidableFrontDirection;
176
- if (frontDir.length() === 0) {
177
- // The button has no front, just return the distance to the base
178
- return Vector3.Distance(interactionPos, basePos);
179
- }
180
- var d = Vector3.Dot(basePos, frontDir);
181
- var abc = Vector3.Dot(interactionPos, frontDir);
182
- return abc - d;
183
- };
184
- /**
185
- * @param providedType
186
- * @param nearMeshPosition
187
- * @param activeInteractionCount
188
- * @hidden
189
- */
190
- TouchButton3D.prototype._generatePointerEventType = function (providedType, nearMeshPosition, activeInteractionCount) {
191
- if (providedType === PointerEventTypes.POINTERDOWN) {
192
- if (!this._isInteractionInFrontOfButton(nearMeshPosition)) {
193
- // Near interaction mesh is behind the button, don't send a pointer down
194
- return PointerEventTypes.POINTERMOVE;
195
- }
196
- else {
197
- this._isNearPressed = true;
198
- this._interactionSurfaceHeight = this._getInteractionHeight(nearMeshPosition, this._collisionMesh.getAbsolutePosition());
199
- }
200
- }
201
- if (providedType === PointerEventTypes.POINTERUP) {
202
- if (activeInteractionCount == 0) {
203
- // We get the release for the down we swallowed earlier, swallow as well
204
- return PointerEventTypes.POINTERMOVE;
205
- }
206
- else {
207
- this._isNearPressed = false;
208
- }
209
- }
210
- return providedType;
211
- };
212
- TouchButton3D.prototype._getTypeName = function () {
213
- return "TouchButton3D";
214
- };
215
- // Mesh association
216
- TouchButton3D.prototype._createNode = function (scene) {
217
- return _super.prototype._createNode.call(this, scene);
218
- };
219
- /**
220
- * Releases all associated resources
221
- */
222
- TouchButton3D.prototype.dispose = function () {
223
- _super.prototype.dispose.call(this);
224
- // Clean up toggle observables
225
- this.onPointerUpObservable.removeCallback(this._toggleButtonCallback);
226
- this.onToggleObservable.clear();
227
- if (this._collisionMesh) {
228
- this._collisionMesh.dispose();
229
- }
230
- };
231
- return TouchButton3D;
232
- }(Button3D));
233
- export { TouchButton3D };
1
+ // Assumptions: absolute position of button mesh is inside the mesh
2
+ import { __extends } from "tslib";
3
+ import { Vector3, TmpVectors } from "@babylonjs/core/Maths/math.vector.js";
4
+ import { PointerEventTypes } from "@babylonjs/core/Events/pointerEvents.js";
5
+ import { Observable } from "@babylonjs/core/Misc/observable.js";
6
+ import { Button3D } from "./button3D";
7
+ /**
8
+ * Class used to create a touchable button in 3D
9
+ */
10
+ var TouchButton3D = /** @class */ (function (_super) {
11
+ __extends(TouchButton3D, _super);
12
+ /**
13
+ * Creates a new touchable button
14
+ * @param name defines the control name
15
+ * @param collisionMesh mesh to track collisions with
16
+ */
17
+ function TouchButton3D(name, collisionMesh) {
18
+ var _this = _super.call(this, name) || this;
19
+ _this._isNearPressed = false;
20
+ _this._interactionSurfaceHeight = 0;
21
+ _this._isToggleButton = false;
22
+ _this._toggleState = false;
23
+ _this._toggleButtonCallback = function () {
24
+ _this._onToggle(!_this._toggleState);
25
+ };
26
+ /**
27
+ * An event triggered when the button is toggled. Only fired if 'isToggleButton' is true
28
+ */
29
+ _this.onToggleObservable = new Observable();
30
+ _this.collidableFrontDirection = Vector3.Zero();
31
+ if (collisionMesh) {
32
+ _this.collisionMesh = collisionMesh;
33
+ }
34
+ return _this;
35
+ }
36
+ Object.defineProperty(TouchButton3D.prototype, "isActiveNearInteraction", {
37
+ /**
38
+ * Whether the current interaction is caused by near interaction or not
39
+ */
40
+ get: function () {
41
+ return this._isNearPressed;
42
+ },
43
+ enumerable: false,
44
+ configurable: true
45
+ });
46
+ Object.defineProperty(TouchButton3D.prototype, "collidableFrontDirection", {
47
+ /**
48
+ * Returns the front-facing direction of the button, or Vector3.Zero if there is no 'front'
49
+ */
50
+ get: function () {
51
+ if (this._collisionMesh) {
52
+ // Update the front direction to reflect any rotations of the collision mesh
53
+ var transformedDirection = TmpVectors.Vector3[0];
54
+ Vector3.TransformNormalToRef(this._collidableFrontDirection, this._collisionMesh.getWorldMatrix(), transformedDirection);
55
+ return transformedDirection.normalize();
56
+ }
57
+ return this._collidableFrontDirection;
58
+ },
59
+ /**
60
+ * Sets the front-facing direction of the button. Pass in Vector3.Zero to allow interactions from any direction
61
+ * @param frontWorldDir the forward direction of the button
62
+ */
63
+ set: function (frontWorldDir) {
64
+ this._collidableFrontDirection = frontWorldDir.normalize();
65
+ if (this._collisionMesh) {
66
+ var invert = TmpVectors.Matrix[0];
67
+ invert.copyFrom(this._collisionMesh.getWorldMatrix());
68
+ invert.invert();
69
+ Vector3.TransformNormalToRef(this._collidableFrontDirection, invert, this._collidableFrontDirection);
70
+ this._collidableFrontDirection.normalize();
71
+ }
72
+ },
73
+ enumerable: false,
74
+ configurable: true
75
+ });
76
+ Object.defineProperty(TouchButton3D.prototype, "collisionMesh", {
77
+ /**
78
+ * Sets the mesh used for testing input collision
79
+ * @param collisionMesh the new collision mesh for the button
80
+ */
81
+ set: function (collisionMesh) {
82
+ var _this = this;
83
+ var _a;
84
+ // Remove the GUI3DManager's data from the previous collision mesh's reserved data store, and reset interactability
85
+ if (this._collisionMesh) {
86
+ this._collisionMesh.isNearPickable = false;
87
+ if ((_a = this._collisionMesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) {
88
+ this._collisionMesh.reservedDataStore.GUI3D = {};
89
+ }
90
+ this._collisionMesh.getChildMeshes().forEach(function (mesh) {
91
+ var _a;
92
+ mesh.isNearPickable = false;
93
+ if ((_a = mesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) {
94
+ mesh.reservedDataStore.GUI3D = {};
95
+ }
96
+ });
97
+ }
98
+ this._collisionMesh = collisionMesh;
99
+ this._injectGUI3DReservedDataStore(this._collisionMesh).control = this;
100
+ this._collisionMesh.isNearPickable = true;
101
+ this._collisionMesh.getChildMeshes().forEach(function (mesh) {
102
+ _this._injectGUI3DReservedDataStore(mesh).control = _this;
103
+ mesh.isNearPickable = true;
104
+ });
105
+ this.collidableFrontDirection = collisionMesh.forward;
106
+ },
107
+ enumerable: false,
108
+ configurable: true
109
+ });
110
+ Object.defineProperty(TouchButton3D.prototype, "isToggleButton", {
111
+ get: function () {
112
+ return this._isToggleButton;
113
+ },
114
+ /**
115
+ * Setter for if this TouchButton3D should be treated as a toggle button
116
+ * @param value If this TouchHolographicButton should act like a toggle button
117
+ */
118
+ set: function (value) {
119
+ if (value === this._isToggleButton) {
120
+ return;
121
+ }
122
+ this._isToggleButton = value;
123
+ if (value) {
124
+ this.onPointerUpObservable.add(this._toggleButtonCallback);
125
+ }
126
+ else {
127
+ this.onPointerUpObservable.removeCallback(this._toggleButtonCallback);
128
+ // Safety check, reset the button if it's toggled on but no longer a toggle button
129
+ if (this._toggleState) {
130
+ this._onToggle(false);
131
+ }
132
+ }
133
+ },
134
+ enumerable: false,
135
+ configurable: true
136
+ });
137
+ Object.defineProperty(TouchButton3D.prototype, "isToggled", {
138
+ get: function () {
139
+ return this._toggleState;
140
+ },
141
+ /**
142
+ * A public entrypoint to set the toggle state of the TouchHolographicButton. Only works if 'isToggleButton' is true
143
+ * @param newState The new state to set the TouchHolographicButton's toggle state to
144
+ */
145
+ set: function (newState) {
146
+ if (this._isToggleButton && this._toggleState !== newState) {
147
+ this._onToggle(newState);
148
+ }
149
+ },
150
+ enumerable: false,
151
+ configurable: true
152
+ });
153
+ TouchButton3D.prototype._onToggle = function (newState) {
154
+ this._toggleState = newState;
155
+ this.onToggleObservable.notifyObservers(newState);
156
+ };
157
+ // Returns true if the collidable is in front of the button, or if the button has no front direction
158
+ TouchButton3D.prototype._isInteractionInFrontOfButton = function (collidablePos) {
159
+ return this._getInteractionHeight(collidablePos, this._collisionMesh.getAbsolutePosition()) > 0;
160
+ };
161
+ /**
162
+ * Get the height of the touchPoint from the collidable part of the button
163
+ * @param touchPoint the point to compare to the button, in absolute position
164
+ * @returns the depth of the touch point into the front of the button
165
+ */
166
+ TouchButton3D.prototype.getPressDepth = function (touchPoint) {
167
+ if (!this._isNearPressed) {
168
+ return 0;
169
+ }
170
+ var interactionHeight = this._getInteractionHeight(touchPoint, this._collisionMesh.getAbsolutePosition());
171
+ return this._interactionSurfaceHeight - interactionHeight;
172
+ };
173
+ // Returns true if the collidable is in front of the button, or if the button has no front direction
174
+ TouchButton3D.prototype._getInteractionHeight = function (interactionPos, basePos) {
175
+ var frontDir = this.collidableFrontDirection;
176
+ if (frontDir.length() === 0) {
177
+ // The button has no front, just return the distance to the base
178
+ return Vector3.Distance(interactionPos, basePos);
179
+ }
180
+ var d = Vector3.Dot(basePos, frontDir);
181
+ var abc = Vector3.Dot(interactionPos, frontDir);
182
+ return abc - d;
183
+ };
184
+ /**
185
+ * @param providedType
186
+ * @param nearMeshPosition
187
+ * @param activeInteractionCount
188
+ * @hidden
189
+ */
190
+ TouchButton3D.prototype._generatePointerEventType = function (providedType, nearMeshPosition, activeInteractionCount) {
191
+ if (providedType === PointerEventTypes.POINTERDOWN) {
192
+ if (!this._isInteractionInFrontOfButton(nearMeshPosition)) {
193
+ // Near interaction mesh is behind the button, don't send a pointer down
194
+ return PointerEventTypes.POINTERMOVE;
195
+ }
196
+ else {
197
+ this._isNearPressed = true;
198
+ this._interactionSurfaceHeight = this._getInteractionHeight(nearMeshPosition, this._collisionMesh.getAbsolutePosition());
199
+ }
200
+ }
201
+ if (providedType === PointerEventTypes.POINTERUP) {
202
+ if (activeInteractionCount == 0) {
203
+ // We get the release for the down we swallowed earlier, swallow as well
204
+ return PointerEventTypes.POINTERMOVE;
205
+ }
206
+ else {
207
+ this._isNearPressed = false;
208
+ }
209
+ }
210
+ return providedType;
211
+ };
212
+ TouchButton3D.prototype._getTypeName = function () {
213
+ return "TouchButton3D";
214
+ };
215
+ // Mesh association
216
+ TouchButton3D.prototype._createNode = function (scene) {
217
+ return _super.prototype._createNode.call(this, scene);
218
+ };
219
+ /**
220
+ * Releases all associated resources
221
+ */
222
+ TouchButton3D.prototype.dispose = function () {
223
+ _super.prototype.dispose.call(this);
224
+ // Clean up toggle observables
225
+ this.onPointerUpObservable.removeCallback(this._toggleButtonCallback);
226
+ this.onToggleObservable.clear();
227
+ if (this._collisionMesh) {
228
+ this._collisionMesh.dispose();
229
+ }
230
+ };
231
+ return TouchButton3D;
232
+ }(Button3D));
233
+ export { TouchButton3D };
234
234
  //# sourceMappingURL=touchButton3D.js.map