@babylonjs/gui 5.0.0-alpha.8 → 5.0.0-beta.10
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 +178 -127
- package/2D/advancedDynamicTexture.js +368 -183
- 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 +99 -15
- package/2D/controls/container.js.map +1 -1
- package/2D/controls/control.d.ts +115 -47
- package/2D/controls/control.js +318 -139
- 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 +117 -33
- 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 +37 -15
- 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 +76 -35
- 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 +120 -0
- package/3D/controls/holographicSlate.js +372 -0
- package/3D/controls/holographicSlate.js.map +1 -0
- package/3D/controls/index.d.ts +6 -0
- package/3D/controls/index.js +21 -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 +44 -0
- package/3D/controls/nearMenu.js +113 -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 +30 -21
- package/3D/controls/touchButton3D.js +127 -228
- package/3D/controls/touchButton3D.js.map +1 -1
- package/3D/controls/touchHolographicButton.d.ts +23 -2
- package/3D/controls/touchHolographicButton.js +162 -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/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 +114 -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,113 @@
|
|
|
1
|
+
import { __extends } from "tslib";
|
|
2
|
+
import { TouchHolographicButton } from "./touchHolographicButton.js";
|
|
3
|
+
import { DefaultBehavior } from "../behaviors/defaultBehavior.js";
|
|
4
|
+
import { TouchHolographicMenu } from "./touchHolographicMenu.js";
|
|
5
|
+
/**
|
|
6
|
+
* NearMenu that displays buttons and follows the camera
|
|
7
|
+
* @since 5.0.0
|
|
8
|
+
*/
|
|
9
|
+
var NearMenu = /** @class */ (function (_super) {
|
|
10
|
+
__extends(NearMenu, _super);
|
|
11
|
+
/**
|
|
12
|
+
* Creates a near menu GUI 3D control
|
|
13
|
+
* @param name name of the near menu
|
|
14
|
+
*/
|
|
15
|
+
function NearMenu(name) {
|
|
16
|
+
var _this = _super.call(this, name) || this;
|
|
17
|
+
_this._isPinned = false;
|
|
18
|
+
_this._defaultBehavior = new DefaultBehavior();
|
|
19
|
+
_this._dragObserver = _this._defaultBehavior.sixDofDragBehavior.onDragObservable.add(function () {
|
|
20
|
+
_this.isPinned = true;
|
|
21
|
+
});
|
|
22
|
+
_this.backPlateMargin = 1;
|
|
23
|
+
return _this;
|
|
24
|
+
}
|
|
25
|
+
Object.defineProperty(NearMenu.prototype, "defaultBehavior", {
|
|
26
|
+
/**
|
|
27
|
+
* Regroups all mesh behaviors for the near menu
|
|
28
|
+
*/
|
|
29
|
+
get: function () {
|
|
30
|
+
return this._defaultBehavior;
|
|
31
|
+
},
|
|
32
|
+
enumerable: false,
|
|
33
|
+
configurable: true
|
|
34
|
+
});
|
|
35
|
+
Object.defineProperty(NearMenu.prototype, "isPinned", {
|
|
36
|
+
/**
|
|
37
|
+
* Indicates if the near menu is world-pinned
|
|
38
|
+
*/
|
|
39
|
+
get: function () {
|
|
40
|
+
return this._isPinned;
|
|
41
|
+
},
|
|
42
|
+
set: function (value) {
|
|
43
|
+
// Tell the pin button to toggle if this was called manually, for clean state control
|
|
44
|
+
if (this._pinButton.isToggled !== value) {
|
|
45
|
+
this._pinButton.isToggled = value;
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
this._isPinned = value;
|
|
49
|
+
if (value) {
|
|
50
|
+
this._defaultBehavior.followBehaviorEnabled = false;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this._defaultBehavior.followBehaviorEnabled = true;
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
enumerable: false,
|
|
57
|
+
configurable: true
|
|
58
|
+
});
|
|
59
|
+
NearMenu.prototype._createPinButton = function (parent) {
|
|
60
|
+
var _this = this;
|
|
61
|
+
var control = new TouchHolographicButton("pin" + this.name, false);
|
|
62
|
+
control.imageUrl = NearMenu.ASSETS_BASE_URL + NearMenu.PIN_ICON_FILENAME;
|
|
63
|
+
control.parent = this;
|
|
64
|
+
control._host = this._host;
|
|
65
|
+
control.isToggleButton = true;
|
|
66
|
+
control.onToggleObservable.add(function (newState) { _this.isPinned = newState; });
|
|
67
|
+
if (this._host.utilityLayer) {
|
|
68
|
+
control._prepareNode(this._host.utilityLayer.utilityLayerScene);
|
|
69
|
+
control.scaling.scaleInPlace(TouchHolographicMenu.MENU_BUTTON_SCALE);
|
|
70
|
+
if (control.node) {
|
|
71
|
+
control.node.parent = parent;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return control;
|
|
75
|
+
};
|
|
76
|
+
NearMenu.prototype._createNode = function (scene) {
|
|
77
|
+
var node = _super.prototype._createNode.call(this, scene);
|
|
78
|
+
this._pinButton = this._createPinButton(node);
|
|
79
|
+
this.isPinned = false;
|
|
80
|
+
this._defaultBehavior.attach(node, [this._backPlate]);
|
|
81
|
+
this._defaultBehavior.followBehavior.ignoreCameraPitchAndRoll = true;
|
|
82
|
+
this._defaultBehavior.followBehavior.pitchOffset = -15;
|
|
83
|
+
this._defaultBehavior.followBehavior.minimumDistance = 0.3;
|
|
84
|
+
this._defaultBehavior.followBehavior.defaultDistance = 0.4;
|
|
85
|
+
this._defaultBehavior.followBehavior.maximumDistance = 0.6;
|
|
86
|
+
this._backPlate.isNearGrabbable = true;
|
|
87
|
+
node.isVisible = false;
|
|
88
|
+
return node;
|
|
89
|
+
};
|
|
90
|
+
NearMenu.prototype._finalProcessing = function () {
|
|
91
|
+
_super.prototype._finalProcessing.call(this);
|
|
92
|
+
this._pinButton.position.copyFromFloats((this._backPlate.scaling.x + TouchHolographicMenu.MENU_BUTTON_SCALE) / 2, this._backPlate.scaling.y / 2, 0);
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Disposes the near menu
|
|
96
|
+
*/
|
|
97
|
+
NearMenu.prototype.dispose = function () {
|
|
98
|
+
_super.prototype.dispose.call(this);
|
|
99
|
+
this._defaultBehavior.sixDofDragBehavior.onDragObservable.remove(this._dragObserver);
|
|
100
|
+
this._defaultBehavior.detach();
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Base Url for the assets.
|
|
104
|
+
*/
|
|
105
|
+
NearMenu.ASSETS_BASE_URL = "https://assets.babylonjs.com/meshes/MRTK/";
|
|
106
|
+
/**
|
|
107
|
+
* File name for the close icon.
|
|
108
|
+
*/
|
|
109
|
+
NearMenu.PIN_ICON_FILENAME = "IconPin.png";
|
|
110
|
+
return NearMenu;
|
|
111
|
+
}(TouchHolographicMenu));
|
|
112
|
+
export { NearMenu };
|
|
113
|
+
//# sourceMappingURL=nearMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nearMenu.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/nearMenu.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scene } from \"@babylonjs/core/scene\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { Nullable } from \"@babylonjs/core/types\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\nimport { TouchHolographicButton } from \"./touchHolographicButton\";\r\nimport { DefaultBehavior } from \"../behaviors/defaultBehavior\";\r\nimport { TouchHolographicMenu } from \"./touchHolographicMenu\";\r\nimport { Observer } from \"@babylonjs/core/Misc/observable\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { PickingInfo } from \"@babylonjs/core/Collisions/pickingInfo\";\r\n\r\n/**\r\n * NearMenu that displays buttons and follows the camera\r\n * @since 5.0.0\r\n */\r\nexport class NearMenu extends TouchHolographicMenu {\r\n /**\r\n * Base Url for the assets.\r\n */\r\n private static ASSETS_BASE_URL: string = \"https://assets.babylonjs.com/meshes/MRTK/\";\r\n /**\r\n * File name for the close icon.\r\n */\r\n private static PIN_ICON_FILENAME: string = \"IconPin.png\";\r\n\r\n private _pinButton: TouchHolographicButton;\r\n private _dragObserver: Nullable<\r\n Observer<{\r\n delta: Vector3;\r\n position: Vector3;\r\n pickInfo: PickingInfo;\r\n }>\r\n >;\r\n\r\n private _defaultBehavior: DefaultBehavior;\r\n /**\r\n * Regroups all mesh behaviors for the near menu\r\n */\r\n public get defaultBehavior(): DefaultBehavior {\r\n return this._defaultBehavior;\r\n }\r\n\r\n private _isPinned: boolean = false;\r\n /**\r\n * Indicates if the near menu is world-pinned\r\n */\r\n public get isPinned(): boolean {\r\n return this._isPinned;\r\n }\r\n\r\n public set isPinned(value: boolean) {\r\n // Tell the pin button to toggle if this was called manually, for clean state control\r\n if (this._pinButton.isToggled !== value) {\r\n this._pinButton.isToggled = value;\r\n return;\r\n }\r\n\r\n this._isPinned = value;\r\n\r\n if (value) {\r\n this._defaultBehavior.followBehaviorEnabled = false;\r\n } else {\r\n this._defaultBehavior.followBehaviorEnabled = true;\r\n }\r\n }\r\n\r\n private _createPinButton(parent: TransformNode) {\r\n const control = new TouchHolographicButton(\"pin\" + this.name, false);\r\n control.imageUrl = NearMenu.ASSETS_BASE_URL + NearMenu.PIN_ICON_FILENAME;\r\n control.parent = this;\r\n control._host = this._host;\r\n control.isToggleButton = true;\r\n control.onToggleObservable.add((newState) => { this.isPinned = newState; });\r\n\r\n if (this._host.utilityLayer) {\r\n control._prepareNode(this._host.utilityLayer.utilityLayerScene);\r\n control.scaling.scaleInPlace(TouchHolographicMenu.MENU_BUTTON_SCALE);\r\n\r\n if (control.node) {\r\n control.node.parent = parent;\r\n }\r\n }\r\n\r\n return control;\r\n }\r\n\r\n protected _createNode(scene: Scene): Nullable<TransformNode> {\r\n const node = super._createNode(scene)! as Mesh;\r\n\r\n this._pinButton = this._createPinButton(node);\r\n this.isPinned = false;\r\n\r\n this._defaultBehavior.attach(node, [this._backPlate]);\r\n this._defaultBehavior.followBehavior.ignoreCameraPitchAndRoll = true;\r\n this._defaultBehavior.followBehavior.pitchOffset = -15;\r\n this._defaultBehavior.followBehavior.minimumDistance = 0.3;\r\n this._defaultBehavior.followBehavior.defaultDistance = 0.4;\r\n this._defaultBehavior.followBehavior.maximumDistance = 0.6;\r\n\r\n this._backPlate.isNearGrabbable = true;\r\n node.isVisible = false;\r\n\r\n return node;\r\n }\r\n\r\n protected _finalProcessing() {\r\n super._finalProcessing();\r\n\r\n this._pinButton.position.copyFromFloats((this._backPlate.scaling.x + TouchHolographicMenu.MENU_BUTTON_SCALE) / 2, this._backPlate.scaling.y / 2, 0);\r\n }\r\n\r\n /**\r\n * Creates a near menu GUI 3D control\r\n * @param name name of the near menu\r\n */\r\n constructor(name?: string) {\r\n super(name);\r\n\r\n this._defaultBehavior = new DefaultBehavior();\r\n this._dragObserver = this._defaultBehavior.sixDofDragBehavior.onDragObservable.add(() => {\r\n this.isPinned = true;\r\n });\r\n\r\n this.backPlateMargin = 1;\r\n }\r\n\r\n /**\r\n * Disposes the near menu\r\n */\r\n public dispose() {\r\n super.dispose();\r\n\r\n this._defaultBehavior.sixDofDragBehavior.onDragObservable.remove(this._dragObserver);\r\n this._defaultBehavior.detach();\r\n }\r\n}\r\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __extends } from "tslib";
|
|
2
|
-
import { TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector";
|
|
3
|
-
import { Container3D } from "./container3D";
|
|
4
|
-
import { VolumeBasedPanel } from "./volumeBasedPanel";
|
|
2
|
+
import { TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
|
3
|
+
import { Container3D } from "./container3D.js";
|
|
4
|
+
import { VolumeBasedPanel } from "./volumeBasedPanel.js";
|
|
5
5
|
/**
|
|
6
6
|
* Class used to create a container panel deployed on the surface of a plane
|
|
7
7
|
*/
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __extends } from "tslib";
|
|
2
|
-
import { Tools } from "@babylonjs/core/Misc/tools";
|
|
3
|
-
import { TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector";
|
|
4
|
-
import { VolumeBasedPanel } from "./volumeBasedPanel";
|
|
5
|
-
import { Container3D } from "./container3D";
|
|
2
|
+
import { Tools } from "@babylonjs/core/Misc/tools.js";
|
|
3
|
+
import { TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
|
4
|
+
import { VolumeBasedPanel } from "./volumeBasedPanel.js";
|
|
5
|
+
import { Container3D } from "./container3D.js";
|
|
6
6
|
/**
|
|
7
7
|
* Class used to create a container panel where items get randomized planar mapping
|
|
8
8
|
*/
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Nullable } from "@babylonjs/core/types";
|
|
2
|
+
import { Observable } from "@babylonjs/core/Misc/observable";
|
|
3
|
+
import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
|
|
4
|
+
import { Scene } from "@babylonjs/core/scene";
|
|
5
|
+
import { Control3D } from "./control3D";
|
|
6
|
+
import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
|
|
7
|
+
import { MRDLSliderBarMaterial } from "../materials/mrdl/mrdlSliderBarMaterial";
|
|
8
|
+
import { MRDLSliderThumbMaterial } from "../materials/mrdl/mrdlSliderThumbMaterial";
|
|
9
|
+
import { MRDLBackplateMaterial } from "../materials/mrdl/mrdlBackplateMaterial";
|
|
10
|
+
/**
|
|
11
|
+
* Class used to create a slider in 3D
|
|
12
|
+
*/
|
|
13
|
+
export declare class Slider3D extends Control3D {
|
|
14
|
+
/**
|
|
15
|
+
* Base Url for the models.
|
|
16
|
+
*/
|
|
17
|
+
static MODEL_BASE_URL: string;
|
|
18
|
+
/**
|
|
19
|
+
* File name for the 8x4 model.
|
|
20
|
+
*/
|
|
21
|
+
static MODEL_FILENAME: string;
|
|
22
|
+
private _sliderBackplate;
|
|
23
|
+
private _sliderBackplateMaterial;
|
|
24
|
+
private _sliderBarMaterial;
|
|
25
|
+
private _sliderThumbMaterial;
|
|
26
|
+
private _sliderThumb;
|
|
27
|
+
private _sliderBar;
|
|
28
|
+
private _sliderBackplateVisible;
|
|
29
|
+
private _minimum;
|
|
30
|
+
private _maximum;
|
|
31
|
+
private _value;
|
|
32
|
+
private _step;
|
|
33
|
+
/** Observable raised when the sldier value changes */
|
|
34
|
+
onValueChangedObservable: Observable<number>;
|
|
35
|
+
/**
|
|
36
|
+
* Creates a new slider
|
|
37
|
+
* @param name defines the control name
|
|
38
|
+
* @param sliderBackplateVisible defines if the control has a backplate, default is false
|
|
39
|
+
*/
|
|
40
|
+
constructor(name?: string, sliderBackplateVisible?: boolean);
|
|
41
|
+
/**
|
|
42
|
+
* Gets the mesh used to render this control
|
|
43
|
+
*/
|
|
44
|
+
get mesh(): Nullable<AbstractMesh>;
|
|
45
|
+
/** Gets or sets minimum value */
|
|
46
|
+
get minimum(): number;
|
|
47
|
+
set minimum(value: number);
|
|
48
|
+
/** Gets or sets maximum value */
|
|
49
|
+
get maximum(): number;
|
|
50
|
+
set maximum(value: number);
|
|
51
|
+
/** Gets or sets step value */
|
|
52
|
+
get step(): number;
|
|
53
|
+
set step(value: number);
|
|
54
|
+
/** Gets or sets current value */
|
|
55
|
+
get value(): number;
|
|
56
|
+
set value(value: number);
|
|
57
|
+
protected get start(): number;
|
|
58
|
+
protected get end(): number;
|
|
59
|
+
/**
|
|
60
|
+
* Gets the slider bar material used by this control
|
|
61
|
+
*/
|
|
62
|
+
get sliderBarMaterial(): MRDLSliderBarMaterial;
|
|
63
|
+
/**
|
|
64
|
+
* Gets the slider thumb material used by this control
|
|
65
|
+
*/
|
|
66
|
+
get sliderThumbMaterial(): MRDLSliderThumbMaterial;
|
|
67
|
+
/**
|
|
68
|
+
* Gets the slider backplate material used by this control
|
|
69
|
+
*/
|
|
70
|
+
get sliderBackplateMaterial(): MRDLBackplateMaterial;
|
|
71
|
+
protected _createNode(scene: Scene): TransformNode;
|
|
72
|
+
protected _affectMaterial(mesh: AbstractMesh): void;
|
|
73
|
+
private _createBehavior;
|
|
74
|
+
private _convertToPosition;
|
|
75
|
+
private _convertToValue;
|
|
76
|
+
/**
|
|
77
|
+
* Releases all associated resources
|
|
78
|
+
*/
|
|
79
|
+
dispose(): void;
|
|
80
|
+
}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { __extends } from "tslib";
|
|
2
|
+
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
3
|
+
import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
|
4
|
+
import { Control3D } from "./control3D.js";
|
|
5
|
+
import { CreateBox } from "@babylonjs/core/Meshes/Builders/boxBuilder.js";
|
|
6
|
+
import { PointerDragBehavior } from "@babylonjs/core/Behaviors/Meshes/pointerDragBehavior.js";
|
|
7
|
+
import { SceneLoader } from "@babylonjs/core/Loading/sceneLoader.js";
|
|
8
|
+
import { MRDLSliderBarMaterial } from "../materials/mrdl/mrdlSliderBarMaterial.js";
|
|
9
|
+
import { MRDLSliderThumbMaterial } from "../materials/mrdl/mrdlSliderThumbMaterial.js";
|
|
10
|
+
import { MRDLBackplateMaterial } from "../materials/mrdl/mrdlBackplateMaterial.js";
|
|
11
|
+
var SLIDER_MIN = 0;
|
|
12
|
+
var SLIDER_MAX = 100;
|
|
13
|
+
var SLIDER_VAL = 50;
|
|
14
|
+
var SLIDER_STEP = 0;
|
|
15
|
+
var SLIDER_SCALING = 1.0;
|
|
16
|
+
var SLIDER_MARGIN = 0.2;
|
|
17
|
+
/**
|
|
18
|
+
* Class used to create a slider in 3D
|
|
19
|
+
*/
|
|
20
|
+
var Slider3D = /** @class */ (function (_super) {
|
|
21
|
+
__extends(Slider3D, _super);
|
|
22
|
+
/**
|
|
23
|
+
* Creates a new slider
|
|
24
|
+
* @param name defines the control name
|
|
25
|
+
* @param sliderBackplateVisible defines if the control has a backplate, default is false
|
|
26
|
+
*/
|
|
27
|
+
function Slider3D(name, sliderBackplateVisible) {
|
|
28
|
+
var _this = _super.call(this, name) || this;
|
|
29
|
+
/** Observable raised when the sldier value changes */
|
|
30
|
+
_this.onValueChangedObservable = new Observable();
|
|
31
|
+
_this._sliderBackplateVisible = sliderBackplateVisible || false;
|
|
32
|
+
_this._minimum = SLIDER_MIN;
|
|
33
|
+
_this._maximum = SLIDER_MAX;
|
|
34
|
+
_this._step = SLIDER_STEP;
|
|
35
|
+
_this._value = SLIDER_VAL;
|
|
36
|
+
return _this;
|
|
37
|
+
}
|
|
38
|
+
Object.defineProperty(Slider3D.prototype, "mesh", {
|
|
39
|
+
/**
|
|
40
|
+
* Gets the mesh used to render this control
|
|
41
|
+
*/
|
|
42
|
+
get: function () {
|
|
43
|
+
if (this.node) {
|
|
44
|
+
return this._sliderThumb;
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
},
|
|
48
|
+
enumerable: false,
|
|
49
|
+
configurable: true
|
|
50
|
+
});
|
|
51
|
+
Object.defineProperty(Slider3D.prototype, "minimum", {
|
|
52
|
+
/** Gets or sets minimum value */
|
|
53
|
+
get: function () {
|
|
54
|
+
return this._minimum;
|
|
55
|
+
},
|
|
56
|
+
set: function (value) {
|
|
57
|
+
if (this._minimum === value) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
this._minimum = Math.max(value, SLIDER_MIN);
|
|
61
|
+
this._value = Math.max(Math.min(this._value, this._maximum), this._minimum);
|
|
62
|
+
},
|
|
63
|
+
enumerable: false,
|
|
64
|
+
configurable: true
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(Slider3D.prototype, "maximum", {
|
|
67
|
+
/** Gets or sets maximum value */
|
|
68
|
+
get: function () {
|
|
69
|
+
return this._maximum;
|
|
70
|
+
},
|
|
71
|
+
set: function (value) {
|
|
72
|
+
if (this._maximum === value) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
this._maximum = Math.max(value, this._minimum);
|
|
76
|
+
this._value = Math.max(Math.min(this._value, this._maximum), this._minimum);
|
|
77
|
+
},
|
|
78
|
+
enumerable: false,
|
|
79
|
+
configurable: true
|
|
80
|
+
});
|
|
81
|
+
Object.defineProperty(Slider3D.prototype, "step", {
|
|
82
|
+
/** Gets or sets step value */
|
|
83
|
+
get: function () {
|
|
84
|
+
return this._step;
|
|
85
|
+
},
|
|
86
|
+
set: function (value) {
|
|
87
|
+
if (this._step === value) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
this._step = Math.max(Math.min(value, this._maximum - this._minimum), SLIDER_STEP);
|
|
91
|
+
},
|
|
92
|
+
enumerable: false,
|
|
93
|
+
configurable: true
|
|
94
|
+
});
|
|
95
|
+
Object.defineProperty(Slider3D.prototype, "value", {
|
|
96
|
+
/** Gets or sets current value */
|
|
97
|
+
get: function () {
|
|
98
|
+
return this._value;
|
|
99
|
+
},
|
|
100
|
+
set: function (value) {
|
|
101
|
+
if (this._value === value) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
this._value = Math.max(Math.min(value, this._maximum), this._minimum);
|
|
105
|
+
this.onValueChangedObservable.notifyObservers(this._value);
|
|
106
|
+
},
|
|
107
|
+
enumerable: false,
|
|
108
|
+
configurable: true
|
|
109
|
+
});
|
|
110
|
+
Object.defineProperty(Slider3D.prototype, "start", {
|
|
111
|
+
get: function () {
|
|
112
|
+
if (!this.node) {
|
|
113
|
+
return -SLIDER_SCALING / 2;
|
|
114
|
+
}
|
|
115
|
+
return this._sliderBar.position.x - this._sliderBar.scaling.x / 2;
|
|
116
|
+
},
|
|
117
|
+
enumerable: false,
|
|
118
|
+
configurable: true
|
|
119
|
+
});
|
|
120
|
+
Object.defineProperty(Slider3D.prototype, "end", {
|
|
121
|
+
get: function () {
|
|
122
|
+
if (!this.node) {
|
|
123
|
+
return SLIDER_SCALING / 2;
|
|
124
|
+
}
|
|
125
|
+
return this._sliderBar.position.x + this._sliderBar.scaling.x / 2;
|
|
126
|
+
},
|
|
127
|
+
enumerable: false,
|
|
128
|
+
configurable: true
|
|
129
|
+
});
|
|
130
|
+
Object.defineProperty(Slider3D.prototype, "sliderBarMaterial", {
|
|
131
|
+
/**
|
|
132
|
+
* Gets the slider bar material used by this control
|
|
133
|
+
*/
|
|
134
|
+
get: function () {
|
|
135
|
+
return this._sliderBarMaterial;
|
|
136
|
+
},
|
|
137
|
+
enumerable: false,
|
|
138
|
+
configurable: true
|
|
139
|
+
});
|
|
140
|
+
Object.defineProperty(Slider3D.prototype, "sliderThumbMaterial", {
|
|
141
|
+
/**
|
|
142
|
+
* Gets the slider thumb material used by this control
|
|
143
|
+
*/
|
|
144
|
+
get: function () {
|
|
145
|
+
return this._sliderThumbMaterial;
|
|
146
|
+
},
|
|
147
|
+
enumerable: false,
|
|
148
|
+
configurable: true
|
|
149
|
+
});
|
|
150
|
+
Object.defineProperty(Slider3D.prototype, "sliderBackplateMaterial", {
|
|
151
|
+
/**
|
|
152
|
+
* Gets the slider backplate material used by this control
|
|
153
|
+
*/
|
|
154
|
+
get: function () {
|
|
155
|
+
return this._sliderBackplateMaterial;
|
|
156
|
+
},
|
|
157
|
+
enumerable: false,
|
|
158
|
+
configurable: true
|
|
159
|
+
});
|
|
160
|
+
// Mesh association
|
|
161
|
+
Slider3D.prototype._createNode = function (scene) {
|
|
162
|
+
var _this = this;
|
|
163
|
+
var sliderBackplate = CreateBox("".concat(this.name, "_sliderbackplate"), {
|
|
164
|
+
width: 1.0,
|
|
165
|
+
height: 1.0,
|
|
166
|
+
depth: 1.0,
|
|
167
|
+
}, scene);
|
|
168
|
+
sliderBackplate.isPickable = false;
|
|
169
|
+
sliderBackplate.visibility = 0;
|
|
170
|
+
sliderBackplate.scaling = new Vector3(1, 0.5, 0.8);
|
|
171
|
+
SceneLoader.ImportMeshAsync(undefined, Slider3D.MODEL_BASE_URL, Slider3D.MODEL_FILENAME, scene)
|
|
172
|
+
.then(function (result) {
|
|
173
|
+
var sliderBackplateModel = result.meshes[1];
|
|
174
|
+
var sliderBarModel = result.meshes[1].clone("".concat(_this.name, "_sliderbar"), sliderBackplate);
|
|
175
|
+
var sliderThumbModel = result.meshes[1].clone("".concat(_this.name, "_sliderthumb"), sliderBackplate);
|
|
176
|
+
sliderBackplateModel.visibility = 0;
|
|
177
|
+
if (_this._sliderBackplateVisible) {
|
|
178
|
+
sliderBackplateModel.visibility = 1;
|
|
179
|
+
sliderBackplateModel.name = "".concat(_this.name, "_sliderbackplate");
|
|
180
|
+
sliderBackplateModel.isPickable = false;
|
|
181
|
+
sliderBackplateModel.scaling.x = 1;
|
|
182
|
+
sliderBackplateModel.scaling.z = 0.2;
|
|
183
|
+
sliderBackplateModel.parent = sliderBackplate;
|
|
184
|
+
if (!!_this._sliderBackplateMaterial) {
|
|
185
|
+
sliderBackplateModel.material = _this._sliderBackplateMaterial;
|
|
186
|
+
}
|
|
187
|
+
_this._sliderBackplate = sliderBackplateModel;
|
|
188
|
+
}
|
|
189
|
+
if (!!sliderBarModel) {
|
|
190
|
+
sliderBarModel.parent = sliderBackplate;
|
|
191
|
+
sliderBarModel.position.z = -0.1;
|
|
192
|
+
sliderBarModel.scaling = new Vector3(SLIDER_SCALING - SLIDER_MARGIN, 0.04, 0.3);
|
|
193
|
+
sliderBarModel.isPickable = false;
|
|
194
|
+
if (!!_this._sliderBarMaterial) {
|
|
195
|
+
sliderBarModel.material = _this._sliderBarMaterial;
|
|
196
|
+
}
|
|
197
|
+
_this._sliderBar = sliderBarModel;
|
|
198
|
+
}
|
|
199
|
+
if (!!sliderThumbModel) {
|
|
200
|
+
sliderThumbModel.parent = sliderBackplate;
|
|
201
|
+
sliderThumbModel.isPickable = true;
|
|
202
|
+
sliderThumbModel.position.z = -0.115;
|
|
203
|
+
sliderThumbModel.scaling = new Vector3(0.025, 0.3, 0.6);
|
|
204
|
+
sliderThumbModel.position.x = _this._convertToPosition(_this.value);
|
|
205
|
+
sliderThumbModel.addBehavior(_this._createBehavior());
|
|
206
|
+
if (!!_this._sliderThumbMaterial) {
|
|
207
|
+
sliderThumbModel.material = _this._sliderThumbMaterial;
|
|
208
|
+
}
|
|
209
|
+
_this._sliderThumb = sliderThumbModel;
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
this._affectMaterial(sliderBackplate);
|
|
213
|
+
return sliderBackplate;
|
|
214
|
+
};
|
|
215
|
+
Slider3D.prototype._affectMaterial = function (mesh) {
|
|
216
|
+
var _a, _b, _c;
|
|
217
|
+
this._sliderBackplateMaterial = (_a = this._sliderBackplateMaterial) !== null && _a !== void 0 ? _a : new MRDLBackplateMaterial("".concat(this.name, "_sliderbackplate_material"), mesh.getScene());
|
|
218
|
+
this._sliderBarMaterial = (_b = this._sliderBarMaterial) !== null && _b !== void 0 ? _b : new MRDLSliderBarMaterial("".concat(this.name, "_sliderbar_material"), mesh.getScene());
|
|
219
|
+
this._sliderThumbMaterial = (_c = this._sliderThumbMaterial) !== null && _c !== void 0 ? _c : new MRDLSliderThumbMaterial("".concat(this.name, "_sliderthumb_material"), mesh.getScene());
|
|
220
|
+
};
|
|
221
|
+
Slider3D.prototype._createBehavior = function () {
|
|
222
|
+
var _this = this;
|
|
223
|
+
var pointerDragBehavior = new PointerDragBehavior({ dragAxis: Vector3.Right() });
|
|
224
|
+
pointerDragBehavior.moveAttached = false;
|
|
225
|
+
pointerDragBehavior.onDragObservable.add(function (event) {
|
|
226
|
+
var newPosition = _this._sliderThumb.position.x + event.dragDistance / _this.scaling.x;
|
|
227
|
+
_this._sliderThumb.position.x = Math.max(Math.min(newPosition, _this.end), _this.start);
|
|
228
|
+
_this.value = _this._convertToValue(_this._sliderThumb.position.x);
|
|
229
|
+
});
|
|
230
|
+
pointerDragBehavior.onDragEndObservable.add(function (event) {
|
|
231
|
+
_this._sliderThumb.position.x = _this._convertToPosition(_this.value);
|
|
232
|
+
});
|
|
233
|
+
return pointerDragBehavior;
|
|
234
|
+
};
|
|
235
|
+
Slider3D.prototype._convertToPosition = function (value) {
|
|
236
|
+
var position = ((value - this.minimum) / (this.maximum - this.minimum)) * (this.end - this.start) + this.start;
|
|
237
|
+
return Math.min(Math.max(position, this.start), this.end);
|
|
238
|
+
};
|
|
239
|
+
Slider3D.prototype._convertToValue = function (position) {
|
|
240
|
+
var value = ((position - this.start) / (this.end - this.start)) * (this.maximum - this.minimum);
|
|
241
|
+
value = this.step ? Math.round(value / this.step) * this.step : value;
|
|
242
|
+
return Math.max(Math.min(this.minimum + value, this._maximum), this._minimum);
|
|
243
|
+
};
|
|
244
|
+
/**
|
|
245
|
+
* Releases all associated resources
|
|
246
|
+
*/
|
|
247
|
+
Slider3D.prototype.dispose = function () {
|
|
248
|
+
var _a, _b, _c, _d, _e, _f;
|
|
249
|
+
_super.prototype.dispose.call(this);
|
|
250
|
+
(_a = this._sliderBar) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
251
|
+
(_b = this._sliderThumb) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
252
|
+
(_c = this._sliderBarMaterial) === null || _c === void 0 ? void 0 : _c.dispose();
|
|
253
|
+
(_d = this._sliderThumbMaterial) === null || _d === void 0 ? void 0 : _d.dispose();
|
|
254
|
+
(_e = this._sliderBackplate) === null || _e === void 0 ? void 0 : _e.dispose();
|
|
255
|
+
(_f = this._sliderBackplateMaterial) === null || _f === void 0 ? void 0 : _f.dispose();
|
|
256
|
+
};
|
|
257
|
+
/**
|
|
258
|
+
* Base Url for the models.
|
|
259
|
+
*/
|
|
260
|
+
Slider3D.MODEL_BASE_URL = "https://assets.babylonjs.com/meshes/MRTK/";
|
|
261
|
+
/**
|
|
262
|
+
* File name for the 8x4 model.
|
|
263
|
+
*/
|
|
264
|
+
Slider3D.MODEL_FILENAME = 'mrtk-fluent-backplate.glb';
|
|
265
|
+
return Slider3D;
|
|
266
|
+
}(Control3D));
|
|
267
|
+
export { Slider3D };
|
|
268
|
+
//# sourceMappingURL=slider3D.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider3D.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/slider3D.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { Observable } from \"@babylonjs/core/Misc/observable\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\nimport { Control3D } from \"./control3D\";\r\nimport { CreateBox } from \"@babylonjs/core/Meshes/Builders/boxBuilder\";\r\nimport { PointerDragBehavior } from \"@babylonjs/core/Behaviors/Meshes/pointerDragBehavior\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { SceneLoader } from \"@babylonjs/core/Loading/sceneLoader\";\r\nimport { MRDLSliderBarMaterial } from \"../materials/mrdl/mrdlSliderBarMaterial\";\r\nimport { MRDLSliderThumbMaterial } from \"../materials/mrdl/mrdlSliderThumbMaterial\";\r\nimport { MRDLBackplateMaterial } from \"../materials/mrdl/mrdlBackplateMaterial\";\r\n\r\nconst SLIDER_MIN: number = 0;\r\nconst SLIDER_MAX: number = 100;\r\nconst SLIDER_VAL: number = 50;\r\nconst SLIDER_STEP: number = 0;\r\nconst SLIDER_SCALING: number = 1.0;\r\nconst SLIDER_MARGIN: number = 0.2;\r\n\r\n/**\r\n * Class used to create a slider in 3D\r\n */\r\nexport class Slider3D extends Control3D {\r\n /**\r\n * Base Url for the models.\r\n */\r\n public static MODEL_BASE_URL: string = \"https://assets.babylonjs.com/meshes/MRTK/\";\r\n\r\n /**\r\n * File name for the 8x4 model.\r\n */\r\n public static MODEL_FILENAME: string = 'mrtk-fluent-backplate.glb';\r\n\r\n private _sliderBackplate: AbstractMesh;\r\n private _sliderBackplateMaterial: MRDLBackplateMaterial;\r\n private _sliderBarMaterial: MRDLSliderBarMaterial;\r\n private _sliderThumbMaterial: MRDLSliderThumbMaterial;\r\n private _sliderThumb: AbstractMesh;\r\n private _sliderBar: AbstractMesh;\r\n private _sliderBackplateVisible: boolean;\r\n\r\n private _minimum: number;\r\n private _maximum: number;\r\n private _value: number;\r\n private _step: number;\r\n\r\n /** Observable raised when the sldier value changes */\r\n public onValueChangedObservable = new Observable<number>();\r\n\r\n /**\r\n * Creates a new slider\r\n * @param name defines the control name\r\n * @param sliderBackplateVisible defines if the control has a backplate, default is false\r\n */\r\n constructor(name?: string, sliderBackplateVisible?: boolean) {\r\n super(name);\r\n this._sliderBackplateVisible = sliderBackplateVisible || false;\r\n\r\n this._minimum = SLIDER_MIN;\r\n this._maximum = SLIDER_MAX;\r\n this._step = SLIDER_STEP;\r\n this._value = SLIDER_VAL;\r\n }\r\n\r\n /**\r\n * Gets the mesh used to render this control\r\n */\r\n public get mesh(): Nullable<AbstractMesh> {\r\n if (this.node) {\r\n return this._sliderThumb;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /** Gets or sets minimum value */\r\n public get minimum(): number {\r\n return this._minimum;\r\n }\r\n\r\n public set minimum(value: number) {\r\n if (this._minimum === value) {\r\n return;\r\n }\r\n\r\n this._minimum = Math.max(value, SLIDER_MIN);\r\n this._value = Math.max(Math.min(this._value, this._maximum), this._minimum);\r\n }\r\n\r\n /** Gets or sets maximum value */\r\n public get maximum(): number {\r\n return this._maximum;\r\n }\r\n\r\n public set maximum(value: number) {\r\n if (this._maximum === value) {\r\n return;\r\n }\r\n\r\n this._maximum = Math.max(value, this._minimum);\r\n this._value = Math.max(Math.min(this._value, this._maximum), this._minimum);\r\n }\r\n\r\n /** Gets or sets step value */\r\n public get step(): number {\r\n return this._step;\r\n }\r\n\r\n public set step(value: number) {\r\n if (this._step === value) {\r\n return;\r\n }\r\n\r\n this._step = Math.max(Math.min(value, this._maximum - this._minimum), SLIDER_STEP);\r\n }\r\n\r\n /** Gets or sets current value */\r\n public get value(): number {\r\n return this._value;\r\n }\r\n\r\n public set value(value: number) {\r\n if (this._value === value) {\r\n return;\r\n }\r\n\r\n this._value = Math.max(Math.min(value, this._maximum), this._minimum);\r\n this.onValueChangedObservable.notifyObservers(this._value);\r\n }\r\n\r\n protected get start(): number {\r\n if (!this.node) {\r\n return -SLIDER_SCALING / 2;\r\n }\r\n\r\n return this._sliderBar.position.x - this._sliderBar.scaling.x / 2;\r\n }\r\n\r\n protected get end(): number {\r\n if (!this.node) {\r\n return SLIDER_SCALING / 2;\r\n }\r\n\r\n return this._sliderBar.position.x + this._sliderBar.scaling.x / 2;\r\n }\r\n\r\n /**\r\n * Gets the slider bar material used by this control\r\n */\r\n public get sliderBarMaterial(): MRDLSliderBarMaterial {\r\n return this._sliderBarMaterial;\r\n }\r\n\r\n /**\r\n * Gets the slider thumb material used by this control\r\n */\r\n public get sliderThumbMaterial(): MRDLSliderThumbMaterial {\r\n return this._sliderThumbMaterial;\r\n }\r\n\r\n /**\r\n * Gets the slider backplate material used by this control\r\n */\r\n public get sliderBackplateMaterial(): MRDLBackplateMaterial {\r\n return this._sliderBackplateMaterial;\r\n }\r\n\r\n // Mesh association\r\n protected _createNode(scene: Scene): TransformNode {\r\n const sliderBackplate = CreateBox(`${this.name}_sliderbackplate`, {\r\n width: 1.0,\r\n height: 1.0,\r\n depth: 1.0,\r\n }, scene);\r\n sliderBackplate.isPickable = false;\r\n sliderBackplate.visibility = 0;\r\n sliderBackplate.scaling = new Vector3(1, 0.5, 0.8);\r\n\r\n SceneLoader.ImportMeshAsync(\r\n undefined,\r\n Slider3D.MODEL_BASE_URL,\r\n Slider3D.MODEL_FILENAME,\r\n scene)\r\n .then((result) => {\r\n const sliderBackplateModel = result.meshes[1];\r\n const sliderBarModel = result.meshes[1].clone(`${this.name}_sliderbar`, sliderBackplate);\r\n const sliderThumbModel = result.meshes[1].clone(`${this.name}_sliderthumb`, sliderBackplate);\r\n sliderBackplateModel.visibility = 0;\r\n\r\n if (this._sliderBackplateVisible) {\r\n sliderBackplateModel.visibility = 1;\r\n sliderBackplateModel.name = `${this.name}_sliderbackplate`;\r\n sliderBackplateModel.isPickable = false;\r\n sliderBackplateModel.scaling.x = 1;\r\n sliderBackplateModel.scaling.z = 0.2;\r\n sliderBackplateModel.parent = sliderBackplate;\r\n if (!!this._sliderBackplateMaterial) {\r\n sliderBackplateModel.material = this._sliderBackplateMaterial;\r\n }\r\n this._sliderBackplate = sliderBackplateModel;\r\n }\r\n\r\n if (!!sliderBarModel) {\r\n sliderBarModel.parent = sliderBackplate;\r\n sliderBarModel.position.z = -0.1;\r\n sliderBarModel.scaling = new Vector3(SLIDER_SCALING - SLIDER_MARGIN, 0.04, 0.3);\r\n sliderBarModel.isPickable = false;\r\n if (!!this._sliderBarMaterial) {\r\n sliderBarModel.material = this._sliderBarMaterial;\r\n }\r\n this._sliderBar = sliderBarModel;\r\n }\r\n\r\n if (!!sliderThumbModel) {\r\n sliderThumbModel.parent = sliderBackplate;\r\n sliderThumbModel.isPickable = true;\r\n sliderThumbModel.position.z = -0.115;\r\n sliderThumbModel.scaling = new Vector3(0.025, 0.3, 0.6);\r\n sliderThumbModel.position.x = this._convertToPosition(this.value);\r\n sliderThumbModel.addBehavior(this._createBehavior());\r\n if (!!this._sliderThumbMaterial) {\r\n sliderThumbModel.material = this._sliderThumbMaterial;\r\n }\r\n this._sliderThumb = sliderThumbModel;\r\n }\r\n });\r\n\r\n this._affectMaterial(sliderBackplate);\r\n return sliderBackplate;\r\n }\r\n\r\n protected _affectMaterial(mesh: AbstractMesh) {\r\n this._sliderBackplateMaterial = this._sliderBackplateMaterial ?? new MRDLBackplateMaterial(`${this.name}_sliderbackplate_material`, mesh.getScene());\r\n this._sliderBarMaterial = this._sliderBarMaterial ?? new MRDLSliderBarMaterial(`${this.name}_sliderbar_material`, mesh.getScene());\r\n this._sliderThumbMaterial = this._sliderThumbMaterial ?? new MRDLSliderThumbMaterial(`${this.name}_sliderthumb_material`, mesh.getScene());\r\n }\r\n\r\n private _createBehavior(): PointerDragBehavior {\r\n const pointerDragBehavior = new PointerDragBehavior({ dragAxis: Vector3.Right() });\r\n pointerDragBehavior.moveAttached = false;\r\n\r\n pointerDragBehavior.onDragObservable.add((event) => {\r\n const newPosition = this._sliderThumb.position.x + event.dragDistance / this.scaling.x;\r\n this._sliderThumb.position.x = Math.max(Math.min(newPosition, this.end), this.start);\r\n this.value = this._convertToValue(this._sliderThumb.position.x);\r\n });\r\n\r\n pointerDragBehavior.onDragEndObservable.add((event) => {\r\n this._sliderThumb.position.x = this._convertToPosition(this.value);\r\n });\r\n\r\n return pointerDragBehavior;\r\n }\r\n\r\n private _convertToPosition(value: number): number {\r\n const position = ((value - this.minimum) / (this.maximum - this.minimum)) * (this.end - this.start) + this.start;\r\n return Math.min(Math.max(position, this.start), this.end);\r\n }\r\n\r\n private _convertToValue(position: number): number {\r\n let value = ((position - this.start) / (this.end - this.start)) * (this.maximum - this.minimum);\r\n value = this.step ? Math.round(value / this.step) * this.step : value;\r\n\r\n return Math.max(Math.min(this.minimum + value, this._maximum), this._minimum);\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n super.dispose();\r\n this._sliderBar?.dispose();\r\n this._sliderThumb?.dispose();\r\n this._sliderBarMaterial?.dispose();\r\n this._sliderThumbMaterial?.dispose();\r\n this._sliderBackplate?.dispose();\r\n this._sliderBackplateMaterial?.dispose();\r\n }\r\n}\r\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { __extends } from "tslib";
|
|
2
|
-
import { Tools } from "@babylonjs/core/Misc/tools";
|
|
3
|
-
import { Matrix, TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector";
|
|
4
|
-
import { VolumeBasedPanel } from "./volumeBasedPanel";
|
|
5
|
-
import { Container3D } from "./container3D";
|
|
6
|
-
import { Axis, Space } from '@babylonjs/core/Maths/math.axis';
|
|
2
|
+
import { Tools } from "@babylonjs/core/Misc/tools.js";
|
|
3
|
+
import { Matrix, TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
|
4
|
+
import { VolumeBasedPanel } from "./volumeBasedPanel.js";
|
|
5
|
+
import { Container3D } from "./container3D.js";
|
|
6
|
+
import { Axis, Space } from '@babylonjs/core/Maths/math.axis.js';
|
|
7
7
|
/**
|
|
8
8
|
* Class used to create a container panel deployed on the surface of a sphere
|
|
9
9
|
*/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __extends } from "tslib";
|
|
2
|
-
import { Tools } from "@babylonjs/core/Misc/tools";
|
|
3
|
-
import { Matrix, TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector";
|
|
4
|
-
import { Container3D } from "./container3D";
|
|
2
|
+
import { Tools } from "@babylonjs/core/Misc/tools.js";
|
|
3
|
+
import { Matrix, TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
|
4
|
+
import { Container3D } from "./container3D.js";
|
|
5
5
|
/**
|
|
6
6
|
* Class used to create a stack panel in 3D on XY plane
|
|
7
7
|
*/
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Vector3 } from "@babylonjs/core/Maths/math.vector";
|
|
2
2
|
import { Mesh } from "@babylonjs/core/Meshes/mesh";
|
|
3
|
-
import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
|
|
4
3
|
import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
|
|
5
4
|
import { Scene } from "@babylonjs/core/scene";
|
|
5
|
+
import { Observable } from "@babylonjs/core/Misc/observable";
|
|
6
6
|
import { Button3D } from "./button3D";
|
|
7
7
|
/**
|
|
8
8
|
* Class used to create a touchable button in 3D
|
|
@@ -10,16 +10,14 @@ import { Button3D } from "./button3D";
|
|
|
10
10
|
export declare class TouchButton3D extends Button3D {
|
|
11
11
|
private _collisionMesh;
|
|
12
12
|
private _collidableFrontDirection;
|
|
13
|
-
|
|
14
|
-
private
|
|
15
|
-
private
|
|
16
|
-
private
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
private _activeInteractions;
|
|
22
|
-
private _previousHeight;
|
|
13
|
+
protected _isNearPressed: boolean;
|
|
14
|
+
private _isToggleButton;
|
|
15
|
+
private _toggleState;
|
|
16
|
+
private _toggleButtonCallback;
|
|
17
|
+
/**
|
|
18
|
+
* An event triggered when the button is toggled. Only fired if 'isToggleButton' is true
|
|
19
|
+
*/
|
|
20
|
+
onToggleObservable: Observable<boolean>;
|
|
23
21
|
/**
|
|
24
22
|
* Creates a new touchable button
|
|
25
23
|
* @param name defines the control name
|
|
@@ -27,25 +25,36 @@ export declare class TouchButton3D extends Button3D {
|
|
|
27
25
|
*/
|
|
28
26
|
constructor(name?: string, collisionMesh?: Mesh);
|
|
29
27
|
/**
|
|
30
|
-
* Sets the front-facing direction of the button
|
|
28
|
+
* Sets the front-facing direction of the button. Pass in Vector3.Zero to allow interactions from any direction
|
|
31
29
|
* @param frontDir the forward direction of the button
|
|
32
30
|
*/
|
|
33
31
|
set collidableFrontDirection(frontWorldDir: Vector3);
|
|
34
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Returns the front-facing direction of the button, or Vector3.Zero if there is no 'front'
|
|
34
|
+
*/
|
|
35
|
+
get collidableFrontDirection(): Vector3;
|
|
35
36
|
/**
|
|
36
37
|
* Sets the mesh used for testing input collision
|
|
37
38
|
* @param collisionMesh the new collision mesh for the button
|
|
38
39
|
*/
|
|
39
40
|
set collisionMesh(collisionMesh: Mesh);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Setter for if this TouchButton3D should be treated as a toggle button
|
|
43
|
+
* @param value If this TouchHolographicButton should act like a toggle button
|
|
44
|
+
*/
|
|
45
|
+
set isToggleButton(value: boolean);
|
|
46
|
+
get isToggleButton(): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* A public entrypoint to set the toggle state of the TouchHolographicButton. Only works if 'isToggleButton' is true
|
|
49
|
+
* @param newState The new state to set the TouchHolographicButton's toggle state to
|
|
50
|
+
*/
|
|
51
|
+
set isToggled(newState: boolean);
|
|
52
|
+
get isToggled(): boolean;
|
|
53
|
+
protected _onToggle(newState: boolean): void;
|
|
54
|
+
private _isInteractionInFrontOfButton;
|
|
55
|
+
protected _getInteractionHeight(interactionPos: Vector3, basePos: Vector3): number;
|
|
47
56
|
/** @hidden */
|
|
48
|
-
|
|
57
|
+
_generatePointerEventType(providedType: number, nearMeshPosition: Vector3, activeInteractionCount: number): number;
|
|
49
58
|
protected _getTypeName(): string;
|
|
50
59
|
protected _createNode(scene: Scene): TransformNode;
|
|
51
60
|
/**
|