@babylonjs/gui 5.19.0 → 5.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/2D/adtInstrumentation.js +70 -90
- package/2D/adtInstrumentation.js.map +1 -1
- package/2D/advancedDynamicTexture.d.ts +8 -0
- package/2D/advancedDynamicTexture.js +559 -620
- package/2D/advancedDynamicTexture.js.map +1 -1
- package/2D/controls/button.js +76 -90
- package/2D/controls/button.js.map +1 -1
- package/2D/controls/checkbox.js +86 -106
- package/2D/controls/checkbox.js.map +1 -1
- package/2D/controls/colorpicker.js +395 -415
- package/2D/controls/colorpicker.js.map +1 -1
- package/2D/controls/container.js +187 -230
- package/2D/controls/container.js.map +1 -1
- package/2D/controls/control.js +1073 -1353
- package/2D/controls/control.js.map +1 -1
- package/2D/controls/displayGrid.js +152 -196
- package/2D/controls/displayGrid.js.map +1 -1
- package/2D/controls/ellipse.js +32 -40
- package/2D/controls/ellipse.js.map +1 -1
- package/2D/controls/focusableButton.js +30 -35
- package/2D/controls/focusableButton.js.map +1 -1
- package/2D/controls/grid.js +172 -212
- package/2D/controls/grid.js.map +1 -1
- package/2D/controls/image.js +489 -592
- package/2D/controls/image.js.map +1 -1
- package/2D/controls/inputPassword.js +9 -16
- package/2D/controls/inputPassword.js.map +1 -1
- package/2D/controls/inputText.js +380 -467
- package/2D/controls/inputText.js.map +1 -1
- package/2D/controls/inputTextArea.js +234 -273
- package/2D/controls/inputTextArea.js.map +1 -1
- package/2D/controls/line.js +147 -198
- package/2D/controls/line.js.map +1 -1
- package/2D/controls/multiLine.js +87 -113
- package/2D/controls/multiLine.js.map +1 -1
- package/2D/controls/radioButton.js +106 -127
- package/2D/controls/radioButton.js.map +1 -1
- package/2D/controls/rectangle.js +64 -76
- package/2D/controls/rectangle.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewer.js +439 -543
- package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewerWindow.js +99 -118
- package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
- package/2D/controls/selector.js +241 -329
- package/2D/controls/selector.js.map +1 -1
- package/2D/controls/sliders/baseSlider.js +182 -230
- package/2D/controls/sliders/baseSlider.js.map +1 -1
- package/2D/controls/sliders/imageBasedSlider.js +86 -109
- package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
- package/2D/controls/sliders/imageScrollBar.d.ts +4 -0
- package/2D/controls/sliders/imageScrollBar.js +149 -163
- package/2D/controls/sliders/imageScrollBar.js.map +1 -1
- package/2D/controls/sliders/scrollBar.d.ts +4 -0
- package/2D/controls/sliders/scrollBar.js +65 -65
- package/2D/controls/sliders/scrollBar.js.map +1 -1
- package/2D/controls/sliders/slider.js +91 -115
- package/2D/controls/sliders/slider.js.map +1 -1
- package/2D/controls/stackPanel.js +114 -135
- package/2D/controls/stackPanel.js.map +1 -1
- package/2D/controls/statics.js +5 -5
- package/2D/controls/statics.js.map +1 -1
- package/2D/controls/textBlock.js +322 -384
- package/2D/controls/textBlock.js.map +1 -1
- package/2D/controls/textWrapper.js +27 -41
- package/2D/controls/textWrapper.js.map +1 -1
- package/2D/controls/toggleButton.js +105 -121
- package/2D/controls/toggleButton.js.map +1 -1
- package/2D/controls/virtualKeyboard.js +101 -123
- package/2D/controls/virtualKeyboard.js.map +1 -1
- package/2D/math2D.js +62 -70
- package/2D/math2D.js.map +1 -1
- package/2D/measure.js +30 -32
- package/2D/measure.js.map +1 -1
- package/2D/multiLinePoint.js +71 -89
- package/2D/multiLinePoint.js.map +1 -1
- package/2D/style.js +55 -73
- package/2D/style.js.map +1 -1
- package/2D/valueAndUnit.js +71 -104
- package/2D/valueAndUnit.js.map +1 -1
- package/2D/xmlLoader.js +70 -84
- package/2D/xmlLoader.js.map +1 -1
- package/3D/behaviors/defaultBehavior.js +40 -59
- package/3D/behaviors/defaultBehavior.js.map +1 -1
- package/3D/controls/abstractButton3D.js +8 -12
- package/3D/controls/abstractButton3D.js.map +1 -1
- package/3D/controls/button3D.js +30 -35
- package/3D/controls/button3D.js.map +1 -1
- package/3D/controls/container3D.js +57 -71
- package/3D/controls/container3D.js.map +1 -1
- package/3D/controls/contentDisplay3D.js +47 -60
- package/3D/controls/contentDisplay3D.js.map +1 -1
- package/3D/controls/control3D.js +123 -158
- package/3D/controls/control3D.js.map +1 -1
- package/3D/controls/cylinderPanel.js +28 -38
- package/3D/controls/cylinderPanel.js.map +1 -1
- package/3D/controls/handMenu.js +20 -29
- package/3D/controls/handMenu.js.map +1 -1
- package/3D/controls/holographicBackplate.js +52 -72
- package/3D/controls/holographicBackplate.js.map +1 -1
- package/3D/controls/holographicButton.js +160 -200
- package/3D/controls/holographicButton.js.map +1 -1
- package/3D/controls/holographicSlate.js +176 -206
- package/3D/controls/holographicSlate.js.map +1 -1
- package/3D/controls/meshButton3D.js +24 -30
- package/3D/controls/meshButton3D.js.map +1 -1
- package/3D/controls/nearMenu.js +57 -71
- package/3D/controls/nearMenu.js.map +1 -1
- package/3D/controls/planePanel.js +6 -13
- package/3D/controls/planePanel.js.map +1 -1
- package/3D/controls/scatterPanel.js +43 -54
- package/3D/controls/scatterPanel.js.map +1 -1
- package/3D/controls/slider3D.js +168 -222
- package/3D/controls/slider3D.js.map +1 -1
- package/3D/controls/spherePanel.js +29 -39
- package/3D/controls/spherePanel.js.map +1 -1
- package/3D/controls/stackPanel3D.js +36 -49
- package/3D/controls/stackPanel3D.js.map +1 -1
- package/3D/controls/touchButton3D.js +126 -154
- package/3D/controls/touchButton3D.js.map +1 -1
- package/3D/controls/touchHolographicButton.js +223 -272
- package/3D/controls/touchHolographicButton.js.map +1 -1
- package/3D/controls/touchHolographicMenu.js +55 -66
- package/3D/controls/touchHolographicMenu.js.map +1 -1
- package/3D/controls/touchMeshButton3D.js +24 -30
- package/3D/controls/touchMeshButton3D.js.map +1 -1
- package/3D/controls/volumeBasedPanel.js +85 -107
- package/3D/controls/volumeBasedPanel.js.map +1 -1
- package/3D/gizmos/gizmoHandle.js +68 -103
- package/3D/gizmos/gizmoHandle.js.map +1 -1
- package/3D/gizmos/slateGizmo.js +165 -182
- package/3D/gizmos/slateGizmo.js.map +1 -1
- package/3D/gui3DManager.js +76 -101
- package/3D/gui3DManager.js.map +1 -1
- package/3D/materials/fluent/fluentMaterial.js +110 -119
- package/3D/materials/fluent/fluentMaterial.js.map +1 -1
- package/3D/materials/fluent/shaders/fluent.fragment.js +20 -3
- package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -1
- package/3D/materials/fluent/shaders/fluent.vertex.js +11 -3
- package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -1
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +168 -177
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -1
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +9 -3
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -1
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +15 -3
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -1
- package/3D/materials/fluentButton/fluentButtonMaterial.js +205 -213
- package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -1
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +6 -3
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -1
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +6 -3
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -1
- package/3D/materials/handle/handleMaterial.js +56 -69
- package/3D/materials/handle/handleMaterial.js.map +1 -1
- package/3D/materials/handle/shaders/handle.fragment.js +3 -3
- package/3D/materials/handle/shaders/handle.fragment.js.map +1 -1
- package/3D/materials/handle/shaders/handle.vertex.js +3 -3
- package/3D/materials/handle/shaders/handle.vertex.js.map +1 -1
- package/3D/materials/mrdl/mrdlBackplateMaterial.js +158 -166
- package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js +322 -330
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +322 -330
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +9 -3
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +6 -3
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +24 -3
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +12 -3
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +24 -3
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +12 -3
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -1
- package/3D/vector3WithInfo.js +6 -12
- package/3D/vector3WithInfo.js.map +1 -1
- package/legacy/legacy.js +1 -1
- package/legacy/legacy.js.map +1 -1
- package/package.json +2 -5
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __extends } from "tslib";
|
|
2
1
|
import { Tools } from "@babylonjs/core/Misc/tools.js";
|
|
3
2
|
import { TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
|
4
3
|
import { VolumeBasedPanel } from "./volumeBasedPanel.js";
|
|
@@ -6,36 +5,29 @@ import { Container3D } from "./container3D.js";
|
|
|
6
5
|
/**
|
|
7
6
|
* Class used to create a container panel where items get randomized planar mapping
|
|
8
7
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
_this._iteration = 100.0;
|
|
14
|
-
return _this;
|
|
8
|
+
export class ScatterPanel extends VolumeBasedPanel {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this._iteration = 100.0;
|
|
15
12
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
this.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
configurable: true
|
|
35
|
-
});
|
|
36
|
-
ScatterPanel.prototype._mapGridNode = function (control, nodePosition) {
|
|
37
|
-
var mesh = control.mesh;
|
|
38
|
-
var newPos = this._scatterMapping(nodePosition);
|
|
13
|
+
/**
|
|
14
|
+
* Gets or sets the number of iteration to use to scatter the controls (100 by default)
|
|
15
|
+
*/
|
|
16
|
+
get iteration() {
|
|
17
|
+
return this._iteration;
|
|
18
|
+
}
|
|
19
|
+
set iteration(value) {
|
|
20
|
+
if (this._iteration === value) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
this._iteration = value;
|
|
24
|
+
Tools.SetImmediate(() => {
|
|
25
|
+
this._arrangeChildren();
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
_mapGridNode(control, nodePosition) {
|
|
29
|
+
const mesh = control.mesh;
|
|
30
|
+
const newPos = this._scatterMapping(nodePosition);
|
|
39
31
|
if (!mesh) {
|
|
40
32
|
return;
|
|
41
33
|
}
|
|
@@ -50,25 +42,24 @@ var ScatterPanel = /** @class */ (function (_super) {
|
|
|
50
42
|
break;
|
|
51
43
|
}
|
|
52
44
|
control.position = newPos;
|
|
53
|
-
}
|
|
54
|
-
|
|
45
|
+
}
|
|
46
|
+
_scatterMapping(source) {
|
|
55
47
|
source.x = (1.0 - Math.random() * 2.0) * this._cellWidth;
|
|
56
48
|
source.y = (1.0 - Math.random() * 2.0) * this._cellHeight;
|
|
57
49
|
return source;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
for (
|
|
62
|
-
var child = _a[_i];
|
|
50
|
+
}
|
|
51
|
+
_finalProcessing() {
|
|
52
|
+
const meshes = [];
|
|
53
|
+
for (const child of this._children) {
|
|
63
54
|
if (!child.mesh) {
|
|
64
55
|
continue;
|
|
65
56
|
}
|
|
66
57
|
meshes.push(child.mesh);
|
|
67
58
|
}
|
|
68
|
-
for (
|
|
69
|
-
meshes.sort(
|
|
70
|
-
|
|
71
|
-
|
|
59
|
+
for (let count = 0; count < this._iteration; count++) {
|
|
60
|
+
meshes.sort((a, b) => {
|
|
61
|
+
const distance1 = a.position.lengthSquared();
|
|
62
|
+
const distance2 = b.position.lengthSquared();
|
|
72
63
|
if (distance1 < distance2) {
|
|
73
64
|
return 1;
|
|
74
65
|
}
|
|
@@ -77,20 +68,20 @@ var ScatterPanel = /** @class */ (function (_super) {
|
|
|
77
68
|
}
|
|
78
69
|
return 0;
|
|
79
70
|
});
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
for (
|
|
85
|
-
for (
|
|
71
|
+
const radiusPaddingSquared = Math.pow(this.margin, 2.0);
|
|
72
|
+
const cellSize = Math.max(this._cellWidth, this._cellHeight);
|
|
73
|
+
const difference2D = TmpVectors.Vector2[0];
|
|
74
|
+
const difference = TmpVectors.Vector3[0];
|
|
75
|
+
for (let i = 0; i < meshes.length - 1; i++) {
|
|
76
|
+
for (let j = i + 1; j < meshes.length; j++) {
|
|
86
77
|
if (i != j) {
|
|
87
78
|
meshes[j].position.subtractToRef(meshes[i].position, difference);
|
|
88
79
|
// Ignore Z axis
|
|
89
80
|
difference2D.x = difference.x;
|
|
90
81
|
difference2D.y = difference.y;
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
82
|
+
const combinedRadius = cellSize;
|
|
83
|
+
let distance = difference2D.lengthSquared() - radiusPaddingSquared;
|
|
84
|
+
const minSeparation = Math.min(distance, radiusPaddingSquared);
|
|
94
85
|
distance -= minSeparation;
|
|
95
86
|
if (distance < Math.pow(combinedRadius, 2.0)) {
|
|
96
87
|
difference2D.normalize();
|
|
@@ -102,8 +93,6 @@ var ScatterPanel = /** @class */ (function (_super) {
|
|
|
102
93
|
}
|
|
103
94
|
}
|
|
104
95
|
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
}(VolumeBasedPanel));
|
|
108
|
-
export { ScatterPanel };
|
|
96
|
+
}
|
|
97
|
+
}
|
|
109
98
|
//# sourceMappingURL=scatterPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scatterPanel.js","sourceRoot":"","sources":["../../../../../../lts/gui/generated/3D/controls/scatterPanel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scatterPanel.js","sourceRoot":"","sources":["../../../../../../lts/gui/generated/3D/controls/scatterPanel.ts"],"names":[],"mappings":"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","sourcesContent":["import { Tools } from \"core/Misc/tools\";\r\nimport { TmpVectors, Vector3 } from \"core/Maths/math.vector\";\r\nimport type { float } from \"core/types\";\r\n\r\nimport { VolumeBasedPanel } from \"./volumeBasedPanel\";\r\nimport type { Control3D } from \"./control3D\";\r\nimport { Container3D } from \"./container3D\";\r\n\r\n/**\r\n * Class used to create a container panel where items get randomized planar mapping\r\n */\r\nexport class ScatterPanel extends VolumeBasedPanel {\r\n private _iteration = 100.0;\r\n\r\n /**\r\n * Gets or sets the number of iteration to use to scatter the controls (100 by default)\r\n */\r\n public get iteration(): float {\r\n return this._iteration;\r\n }\r\n\r\n public set iteration(value: float) {\r\n if (this._iteration === value) {\r\n return;\r\n }\r\n\r\n this._iteration = value;\r\n\r\n Tools.SetImmediate(() => {\r\n this._arrangeChildren();\r\n });\r\n }\r\n\r\n protected _mapGridNode(control: Control3D, nodePosition: Vector3) {\r\n const mesh = control.mesh;\r\n const newPos = this._scatterMapping(nodePosition);\r\n\r\n if (!mesh) {\r\n return;\r\n }\r\n\r\n switch (this.orientation) {\r\n case Container3D.FACEORIGIN_ORIENTATION:\r\n case Container3D.FACEFORWARD_ORIENTATION:\r\n mesh.lookAt(new Vector3(0, 0, 1));\r\n break;\r\n case Container3D.FACEFORWARDREVERSED_ORIENTATION:\r\n case Container3D.FACEORIGINREVERSED_ORIENTATION:\r\n mesh.lookAt(new Vector3(0, 0, -1));\r\n break;\r\n }\r\n\r\n control.position = newPos;\r\n }\r\n\r\n private _scatterMapping(source: Vector3): Vector3 {\r\n source.x = (1.0 - Math.random() * 2.0) * this._cellWidth;\r\n source.y = (1.0 - Math.random() * 2.0) * this._cellHeight;\r\n\r\n return source;\r\n }\r\n\r\n protected _finalProcessing() {\r\n const meshes = [];\r\n for (const child of this._children) {\r\n if (!child.mesh) {\r\n continue;\r\n }\r\n\r\n meshes.push(child.mesh);\r\n }\r\n\r\n for (let count = 0; count < this._iteration; count++) {\r\n meshes.sort((a, b) => {\r\n const distance1 = a.position.lengthSquared();\r\n const distance2 = b.position.lengthSquared();\r\n\r\n if (distance1 < distance2) {\r\n return 1;\r\n } else if (distance1 > distance2) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n const radiusPaddingSquared = Math.pow(this.margin, 2.0);\r\n const cellSize = Math.max(this._cellWidth, this._cellHeight);\r\n const difference2D = TmpVectors.Vector2[0];\r\n const difference = TmpVectors.Vector3[0];\r\n\r\n for (let i = 0; i < meshes.length - 1; i++) {\r\n for (let j = i + 1; j < meshes.length; j++) {\r\n if (i != j) {\r\n meshes[j].position.subtractToRef(meshes[i].position, difference);\r\n\r\n // Ignore Z axis\r\n difference2D.x = difference.x;\r\n difference2D.y = difference.y;\r\n const combinedRadius = cellSize;\r\n let distance = difference2D.lengthSquared() - radiusPaddingSquared;\r\n const minSeparation = Math.min(distance, radiusPaddingSquared);\r\n distance -= minSeparation;\r\n\r\n if (distance < Math.pow(combinedRadius, 2.0)) {\r\n difference2D.normalize();\r\n difference.scaleInPlace((combinedRadius - Math.sqrt(distance)) * 0.5);\r\n meshes[j].position.addInPlace(difference);\r\n meshes[i].position.subtractInPlace(difference);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
package/3D/controls/slider3D.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __extends } from "tslib";
|
|
2
1
|
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
3
2
|
import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
|
4
3
|
import { Control3D } from "./control3D.js";
|
|
@@ -8,175 +7,127 @@ import { SceneLoader } from "@babylonjs/core/Loading/sceneLoader.js";
|
|
|
8
7
|
import { MRDLSliderBarMaterial } from "../materials/mrdl/mrdlSliderBarMaterial.js";
|
|
9
8
|
import { MRDLSliderThumbMaterial } from "../materials/mrdl/mrdlSliderThumbMaterial.js";
|
|
10
9
|
import { MRDLBackplateMaterial } from "../materials/mrdl/mrdlBackplateMaterial.js";
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
const SLIDER_MIN = 0;
|
|
11
|
+
const SLIDER_MAX = 100;
|
|
12
|
+
const SLIDER_VAL = 50;
|
|
13
|
+
const SLIDER_STEP = 0;
|
|
14
|
+
const SLIDER_SCALING = 1.0;
|
|
15
|
+
const SLIDER_MARGIN = 0.2;
|
|
17
16
|
/**
|
|
18
17
|
* Class used to create a slider in 3D
|
|
19
18
|
*/
|
|
20
|
-
|
|
21
|
-
__extends(Slider3D, _super);
|
|
19
|
+
export class Slider3D extends Control3D {
|
|
22
20
|
/**
|
|
23
21
|
* Creates a new slider
|
|
24
22
|
* @param name defines the control name
|
|
25
23
|
* @param sliderBackplateVisible defines if the control has a backplate, default is false
|
|
26
24
|
*/
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
constructor(name, sliderBackplateVisible) {
|
|
26
|
+
super(name);
|
|
29
27
|
/** Observable raised when the sldier value changes */
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
28
|
+
this.onValueChangedObservable = new Observable();
|
|
29
|
+
this._sliderBackplateVisible = sliderBackplateVisible || false;
|
|
30
|
+
this._minimum = SLIDER_MIN;
|
|
31
|
+
this._maximum = SLIDER_MAX;
|
|
32
|
+
this._step = SLIDER_STEP;
|
|
33
|
+
this._value = SLIDER_VAL;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Gets the mesh used to render this control
|
|
37
|
+
*/
|
|
38
|
+
get mesh() {
|
|
39
|
+
if (this.node) {
|
|
40
|
+
return this._sliderThumb;
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
/** Gets or sets minimum value */
|
|
45
|
+
get minimum() {
|
|
46
|
+
return this._minimum;
|
|
47
|
+
}
|
|
48
|
+
set minimum(value) {
|
|
49
|
+
if (this._minimum === value) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
this._minimum = Math.max(value, SLIDER_MIN);
|
|
53
|
+
this._value = Math.max(Math.min(this._value, this._maximum), this._minimum);
|
|
54
|
+
}
|
|
55
|
+
/** Gets or sets maximum value */
|
|
56
|
+
get maximum() {
|
|
57
|
+
return this._maximum;
|
|
58
|
+
}
|
|
59
|
+
set maximum(value) {
|
|
60
|
+
if (this._maximum === value) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
this._maximum = Math.max(value, this._minimum);
|
|
64
|
+
this._value = Math.max(Math.min(this._value, this._maximum), this._minimum);
|
|
65
|
+
}
|
|
66
|
+
/** Gets or sets step value */
|
|
67
|
+
get step() {
|
|
68
|
+
return this._step;
|
|
69
|
+
}
|
|
70
|
+
set step(value) {
|
|
71
|
+
if (this._step === value) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
this._step = Math.max(Math.min(value, this._maximum - this._minimum), SLIDER_STEP);
|
|
75
|
+
}
|
|
76
|
+
/** Gets or sets current value */
|
|
77
|
+
get value() {
|
|
78
|
+
return this._value;
|
|
79
|
+
}
|
|
80
|
+
set value(value) {
|
|
81
|
+
if (this._value === value) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
this._value = Math.max(Math.min(value, this._maximum), this._minimum);
|
|
85
|
+
if (this._sliderThumb) {
|
|
86
|
+
this._sliderThumb.position.x = this._convertToPosition(this.value);
|
|
87
|
+
}
|
|
88
|
+
this.onValueChangedObservable.notifyObservers(this._value);
|
|
89
|
+
}
|
|
90
|
+
get start() {
|
|
91
|
+
if (!this.node) {
|
|
92
|
+
return -SLIDER_SCALING / 2;
|
|
93
|
+
}
|
|
94
|
+
return this._sliderBar.position.x - this._sliderBar.scaling.x / 2;
|
|
95
|
+
}
|
|
96
|
+
get end() {
|
|
97
|
+
if (!this.node) {
|
|
98
|
+
return SLIDER_SCALING / 2;
|
|
99
|
+
}
|
|
100
|
+
return this._sliderBar.position.x + this._sliderBar.scaling.x / 2;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Gets the slider bar material used by this control
|
|
104
|
+
*/
|
|
105
|
+
get sliderBarMaterial() {
|
|
106
|
+
return this._sliderBarMaterial;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Gets the slider thumb material used by this control
|
|
110
|
+
*/
|
|
111
|
+
get sliderThumbMaterial() {
|
|
112
|
+
return this._sliderThumbMaterial;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Gets the slider backplate material used by this control
|
|
116
|
+
*/
|
|
117
|
+
get sliderBackplateMaterial() {
|
|
118
|
+
return this._sliderBackplateMaterial;
|
|
119
|
+
}
|
|
120
|
+
/** Sets a boolean indicating if the control is visible */
|
|
121
|
+
set isVisible(value) {
|
|
122
|
+
if (this._isVisible === value) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
this._isVisible = value;
|
|
126
|
+
this.node?.setEnabled(value);
|
|
37
127
|
}
|
|
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
|
-
if (this._sliderThumb) {
|
|
106
|
-
this._sliderThumb.position.x = this._convertToPosition(this.value);
|
|
107
|
-
}
|
|
108
|
-
this.onValueChangedObservable.notifyObservers(this._value);
|
|
109
|
-
},
|
|
110
|
-
enumerable: false,
|
|
111
|
-
configurable: true
|
|
112
|
-
});
|
|
113
|
-
Object.defineProperty(Slider3D.prototype, "start", {
|
|
114
|
-
get: function () {
|
|
115
|
-
if (!this.node) {
|
|
116
|
-
return -SLIDER_SCALING / 2;
|
|
117
|
-
}
|
|
118
|
-
return this._sliderBar.position.x - this._sliderBar.scaling.x / 2;
|
|
119
|
-
},
|
|
120
|
-
enumerable: false,
|
|
121
|
-
configurable: true
|
|
122
|
-
});
|
|
123
|
-
Object.defineProperty(Slider3D.prototype, "end", {
|
|
124
|
-
get: function () {
|
|
125
|
-
if (!this.node) {
|
|
126
|
-
return SLIDER_SCALING / 2;
|
|
127
|
-
}
|
|
128
|
-
return this._sliderBar.position.x + this._sliderBar.scaling.x / 2;
|
|
129
|
-
},
|
|
130
|
-
enumerable: false,
|
|
131
|
-
configurable: true
|
|
132
|
-
});
|
|
133
|
-
Object.defineProperty(Slider3D.prototype, "sliderBarMaterial", {
|
|
134
|
-
/**
|
|
135
|
-
* Gets the slider bar material used by this control
|
|
136
|
-
*/
|
|
137
|
-
get: function () {
|
|
138
|
-
return this._sliderBarMaterial;
|
|
139
|
-
},
|
|
140
|
-
enumerable: false,
|
|
141
|
-
configurable: true
|
|
142
|
-
});
|
|
143
|
-
Object.defineProperty(Slider3D.prototype, "sliderThumbMaterial", {
|
|
144
|
-
/**
|
|
145
|
-
* Gets the slider thumb material used by this control
|
|
146
|
-
*/
|
|
147
|
-
get: function () {
|
|
148
|
-
return this._sliderThumbMaterial;
|
|
149
|
-
},
|
|
150
|
-
enumerable: false,
|
|
151
|
-
configurable: true
|
|
152
|
-
});
|
|
153
|
-
Object.defineProperty(Slider3D.prototype, "sliderBackplateMaterial", {
|
|
154
|
-
/**
|
|
155
|
-
* Gets the slider backplate material used by this control
|
|
156
|
-
*/
|
|
157
|
-
get: function () {
|
|
158
|
-
return this._sliderBackplateMaterial;
|
|
159
|
-
},
|
|
160
|
-
enumerable: false,
|
|
161
|
-
configurable: true
|
|
162
|
-
});
|
|
163
|
-
Object.defineProperty(Slider3D.prototype, "isVisible", {
|
|
164
|
-
/** Sets a boolean indicating if the control is visible */
|
|
165
|
-
set: function (value) {
|
|
166
|
-
var _a;
|
|
167
|
-
if (this._isVisible === value) {
|
|
168
|
-
return;
|
|
169
|
-
}
|
|
170
|
-
this._isVisible = value;
|
|
171
|
-
(_a = this.node) === null || _a === void 0 ? void 0 : _a.setEnabled(value);
|
|
172
|
-
},
|
|
173
|
-
enumerable: false,
|
|
174
|
-
configurable: true
|
|
175
|
-
});
|
|
176
128
|
// Mesh association
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
var sliderBackplate = CreateBox("".concat(this.name, "_sliderbackplate"), {
|
|
129
|
+
_createNode(scene) {
|
|
130
|
+
const sliderBackplate = CreateBox(`${this.name}_sliderbackplate`, {
|
|
180
131
|
width: 1.0,
|
|
181
132
|
height: 1.0,
|
|
182
133
|
depth: 1.0,
|
|
@@ -184,103 +135,98 @@ var Slider3D = /** @class */ (function (_super) {
|
|
|
184
135
|
sliderBackplate.isPickable = false;
|
|
185
136
|
sliderBackplate.visibility = 0;
|
|
186
137
|
sliderBackplate.scaling = new Vector3(1, 0.5, 0.8);
|
|
187
|
-
SceneLoader.ImportMeshAsync(undefined, Slider3D.MODEL_BASE_URL, Slider3D.MODEL_FILENAME, scene).then(
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
138
|
+
SceneLoader.ImportMeshAsync(undefined, Slider3D.MODEL_BASE_URL, Slider3D.MODEL_FILENAME, scene).then((result) => {
|
|
139
|
+
const sliderBackplateModel = result.meshes[1];
|
|
140
|
+
const sliderBarModel = result.meshes[1].clone(`${this.name}_sliderbar`, sliderBackplate);
|
|
141
|
+
const sliderThumbModel = result.meshes[1].clone(`${this.name}_sliderthumb`, sliderBackplate);
|
|
191
142
|
sliderBackplateModel.visibility = 0;
|
|
192
|
-
if (
|
|
143
|
+
if (this._sliderBackplateVisible) {
|
|
193
144
|
sliderBackplateModel.visibility = 1;
|
|
194
|
-
sliderBackplateModel.name =
|
|
145
|
+
sliderBackplateModel.name = `${this.name}_sliderbackplate`;
|
|
195
146
|
sliderBackplateModel.isPickable = false;
|
|
196
147
|
sliderBackplateModel.scaling.x = 1;
|
|
197
148
|
sliderBackplateModel.scaling.z = 0.2;
|
|
198
149
|
sliderBackplateModel.parent = sliderBackplate;
|
|
199
|
-
if (
|
|
200
|
-
sliderBackplateModel.material =
|
|
150
|
+
if (this._sliderBackplateMaterial) {
|
|
151
|
+
sliderBackplateModel.material = this._sliderBackplateMaterial;
|
|
201
152
|
}
|
|
202
|
-
|
|
153
|
+
this._sliderBackplate = sliderBackplateModel;
|
|
203
154
|
}
|
|
204
155
|
if (sliderBarModel) {
|
|
205
156
|
sliderBarModel.parent = sliderBackplate;
|
|
206
157
|
sliderBarModel.position.z = -0.1;
|
|
207
158
|
sliderBarModel.scaling = new Vector3(SLIDER_SCALING - SLIDER_MARGIN, 0.04, 0.3);
|
|
208
159
|
sliderBarModel.isPickable = false;
|
|
209
|
-
if (
|
|
210
|
-
sliderBarModel.material =
|
|
160
|
+
if (this._sliderBarMaterial) {
|
|
161
|
+
sliderBarModel.material = this._sliderBarMaterial;
|
|
211
162
|
}
|
|
212
|
-
|
|
163
|
+
this._sliderBar = sliderBarModel;
|
|
213
164
|
}
|
|
214
165
|
if (sliderThumbModel) {
|
|
215
166
|
sliderThumbModel.parent = sliderBackplate;
|
|
216
167
|
sliderThumbModel.isPickable = true;
|
|
217
168
|
sliderThumbModel.position.z = -0.115;
|
|
218
169
|
sliderThumbModel.scaling = new Vector3(0.025, 0.3, 0.6);
|
|
219
|
-
sliderThumbModel.position.x =
|
|
220
|
-
sliderThumbModel.addBehavior(
|
|
221
|
-
if (
|
|
222
|
-
sliderThumbModel.material =
|
|
170
|
+
sliderThumbModel.position.x = this._convertToPosition(this.value);
|
|
171
|
+
sliderThumbModel.addBehavior(this._createBehavior());
|
|
172
|
+
if (this._sliderThumbMaterial) {
|
|
173
|
+
sliderThumbModel.material = this._sliderThumbMaterial;
|
|
223
174
|
}
|
|
224
|
-
|
|
175
|
+
this._sliderThumb = sliderThumbModel;
|
|
225
176
|
}
|
|
226
|
-
|
|
227
|
-
sliderBackplate.getChildMeshes().forEach(
|
|
228
|
-
|
|
177
|
+
this._injectGUI3DReservedDataStore(sliderBackplate).control = this;
|
|
178
|
+
sliderBackplate.getChildMeshes().forEach((mesh) => {
|
|
179
|
+
this._injectGUI3DReservedDataStore(mesh).control = this;
|
|
229
180
|
});
|
|
230
181
|
});
|
|
231
182
|
this._affectMaterial(sliderBackplate);
|
|
232
183
|
return sliderBackplate;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
this.
|
|
237
|
-
this.
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
var _this = this;
|
|
242
|
-
var pointerDragBehavior = new PointerDragBehavior({ dragAxis: Vector3.Right() });
|
|
184
|
+
}
|
|
185
|
+
_affectMaterial(mesh) {
|
|
186
|
+
this._sliderBackplateMaterial = this._sliderBackplateMaterial ?? new MRDLBackplateMaterial(`${this.name}_sliderbackplate_material`, mesh.getScene());
|
|
187
|
+
this._sliderBarMaterial = this._sliderBarMaterial ?? new MRDLSliderBarMaterial(`${this.name}_sliderbar_material`, mesh.getScene());
|
|
188
|
+
this._sliderThumbMaterial = this._sliderThumbMaterial ?? new MRDLSliderThumbMaterial(`${this.name}_sliderthumb_material`, mesh.getScene());
|
|
189
|
+
}
|
|
190
|
+
_createBehavior() {
|
|
191
|
+
const pointerDragBehavior = new PointerDragBehavior({ dragAxis: Vector3.Right() });
|
|
243
192
|
pointerDragBehavior.moveAttached = false;
|
|
244
|
-
pointerDragBehavior.onDragStartObservable.add(
|
|
245
|
-
|
|
193
|
+
pointerDragBehavior.onDragStartObservable.add(() => {
|
|
194
|
+
this._draggedPosition = this._sliderThumb.position.x;
|
|
246
195
|
});
|
|
247
|
-
pointerDragBehavior.onDragObservable.add(
|
|
248
|
-
|
|
249
|
-
|
|
196
|
+
pointerDragBehavior.onDragObservable.add((event) => {
|
|
197
|
+
this._draggedPosition += event.dragDistance / this.scaling.x;
|
|
198
|
+
this.value = this._convertToValue(this._draggedPosition);
|
|
250
199
|
});
|
|
251
200
|
return pointerDragBehavior;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
|
|
201
|
+
}
|
|
202
|
+
_convertToPosition(value) {
|
|
203
|
+
const position = ((value - this.minimum) / (this.maximum - this.minimum)) * (this.end - this.start) + this.start;
|
|
255
204
|
return Math.min(Math.max(position, this.start), this.end);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
|
|
205
|
+
}
|
|
206
|
+
_convertToValue(position) {
|
|
207
|
+
let value = ((position - this.start) / (this.end - this.start)) * (this.maximum - this.minimum);
|
|
259
208
|
value = this.step ? Math.round(value / this.step) * this.step : value;
|
|
260
209
|
return Math.max(Math.min(this.minimum + value, this._maximum), this._minimum);
|
|
261
|
-
}
|
|
210
|
+
}
|
|
262
211
|
/**
|
|
263
212
|
* Releases all associated resources
|
|
264
213
|
*/
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
return Slider3D;
|
|
284
|
-
}(Control3D));
|
|
285
|
-
export { Slider3D };
|
|
214
|
+
dispose() {
|
|
215
|
+
super.dispose();
|
|
216
|
+
this._sliderBar?.dispose();
|
|
217
|
+
this._sliderThumb?.dispose();
|
|
218
|
+
this._sliderBarMaterial?.dispose();
|
|
219
|
+
this._sliderThumbMaterial?.dispose();
|
|
220
|
+
this._sliderBackplate?.dispose();
|
|
221
|
+
this._sliderBackplateMaterial?.dispose();
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Base Url for the models.
|
|
226
|
+
*/
|
|
227
|
+
Slider3D.MODEL_BASE_URL = "https://assets.babylonjs.com/meshes/MRTK/";
|
|
228
|
+
/**
|
|
229
|
+
* File name for the 8x4 model.
|
|
230
|
+
*/
|
|
231
|
+
Slider3D.MODEL_FILENAME = "mrtk-fluent-backplate.glb";
|
|
286
232
|
//# sourceMappingURL=slider3D.js.map
|