@babylonjs/gui 5.0.0-rc.7 → 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,258 +1,258 @@
1
- import { Observable } from "@babylonjs/core/Misc/observable.js";
2
- import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
3
- import { PointerEventTypes } from "@babylonjs/core/Events/pointerEvents.js";
4
- import { HemisphericLight } from "@babylonjs/core/Lights/hemisphericLight.js";
5
- import { UtilityLayerRenderer } from "@babylonjs/core/Rendering/utilityLayerRenderer.js";
6
- import { EngineStore } from "@babylonjs/core/Engines/engineStore.js";
7
- import { Container3D } from "./controls/container3D.js";
8
- /**
9
- * Class used to manage 3D user interface
10
- * @see https://doc.babylonjs.com/how_to/gui3d
11
- */
12
- var GUI3DManager = /** @class */ (function () {
13
- /**
14
- * Creates a new GUI3DManager
15
- * @param scene
16
- */
17
- function GUI3DManager(scene) {
18
- var _this = this;
19
- this._customControlScaling = 1.0;
20
- /** @hidden */
21
- this._lastControlOver = {};
22
- /** @hidden */
23
- this._lastControlDown = {};
24
- /**
25
- * Observable raised when the point picked by the pointer events changed
26
- */
27
- this.onPickedPointChangedObservable = new Observable();
28
- /**
29
- * Observable raised when a picking happens
30
- */
31
- this.onPickingObservable = new Observable();
32
- // Shared resources
33
- /** @hidden */
34
- this._sharedMaterials = {};
35
- /** @hidden */
36
- this._touchSharedMaterials = {};
37
- this._scene = scene || EngineStore.LastCreatedScene;
38
- this._sceneDisposeObserver = this._scene.onDisposeObservable.add(function () {
39
- _this._sceneDisposeObserver = null;
40
- _this._utilityLayer = null;
41
- _this.dispose();
42
- });
43
- this._utilityLayer = UtilityLayerRenderer._CreateDefaultUtilityLayerFromScene(this._scene);
44
- this._utilityLayer.onlyCheckPointerDownEvents = false;
45
- this._utilityLayer.pickUtilitySceneFirst = false;
46
- this._utilityLayer.mainSceneTrackerPredicate = function (mesh) {
47
- var _a, _b, _c;
48
- return mesh && ((_c = (_b = (_a = mesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) === null || _b === void 0 ? void 0 : _b.control) === null || _c === void 0 ? void 0 : _c._node);
49
- };
50
- // Root
51
- this._rootContainer = new Container3D("RootContainer");
52
- this._rootContainer._host = this;
53
- var utilityLayerScene = this._utilityLayer.utilityLayerScene;
54
- // Events
55
- this._pointerOutObserver = this._utilityLayer.onPointerOutObservable.add(function (pointerId) {
56
- _this._handlePointerOut(pointerId, true);
57
- });
58
- this._pointerObserver = utilityLayerScene.onPointerObservable.add(function (pi) {
59
- _this._doPicking(pi);
60
- });
61
- // Scene
62
- this._utilityLayer.utilityLayerScene.autoClear = false;
63
- this._utilityLayer.utilityLayerScene.autoClearDepthAndStencil = false;
64
- new HemisphericLight("hemi", Vector3.Up(), this._utilityLayer.utilityLayerScene);
65
- }
66
- Object.defineProperty(GUI3DManager.prototype, "scene", {
67
- /** Gets the hosting scene */
68
- get: function () {
69
- return this._scene;
70
- },
71
- enumerable: false,
72
- configurable: true
73
- });
74
- Object.defineProperty(GUI3DManager.prototype, "utilityLayer", {
75
- /** Gets associated utility layer */
76
- get: function () {
77
- return this._utilityLayer;
78
- },
79
- enumerable: false,
80
- configurable: true
81
- });
82
- Object.defineProperty(GUI3DManager.prototype, "controlScaling", {
83
- /** Gets the scaling for all UI elements owned by this manager */
84
- get: function () {
85
- return this._customControlScaling;
86
- },
87
- /** Sets the scaling adjustment for all UI elements owned by this manager */
88
- set: function (newScale) {
89
- if (this._customControlScaling !== newScale && newScale > 0) {
90
- var scaleRatio_1 = newScale / this._customControlScaling;
91
- this._customControlScaling = newScale;
92
- this._rootContainer.children.forEach(function (control) {
93
- control.scaling.scaleInPlace(scaleRatio_1);
94
- if (newScale !== 1) {
95
- control._isScaledByManager = true;
96
- }
97
- });
98
- }
99
- },
100
- enumerable: false,
101
- configurable: true
102
- });
103
- Object.defineProperty(GUI3DManager.prototype, "useRealisticScaling", {
104
- /** Gets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */
105
- get: function () {
106
- return this.controlScaling === GUI3DManager.MRTK_REALISTIC_SCALING;
107
- },
108
- /** Sets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */
109
- set: function (newValue) {
110
- this.controlScaling = newValue ? GUI3DManager.MRTK_REALISTIC_SCALING : 1;
111
- },
112
- enumerable: false,
113
- configurable: true
114
- });
115
- GUI3DManager.prototype._handlePointerOut = function (pointerId, isPointerUp) {
116
- var previousControlOver = this._lastControlOver[pointerId];
117
- if (previousControlOver) {
118
- previousControlOver._onPointerOut(previousControlOver);
119
- delete this._lastControlOver[pointerId];
120
- }
121
- if (isPointerUp) {
122
- if (this._lastControlDown[pointerId]) {
123
- this._lastControlDown[pointerId].forcePointerUp();
124
- delete this._lastControlDown[pointerId];
125
- }
126
- }
127
- this.onPickedPointChangedObservable.notifyObservers(null);
128
- };
129
- GUI3DManager.prototype._doPicking = function (pi) {
130
- var _a, _b, _c;
131
- if (!this._utilityLayer || !this._utilityLayer.shouldRender || !this._utilityLayer.utilityLayerScene.activeCamera) {
132
- return false;
133
- }
134
- var pointerEvent = pi.event;
135
- var pointerId = pointerEvent.pointerId || 0;
136
- var buttonIndex = pointerEvent.button;
137
- var pickingInfo = pi.pickInfo;
138
- if (pickingInfo) {
139
- this.onPickingObservable.notifyObservers(pickingInfo.pickedMesh);
140
- }
141
- if (!pickingInfo || !pickingInfo.hit) {
142
- this._handlePointerOut(pointerId, pi.type === PointerEventTypes.POINTERUP);
143
- return false;
144
- }
145
- if (pickingInfo.pickedPoint) {
146
- this.onPickedPointChangedObservable.notifyObservers(pickingInfo.pickedPoint);
147
- }
148
- var control = (_b = (_a = pickingInfo.pickedMesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) === null || _b === void 0 ? void 0 : _b.control;
149
- if (!!control && !control._processObservables(pi.type, pickingInfo.pickedPoint, ((_c = pickingInfo.originMesh) === null || _c === void 0 ? void 0 : _c.position) || null, pointerId, buttonIndex)) {
150
- if (pi.type === PointerEventTypes.POINTERMOVE) {
151
- if (this._lastControlOver[pointerId]) {
152
- this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId]);
153
- }
154
- delete this._lastControlOver[pointerId];
155
- }
156
- }
157
- if (pi.type === PointerEventTypes.POINTERUP) {
158
- if (this._lastControlDown[pointerEvent.pointerId]) {
159
- this._lastControlDown[pointerEvent.pointerId].forcePointerUp();
160
- delete this._lastControlDown[pointerEvent.pointerId];
161
- }
162
- if (pointerEvent.pointerType === "touch") {
163
- this._handlePointerOut(pointerId, false);
164
- }
165
- }
166
- return true;
167
- };
168
- Object.defineProperty(GUI3DManager.prototype, "rootContainer", {
169
- /**
170
- * Gets the root container
171
- */
172
- get: function () {
173
- return this._rootContainer;
174
- },
175
- enumerable: false,
176
- configurable: true
177
- });
178
- /**
179
- * Gets a boolean indicating if the given control is in the root child list
180
- * @param control defines the control to check
181
- * @returns true if the control is in the root child list
182
- */
183
- GUI3DManager.prototype.containsControl = function (control) {
184
- return this._rootContainer.containsControl(control);
185
- };
186
- /**
187
- * Adds a control to the root child list
188
- * @param control defines the control to add
189
- * @returns the current manager
190
- */
191
- GUI3DManager.prototype.addControl = function (control) {
192
- this._rootContainer.addControl(control);
193
- if (this._customControlScaling !== 1) {
194
- control.scaling.scaleInPlace(this._customControlScaling);
195
- control._isScaledByManager = true;
196
- }
197
- return this;
198
- };
199
- /**
200
- * Removes a control from the root child list
201
- * @param control defines the control to remove
202
- * @returns the current container
203
- */
204
- GUI3DManager.prototype.removeControl = function (control) {
205
- this._rootContainer.removeControl(control);
206
- if (control._isScaledByManager) {
207
- control.scaling.scaleInPlace(1 / this._customControlScaling);
208
- control._isScaledByManager = false;
209
- }
210
- return this;
211
- };
212
- /**
213
- * Releases all associated resources
214
- */
215
- GUI3DManager.prototype.dispose = function () {
216
- this._rootContainer.dispose();
217
- for (var materialName in this._sharedMaterials) {
218
- if (!Object.prototype.hasOwnProperty.call(this._sharedMaterials, materialName)) {
219
- continue;
220
- }
221
- this._sharedMaterials[materialName].dispose();
222
- }
223
- this._sharedMaterials = {};
224
- for (var materialName in this._touchSharedMaterials) {
225
- if (!Object.prototype.hasOwnProperty.call(this._touchSharedMaterials, materialName)) {
226
- continue;
227
- }
228
- this._touchSharedMaterials[materialName].dispose();
229
- }
230
- this._touchSharedMaterials = {};
231
- if (this._pointerOutObserver && this._utilityLayer) {
232
- this._utilityLayer.onPointerOutObservable.remove(this._pointerOutObserver);
233
- this._pointerOutObserver = null;
234
- }
235
- this.onPickedPointChangedObservable.clear();
236
- this.onPickingObservable.clear();
237
- var utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;
238
- if (utilityLayerScene) {
239
- if (this._pointerObserver) {
240
- utilityLayerScene.onPointerObservable.remove(this._pointerObserver);
241
- this._pointerObserver = null;
242
- }
243
- }
244
- if (this._scene) {
245
- if (this._sceneDisposeObserver) {
246
- this._scene.onDisposeObservable.remove(this._sceneDisposeObserver);
247
- this._sceneDisposeObserver = null;
248
- }
249
- }
250
- if (this._utilityLayer) {
251
- this._utilityLayer.dispose();
252
- }
253
- };
254
- GUI3DManager.MRTK_REALISTIC_SCALING = 0.032;
255
- return GUI3DManager;
256
- }());
257
- export { GUI3DManager };
1
+ import { Observable } from "@babylonjs/core/Misc/observable.js";
2
+ import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
3
+ import { PointerEventTypes } from "@babylonjs/core/Events/pointerEvents.js";
4
+ import { HemisphericLight } from "@babylonjs/core/Lights/hemisphericLight.js";
5
+ import { UtilityLayerRenderer } from "@babylonjs/core/Rendering/utilityLayerRenderer.js";
6
+ import { EngineStore } from "@babylonjs/core/Engines/engineStore.js";
7
+ import { Container3D } from "./controls/container3D";
8
+ /**
9
+ * Class used to manage 3D user interface
10
+ * @see https://doc.babylonjs.com/how_to/gui3d
11
+ */
12
+ var GUI3DManager = /** @class */ (function () {
13
+ /**
14
+ * Creates a new GUI3DManager
15
+ * @param scene
16
+ */
17
+ function GUI3DManager(scene) {
18
+ var _this = this;
19
+ this._customControlScaling = 1.0;
20
+ /** @hidden */
21
+ this._lastControlOver = {};
22
+ /** @hidden */
23
+ this._lastControlDown = {};
24
+ /**
25
+ * Observable raised when the point picked by the pointer events changed
26
+ */
27
+ this.onPickedPointChangedObservable = new Observable();
28
+ /**
29
+ * Observable raised when a picking happens
30
+ */
31
+ this.onPickingObservable = new Observable();
32
+ // Shared resources
33
+ /** @hidden */
34
+ this._sharedMaterials = {};
35
+ /** @hidden */
36
+ this._touchSharedMaterials = {};
37
+ this._scene = scene || EngineStore.LastCreatedScene;
38
+ this._sceneDisposeObserver = this._scene.onDisposeObservable.add(function () {
39
+ _this._sceneDisposeObserver = null;
40
+ _this._utilityLayer = null;
41
+ _this.dispose();
42
+ });
43
+ this._utilityLayer = UtilityLayerRenderer._CreateDefaultUtilityLayerFromScene(this._scene);
44
+ this._utilityLayer.onlyCheckPointerDownEvents = false;
45
+ this._utilityLayer.pickUtilitySceneFirst = false;
46
+ this._utilityLayer.mainSceneTrackerPredicate = function (mesh) {
47
+ var _a, _b, _c;
48
+ return mesh && ((_c = (_b = (_a = mesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) === null || _b === void 0 ? void 0 : _b.control) === null || _c === void 0 ? void 0 : _c._node);
49
+ };
50
+ // Root
51
+ this._rootContainer = new Container3D("RootContainer");
52
+ this._rootContainer._host = this;
53
+ var utilityLayerScene = this._utilityLayer.utilityLayerScene;
54
+ // Events
55
+ this._pointerOutObserver = this._utilityLayer.onPointerOutObservable.add(function (pointerId) {
56
+ _this._handlePointerOut(pointerId, true);
57
+ });
58
+ this._pointerObserver = utilityLayerScene.onPointerObservable.add(function (pi) {
59
+ _this._doPicking(pi);
60
+ });
61
+ // Scene
62
+ this._utilityLayer.utilityLayerScene.autoClear = false;
63
+ this._utilityLayer.utilityLayerScene.autoClearDepthAndStencil = false;
64
+ new HemisphericLight("hemi", Vector3.Up(), this._utilityLayer.utilityLayerScene);
65
+ }
66
+ Object.defineProperty(GUI3DManager.prototype, "scene", {
67
+ /** Gets the hosting scene */
68
+ get: function () {
69
+ return this._scene;
70
+ },
71
+ enumerable: false,
72
+ configurable: true
73
+ });
74
+ Object.defineProperty(GUI3DManager.prototype, "utilityLayer", {
75
+ /** Gets associated utility layer */
76
+ get: function () {
77
+ return this._utilityLayer;
78
+ },
79
+ enumerable: false,
80
+ configurable: true
81
+ });
82
+ Object.defineProperty(GUI3DManager.prototype, "controlScaling", {
83
+ /** Gets the scaling for all UI elements owned by this manager */
84
+ get: function () {
85
+ return this._customControlScaling;
86
+ },
87
+ /** Sets the scaling adjustment for all UI elements owned by this manager */
88
+ set: function (newScale) {
89
+ if (this._customControlScaling !== newScale && newScale > 0) {
90
+ var scaleRatio_1 = newScale / this._customControlScaling;
91
+ this._customControlScaling = newScale;
92
+ this._rootContainer.children.forEach(function (control) {
93
+ control.scaling.scaleInPlace(scaleRatio_1);
94
+ if (newScale !== 1) {
95
+ control._isScaledByManager = true;
96
+ }
97
+ });
98
+ }
99
+ },
100
+ enumerable: false,
101
+ configurable: true
102
+ });
103
+ Object.defineProperty(GUI3DManager.prototype, "useRealisticScaling", {
104
+ /** Gets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */
105
+ get: function () {
106
+ return this.controlScaling === GUI3DManager.MRTK_REALISTIC_SCALING;
107
+ },
108
+ /** Sets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */
109
+ set: function (newValue) {
110
+ this.controlScaling = newValue ? GUI3DManager.MRTK_REALISTIC_SCALING : 1;
111
+ },
112
+ enumerable: false,
113
+ configurable: true
114
+ });
115
+ GUI3DManager.prototype._handlePointerOut = function (pointerId, isPointerUp) {
116
+ var previousControlOver = this._lastControlOver[pointerId];
117
+ if (previousControlOver) {
118
+ previousControlOver._onPointerOut(previousControlOver);
119
+ delete this._lastControlOver[pointerId];
120
+ }
121
+ if (isPointerUp) {
122
+ if (this._lastControlDown[pointerId]) {
123
+ this._lastControlDown[pointerId].forcePointerUp();
124
+ delete this._lastControlDown[pointerId];
125
+ }
126
+ }
127
+ this.onPickedPointChangedObservable.notifyObservers(null);
128
+ };
129
+ GUI3DManager.prototype._doPicking = function (pi) {
130
+ var _a, _b, _c;
131
+ if (!this._utilityLayer || !this._utilityLayer.shouldRender || !this._utilityLayer.utilityLayerScene.activeCamera) {
132
+ return false;
133
+ }
134
+ var pointerEvent = pi.event;
135
+ var pointerId = pointerEvent.pointerId || 0;
136
+ var buttonIndex = pointerEvent.button;
137
+ var pickingInfo = pi.pickInfo;
138
+ if (pickingInfo) {
139
+ this.onPickingObservable.notifyObservers(pickingInfo.pickedMesh);
140
+ }
141
+ if (!pickingInfo || !pickingInfo.hit) {
142
+ this._handlePointerOut(pointerId, pi.type === PointerEventTypes.POINTERUP);
143
+ return false;
144
+ }
145
+ if (pickingInfo.pickedPoint) {
146
+ this.onPickedPointChangedObservable.notifyObservers(pickingInfo.pickedPoint);
147
+ }
148
+ var control = (_b = (_a = pickingInfo.pickedMesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) === null || _b === void 0 ? void 0 : _b.control;
149
+ if (!!control && !control._processObservables(pi.type, pickingInfo.pickedPoint, ((_c = pickingInfo.originMesh) === null || _c === void 0 ? void 0 : _c.position) || null, pointerId, buttonIndex)) {
150
+ if (pi.type === PointerEventTypes.POINTERMOVE) {
151
+ if (this._lastControlOver[pointerId]) {
152
+ this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId]);
153
+ }
154
+ delete this._lastControlOver[pointerId];
155
+ }
156
+ }
157
+ if (pi.type === PointerEventTypes.POINTERUP) {
158
+ if (this._lastControlDown[pointerEvent.pointerId]) {
159
+ this._lastControlDown[pointerEvent.pointerId].forcePointerUp();
160
+ delete this._lastControlDown[pointerEvent.pointerId];
161
+ }
162
+ if (pointerEvent.pointerType === "touch") {
163
+ this._handlePointerOut(pointerId, false);
164
+ }
165
+ }
166
+ return true;
167
+ };
168
+ Object.defineProperty(GUI3DManager.prototype, "rootContainer", {
169
+ /**
170
+ * Gets the root container
171
+ */
172
+ get: function () {
173
+ return this._rootContainer;
174
+ },
175
+ enumerable: false,
176
+ configurable: true
177
+ });
178
+ /**
179
+ * Gets a boolean indicating if the given control is in the root child list
180
+ * @param control defines the control to check
181
+ * @returns true if the control is in the root child list
182
+ */
183
+ GUI3DManager.prototype.containsControl = function (control) {
184
+ return this._rootContainer.containsControl(control);
185
+ };
186
+ /**
187
+ * Adds a control to the root child list
188
+ * @param control defines the control to add
189
+ * @returns the current manager
190
+ */
191
+ GUI3DManager.prototype.addControl = function (control) {
192
+ this._rootContainer.addControl(control);
193
+ if (this._customControlScaling !== 1) {
194
+ control.scaling.scaleInPlace(this._customControlScaling);
195
+ control._isScaledByManager = true;
196
+ }
197
+ return this;
198
+ };
199
+ /**
200
+ * Removes a control from the root child list
201
+ * @param control defines the control to remove
202
+ * @returns the current container
203
+ */
204
+ GUI3DManager.prototype.removeControl = function (control) {
205
+ this._rootContainer.removeControl(control);
206
+ if (control._isScaledByManager) {
207
+ control.scaling.scaleInPlace(1 / this._customControlScaling);
208
+ control._isScaledByManager = false;
209
+ }
210
+ return this;
211
+ };
212
+ /**
213
+ * Releases all associated resources
214
+ */
215
+ GUI3DManager.prototype.dispose = function () {
216
+ this._rootContainer.dispose();
217
+ for (var materialName in this._sharedMaterials) {
218
+ if (!Object.prototype.hasOwnProperty.call(this._sharedMaterials, materialName)) {
219
+ continue;
220
+ }
221
+ this._sharedMaterials[materialName].dispose();
222
+ }
223
+ this._sharedMaterials = {};
224
+ for (var materialName in this._touchSharedMaterials) {
225
+ if (!Object.prototype.hasOwnProperty.call(this._touchSharedMaterials, materialName)) {
226
+ continue;
227
+ }
228
+ this._touchSharedMaterials[materialName].dispose();
229
+ }
230
+ this._touchSharedMaterials = {};
231
+ if (this._pointerOutObserver && this._utilityLayer) {
232
+ this._utilityLayer.onPointerOutObservable.remove(this._pointerOutObserver);
233
+ this._pointerOutObserver = null;
234
+ }
235
+ this.onPickedPointChangedObservable.clear();
236
+ this.onPickingObservable.clear();
237
+ var utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;
238
+ if (utilityLayerScene) {
239
+ if (this._pointerObserver) {
240
+ utilityLayerScene.onPointerObservable.remove(this._pointerObserver);
241
+ this._pointerObserver = null;
242
+ }
243
+ }
244
+ if (this._scene) {
245
+ if (this._sceneDisposeObserver) {
246
+ this._scene.onDisposeObservable.remove(this._sceneDisposeObserver);
247
+ this._sceneDisposeObserver = null;
248
+ }
249
+ }
250
+ if (this._utilityLayer) {
251
+ this._utilityLayer.dispose();
252
+ }
253
+ };
254
+ GUI3DManager.MRTK_REALISTIC_SCALING = 0.032;
255
+ return GUI3DManager;
256
+ }());
257
+ export { GUI3DManager };
258
258
  //# sourceMappingURL=gui3DManager.js.map
package/3D/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export * from "./controls/index";
2
- export * from "./materials/index";
3
- export * from "./gizmos/index";
4
- export * from "./gui3DManager";
5
- export * from "./vector3WithInfo";
1
+ export * from "./controls/index";
2
+ export * from "./materials/index";
3
+ export * from "./gizmos/index";
4
+ export * from "./gui3DManager";
5
+ export * from "./vector3WithInfo";
package/3D/index.js CHANGED
@@ -1,6 +1,6 @@
1
- export * from "./controls/index.js";
2
- export * from "./materials/index.js";
3
- export * from "./gizmos/index.js";
4
- export * from "./gui3DManager.js";
5
- export * from "./vector3WithInfo.js";
1
+ export * from "./controls/index";
2
+ export * from "./materials/index";
3
+ export * from "./gizmos/index";
4
+ export * from "./gui3DManager";
5
+ export * from "./vector3WithInfo";
6
6
  //# sourceMappingURL=index.js.map