@babylonjs/gui 5.0.0-rc.6 → 5.0.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.
- package/2D/adtInstrumentation.d.ts +52 -52
- package/2D/adtInstrumentation.js +126 -126
- package/2D/adtInstrumentation.js.map +1 -1
- package/2D/advancedDynamicTexture.d.ts +449 -448
- package/2D/advancedDynamicTexture.js +1318 -1318
- package/2D/advancedDynamicTexture.js.map +1 -1
- package/2D/controls/button.d.ts +135 -135
- package/2D/controls/button.js +276 -276
- package/2D/controls/button.js.map +1 -1
- package/2D/controls/checkbox.d.ts +59 -59
- package/2D/controls/checkbox.js +188 -188
- package/2D/controls/checkbox.js.map +1 -1
- package/2D/controls/colorpicker.d.ts +103 -103
- package/2D/controls/colorpicker.js +1417 -1417
- package/2D/controls/colorpicker.js.map +1 -1
- package/2D/controls/container.d.ts +175 -175
- package/2D/controls/container.js +570 -570
- package/2D/controls/container.js.map +1 -1
- package/2D/controls/control.d.ts +866 -866
- package/2D/controls/control.js +2433 -2433
- package/2D/controls/control.js.map +1 -1
- package/2D/controls/displayGrid.d.ts +53 -53
- package/2D/controls/displayGrid.js +245 -245
- package/2D/controls/displayGrid.js.map +1 -1
- package/2D/controls/ellipse.d.ts +21 -21
- package/2D/controls/ellipse.js +85 -85
- package/2D/controls/ellipse.js.map +1 -1
- package/2D/controls/focusableButton.d.ts +59 -59
- package/2D/controls/focusableButton.js +99 -99
- package/2D/controls/focusableButton.js.map +1 -1
- package/2D/controls/focusableControl.d.ts +34 -34
- package/2D/controls/focusableControl.js +1 -1
- package/2D/controls/focusableControl.js.map +1 -1
- package/2D/controls/grid.d.ts +139 -139
- package/2D/controls/grid.js +529 -529
- package/2D/controls/grid.js.map +1 -1
- package/2D/controls/image.d.ts +204 -204
- package/2D/controls/image.js +887 -887
- package/2D/controls/image.js.map +1 -1
- package/2D/controls/index.d.ts +29 -29
- package/2D/controls/index.js +29 -29
- package/2D/controls/inputPassword.d.ts +9 -8
- package/2D/controls/inputPassword.js +28 -25
- package/2D/controls/inputPassword.js.map +1 -1
- package/2D/controls/inputText.d.ts +201 -201
- package/2D/controls/inputText.js +1119 -1119
- package/2D/controls/inputText.js.map +1 -1
- package/2D/controls/line.d.ts +66 -66
- package/2D/controls/line.js +271 -271
- package/2D/controls/line.js.map +1 -1
- package/2D/controls/multiLine.d.ts +75 -75
- package/2D/controls/multiLine.js +262 -262
- package/2D/controls/multiLine.js.map +1 -1
- package/2D/controls/radioButton.d.ts +49 -49
- package/2D/controls/radioButton.js +205 -205
- package/2D/controls/radioButton.js.map +1 -1
- package/2D/controls/rectangle.d.ts +29 -29
- package/2D/controls/rectangle.js +150 -150
- package/2D/controls/rectangle.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewer.d.ts +182 -182
- package/2D/controls/scrollViewers/scrollViewer.js +677 -677
- package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +57 -57
- package/2D/controls/scrollViewers/scrollViewerWindow.js +278 -278
- package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
- package/2D/controls/selector.d.ts +263 -263
- package/2D/controls/selector.js +692 -692
- package/2D/controls/sliders/baseSlider.d.ts +82 -82
- package/2D/controls/sliders/baseSlider.js +347 -347
- package/2D/controls/sliders/baseSlider.js.map +1 -1
- package/2D/controls/sliders/imageBasedSlider.d.ts +49 -49
- package/2D/controls/sliders/imageBasedSlider.js +192 -192
- package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
- package/2D/controls/sliders/imageScrollBar.d.ts +65 -65
- package/2D/controls/sliders/imageScrollBar.js +263 -263
- package/2D/controls/sliders/imageScrollBar.js.map +1 -1
- package/2D/controls/sliders/scrollBar.d.ts +38 -38
- package/2D/controls/sliders/scrollBar.js +143 -143
- package/2D/controls/sliders/scrollBar.js.map +1 -1
- package/2D/controls/sliders/slider.d.ts +35 -35
- package/2D/controls/sliders/slider.js +271 -271
- package/2D/controls/sliders/slider.js.map +1 -1
- package/2D/controls/stackPanel.d.ts +64 -64
- package/2D/controls/stackPanel.js +246 -246
- package/2D/controls/stackPanel.js.map +1 -1
- package/2D/controls/statics.d.ts +6 -6
- package/2D/controls/statics.js +49 -49
- package/2D/controls/textBlock.d.ts +175 -175
- package/2D/controls/textBlock.js +603 -603
- package/2D/controls/textBlock.js.map +1 -1
- package/2D/controls/textWrapper.d.ts +13 -13
- package/2D/controls/textWrapper.js +101 -101
- package/2D/controls/toggleButton.d.ts +117 -117
- package/2D/controls/toggleButton.js +268 -268
- package/2D/controls/toggleButton.js.map +1 -1
- package/2D/controls/virtualKeyboard.d.ts +96 -96
- package/2D/controls/virtualKeyboard.js +256 -256
- package/2D/controls/virtualKeyboard.js.map +1 -1
- package/2D/index.d.ts +9 -9
- package/2D/index.js +10 -9
- package/2D/index.js.map +1 -1
- package/2D/math2D.d.ts +117 -117
- package/2D/math2D.js +221 -221
- package/2D/math2D.js.map +1 -1
- package/2D/measure.d.ts +77 -77
- package/2D/measure.js +139 -139
- package/2D/measure.js.map +1 -1
- package/2D/multiLinePoint.d.ts +47 -47
- package/2D/multiLinePoint.js +127 -127
- package/2D/multiLinePoint.js.map +1 -1
- package/2D/style.d.ts +46 -46
- package/2D/style.js +97 -97
- package/2D/style.js.map +1 -1
- package/2D/valueAndUnit.d.ts +89 -89
- package/2D/valueAndUnit.js +226 -226
- package/2D/valueAndUnit.js.map +1 -1
- package/2D/xmlLoader.d.ts +60 -60
- package/2D/xmlLoader.js +348 -348
- package/2D/xmlLoader.js.map +1 -1
- package/3D/behaviors/defaultBehavior.d.ts +73 -73
- package/3D/behaviors/defaultBehavior.js +121 -121
- package/3D/behaviors/defaultBehavior.js.map +1 -1
- package/3D/controls/abstractButton3D.d.ts +15 -15
- package/3D/controls/abstractButton3D.js +25 -25
- package/3D/controls/abstractButton3D.js.map +1 -1
- package/3D/controls/button3D.d.ts +30 -30
- package/3D/controls/button3D.js +93 -93
- package/3D/controls/button3D.js.map +1 -1
- package/3D/controls/container3D.d.ts +72 -72
- package/3D/controls/container3D.js +139 -139
- package/3D/controls/container3D.js.map +1 -1
- package/3D/controls/contentDisplay3D.d.ts +30 -30
- package/3D/controls/contentDisplay3D.js +79 -79
- package/3D/controls/contentDisplay3D.js.map +1 -1
- package/3D/controls/control3D.d.ts +201 -201
- package/3D/controls/control3D.js +445 -445
- package/3D/controls/control3D.js.map +1 -1
- package/3D/controls/cylinderPanel.d.ts +17 -17
- package/3D/controls/cylinderPanel.js +66 -66
- package/3D/controls/cylinderPanel.js.map +1 -1
- package/3D/controls/handMenu.d.ts +28 -28
- package/3D/controls/handMenu.js +47 -47
- package/3D/controls/handMenu.js.map +1 -1
- package/3D/controls/holographicBackplate.d.ts +49 -49
- package/3D/controls/holographicBackplate.js +120 -120
- package/3D/controls/holographicBackplate.js.map +1 -1
- package/3D/controls/holographicButton.d.ts +84 -84
- package/3D/controls/holographicButton.js +339 -339
- package/3D/controls/holographicButton.js.map +1 -1
- package/3D/controls/holographicSlate.d.ts +131 -131
- package/3D/controls/holographicSlate.js +431 -431
- package/3D/controls/holographicSlate.js.map +1 -1
- package/3D/controls/index.d.ts +21 -21
- package/3D/controls/index.js +21 -21
- package/3D/controls/meshButton3D.d.ts +21 -21
- package/3D/controls/meshButton3D.js +62 -62
- package/3D/controls/meshButton3D.js.map +1 -1
- package/3D/controls/nearMenu.d.ts +44 -44
- package/3D/controls/nearMenu.js +114 -114
- package/3D/controls/nearMenu.js.map +1 -1
- package/3D/controls/planePanel.d.ts +9 -9
- package/3D/controls/planePanel.js +36 -36
- package/3D/controls/planePanel.js.map +1 -1
- package/3D/controls/scatterPanel.d.ts +18 -18
- package/3D/controls/scatterPanel.js +108 -108
- package/3D/controls/scatterPanel.js.map +1 -1
- package/3D/controls/slider3D.d.ts +81 -81
- package/3D/controls/slider3D.js +268 -268
- package/3D/controls/slider3D.js.map +1 -1
- package/3D/controls/spherePanel.d.ts +17 -17
- package/3D/controls/spherePanel.js +67 -67
- package/3D/controls/spherePanel.js.map +1 -1
- package/3D/controls/stackPanel3D.d.ts +22 -22
- package/3D/controls/stackPanel3D.js +107 -107
- package/3D/controls/touchButton3D.d.ts +80 -80
- package/3D/controls/touchButton3D.js +233 -233
- package/3D/controls/touchButton3D.js.map +1 -1
- package/3D/controls/touchHolographicButton.d.ts +110 -110
- package/3D/controls/touchHolographicButton.js +445 -445
- package/3D/controls/touchHolographicButton.js.map +1 -1
- package/3D/controls/touchHolographicMenu.d.ts +61 -61
- package/3D/controls/touchHolographicMenu.js +149 -149
- package/3D/controls/touchHolographicMenu.js.map +1 -1
- package/3D/controls/touchMeshButton3D.d.ts +21 -21
- package/3D/controls/touchMeshButton3D.js +62 -62
- package/3D/controls/touchMeshButton3D.js.map +1 -1
- package/3D/controls/volumeBasedPanel.d.ts +53 -53
- package/3D/controls/volumeBasedPanel.js +174 -174
- package/3D/controls/volumeBasedPanel.js.map +1 -1
- package/3D/gizmos/gizmoHandle.d.ts +108 -108
- package/3D/gizmos/gizmoHandle.js +209 -209
- package/3D/gizmos/gizmoHandle.js.map +1 -1
- package/3D/gizmos/index.d.ts +2 -2
- package/3D/gizmos/index.js +2 -2
- package/3D/gizmos/slateGizmo.d.ts +57 -57
- package/3D/gizmos/slateGizmo.js +369 -369
- package/3D/gizmos/slateGizmo.js.map +1 -1
- package/3D/gui3DManager.d.ts +94 -94
- package/3D/gui3DManager.js +257 -257
- package/3D/gui3DManager.js.map +1 -1
- package/3D/index.d.ts +5 -5
- package/3D/index.js +6 -5
- package/3D/index.js.map +1 -1
- package/3D/materials/fluent/fluentMaterial.d.ts +91 -90
- package/3D/materials/fluent/fluentMaterial.js +292 -292
- package/3D/materials/fluent/fluentMaterial.js.map +1 -1
- package/3D/materials/fluent/index.d.ts +1 -1
- package/3D/materials/fluent/index.js +1 -1
- package/3D/materials/fluent/shaders/fluent.fragment.d.ts +5 -5
- package/3D/materials/fluent/shaders/fluent.fragment.js +8 -8
- package/3D/materials/fluent/shaders/fluent.vertex.d.ts +5 -5
- package/3D/materials/fluent/shaders/fluent.vertex.js +8 -8
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +155 -154
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +469 -469
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -1
- package/3D/materials/fluentBackplate/index.d.ts +1 -1
- package/3D/materials/fluentBackplate/index.js +1 -1
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -5
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +8 -8
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -5
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +8 -8
- package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +190 -189
- package/3D/materials/fluentButton/fluentButtonMaterial.js +539 -539
- package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -1
- package/3D/materials/fluentButton/index.d.ts +1 -1
- package/3D/materials/fluentButton/index.js +1 -1
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -5
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +8 -8
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -5
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +8 -8
- package/3D/materials/fluentMaterial.d.ts +4 -4
- package/3D/materials/fluentMaterial.js +4 -4
- package/3D/materials/handle/handleMaterial.d.ts +68 -68
- package/3D/materials/handle/handleMaterial.js +126 -126
- package/3D/materials/handle/handleMaterial.js.map +1 -1
- package/3D/materials/handle/index.d.ts +1 -1
- package/3D/materials/handle/index.js +1 -1
- package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -5
- package/3D/materials/handle/shaders/handle.fragment.js +8 -8
- package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -5
- package/3D/materials/handle/shaders/handle.vertex.js +8 -8
- package/3D/materials/index.d.ts +5 -5
- package/3D/materials/index.js +6 -5
- package/3D/materials/index.js.map +1 -1
- package/3D/materials/mrdl/index.d.ts +3 -3
- package/3D/materials/mrdl/index.js +3 -3
- package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +148 -147
- package/3D/materials/mrdl/mrdlBackplateMaterial.js +436 -436
- package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +334 -333
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js +851 -851
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +334 -333
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +851 -851
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +8 -8
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +8 -8
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +8 -8
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +8 -8
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +8 -8
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +8 -8
- package/3D/vector3WithInfo.d.ts +16 -16
- package/3D/vector3WithInfo.js +23 -23
- package/index.d.ts +2 -2
- package/index.js +3 -2
- package/index.js.map +1 -1
- package/legacy/legacy.d.ts +1 -1
- package/legacy/legacy.js +14 -13
- package/legacy/legacy.js.map +1 -1
- package/license.md +71 -0
- package/package.json +24 -5
package/3D/gui3DManager.js
CHANGED
|
@@ -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.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 };
|
|
258
258
|
//# sourceMappingURL=gui3DManager.js.map
|
package/3D/gui3DManager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gui3DManager.js","sourceRoot":"","sources":["../../../../../lts/gui/generated/3D/gui3DManager.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { Nullable } from \"core/types\";\r\nimport { Observable, Observer } from \"core/Misc/observable\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport { PointerInfo, PointerEventTypes } from \"core/Events/pointerEvents\";\r\nimport { Material } from \"core/Materials/material\";\r\nimport { HemisphericLight } from \"core/Lights/hemisphericLight\";\r\nimport { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { UtilityLayerRenderer } from \"core/Rendering/utilityLayerRenderer\";\r\nimport { EngineStore } from \"core/Engines/engineStore\";\r\nimport { IDisposable, Scene } from \"core/scene\";\r\n\r\nimport { Container3D } from \"./controls/container3D\";\r\nimport { Control3D } from \"./controls/control3D\";\r\nimport { IPointerEvent } from \"core/Events/deviceInputEvents\";\r\n\r\n/**\r\n * Class used to manage 3D user interface\r\n * @see https://doc.babylonjs.com/how_to/gui3d\r\n */\r\nexport class GUI3DManager implements IDisposable {\r\n private _scene: Scene;\r\n private _sceneDisposeObserver: Nullable<Observer<Scene>>;\r\n private _utilityLayer: Nullable<UtilityLayerRenderer>;\r\n private _rootContainer: Container3D;\r\n private _pointerObserver: Nullable<Observer<PointerInfo>>;\r\n private _pointerOutObserver: Nullable<Observer<number>>;\r\n private _customControlScaling = 1.0;\r\n /** @hidden */\r\n public _lastPickedControl: Control3D;\r\n /** @hidden */\r\n public _lastControlOver: { [pointerId: number]: Control3D } = {};\r\n /** @hidden */\r\n public _lastControlDown: { [pointerId: number]: Control3D } = {};\r\n\r\n protected static MRTK_REALISTIC_SCALING: number = 0.032;\r\n\r\n /**\r\n * Observable raised when the point picked by the pointer events changed\r\n */\r\n public onPickedPointChangedObservable = new Observable<Nullable<Vector3>>();\r\n\r\n /**\r\n * Observable raised when a picking happens\r\n */\r\n public onPickingObservable = new Observable<Nullable<AbstractMesh>>();\r\n\r\n // Shared resources\r\n /** @hidden */\r\n public _sharedMaterials: { [key: string]: Material } = {};\r\n\r\n /** @hidden */\r\n public _touchSharedMaterials: { [key: string]: Material } = {};\r\n\r\n /** Gets the hosting scene */\r\n public get scene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /** Gets associated utility layer */\r\n public get utilityLayer(): Nullable<UtilityLayerRenderer> {\r\n return this._utilityLayer;\r\n }\r\n\r\n /** Gets the scaling for all UI elements owned by this manager */\r\n public get controlScaling() {\r\n return this._customControlScaling;\r\n }\r\n\r\n /** Sets the scaling adjustment for all UI elements owned by this manager */\r\n public set controlScaling(newScale: number) {\r\n if (this._customControlScaling !== newScale && newScale > 0) {\r\n const scaleRatio = newScale / this._customControlScaling;\r\n this._customControlScaling = newScale;\r\n\r\n this._rootContainer.children.forEach((control: Control3D) => {\r\n control.scaling.scaleInPlace(scaleRatio);\r\n\r\n if (newScale !== 1) {\r\n control._isScaledByManager = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n /** Gets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */\r\n public get useRealisticScaling() {\r\n return this.controlScaling === GUI3DManager.MRTK_REALISTIC_SCALING;\r\n }\r\n\r\n /** Sets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */\r\n public set useRealisticScaling(newValue: boolean) {\r\n this.controlScaling = newValue ? GUI3DManager.MRTK_REALISTIC_SCALING : 1;\r\n }\r\n\r\n /**\r\n * Creates a new GUI3DManager\r\n * @param scene\r\n */\r\n public constructor(scene?: Scene) {\r\n this._scene = scene || EngineStore.LastCreatedScene!;\r\n this._sceneDisposeObserver = this._scene.onDisposeObservable.add(() => {\r\n this._sceneDisposeObserver = null;\r\n this._utilityLayer = null;\r\n this.dispose();\r\n });\r\n\r\n this._utilityLayer = UtilityLayerRenderer._CreateDefaultUtilityLayerFromScene(this._scene);\r\n this._utilityLayer.onlyCheckPointerDownEvents = false;\r\n this._utilityLayer.pickUtilitySceneFirst = false;\r\n this._utilityLayer.mainSceneTrackerPredicate = (mesh: Nullable<AbstractMesh>) => {\r\n return mesh && mesh.reservedDataStore?.GUI3D?.control?._node;\r\n };\r\n\r\n // Root\r\n this._rootContainer = new Container3D(\"RootContainer\");\r\n this._rootContainer._host = this;\r\n const utilityLayerScene = this._utilityLayer.utilityLayerScene;\r\n\r\n // Events\r\n this._pointerOutObserver = this._utilityLayer.onPointerOutObservable.add((pointerId) => {\r\n this._handlePointerOut(pointerId, true);\r\n });\r\n\r\n this._pointerObserver = utilityLayerScene.onPointerObservable.add((pi) => {\r\n this._doPicking(pi);\r\n });\r\n\r\n // Scene\r\n this._utilityLayer.utilityLayerScene.autoClear = false;\r\n this._utilityLayer.utilityLayerScene.autoClearDepthAndStencil = false;\r\n new HemisphericLight(\"hemi\", Vector3.Up(), this._utilityLayer.utilityLayerScene);\r\n }\r\n\r\n private _handlePointerOut(pointerId: number, isPointerUp: boolean) {\r\n const previousControlOver = this._lastControlOver[pointerId];\r\n if (previousControlOver) {\r\n previousControlOver._onPointerOut(previousControlOver);\r\n delete this._lastControlOver[pointerId];\r\n }\r\n\r\n if (isPointerUp) {\r\n if (this._lastControlDown[pointerId]) {\r\n this._lastControlDown[pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerId];\r\n }\r\n }\r\n\r\n this.onPickedPointChangedObservable.notifyObservers(null);\r\n }\r\n\r\n private _doPicking(pi: PointerInfo): boolean {\r\n if (!this._utilityLayer || !this._utilityLayer.shouldRender || !this._utilityLayer.utilityLayerScene.activeCamera) {\r\n return false;\r\n }\r\n\r\n const pointerEvent = <IPointerEvent>pi.event;\r\n\r\n const pointerId = pointerEvent.pointerId || 0;\r\n const buttonIndex = pointerEvent.button;\r\n\r\n const pickingInfo = pi.pickInfo;\r\n if (pickingInfo) {\r\n this.onPickingObservable.notifyObservers(pickingInfo.pickedMesh);\r\n }\r\n\r\n if (!pickingInfo || !pickingInfo.hit) {\r\n this._handlePointerOut(pointerId, pi.type === PointerEventTypes.POINTERUP);\r\n return false;\r\n }\r\n\r\n if (pickingInfo.pickedPoint) {\r\n this.onPickedPointChangedObservable.notifyObservers(pickingInfo.pickedPoint);\r\n }\r\n\r\n const control = <Control3D>pickingInfo.pickedMesh!.reservedDataStore?.GUI3D?.control;\r\n if (!!control && !control._processObservables(pi.type, pickingInfo.pickedPoint!, pickingInfo.originMesh?.position || null, pointerId, buttonIndex)) {\r\n if (pi.type === PointerEventTypes.POINTERMOVE) {\r\n if (this._lastControlOver[pointerId]) {\r\n this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId]);\r\n }\r\n\r\n delete this._lastControlOver[pointerId];\r\n }\r\n }\r\n\r\n if (pi.type === PointerEventTypes.POINTERUP) {\r\n if (this._lastControlDown[pointerEvent.pointerId]) {\r\n this._lastControlDown[pointerEvent.pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerEvent.pointerId];\r\n }\r\n\r\n if (pointerEvent.pointerType === \"touch\") {\r\n this._handlePointerOut(pointerId, false);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets the root container\r\n */\r\n public get rootContainer(): Container3D {\r\n return this._rootContainer;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if the given control is in the root child list\r\n * @param control defines the control to check\r\n * @returns true if the control is in the root child list\r\n */\r\n public containsControl(control: Control3D): boolean {\r\n return this._rootContainer.containsControl(control);\r\n }\r\n\r\n /**\r\n * Adds a control to the root child list\r\n * @param control defines the control to add\r\n * @returns the current manager\r\n */\r\n public addControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.addControl(control);\r\n if (this._customControlScaling !== 1) {\r\n control.scaling.scaleInPlace(this._customControlScaling);\r\n control._isScaledByManager = true;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a control from the root child list\r\n * @param control defines the control to remove\r\n * @returns the current container\r\n */\r\n public removeControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.removeControl(control);\r\n if (control._isScaledByManager) {\r\n control.scaling.scaleInPlace(1 / this._customControlScaling);\r\n control._isScaledByManager = false;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n this._rootContainer.dispose();\r\n\r\n for (const materialName in this._sharedMaterials) {\r\n if (!Object.prototype.hasOwnProperty.call(this._sharedMaterials, materialName)) {\r\n continue;\r\n }\r\n\r\n this._sharedMaterials[materialName].dispose();\r\n }\r\n\r\n this._sharedMaterials = {};\r\n\r\n for (const materialName in this._touchSharedMaterials) {\r\n if (!Object.prototype.hasOwnProperty.call(this._touchSharedMaterials, materialName)) {\r\n continue;\r\n }\r\n\r\n this._touchSharedMaterials[materialName].dispose();\r\n }\r\n\r\n this._touchSharedMaterials = {};\r\n\r\n if (this._pointerOutObserver && this._utilityLayer) {\r\n this._utilityLayer.onPointerOutObservable.remove(this._pointerOutObserver);\r\n this._pointerOutObserver = null;\r\n }\r\n\r\n this.onPickedPointChangedObservable.clear();\r\n this.onPickingObservable.clear();\r\n\r\n const utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;\r\n\r\n if (utilityLayerScene) {\r\n if (this._pointerObserver) {\r\n utilityLayerScene.onPointerObservable.remove(this._pointerObserver);\r\n this._pointerObserver = null;\r\n }\r\n }\r\n if (this._scene) {\r\n if (this._sceneDisposeObserver) {\r\n this._scene.onDisposeObservable.remove(this._sceneDisposeObserver);\r\n this._sceneDisposeObserver = null;\r\n }\r\n }\r\n\r\n if (this._utilityLayer) {\r\n this._utilityLayer.dispose();\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"gui3DManager.js","sourceRoot":"","sources":["../../../../../lts/gui/generated/3D/gui3DManager.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport type { PointerInfo } from \"core/Events/pointerEvents\";\r\nimport { PointerEventTypes } from \"core/Events/pointerEvents\";\r\nimport type { Material } from \"core/Materials/material\";\r\nimport { HemisphericLight } from \"core/Lights/hemisphericLight\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { UtilityLayerRenderer } from \"core/Rendering/utilityLayerRenderer\";\r\nimport { EngineStore } from \"core/Engines/engineStore\";\r\nimport type { IDisposable, Scene } from \"core/scene\";\r\n\r\nimport { Container3D } from \"./controls/container3D\";\r\nimport type { Control3D } from \"./controls/control3D\";\r\nimport type { IPointerEvent } from \"core/Events/deviceInputEvents\";\r\n\r\n/**\r\n * Class used to manage 3D user interface\r\n * @see https://doc.babylonjs.com/how_to/gui3d\r\n */\r\nexport class GUI3DManager implements IDisposable {\r\n private _scene: Scene;\r\n private _sceneDisposeObserver: Nullable<Observer<Scene>>;\r\n private _utilityLayer: Nullable<UtilityLayerRenderer>;\r\n private _rootContainer: Container3D;\r\n private _pointerObserver: Nullable<Observer<PointerInfo>>;\r\n private _pointerOutObserver: Nullable<Observer<number>>;\r\n private _customControlScaling = 1.0;\r\n /** @hidden */\r\n public _lastPickedControl: Control3D;\r\n /** @hidden */\r\n public _lastControlOver: { [pointerId: number]: Control3D } = {};\r\n /** @hidden */\r\n public _lastControlDown: { [pointerId: number]: Control3D } = {};\r\n\r\n protected static MRTK_REALISTIC_SCALING: number = 0.032;\r\n\r\n /**\r\n * Observable raised when the point picked by the pointer events changed\r\n */\r\n public onPickedPointChangedObservable = new Observable<Nullable<Vector3>>();\r\n\r\n /**\r\n * Observable raised when a picking happens\r\n */\r\n public onPickingObservable = new Observable<Nullable<AbstractMesh>>();\r\n\r\n // Shared resources\r\n /** @hidden */\r\n public _sharedMaterials: { [key: string]: Material } = {};\r\n\r\n /** @hidden */\r\n public _touchSharedMaterials: { [key: string]: Material } = {};\r\n\r\n /** Gets the hosting scene */\r\n public get scene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /** Gets associated utility layer */\r\n public get utilityLayer(): Nullable<UtilityLayerRenderer> {\r\n return this._utilityLayer;\r\n }\r\n\r\n /** Gets the scaling for all UI elements owned by this manager */\r\n public get controlScaling() {\r\n return this._customControlScaling;\r\n }\r\n\r\n /** Sets the scaling adjustment for all UI elements owned by this manager */\r\n public set controlScaling(newScale: number) {\r\n if (this._customControlScaling !== newScale && newScale > 0) {\r\n const scaleRatio = newScale / this._customControlScaling;\r\n this._customControlScaling = newScale;\r\n\r\n this._rootContainer.children.forEach((control: Control3D) => {\r\n control.scaling.scaleInPlace(scaleRatio);\r\n\r\n if (newScale !== 1) {\r\n control._isScaledByManager = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n /** Gets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */\r\n public get useRealisticScaling() {\r\n return this.controlScaling === GUI3DManager.MRTK_REALISTIC_SCALING;\r\n }\r\n\r\n /** Sets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */\r\n public set useRealisticScaling(newValue: boolean) {\r\n this.controlScaling = newValue ? GUI3DManager.MRTK_REALISTIC_SCALING : 1;\r\n }\r\n\r\n /**\r\n * Creates a new GUI3DManager\r\n * @param scene\r\n */\r\n public constructor(scene?: Scene) {\r\n this._scene = scene || EngineStore.LastCreatedScene!;\r\n this._sceneDisposeObserver = this._scene.onDisposeObservable.add(() => {\r\n this._sceneDisposeObserver = null;\r\n this._utilityLayer = null;\r\n this.dispose();\r\n });\r\n\r\n this._utilityLayer = UtilityLayerRenderer._CreateDefaultUtilityLayerFromScene(this._scene);\r\n this._utilityLayer.onlyCheckPointerDownEvents = false;\r\n this._utilityLayer.pickUtilitySceneFirst = false;\r\n this._utilityLayer.mainSceneTrackerPredicate = (mesh: Nullable<AbstractMesh>) => {\r\n return mesh && mesh.reservedDataStore?.GUI3D?.control?._node;\r\n };\r\n\r\n // Root\r\n this._rootContainer = new Container3D(\"RootContainer\");\r\n this._rootContainer._host = this;\r\n const utilityLayerScene = this._utilityLayer.utilityLayerScene;\r\n\r\n // Events\r\n this._pointerOutObserver = this._utilityLayer.onPointerOutObservable.add((pointerId) => {\r\n this._handlePointerOut(pointerId, true);\r\n });\r\n\r\n this._pointerObserver = utilityLayerScene.onPointerObservable.add((pi) => {\r\n this._doPicking(pi);\r\n });\r\n\r\n // Scene\r\n this._utilityLayer.utilityLayerScene.autoClear = false;\r\n this._utilityLayer.utilityLayerScene.autoClearDepthAndStencil = false;\r\n new HemisphericLight(\"hemi\", Vector3.Up(), this._utilityLayer.utilityLayerScene);\r\n }\r\n\r\n private _handlePointerOut(pointerId: number, isPointerUp: boolean) {\r\n const previousControlOver = this._lastControlOver[pointerId];\r\n if (previousControlOver) {\r\n previousControlOver._onPointerOut(previousControlOver);\r\n delete this._lastControlOver[pointerId];\r\n }\r\n\r\n if (isPointerUp) {\r\n if (this._lastControlDown[pointerId]) {\r\n this._lastControlDown[pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerId];\r\n }\r\n }\r\n\r\n this.onPickedPointChangedObservable.notifyObservers(null);\r\n }\r\n\r\n private _doPicking(pi: PointerInfo): boolean {\r\n if (!this._utilityLayer || !this._utilityLayer.shouldRender || !this._utilityLayer.utilityLayerScene.activeCamera) {\r\n return false;\r\n }\r\n\r\n const pointerEvent = <IPointerEvent>pi.event;\r\n\r\n const pointerId = pointerEvent.pointerId || 0;\r\n const buttonIndex = pointerEvent.button;\r\n\r\n const pickingInfo = pi.pickInfo;\r\n if (pickingInfo) {\r\n this.onPickingObservable.notifyObservers(pickingInfo.pickedMesh);\r\n }\r\n\r\n if (!pickingInfo || !pickingInfo.hit) {\r\n this._handlePointerOut(pointerId, pi.type === PointerEventTypes.POINTERUP);\r\n return false;\r\n }\r\n\r\n if (pickingInfo.pickedPoint) {\r\n this.onPickedPointChangedObservable.notifyObservers(pickingInfo.pickedPoint);\r\n }\r\n\r\n const control = <Control3D>pickingInfo.pickedMesh!.reservedDataStore?.GUI3D?.control;\r\n if (!!control && !control._processObservables(pi.type, pickingInfo.pickedPoint!, pickingInfo.originMesh?.position || null, pointerId, buttonIndex)) {\r\n if (pi.type === PointerEventTypes.POINTERMOVE) {\r\n if (this._lastControlOver[pointerId]) {\r\n this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId]);\r\n }\r\n\r\n delete this._lastControlOver[pointerId];\r\n }\r\n }\r\n\r\n if (pi.type === PointerEventTypes.POINTERUP) {\r\n if (this._lastControlDown[pointerEvent.pointerId]) {\r\n this._lastControlDown[pointerEvent.pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerEvent.pointerId];\r\n }\r\n\r\n if (pointerEvent.pointerType === \"touch\") {\r\n this._handlePointerOut(pointerId, false);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets the root container\r\n */\r\n public get rootContainer(): Container3D {\r\n return this._rootContainer;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if the given control is in the root child list\r\n * @param control defines the control to check\r\n * @returns true if the control is in the root child list\r\n */\r\n public containsControl(control: Control3D): boolean {\r\n return this._rootContainer.containsControl(control);\r\n }\r\n\r\n /**\r\n * Adds a control to the root child list\r\n * @param control defines the control to add\r\n * @returns the current manager\r\n */\r\n public addControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.addControl(control);\r\n if (this._customControlScaling !== 1) {\r\n control.scaling.scaleInPlace(this._customControlScaling);\r\n control._isScaledByManager = true;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a control from the root child list\r\n * @param control defines the control to remove\r\n * @returns the current container\r\n */\r\n public removeControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.removeControl(control);\r\n if (control._isScaledByManager) {\r\n control.scaling.scaleInPlace(1 / this._customControlScaling);\r\n control._isScaledByManager = false;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n this._rootContainer.dispose();\r\n\r\n for (const materialName in this._sharedMaterials) {\r\n if (!Object.prototype.hasOwnProperty.call(this._sharedMaterials, materialName)) {\r\n continue;\r\n }\r\n\r\n this._sharedMaterials[materialName].dispose();\r\n }\r\n\r\n this._sharedMaterials = {};\r\n\r\n for (const materialName in this._touchSharedMaterials) {\r\n if (!Object.prototype.hasOwnProperty.call(this._touchSharedMaterials, materialName)) {\r\n continue;\r\n }\r\n\r\n this._touchSharedMaterials[materialName].dispose();\r\n }\r\n\r\n this._touchSharedMaterials = {};\r\n\r\n if (this._pointerOutObserver && this._utilityLayer) {\r\n this._utilityLayer.onPointerOutObservable.remove(this._pointerOutObserver);\r\n this._pointerOutObserver = null;\r\n }\r\n\r\n this.onPickedPointChangedObservable.clear();\r\n this.onPickingObservable.clear();\r\n\r\n const utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;\r\n\r\n if (utilityLayerScene) {\r\n if (this._pointerObserver) {\r\n utilityLayerScene.onPointerObservable.remove(this._pointerObserver);\r\n this._pointerObserver = null;\r\n }\r\n }\r\n if (this._scene) {\r\n if (this._sceneDisposeObserver) {\r\n this._scene.onDisposeObservable.remove(this._sceneDisposeObserver);\r\n this._sceneDisposeObserver = null;\r\n }\r\n }\r\n\r\n if (this._utilityLayer) {\r\n this._utilityLayer.dispose();\r\n }\r\n }\r\n}\r\n"]}
|
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,7 @@
|
|
|
1
|
-
|
|
2
|
-
export * from "./
|
|
3
|
-
export * from "./
|
|
4
|
-
export * from "./
|
|
5
|
-
export * from "./
|
|
1
|
+
/* eslint-disable import/no-internal-modules */
|
|
2
|
+
export * from "./controls/index.js";
|
|
3
|
+
export * from "./materials/index.js";
|
|
4
|
+
export * from "./gizmos/index.js";
|
|
5
|
+
export * from "./gui3DManager.js";
|
|
6
|
+
export * from "./vector3WithInfo.js";
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
package/3D/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lts/gui/generated/3D/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../lts/gui/generated/3D/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC","sourcesContent":["/* eslint-disable import/no-internal-modules */\r\nexport * from \"./controls/index\";\r\nexport * from \"./materials/index\";\r\nexport * from \"./gizmos/index\";\r\n\r\nexport * from \"./gui3DManager\";\r\nexport * from \"./vector3WithInfo\";\r\n"]}
|