@babylonjs/gui 5.0.0-alpha.9 → 5.0.0-beta.1
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.js +1 -1
- package/2D/advancedDynamicTexture.d.ts +165 -125
- package/2D/advancedDynamicTexture.js +342 -181
- package/2D/advancedDynamicTexture.js.map +1 -1
- package/2D/controls/button.d.ts +8 -0
- package/2D/controls/button.js +33 -10
- package/2D/controls/button.js.map +1 -1
- package/2D/controls/checkbox.d.ts +2 -1
- package/2D/controls/checkbox.js +10 -8
- package/2D/controls/checkbox.js.map +1 -1
- package/2D/controls/colorpicker.d.ts +4 -3
- package/2D/controls/colorpicker.js +40 -23
- package/2D/controls/colorpicker.js.map +1 -1
- package/2D/controls/container.d.ts +16 -5
- package/2D/controls/container.js +91 -13
- package/2D/controls/container.js.map +1 -1
- package/2D/controls/control.d.ts +103 -44
- package/2D/controls/control.js +278 -129
- package/2D/controls/control.js.map +1 -1
- package/2D/controls/displayGrid.d.ts +2 -1
- package/2D/controls/displayGrid.js +6 -6
- package/2D/controls/displayGrid.js.map +1 -1
- package/2D/controls/ellipse.d.ts +5 -3
- package/2D/controls/ellipse.js +9 -5
- package/2D/controls/ellipse.js.map +1 -1
- package/2D/controls/focusableButton.d.ts +1 -0
- package/2D/controls/focusableButton.js +9 -6
- package/2D/controls/focusableButton.js.map +1 -1
- package/2D/controls/grid.d.ts +13 -2
- package/2D/controls/grid.js +108 -24
- package/2D/controls/grid.js.map +1 -1
- package/2D/controls/image.d.ts +5 -4
- package/2D/controls/image.js +52 -31
- package/2D/controls/image.js.map +1 -1
- package/2D/controls/index.js +29 -29
- package/2D/controls/inputPassword.js +4 -4
- package/2D/controls/inputPassword.js.map +1 -1
- package/2D/controls/inputText.d.ts +2 -1
- package/2D/controls/inputText.js +40 -14
- package/2D/controls/inputText.js.map +1 -1
- package/2D/controls/line.d.ts +3 -2
- package/2D/controls/line.js +8 -8
- package/2D/controls/line.js.map +1 -1
- package/2D/controls/multiLine.d.ts +4 -3
- package/2D/controls/multiLine.js +6 -6
- package/2D/controls/multiLine.js.map +1 -1
- package/2D/controls/radioButton.d.ts +2 -1
- package/2D/controls/radioButton.js +10 -7
- package/2D/controls/radioButton.js.map +1 -1
- package/2D/controls/rectangle.d.ts +8 -3
- package/2D/controls/rectangle.js +21 -5
- package/2D/controls/rectangle.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewer.d.ts +3 -2
- package/2D/controls/scrollViewers/scrollViewer.js +9 -9
- package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +4 -3
- package/2D/controls/scrollViewers/scrollViewerWindow.js +4 -4
- package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
- package/2D/controls/selector.js +8 -8
- package/2D/controls/selector.js.map +1 -1
- package/2D/controls/sliders/baseSlider.d.ts +1 -1
- package/2D/controls/sliders/baseSlider.js +12 -10
- package/2D/controls/sliders/baseSlider.js.map +1 -1
- package/2D/controls/sliders/imageBasedSlider.d.ts +10 -1
- package/2D/controls/sliders/imageBasedSlider.js +29 -5
- package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
- package/2D/controls/sliders/imageScrollBar.d.ts +2 -1
- package/2D/controls/sliders/imageScrollBar.js +3 -3
- package/2D/controls/sliders/imageScrollBar.js.map +1 -1
- package/2D/controls/sliders/scrollBar.d.ts +2 -1
- package/2D/controls/sliders/scrollBar.js +3 -3
- package/2D/controls/sliders/scrollBar.js.map +1 -1
- package/2D/controls/sliders/slider.d.ts +2 -1
- package/2D/controls/sliders/slider.js +4 -4
- package/2D/controls/sliders/slider.js.map +1 -1
- package/2D/controls/stackPanel.d.ts +10 -3
- package/2D/controls/stackPanel.js +35 -13
- package/2D/controls/stackPanel.js.map +1 -1
- package/2D/controls/statics.js +3 -3
- package/2D/controls/statics.js.map +1 -1
- package/2D/controls/textBlock.d.ts +16 -9
- package/2D/controls/textBlock.js +75 -34
- package/2D/controls/textBlock.js.map +1 -1
- package/2D/controls/textWrapper.js +2 -2
- package/2D/controls/textWrapper.js.map +1 -1
- package/2D/controls/toggleButton.d.ts +1 -13
- package/2D/controls/toggleButton.js +29 -38
- package/2D/controls/toggleButton.js.map +1 -1
- package/2D/controls/virtualKeyboard.js +5 -5
- package/2D/controls/virtualKeyboard.js.map +1 -1
- package/2D/index.d.ts +1 -1
- package/2D/index.js +9 -9
- package/2D/index.js.map +1 -1
- package/2D/math2D.d.ts +5 -0
- package/2D/math2D.js +14 -2
- package/2D/math2D.js.map +1 -1
- package/2D/measure.js +1 -1
- package/2D/measure.js.map +1 -1
- package/2D/multiLinePoint.js +3 -3
- package/2D/style.js +2 -2
- package/2D/valueAndUnit.d.ts +21 -6
- package/2D/valueAndUnit.js +57 -13
- package/2D/valueAndUnit.js.map +1 -1
- package/2D/xmlLoader.d.ts +17 -3
- package/2D/xmlLoader.js +54 -15
- package/2D/xmlLoader.js.map +1 -1
- package/3D/behaviors/defaultBehavior.d.ts +73 -0
- package/3D/behaviors/defaultBehavior.js +122 -0
- package/3D/behaviors/defaultBehavior.js.map +1 -0
- package/3D/controls/abstractButton3D.d.ts +2 -2
- package/3D/controls/abstractButton3D.js +3 -3
- package/3D/controls/abstractButton3D.js.map +1 -1
- package/3D/controls/button3D.d.ts +0 -24
- package/3D/controls/button3D.js +15 -84
- package/3D/controls/button3D.js.map +1 -1
- package/3D/controls/container3D.js +2 -2
- package/3D/controls/contentDisplay3D.d.ts +30 -0
- package/3D/controls/contentDisplay3D.js +79 -0
- package/3D/controls/contentDisplay3D.js.map +1 -0
- package/3D/controls/control3D.d.ts +10 -7
- package/3D/controls/control3D.js +27 -19
- package/3D/controls/control3D.js.map +1 -1
- package/3D/controls/cylinderPanel.js +5 -5
- package/3D/controls/handMenu.d.ts +28 -0
- package/3D/controls/handMenu.js +48 -0
- package/3D/controls/handMenu.js.map +1 -0
- package/3D/controls/holographicBackplate.d.ts +48 -0
- package/3D/controls/holographicBackplate.js +121 -0
- package/3D/controls/holographicBackplate.js.map +1 -0
- package/3D/controls/holographicButton.d.ts +1 -1
- package/3D/controls/holographicButton.js +35 -31
- package/3D/controls/holographicButton.js.map +1 -1
- package/3D/controls/holographicSlate.d.ts +118 -0
- package/3D/controls/holographicSlate.js +365 -0
- package/3D/controls/holographicSlate.js.map +1 -0
- package/3D/controls/index.d.ts +7 -0
- package/3D/controls/index.js +22 -15
- package/3D/controls/index.js.map +1 -1
- package/3D/controls/meshButton3D.js +2 -2
- package/3D/controls/meshButton3D.js.map +1 -1
- package/3D/controls/nearMenu.d.ts +45 -0
- package/3D/controls/nearMenu.js +111 -0
- package/3D/controls/nearMenu.js.map +1 -0
- package/3D/controls/planePanel.js +3 -3
- package/3D/controls/scatterPanel.js +4 -4
- package/3D/controls/slider3D.d.ts +80 -0
- package/3D/controls/slider3D.js +268 -0
- package/3D/controls/slider3D.js.map +1 -0
- package/3D/controls/spherePanel.js +5 -5
- package/3D/controls/stackPanel3D.js +3 -3
- package/3D/controls/touchButton3D.d.ts +9 -21
- package/3D/controls/touchButton3D.js +52 -224
- package/3D/controls/touchButton3D.js.map +1 -1
- package/3D/controls/touchHolographicButton.d.ts +20 -3
- package/3D/controls/touchHolographicButton.js +137 -67
- package/3D/controls/touchHolographicButton.js.map +1 -1
- package/3D/controls/touchHolographicMenu.d.ts +61 -0
- package/3D/controls/touchHolographicMenu.js +149 -0
- package/3D/controls/touchHolographicMenu.js.map +1 -0
- package/3D/controls/touchMeshButton3D.d.ts +3 -6
- package/3D/controls/touchMeshButton3D.js +6 -14
- package/3D/controls/touchMeshButton3D.js.map +1 -1
- package/3D/controls/touchToggleButton3D.d.ts +35 -0
- package/3D/controls/touchToggleButton3D.js +60 -0
- package/3D/controls/touchToggleButton3D.js.map +1 -0
- package/3D/controls/volumeBasedPanel.d.ts +1 -1
- package/3D/controls/volumeBasedPanel.js +5 -5
- package/3D/controls/volumeBasedPanel.js.map +1 -1
- package/3D/gizmos/gizmoHandle.d.ts +108 -0
- package/3D/gizmos/gizmoHandle.js +210 -0
- package/3D/gizmos/gizmoHandle.js.map +1 -0
- package/3D/gizmos/index.d.ts +2 -0
- package/3D/gizmos/index.js +3 -0
- package/3D/gizmos/index.js.map +1 -0
- package/3D/gizmos/slateGizmo.d.ts +59 -0
- package/3D/gizmos/slateGizmo.js +364 -0
- package/3D/gizmos/slateGizmo.js.map +1 -0
- package/3D/gui3DManager.d.ts +15 -2
- package/3D/gui3DManager.js +62 -41
- package/3D/gui3DManager.js.map +1 -1
- package/3D/index.d.ts +3 -2
- package/3D/index.js +5 -4
- package/3D/index.js.map +1 -1
- package/3D/materials/fluent/fluentMaterial.d.ts +90 -0
- package/3D/materials/fluent/fluentMaterial.js +282 -0
- package/3D/materials/fluent/fluentMaterial.js.map +1 -0
- package/3D/materials/fluent/index.d.ts +1 -0
- package/3D/materials/fluent/index.js +2 -0
- package/3D/materials/fluent/index.js.map +1 -0
- package/3D/materials/{shaders → fluent/shaders}/fluent.fragment.d.ts +0 -0
- package/3D/materials/fluent/shaders/fluent.fragment.js +7 -0
- package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -0
- package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.d.ts +0 -0
- package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.js +2 -2
- package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +154 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +435 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -0
- package/3D/materials/fluentBackplate/index.d.ts +1 -0
- package/3D/materials/fluentBackplate/index.js +2 -0
- package/3D/materials/fluentBackplate/index.js.map +1 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +7 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +7 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +189 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.js +538 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -0
- package/3D/materials/fluentButton/index.d.ts +1 -0
- package/3D/materials/fluentButton/index.js +2 -0
- package/3D/materials/fluentButton/index.js.map +1 -0
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -0
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +7 -0
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +7 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -0
- package/3D/materials/fluentMaterial.d.ts +2 -88
- package/3D/materials/fluentMaterial.js +2 -277
- package/3D/materials/fluentMaterial.js.map +1 -1
- package/3D/materials/handle/handleMaterial.d.ts +68 -0
- package/3D/materials/handle/handleMaterial.js +127 -0
- package/3D/materials/handle/handleMaterial.js.map +1 -0
- package/3D/materials/handle/index.d.ts +1 -0
- package/3D/materials/handle/index.js +2 -0
- package/3D/materials/handle/index.js.map +1 -0
- package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -0
- package/3D/materials/handle/shaders/handle.fragment.js +7 -0
- package/3D/materials/handle/shaders/handle.fragment.js.map +1 -0
- package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -0
- package/3D/materials/handle/shaders/handle.vertex.js +7 -0
- package/3D/materials/handle/shaders/handle.vertex.js.map +1 -0
- package/3D/materials/index.d.ts +5 -1
- package/3D/materials/index.js +5 -1
- package/3D/materials/index.js.map +1 -1
- package/3D/materials/mrdl/index.d.ts +3 -0
- package/3D/materials/mrdl/index.js +4 -0
- package/3D/materials/mrdl/index.js.map +1 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +147 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.js +410 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +333 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js +787 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +333 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +787 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +7 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -0
- package/3D/vector3WithInfo.js +1 -1
- package/index.d.ts +2 -2
- package/index.js +2 -2
- package/index.js.map +1 -1
- package/legacy/legacy.js +2 -2
- package/package.json +117 -9
- package/3D/materials/shaders/fluent.fragment.js +0 -7
- package/3D/materials/shaders/fluent.fragment.js.map +0 -1
- package/3D/materials/shaders/fluent.vertex.js.map +0 -1
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { FollowBehavior } from "@babylonjs/core/Behaviors/Meshes/followBehavior.js";
|
|
2
|
+
import { SixDofDragBehavior } from "@babylonjs/core/Behaviors/Meshes/sixDofDragBehavior.js";
|
|
3
|
+
import { SurfaceMagnetismBehavior } from "@babylonjs/core/Behaviors/Meshes/surfaceMagnetismBehavior.js";
|
|
4
|
+
/**
|
|
5
|
+
* Default behavior for 3D UI elements.
|
|
6
|
+
* Handles a FollowBehavior, SixDofBehavior and SurfaceMagnetismBehavior
|
|
7
|
+
* @since 5.0.0
|
|
8
|
+
*/
|
|
9
|
+
var DefaultBehavior = /** @class */ (function () {
|
|
10
|
+
/**
|
|
11
|
+
* Instantiates the default behavior
|
|
12
|
+
*/
|
|
13
|
+
function DefaultBehavior() {
|
|
14
|
+
/**
|
|
15
|
+
* Enables the follow behavior
|
|
16
|
+
*/
|
|
17
|
+
this.followBehaviorEnabled = false;
|
|
18
|
+
/**
|
|
19
|
+
* Enables the six DoF drag behavior
|
|
20
|
+
*/
|
|
21
|
+
this.sixDofDragBehaviorEnabled = true;
|
|
22
|
+
/**
|
|
23
|
+
* Enables the surface magnetism behavior
|
|
24
|
+
*/
|
|
25
|
+
this.surfaceMagnetismBehaviorEnabled = true;
|
|
26
|
+
this._followBehavior = new FollowBehavior();
|
|
27
|
+
this._sixDofDragBehavior = new SixDofDragBehavior();
|
|
28
|
+
this._surfaceMagnetismBehavior = new SurfaceMagnetismBehavior();
|
|
29
|
+
}
|
|
30
|
+
Object.defineProperty(DefaultBehavior.prototype, "name", {
|
|
31
|
+
/**
|
|
32
|
+
* The name of the behavior
|
|
33
|
+
*/
|
|
34
|
+
get: function () {
|
|
35
|
+
return "Default";
|
|
36
|
+
},
|
|
37
|
+
enumerable: false,
|
|
38
|
+
configurable: true
|
|
39
|
+
});
|
|
40
|
+
Object.defineProperty(DefaultBehavior.prototype, "followBehavior", {
|
|
41
|
+
/**
|
|
42
|
+
* The follow behavior
|
|
43
|
+
*/
|
|
44
|
+
get: function () {
|
|
45
|
+
return this._followBehavior;
|
|
46
|
+
},
|
|
47
|
+
enumerable: false,
|
|
48
|
+
configurable: true
|
|
49
|
+
});
|
|
50
|
+
Object.defineProperty(DefaultBehavior.prototype, "sixDofDragBehavior", {
|
|
51
|
+
/**
|
|
52
|
+
* The six DoF drag behavior
|
|
53
|
+
*/
|
|
54
|
+
get: function () {
|
|
55
|
+
return this._sixDofDragBehavior;
|
|
56
|
+
},
|
|
57
|
+
enumerable: false,
|
|
58
|
+
configurable: true
|
|
59
|
+
});
|
|
60
|
+
Object.defineProperty(DefaultBehavior.prototype, "surfaceMagnetismBehavior", {
|
|
61
|
+
/**
|
|
62
|
+
* The surface magnetism behavior
|
|
63
|
+
*/
|
|
64
|
+
get: function () {
|
|
65
|
+
return this._surfaceMagnetismBehavior;
|
|
66
|
+
},
|
|
67
|
+
enumerable: false,
|
|
68
|
+
configurable: true
|
|
69
|
+
});
|
|
70
|
+
/**
|
|
71
|
+
* Initializes the behavior
|
|
72
|
+
*/
|
|
73
|
+
DefaultBehavior.prototype.init = function () { };
|
|
74
|
+
/**
|
|
75
|
+
* Attaches the default behavior
|
|
76
|
+
* @param ownerMesh The top level mesh
|
|
77
|
+
* @param draggablesMeshes Descendant meshes that can be used for dragging the owner mesh
|
|
78
|
+
* @param sceneUnderstandingMeshes Meshes from the scene understanding that will be used for surface magnetism
|
|
79
|
+
*/
|
|
80
|
+
DefaultBehavior.prototype.attach = function (ownerMesh, draggablesMeshes, sceneUnderstandingMeshes) {
|
|
81
|
+
this._scene = ownerMesh.getScene();
|
|
82
|
+
this.attachedNode = ownerMesh;
|
|
83
|
+
this._addObservables();
|
|
84
|
+
// Since our observables are bound before the child behaviors', ours are called first
|
|
85
|
+
this._followBehavior.attach(ownerMesh);
|
|
86
|
+
this._sixDofDragBehavior.attach(ownerMesh);
|
|
87
|
+
this._sixDofDragBehavior.draggableMeshes = draggablesMeshes || null;
|
|
88
|
+
this._sixDofDragBehavior.faceCameraOnDragStart = true;
|
|
89
|
+
this._surfaceMagnetismBehavior.attach(ownerMesh, this._scene);
|
|
90
|
+
if (sceneUnderstandingMeshes) {
|
|
91
|
+
this._surfaceMagnetismBehavior.meshes = sceneUnderstandingMeshes;
|
|
92
|
+
}
|
|
93
|
+
// We disable this behavior because we will handle pose changing event manually with sixDofDragBehavior
|
|
94
|
+
this._surfaceMagnetismBehavior.enabled = false;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Detaches the behavior from the mesh
|
|
98
|
+
*/
|
|
99
|
+
DefaultBehavior.prototype.detach = function () {
|
|
100
|
+
this.attachedNode = null;
|
|
101
|
+
this._removeObservables();
|
|
102
|
+
this._followBehavior.detach();
|
|
103
|
+
this._sixDofDragBehavior.detach();
|
|
104
|
+
this._surfaceMagnetismBehavior.detach();
|
|
105
|
+
};
|
|
106
|
+
DefaultBehavior.prototype._addObservables = function () {
|
|
107
|
+
var _this = this;
|
|
108
|
+
this._onBeforeRenderObserver = this._scene.onBeforeRenderObservable.add(function () {
|
|
109
|
+
_this._followBehavior._enabled = !_this._sixDofDragBehavior.isMoving && _this.followBehaviorEnabled;
|
|
110
|
+
});
|
|
111
|
+
this._onDragObserver = this._sixDofDragBehavior.onDragObservable.add(function (event) {
|
|
112
|
+
_this._sixDofDragBehavior.disableMovement = _this._surfaceMagnetismBehavior.findAndUpdateTarget(event.pickInfo);
|
|
113
|
+
});
|
|
114
|
+
};
|
|
115
|
+
DefaultBehavior.prototype._removeObservables = function () {
|
|
116
|
+
this._scene.onBeforeRenderObservable.remove(this._onBeforeRenderObserver);
|
|
117
|
+
this._sixDofDragBehavior.onDragObservable.remove(this._onDragObserver);
|
|
118
|
+
};
|
|
119
|
+
return DefaultBehavior;
|
|
120
|
+
}());
|
|
121
|
+
export { DefaultBehavior };
|
|
122
|
+
//# sourceMappingURL=defaultBehavior.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaultBehavior.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/behaviors/defaultBehavior.ts"],"names":[],"mappings":"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","sourcesContent":["import { Behavior } from \"@babylonjs/core/Behaviors/behavior\";\r\nimport { FollowBehavior } from \"@babylonjs/core/Behaviors/Meshes/followBehavior\";\r\nimport { SixDofDragBehavior } from \"@babylonjs/core/Behaviors/Meshes/sixDofDragBehavior\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\nimport { Observer } from \"@babylonjs/core/Misc/observable\";\r\nimport { Nullable } from \"@babylonjs/core/types\";\r\nimport { SurfaceMagnetismBehavior } from \"@babylonjs/core/Behaviors/Meshes/surfaceMagnetismBehavior\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { PickingInfo } from \"@babylonjs/core/Collisions/pickingInfo\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\n\r\n/**\r\n * Default behavior for 3D UI elements.\r\n * Handles a FollowBehavior, SixDofBehavior and SurfaceMagnetismBehavior\r\n * @since 5.0.0\r\n */\r\nexport class DefaultBehavior implements Behavior<Mesh> {\r\n private _scene: Scene;\r\n private _followBehavior: FollowBehavior;\r\n private _sixDofDragBehavior: SixDofDragBehavior;\r\n private _surfaceMagnetismBehavior: SurfaceMagnetismBehavior;\r\n private _onBeforeRenderObserver: Nullable<Observer<Scene>>;\r\n private _onDragObserver: Nullable<Observer<{ delta: Vector3; position: Vector3; pickInfo: PickingInfo }>>;\r\n\r\n /**\r\n * Instantiates the default behavior\r\n */\r\n constructor() {\r\n this._followBehavior = new FollowBehavior();\r\n this._sixDofDragBehavior = new SixDofDragBehavior();\r\n this._surfaceMagnetismBehavior = new SurfaceMagnetismBehavior();\r\n }\r\n\r\n /**\r\n * Attached node of this behavior\r\n */\r\n public attachedNode: Nullable<Mesh>;\r\n\r\n /**\r\n * The name of the behavior\r\n */\r\n public get name(): string {\r\n return \"Default\";\r\n }\r\n\r\n /**\r\n * The follow behavior\r\n */\r\n public get followBehavior(): FollowBehavior {\r\n return this._followBehavior;\r\n }\r\n\r\n /**\r\n * The six DoF drag behavior\r\n */\r\n public get sixDofDragBehavior(): SixDofDragBehavior {\r\n return this._sixDofDragBehavior;\r\n }\r\n\r\n /**\r\n * The surface magnetism behavior\r\n */\r\n public get surfaceMagnetismBehavior(): SurfaceMagnetismBehavior {\r\n return this._surfaceMagnetismBehavior;\r\n }\r\n\r\n /**\r\n * Enables the follow behavior\r\n */\r\n public followBehaviorEnabled: boolean = false;\r\n\r\n /**\r\n * Enables the six DoF drag behavior\r\n */\r\n public sixDofDragBehaviorEnabled: boolean = true;\r\n\r\n /**\r\n * Enables the surface magnetism behavior\r\n */\r\n public surfaceMagnetismBehaviorEnabled: boolean = true;\r\n\r\n /**\r\n * Initializes the behavior\r\n */\r\n public init() { }\r\n\r\n /**\r\n * Attaches the default behavior\r\n * @param ownerMesh The top level mesh\r\n * @param draggablesMeshes Descendant meshes that can be used for dragging the owner mesh\r\n * @param sceneUnderstandingMeshes Meshes from the scene understanding that will be used for surface magnetism\r\n */\r\n public attach(ownerMesh: Mesh, draggablesMeshes?: Mesh[], sceneUnderstandingMeshes?: AbstractMesh[]): void {\r\n this._scene = ownerMesh.getScene();\r\n this.attachedNode = ownerMesh;\r\n\r\n this._addObservables();\r\n // Since our observables are bound before the child behaviors', ours are called first\r\n this._followBehavior.attach(ownerMesh);\r\n this._sixDofDragBehavior.attach(ownerMesh);\r\n this._sixDofDragBehavior.draggableMeshes = draggablesMeshes || null;\r\n this._sixDofDragBehavior.faceCameraOnDragStart = true;\r\n this._surfaceMagnetismBehavior.attach(ownerMesh, this._scene);\r\n if (sceneUnderstandingMeshes) {\r\n this._surfaceMagnetismBehavior.meshes = sceneUnderstandingMeshes;\r\n }\r\n\r\n // We disable this behavior because we will handle pose changing event manually with sixDofDragBehavior\r\n this._surfaceMagnetismBehavior.enabled = false;\r\n }\r\n\r\n /**\r\n * Detaches the behavior from the mesh\r\n */\r\n public detach(): void {\r\n this.attachedNode = null;\r\n this._removeObservables();\r\n this._followBehavior.detach();\r\n this._sixDofDragBehavior.detach();\r\n this._surfaceMagnetismBehavior.detach();\r\n }\r\n\r\n private _addObservables() {\r\n this._onBeforeRenderObserver = this._scene.onBeforeRenderObservable.add(() => {\r\n this._followBehavior._enabled = !this._sixDofDragBehavior.isMoving && this.followBehaviorEnabled;\r\n });\r\n this._onDragObserver = this._sixDofDragBehavior.onDragObservable.add((event: { pickInfo: PickingInfo }) => {\r\n this._sixDofDragBehavior.disableMovement = this._surfaceMagnetismBehavior.findAndUpdateTarget(event.pickInfo);\r\n });\r\n }\r\n\r\n private _removeObservables() {\r\n this._scene.onBeforeRenderObservable.remove(this._onBeforeRenderObserver);\r\n this._sixDofDragBehavior.onDragObservable.remove(this._onDragObserver);\r\n }\r\n}\r\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
|
|
2
2
|
import { Scene } from "@babylonjs/core/scene";
|
|
3
|
-
import {
|
|
3
|
+
import { ContentDisplay3D } from "./contentDisplay3D";
|
|
4
4
|
/**
|
|
5
5
|
* Class used as a root to all buttons
|
|
6
6
|
*/
|
|
7
|
-
export declare class AbstractButton3D extends
|
|
7
|
+
export declare class AbstractButton3D extends ContentDisplay3D {
|
|
8
8
|
/**
|
|
9
9
|
* Creates a new button
|
|
10
10
|
* @param name defines the control name
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __extends } from "tslib";
|
|
2
|
-
import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
|
|
3
|
-
import {
|
|
2
|
+
import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
|
|
3
|
+
import { ContentDisplay3D } from "./contentDisplay3D.js";
|
|
4
4
|
/**
|
|
5
5
|
* Class used as a root to all buttons
|
|
6
6
|
*/
|
|
@@ -21,6 +21,6 @@ var AbstractButton3D = /** @class */ (function (_super) {
|
|
|
21
21
|
return new TransformNode("button" + this.name);
|
|
22
22
|
};
|
|
23
23
|
return AbstractButton3D;
|
|
24
|
-
}(
|
|
24
|
+
}(ContentDisplay3D));
|
|
25
25
|
export { AbstractButton3D };
|
|
26
26
|
//# sourceMappingURL=abstractButton3D.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractButton3D.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/abstractButton3D.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"abstractButton3D.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/abstractButton3D.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AACH;IAAsC,oCAAgB;IAClD;;;OAGG;IACH,0BAAY,IAAa;eACrB,kBAAM,IAAI,CAAC;IACf,CAAC;IAES,uCAAY,GAAtB;QACI,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED,mBAAmB;IACT,sCAAW,GAArB,UAAsB,KAAY;QAC9B,OAAO,IAAI,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IACL,uBAAC;AAAD,CAAC,AAjBD,CAAsC,gBAAgB,GAiBrD","sourcesContent":["import { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\nimport { ContentDisplay3D } from \"./contentDisplay3D\";\r\n\r\n/**\r\n * Class used as a root to all buttons\r\n */\r\nexport class AbstractButton3D extends ContentDisplay3D {\r\n /**\r\n * Creates a new button\r\n * @param name defines the control name\r\n */\r\n constructor(name?: string) {\r\n super(name);\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"AbstractButton3D\";\r\n }\r\n\r\n // Mesh association\r\n protected _createNode(scene: Scene): TransformNode {\r\n return new TransformNode(\"button\" + this.name);\r\n }\r\n}\r\n"]}
|
|
@@ -1,46 +1,22 @@
|
|
|
1
|
-
import { int } from "@babylonjs/core/types";
|
|
2
1
|
import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
|
|
3
2
|
import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
|
|
4
3
|
import { Material } from "@babylonjs/core/Materials/material";
|
|
5
4
|
import { Scene } from "@babylonjs/core/scene";
|
|
6
5
|
import { AbstractButton3D } from "./abstractButton3D";
|
|
7
6
|
import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture";
|
|
8
|
-
import { Control } from "../../2D/controls/control";
|
|
9
7
|
/**
|
|
10
8
|
* Class used to create a button in 3D
|
|
11
9
|
*/
|
|
12
10
|
export declare class Button3D extends AbstractButton3D {
|
|
13
11
|
/** @hidden */
|
|
14
12
|
protected _currentMaterial: Material;
|
|
15
|
-
private _facadeTexture;
|
|
16
|
-
private _content;
|
|
17
|
-
private _contentResolution;
|
|
18
|
-
private _contentScaleRatio;
|
|
19
|
-
/**
|
|
20
|
-
* Gets or sets the texture resolution used to render content (512 by default)
|
|
21
|
-
*/
|
|
22
|
-
get contentResolution(): int;
|
|
23
|
-
set contentResolution(value: int);
|
|
24
|
-
/**
|
|
25
|
-
* Gets or sets the texture scale ratio used to render content (2 by default)
|
|
26
|
-
*/
|
|
27
|
-
get contentScaleRatio(): number;
|
|
28
|
-
set contentScaleRatio(value: number);
|
|
29
|
-
protected _disposeFacadeTexture(): void;
|
|
30
|
-
protected _resetContent(): void;
|
|
31
13
|
/**
|
|
32
14
|
* Creates a new button
|
|
33
15
|
* @param name defines the control name
|
|
34
16
|
*/
|
|
35
17
|
constructor(name?: string);
|
|
36
|
-
/**
|
|
37
|
-
* Gets or sets the GUI 2D content used to display the button's facade
|
|
38
|
-
*/
|
|
39
|
-
get content(): Control;
|
|
40
|
-
set content(value: Control);
|
|
41
18
|
/**
|
|
42
19
|
* Apply the facade texture (created from the content property).
|
|
43
|
-
* This function can be overloaded by child classes
|
|
44
20
|
* @param facadeTexture defines the AdvancedDynamicTexture to use
|
|
45
21
|
*/
|
|
46
22
|
protected _applyFacade(facadeTexture: AdvancedDynamicTexture): void;
|
package/3D/controls/button3D.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { __extends } from "tslib";
|
|
2
|
-
import { Vector4 } from "@babylonjs/core/Maths/math.vector";
|
|
3
|
-
import {
|
|
4
|
-
import { StandardMaterial } from "@babylonjs/core/Materials/standardMaterial";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture";
|
|
8
|
-
import { Color3 } from '@babylonjs/core/Maths/math.color';
|
|
2
|
+
import { Vector4 } from "@babylonjs/core/Maths/math.vector.js";
|
|
3
|
+
import { CreateBox } from "@babylonjs/core/Meshes/Builders/boxBuilder.js";
|
|
4
|
+
import { StandardMaterial } from "@babylonjs/core/Materials/standardMaterial.js";
|
|
5
|
+
import { AbstractButton3D } from "./abstractButton3D.js";
|
|
6
|
+
import { Color3 } from "@babylonjs/core/Maths/math.color.js";
|
|
9
7
|
/**
|
|
10
8
|
* Class used to create a button in 3D
|
|
11
9
|
*/
|
|
@@ -17,8 +15,6 @@ var Button3D = /** @class */ (function (_super) {
|
|
|
17
15
|
*/
|
|
18
16
|
function Button3D(name) {
|
|
19
17
|
var _this = _super.call(this, name) || this;
|
|
20
|
-
_this._contentResolution = 512;
|
|
21
|
-
_this._contentScaleRatio = 2;
|
|
22
18
|
// Default animations
|
|
23
19
|
_this.pointerEnterAnimation = function () {
|
|
24
20
|
if (!_this.mesh) {
|
|
@@ -43,80 +39,8 @@ var Button3D = /** @class */ (function (_super) {
|
|
|
43
39
|
};
|
|
44
40
|
return _this;
|
|
45
41
|
}
|
|
46
|
-
Object.defineProperty(Button3D.prototype, "contentResolution", {
|
|
47
|
-
/**
|
|
48
|
-
* Gets or sets the texture resolution used to render content (512 by default)
|
|
49
|
-
*/
|
|
50
|
-
get: function () {
|
|
51
|
-
return this._contentResolution;
|
|
52
|
-
},
|
|
53
|
-
set: function (value) {
|
|
54
|
-
if (this._contentResolution === value) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
this._contentResolution = value;
|
|
58
|
-
this._resetContent();
|
|
59
|
-
},
|
|
60
|
-
enumerable: false,
|
|
61
|
-
configurable: true
|
|
62
|
-
});
|
|
63
|
-
Object.defineProperty(Button3D.prototype, "contentScaleRatio", {
|
|
64
|
-
/**
|
|
65
|
-
* Gets or sets the texture scale ratio used to render content (2 by default)
|
|
66
|
-
*/
|
|
67
|
-
get: function () {
|
|
68
|
-
return this._contentScaleRatio;
|
|
69
|
-
},
|
|
70
|
-
set: function (value) {
|
|
71
|
-
if (this._contentScaleRatio === value) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
this._contentScaleRatio = value;
|
|
75
|
-
this._resetContent();
|
|
76
|
-
},
|
|
77
|
-
enumerable: false,
|
|
78
|
-
configurable: true
|
|
79
|
-
});
|
|
80
|
-
Button3D.prototype._disposeFacadeTexture = function () {
|
|
81
|
-
if (this._facadeTexture) {
|
|
82
|
-
this._facadeTexture.dispose();
|
|
83
|
-
this._facadeTexture = null;
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
Button3D.prototype._resetContent = function () {
|
|
87
|
-
this._disposeFacadeTexture();
|
|
88
|
-
this.content = this._content;
|
|
89
|
-
};
|
|
90
|
-
Object.defineProperty(Button3D.prototype, "content", {
|
|
91
|
-
/**
|
|
92
|
-
* Gets or sets the GUI 2D content used to display the button's facade
|
|
93
|
-
*/
|
|
94
|
-
get: function () {
|
|
95
|
-
return this._content;
|
|
96
|
-
},
|
|
97
|
-
set: function (value) {
|
|
98
|
-
this._content = value;
|
|
99
|
-
if (!this._host || !this._host.utilityLayer) {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
if (!this._facadeTexture) {
|
|
103
|
-
this._facadeTexture = new AdvancedDynamicTexture("Facade", this._contentResolution, this._contentResolution, this._host.utilityLayer.utilityLayerScene, true, Texture.TRILINEAR_SAMPLINGMODE);
|
|
104
|
-
this._facadeTexture.rootContainer.scaleX = this._contentScaleRatio;
|
|
105
|
-
this._facadeTexture.rootContainer.scaleY = this._contentScaleRatio;
|
|
106
|
-
this._facadeTexture.premulAlpha = true;
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
this._facadeTexture.rootContainer.clearControls();
|
|
110
|
-
}
|
|
111
|
-
this._facadeTexture.addControl(value);
|
|
112
|
-
this._applyFacade(this._facadeTexture);
|
|
113
|
-
},
|
|
114
|
-
enumerable: false,
|
|
115
|
-
configurable: true
|
|
116
|
-
});
|
|
117
42
|
/**
|
|
118
43
|
* Apply the facade texture (created from the content property).
|
|
119
|
-
* This function can be overloaded by child classes
|
|
120
44
|
* @param facadeTexture defines the AdvancedDynamicTexture to use
|
|
121
45
|
*/
|
|
122
46
|
Button3D.prototype._applyFacade = function (facadeTexture) {
|
|
@@ -131,12 +55,19 @@ var Button3D = /** @class */ (function (_super) {
|
|
|
131
55
|
for (var i = 0; i < 6; i++) {
|
|
132
56
|
faceUV[i] = new Vector4(0, 0, 0, 0);
|
|
133
57
|
}
|
|
134
|
-
|
|
135
|
-
|
|
58
|
+
if (scene.useRightHandedSystem) {
|
|
59
|
+
// Flip the u on the texture
|
|
60
|
+
faceUV[0].copyFromFloats(1, 0, 0, 1);
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
faceUV[1].copyFromFloats(0, 0, 1, 1);
|
|
64
|
+
}
|
|
65
|
+
var mesh = CreateBox(this.name + "_rootMesh", {
|
|
136
66
|
width: 1.0,
|
|
137
67
|
height: 1.0,
|
|
138
68
|
depth: 0.08,
|
|
139
|
-
faceUV: faceUV
|
|
69
|
+
faceUV: faceUV,
|
|
70
|
+
wrap: true,
|
|
140
71
|
}, scene);
|
|
141
72
|
return mesh;
|
|
142
73
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button3D.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/button3D.ts"],"names":[],"mappings":"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","sourcesContent":["import { int, Nullable } from \"@babylonjs/core/types\";\r\nimport { Vector4 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { BoxBuilder } from \"@babylonjs/core/Meshes/Builders/boxBuilder\";\r\nimport { Material } from \"@babylonjs/core/Materials/material\";\r\nimport { StandardMaterial } from \"@babylonjs/core/Materials/standardMaterial\";\r\nimport { Texture } from \"@babylonjs/core/Materials/Textures/texture\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\n\r\nimport { AbstractButton3D } from \"./abstractButton3D\";\r\nimport { AdvancedDynamicTexture } from \"../../2D/advancedDynamicTexture\";\r\nimport { Control } from \"../../2D/controls/control\";\r\nimport { Color3 } from '@babylonjs/core/Maths/math.color';\r\n\r\n/**\r\n * Class used to create a button in 3D\r\n */\r\nexport class Button3D extends AbstractButton3D {\r\n /** @hidden */\r\n protected _currentMaterial: Material;\r\n private _facadeTexture: Nullable<AdvancedDynamicTexture>;\r\n private _content: Control;\r\n private _contentResolution = 512;\r\n private _contentScaleRatio = 2;\r\n\r\n /**\r\n * Gets or sets the texture resolution used to render content (512 by default)\r\n */\r\n public get contentResolution(): int {\r\n return this._contentResolution;\r\n }\r\n\r\n public set contentResolution(value: int) {\r\n if (this._contentResolution === value) {\r\n return;\r\n }\r\n\r\n this._contentResolution = value;\r\n this._resetContent();\r\n }\r\n\r\n /**\r\n * Gets or sets the texture scale ratio used to render content (2 by default)\r\n */\r\n public get contentScaleRatio(): number {\r\n return this._contentScaleRatio;\r\n }\r\n\r\n public set contentScaleRatio(value: number) {\r\n if (this._contentScaleRatio === value) {\r\n return;\r\n }\r\n\r\n this._contentScaleRatio = value;\r\n this._resetContent();\r\n }\r\n\r\n protected _disposeFacadeTexture() {\r\n if (this._facadeTexture) {\r\n this._facadeTexture.dispose();\r\n this._facadeTexture = null;\r\n }\r\n }\r\n\r\n protected _resetContent() {\r\n this._disposeFacadeTexture();\r\n this.content = this._content;\r\n }\r\n\r\n /**\r\n * Creates a new button\r\n * @param name defines the control name\r\n */\r\n constructor(name?: string) {\r\n super(name);\r\n\r\n // Default animations\r\n\r\n this.pointerEnterAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n (<StandardMaterial>this._currentMaterial).emissiveColor = Color3.Red();\r\n };\r\n\r\n this.pointerOutAnimation = () => {\r\n (<StandardMaterial>this._currentMaterial).emissiveColor = Color3.Black();\r\n };\r\n\r\n this.pointerDownAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n\r\n this.mesh.scaling.scaleInPlace(0.95);\r\n };\r\n\r\n this.pointerUpAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n\r\n this.mesh.scaling.scaleInPlace(1.0 / 0.95);\r\n };\r\n }\r\n\r\n /**\r\n * Gets or sets the GUI 2D content used to display the button's facade\r\n */\r\n public get content(): Control {\r\n return this._content;\r\n }\r\n\r\n public set content(value: Control) {\r\n this._content = value;\r\n\r\n if (!this._host || !this._host.utilityLayer) {\r\n return;\r\n }\r\n\r\n if (!this._facadeTexture) {\r\n this._facadeTexture = new AdvancedDynamicTexture(\"Facade\", this._contentResolution, this._contentResolution, this._host.utilityLayer.utilityLayerScene, true, Texture.TRILINEAR_SAMPLINGMODE);\r\n this._facadeTexture.rootContainer.scaleX = this._contentScaleRatio;\r\n this._facadeTexture.rootContainer.scaleY = this._contentScaleRatio;\r\n this._facadeTexture.premulAlpha = true;\r\n }\r\n else {\r\n this._facadeTexture.rootContainer.clearControls();\r\n }\r\n\r\n this._facadeTexture.addControl(value);\r\n\r\n this._applyFacade(this._facadeTexture);\r\n }\r\n\r\n /**\r\n * Apply the facade texture (created from the content property).\r\n * This function can be overloaded by child classes\r\n * @param facadeTexture defines the AdvancedDynamicTexture to use\r\n */\r\n protected _applyFacade(facadeTexture: AdvancedDynamicTexture) {\r\n (<any>this._currentMaterial).emissiveTexture = facadeTexture;\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"Button3D\";\r\n }\r\n\r\n // Mesh association\r\n protected _createNode(scene: Scene): TransformNode {\r\n var faceUV = new Array(6);\r\n\r\n for (var i = 0; i < 6; i++) {\r\n faceUV[i] = new Vector4(0, 0, 0, 0);\r\n }\r\n faceUV[1] = new Vector4(0, 0, 1, 1);\r\n\r\n let mesh = BoxBuilder.CreateBox(this.name + \"_rootMesh\", {\r\n width: 1.0,\r\n height: 1.0,\r\n depth: 0.08,\r\n faceUV: faceUV\r\n }, scene);\r\n\r\n return mesh;\r\n }\r\n\r\n protected _affectMaterial(mesh: AbstractMesh) {\r\n let material = new StandardMaterial(this.name + \"Material\", mesh.getScene());\r\n material.specularColor = Color3.Black();\r\n\r\n mesh.material = material;\r\n this._currentMaterial = material;\r\n\r\n this._resetContent();\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n super.dispose();\r\n\r\n this._disposeFacadeTexture();\r\n\r\n if (this._currentMaterial) {\r\n this._currentMaterial.dispose();\r\n }\r\n }\r\n}"]}
|
|
1
|
+
{"version":3,"file":"button3D.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/button3D.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector4 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { CreateBox } from \"@babylonjs/core/Meshes/Builders/boxBuilder\";\r\nimport { Material } from \"@babylonjs/core/Materials/material\";\r\nimport { StandardMaterial } from \"@babylonjs/core/Materials/standardMaterial\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\n\r\nimport { AbstractButton3D } from \"./abstractButton3D\";\r\nimport { AdvancedDynamicTexture } from \"../../2D/advancedDynamicTexture\";\r\nimport { Color3 } from \"@babylonjs/core/Maths/math.color\";\r\n\r\n/**\r\n * Class used to create a button in 3D\r\n */\r\nexport class Button3D extends AbstractButton3D {\r\n /** @hidden */\r\n protected _currentMaterial: Material;\r\n\r\n /**\r\n * Creates a new button\r\n * @param name defines the control name\r\n */\r\n constructor(name?: string) {\r\n super(name);\r\n\r\n // Default animations\r\n\r\n this.pointerEnterAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n (<StandardMaterial>this._currentMaterial).emissiveColor = Color3.Red();\r\n };\r\n\r\n this.pointerOutAnimation = () => {\r\n (<StandardMaterial>this._currentMaterial).emissiveColor = Color3.Black();\r\n };\r\n\r\n this.pointerDownAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n\r\n this.mesh.scaling.scaleInPlace(0.95);\r\n };\r\n\r\n this.pointerUpAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n\r\n this.mesh.scaling.scaleInPlace(1.0 / 0.95);\r\n };\r\n }\r\n\r\n /**\r\n * Apply the facade texture (created from the content property).\r\n * @param facadeTexture defines the AdvancedDynamicTexture to use\r\n */\r\n protected _applyFacade(facadeTexture: AdvancedDynamicTexture) {\r\n (<any>this._currentMaterial).emissiveTexture = facadeTexture;\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"Button3D\";\r\n }\r\n\r\n // Mesh association\r\n protected _createNode(scene: Scene): TransformNode {\r\n var faceUV = new Array(6);\r\n\r\n for (var i = 0; i < 6; i++) {\r\n faceUV[i] = new Vector4(0, 0, 0, 0);\r\n }\r\n if (scene.useRightHandedSystem) {\r\n // Flip the u on the texture\r\n faceUV[0].copyFromFloats(1, 0, 0, 1);\r\n } else {\r\n faceUV[1].copyFromFloats(0, 0, 1, 1);\r\n }\r\n\r\n let mesh = CreateBox(\r\n this.name + \"_rootMesh\",\r\n {\r\n width: 1.0,\r\n height: 1.0,\r\n depth: 0.08,\r\n faceUV: faceUV,\r\n wrap: true,\r\n },\r\n scene\r\n );\r\n\r\n return mesh;\r\n }\r\n\r\n protected _affectMaterial(mesh: AbstractMesh) {\r\n let material = new StandardMaterial(this.name + \"Material\", mesh.getScene());\r\n material.specularColor = Color3.Black();\r\n\r\n mesh.material = material;\r\n this._currentMaterial = material;\r\n\r\n this._resetContent();\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n super.dispose();\r\n\r\n this._disposeFacadeTexture();\r\n\r\n if (this._currentMaterial) {\r\n this._currentMaterial.dispose();\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __extends } from "tslib";
|
|
2
|
-
import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
|
|
3
|
-
import { Control3D } from "./control3D";
|
|
2
|
+
import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
|
|
3
|
+
import { Control3D } from "./control3D.js";
|
|
4
4
|
/**
|
|
5
5
|
* Class used to create containers for controls
|
|
6
6
|
*/
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Control } from "../../2D/controls/control";
|
|
2
|
+
import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture";
|
|
3
|
+
import { Control3D } from "./control3D";
|
|
4
|
+
/**
|
|
5
|
+
* The base class for controls that display content
|
|
6
|
+
*/
|
|
7
|
+
export declare class ContentDisplay3D extends Control3D {
|
|
8
|
+
private _content;
|
|
9
|
+
private _facadeTexture;
|
|
10
|
+
protected _contentResolution: number;
|
|
11
|
+
protected _contentScaleRatio: number;
|
|
12
|
+
/**
|
|
13
|
+
* Gets or sets the GUI 2D content used to display the button's facade
|
|
14
|
+
*/
|
|
15
|
+
get content(): Control;
|
|
16
|
+
set content(value: Control);
|
|
17
|
+
/**
|
|
18
|
+
* Gets or sets the texture resolution used to render content (512 by default)
|
|
19
|
+
*/
|
|
20
|
+
get contentResolution(): number;
|
|
21
|
+
set contentResolution(value: number);
|
|
22
|
+
protected _disposeFacadeTexture(): void;
|
|
23
|
+
protected _resetContent(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Apply the facade texture (created from the content property).
|
|
26
|
+
* This function can be overloaded by child classes
|
|
27
|
+
* @param facadeTexture defines the AdvancedDynamicTexture to use
|
|
28
|
+
*/
|
|
29
|
+
protected _applyFacade(facadeTexture: AdvancedDynamicTexture): void;
|
|
30
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { __extends } from "tslib";
|
|
2
|
+
import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture.js";
|
|
3
|
+
import { Control3D } from "./control3D.js";
|
|
4
|
+
import { Texture } from "@babylonjs/core/Materials/Textures/texture.js";
|
|
5
|
+
/**
|
|
6
|
+
* The base class for controls that display content
|
|
7
|
+
*/
|
|
8
|
+
var ContentDisplay3D = /** @class */ (function (_super) {
|
|
9
|
+
__extends(ContentDisplay3D, _super);
|
|
10
|
+
function ContentDisplay3D() {
|
|
11
|
+
var _this = _super !== null && _super.apply(this, arguments) || this;
|
|
12
|
+
_this._contentResolution = 512;
|
|
13
|
+
_this._contentScaleRatio = 2;
|
|
14
|
+
return _this;
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(ContentDisplay3D.prototype, "content", {
|
|
17
|
+
/**
|
|
18
|
+
* Gets or sets the GUI 2D content used to display the button's facade
|
|
19
|
+
*/
|
|
20
|
+
get: function () {
|
|
21
|
+
return this._content;
|
|
22
|
+
},
|
|
23
|
+
set: function (value) {
|
|
24
|
+
this._content = value;
|
|
25
|
+
if (!this._host || !this._host.utilityLayer) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (!this._facadeTexture) {
|
|
29
|
+
this._facadeTexture = new AdvancedDynamicTexture("Facade", this._contentResolution, this._contentResolution, this._host.utilityLayer.utilityLayerScene, true, Texture.TRILINEAR_SAMPLINGMODE);
|
|
30
|
+
this._facadeTexture.rootContainer.scaleX = this._contentScaleRatio;
|
|
31
|
+
this._facadeTexture.rootContainer.scaleY = this._contentScaleRatio;
|
|
32
|
+
this._facadeTexture.premulAlpha = true;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this._facadeTexture.rootContainer.clearControls();
|
|
36
|
+
}
|
|
37
|
+
this._facadeTexture.addControl(value);
|
|
38
|
+
this._applyFacade(this._facadeTexture);
|
|
39
|
+
},
|
|
40
|
+
enumerable: false,
|
|
41
|
+
configurable: true
|
|
42
|
+
});
|
|
43
|
+
Object.defineProperty(ContentDisplay3D.prototype, "contentResolution", {
|
|
44
|
+
/**
|
|
45
|
+
* Gets or sets the texture resolution used to render content (512 by default)
|
|
46
|
+
*/
|
|
47
|
+
get: function () {
|
|
48
|
+
return this._contentResolution;
|
|
49
|
+
},
|
|
50
|
+
set: function (value) {
|
|
51
|
+
if (this._contentResolution === value) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this._contentResolution = value;
|
|
55
|
+
this._resetContent();
|
|
56
|
+
},
|
|
57
|
+
enumerable: false,
|
|
58
|
+
configurable: true
|
|
59
|
+
});
|
|
60
|
+
ContentDisplay3D.prototype._disposeFacadeTexture = function () {
|
|
61
|
+
if (this._facadeTexture) {
|
|
62
|
+
this._facadeTexture.dispose();
|
|
63
|
+
this._facadeTexture = null;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
ContentDisplay3D.prototype._resetContent = function () {
|
|
67
|
+
this._disposeFacadeTexture();
|
|
68
|
+
this.content = this._content;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Apply the facade texture (created from the content property).
|
|
72
|
+
* This function can be overloaded by child classes
|
|
73
|
+
* @param facadeTexture defines the AdvancedDynamicTexture to use
|
|
74
|
+
*/
|
|
75
|
+
ContentDisplay3D.prototype._applyFacade = function (facadeTexture) { };
|
|
76
|
+
return ContentDisplay3D;
|
|
77
|
+
}(Control3D));
|
|
78
|
+
export { ContentDisplay3D };
|
|
79
|
+
//# sourceMappingURL=contentDisplay3D.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contentDisplay3D.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/contentDisplay3D.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,4CAA4C,CAAC;AAErE;;GAEG;AACH;IAAsC,oCAAS;IAA/C;QAAA,qEA2EC;QAxEa,wBAAkB,GAAG,GAAG,CAAC;QACzB,wBAAkB,GAAG,CAAC,CAAC;;IAuErC,CAAC;IAlEG,sBAAW,qCAAO;QAHlB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC;QACzB,CAAC;aAED,UAAmB,KAAc;YAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YAEtB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;gBACzC,OAAO;aACV;YAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,cAAc,GAAG,IAAI,sBAAsB,CAC5C,QAAQ,EACR,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,EACzC,IAAI,EACJ,OAAO,CAAC,sBAAsB,CACjC,CAAC;gBACF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBACnE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBACnE,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC;aAC1C;iBAAM;gBACH,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;aACrD;YAED,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAEtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3C,CAAC;;;OA5BA;IAiCD,sBAAW,+CAAiB;QAH5B;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACnC,CAAC;aAED,UAA6B,KAAa;YACtC,IAAI,IAAI,CAAC,kBAAkB,KAAK,KAAK,EAAE;gBACnC,OAAO;aACV;YAED,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;;;OATA;IAWS,gDAAqB,GAA/B;QACI,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;IACL,CAAC;IAES,wCAAa,GAAvB;QACI,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACO,uCAAY,GAAtB,UAAuB,aAAqC,IAAI,CAAC;IACrE,uBAAC;AAAD,CAAC,AA3ED,CAAsC,SAAS,GA2E9C","sourcesContent":["import { Control } from \"../../2D/controls/control\";\r\nimport { AdvancedDynamicTexture } from \"../../2D/advancedDynamicTexture\";\r\nimport { Nullable } from \"@babylonjs/core/types\";\r\nimport { Control3D } from \"./control3D\";\r\nimport { Texture } from \"@babylonjs/core/Materials/Textures/texture\";\r\n\r\n/**\r\n * The base class for controls that display content\r\n */\r\nexport class ContentDisplay3D extends Control3D {\r\n private _content: Control;\r\n private _facadeTexture: Nullable<AdvancedDynamicTexture>;\r\n protected _contentResolution = 512;\r\n protected _contentScaleRatio = 2;\r\n\r\n /**\r\n * Gets or sets the GUI 2D content used to display the button's facade\r\n */\r\n public get content(): Control {\r\n return this._content;\r\n }\r\n\r\n public set content(value: Control) {\r\n this._content = value;\r\n\r\n if (!this._host || !this._host.utilityLayer) {\r\n return;\r\n }\r\n\r\n if (!this._facadeTexture) {\r\n this._facadeTexture = new AdvancedDynamicTexture(\r\n \"Facade\",\r\n this._contentResolution,\r\n this._contentResolution,\r\n this._host.utilityLayer.utilityLayerScene,\r\n true,\r\n Texture.TRILINEAR_SAMPLINGMODE\r\n );\r\n this._facadeTexture.rootContainer.scaleX = this._contentScaleRatio;\r\n this._facadeTexture.rootContainer.scaleY = this._contentScaleRatio;\r\n this._facadeTexture.premulAlpha = true;\r\n } else {\r\n this._facadeTexture.rootContainer.clearControls();\r\n }\r\n\r\n this._facadeTexture.addControl(value);\r\n\r\n this._applyFacade(this._facadeTexture);\r\n }\r\n\r\n /**\r\n * Gets or sets the texture resolution used to render content (512 by default)\r\n */\r\n public get contentResolution(): number {\r\n return this._contentResolution;\r\n }\r\n\r\n public set contentResolution(value: number) {\r\n if (this._contentResolution === value) {\r\n return;\r\n }\r\n\r\n this._contentResolution = value;\r\n this._resetContent();\r\n }\r\n\r\n protected _disposeFacadeTexture() {\r\n if (this._facadeTexture) {\r\n this._facadeTexture.dispose();\r\n this._facadeTexture = null;\r\n }\r\n }\r\n\r\n protected _resetContent() {\r\n this._disposeFacadeTexture();\r\n this.content = this._content;\r\n }\r\n\r\n /**\r\n * Apply the facade texture (created from the content property).\r\n * This function can be overloaded by child classes\r\n * @param facadeTexture defines the AdvancedDynamicTexture to use\r\n */\r\n protected _applyFacade(facadeTexture: AdvancedDynamicTexture) { }\r\n}\r\n"]}
|
|
@@ -21,10 +21,12 @@ export declare class Control3D implements IDisposable, IBehaviorAware<Control3D>
|
|
|
21
21
|
private _enterCount;
|
|
22
22
|
private _downPointerIds;
|
|
23
23
|
private _isVisible;
|
|
24
|
-
/**
|
|
24
|
+
/** @hidden */
|
|
25
|
+
_isScaledByManager: boolean;
|
|
26
|
+
/** Gets or sets the control position in world space */
|
|
25
27
|
get position(): Vector3;
|
|
26
28
|
set position(value: Vector3);
|
|
27
|
-
/** Gets or sets the control scaling
|
|
29
|
+
/** Gets or sets the control scaling in world space */
|
|
28
30
|
get scaling(): Vector3;
|
|
29
31
|
set scaling(value: Vector3);
|
|
30
32
|
/** Callback used to start pointer enter animation */
|
|
@@ -36,11 +38,11 @@ export declare class Control3D implements IDisposable, IBehaviorAware<Control3D>
|
|
|
36
38
|
/** Callback used to start pointer up animation */
|
|
37
39
|
pointerUpAnimation: () => void;
|
|
38
40
|
/**
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
* An event triggered when the pointer moves over the control
|
|
42
|
+
*/
|
|
41
43
|
onPointerMoveObservable: Observable<Vector3>;
|
|
42
44
|
/**
|
|
43
|
-
* An event triggered when the pointer
|
|
45
|
+
* An event triggered when the pointer moves out of the control
|
|
44
46
|
*/
|
|
45
47
|
onPointerOutObservable: Observable<Control3D>;
|
|
46
48
|
/**
|
|
@@ -126,7 +128,7 @@ export declare class Control3D implements IDisposable, IBehaviorAware<Control3D>
|
|
|
126
128
|
linkToTransformNode(node: Nullable<TransformNode>): Control3D;
|
|
127
129
|
/** @hidden **/
|
|
128
130
|
_prepareNode(scene: Scene): void;
|
|
129
|
-
protected
|
|
131
|
+
protected _injectGUI3DReservedDataStore(node: TransformNode): any;
|
|
130
132
|
/**
|
|
131
133
|
* Node creation.
|
|
132
134
|
* Can be overriden by children
|
|
@@ -139,6 +141,7 @@ export declare class Control3D implements IDisposable, IBehaviorAware<Control3D>
|
|
|
139
141
|
* @param mesh defines the mesh which will represent the control
|
|
140
142
|
*/
|
|
141
143
|
protected _affectMaterial(mesh: AbstractMesh): void;
|
|
144
|
+
private _IsTouchButton3D;
|
|
142
145
|
/** @hidden */
|
|
143
146
|
_onPointerMove(target: Control3D, coordinates: Vector3): void;
|
|
144
147
|
/** @hidden */
|
|
@@ -152,7 +155,7 @@ export declare class Control3D implements IDisposable, IBehaviorAware<Control3D>
|
|
|
152
155
|
/** @hidden */
|
|
153
156
|
forcePointerUp(pointerId?: Nullable<number>): void;
|
|
154
157
|
/** @hidden */
|
|
155
|
-
_processObservables(type: number, pickedPoint: Vector3, pointerId: number, buttonIndex: number): boolean;
|
|
158
|
+
_processObservables(type: number, pickedPoint: Vector3, originMeshPosition: Nullable<Vector3>, pointerId: number, buttonIndex: number): boolean;
|
|
156
159
|
/** @hidden */
|
|
157
160
|
_disposeNode(): void;
|
|
158
161
|
/**
|