@babylonjs/gui 5.0.0-alpha.6 → 5.0.0-alpha.63
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.js +10 -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 +93 -15
- package/2D/controls/container.js.map +1 -1
- package/2D/controls/control.d.ts +99 -44
- package/2D/controls/control.js +267 -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 +4 -2
- package/2D/controls/focusableButton.js +9 -6
- package/2D/controls/focusableButton.js.map +1 -1
- package/2D/controls/focusableControl.d.ts +2 -1
- package/2D/controls/focusableControl.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 +20 -12
- package/2D/controls/image.js +154 -111
- 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 +6 -4
- 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 +9 -8
- package/2D/controls/textBlock.js +30 -20
- 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.js +2 -2
- 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 +7 -83
- 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 +42 -28
- 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 +27 -24
- package/3D/controls/holographicButton.js.map +1 -1
- package/3D/controls/holographicSlate.d.ts +118 -0
- package/3D/controls/holographicSlate.js +360 -0
- package/3D/controls/holographicSlate.js.map +1 -0
- package/3D/controls/index.d.ts +10 -0
- package/3D/controls/index.js +22 -12
- 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 +43 -0
- package/3D/controls/touchButton3D.js +133 -0
- package/3D/controls/touchButton3D.js.map +1 -0
- package/3D/controls/touchHolographicButton.d.ts +100 -0
- package/3D/controls/touchHolographicButton.js +408 -0
- package/3D/controls/touchHolographicButton.js.map +1 -0
- 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 +22 -0
- package/3D/controls/touchMeshButton3D.js +63 -0
- package/3D/controls/touchMeshButton3D.js.map +1 -0
- 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 +19 -0
- package/3D/gui3DManager.js +73 -13
- 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 +126 -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
package/3D/gui3DManager.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { Observable } from "@babylonjs/core/Misc/observable";
|
|
2
|
-
import { Vector3 } from "@babylonjs/core/Maths/math.vector";
|
|
3
|
-
import { PointerEventTypes } from
|
|
4
|
-
import { HemisphericLight } from "@babylonjs/core/Lights/hemisphericLight";
|
|
5
|
-
import { UtilityLayerRenderer } from "@babylonjs/core/Rendering/utilityLayerRenderer";
|
|
6
|
-
import { EngineStore } from "@babylonjs/core/Engines/engineStore";
|
|
7
|
-
import { Container3D } from "./controls/container3D";
|
|
1
|
+
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
2
|
+
import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
|
3
|
+
import { PointerEventTypes } from "@babylonjs/core/Events/pointerEvents.js";
|
|
4
|
+
import { HemisphericLight } from "@babylonjs/core/Lights/hemisphericLight.js";
|
|
5
|
+
import { UtilityLayerRenderer } from "@babylonjs/core/Rendering/utilityLayerRenderer.js";
|
|
6
|
+
import { EngineStore } from "@babylonjs/core/Engines/engineStore.js";
|
|
7
|
+
import { Container3D } from "./controls/container3D.js";
|
|
8
8
|
/**
|
|
9
9
|
* Class used to manage 3D user interface
|
|
10
10
|
* @see https://doc.babylonjs.com/how_to/gui3d
|
|
@@ -16,6 +16,7 @@ var GUI3DManager = /** @class */ (function () {
|
|
|
16
16
|
*/
|
|
17
17
|
function GUI3DManager(scene) {
|
|
18
18
|
var _this = this;
|
|
19
|
+
this._customControlScaling = 1.0;
|
|
19
20
|
/** @hidden */
|
|
20
21
|
this._lastControlOver = {};
|
|
21
22
|
/** @hidden */
|
|
@@ -24,21 +25,27 @@ var GUI3DManager = /** @class */ (function () {
|
|
|
24
25
|
* Observable raised when the point picked by the pointer events changed
|
|
25
26
|
*/
|
|
26
27
|
this.onPickedPointChangedObservable = new Observable();
|
|
28
|
+
/**
|
|
29
|
+
* Observable raised when a picking happens
|
|
30
|
+
*/
|
|
31
|
+
this.onPickingObservable = new Observable();
|
|
27
32
|
// Shared resources
|
|
28
33
|
/** @hidden */
|
|
29
34
|
this._sharedMaterials = {};
|
|
35
|
+
/** @hidden */
|
|
36
|
+
this._touchSharedMaterials = {};
|
|
30
37
|
this._scene = scene || EngineStore.LastCreatedScene;
|
|
31
38
|
this._sceneDisposeObserver = this._scene.onDisposeObservable.add(function () {
|
|
32
39
|
_this._sceneDisposeObserver = null;
|
|
33
40
|
_this._utilityLayer = null;
|
|
34
41
|
_this.dispose();
|
|
35
42
|
});
|
|
36
|
-
this._utilityLayer =
|
|
43
|
+
this._utilityLayer = UtilityLayerRenderer._CreateDefaultUtilityLayerFromScene(this._scene);
|
|
37
44
|
this._utilityLayer.onlyCheckPointerDownEvents = false;
|
|
38
45
|
this._utilityLayer.pickUtilitySceneFirst = false;
|
|
39
46
|
this._utilityLayer.mainSceneTrackerPredicate = function (mesh) {
|
|
40
47
|
var _a, _b, _c;
|
|
41
|
-
return mesh && ((_c = (_b = (_a = mesh.
|
|
48
|
+
return mesh && ((_c = (_b = (_a = mesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) === null || _b === void 0 ? void 0 : _b.control) === null || _c === void 0 ? void 0 : _c._node);
|
|
42
49
|
};
|
|
43
50
|
// Root
|
|
44
51
|
this._rootContainer = new Container3D("RootContainer");
|
|
@@ -72,6 +79,39 @@ var GUI3DManager = /** @class */ (function () {
|
|
|
72
79
|
enumerable: false,
|
|
73
80
|
configurable: true
|
|
74
81
|
});
|
|
82
|
+
Object.defineProperty(GUI3DManager.prototype, "controlScaling", {
|
|
83
|
+
/** Gets the scaling for all UI elements owned by this manager */
|
|
84
|
+
get: function () {
|
|
85
|
+
return this._customControlScaling;
|
|
86
|
+
},
|
|
87
|
+
/** Sets the scaling adjustment for all UI elements owned by this manager */
|
|
88
|
+
set: function (newScale) {
|
|
89
|
+
if (this._customControlScaling !== newScale && newScale > 0) {
|
|
90
|
+
var scaleRatio_1 = newScale / this._customControlScaling;
|
|
91
|
+
this._customControlScaling = newScale;
|
|
92
|
+
this._rootContainer.children.forEach(function (control) {
|
|
93
|
+
control.scaling.scaleInPlace(scaleRatio_1);
|
|
94
|
+
if (newScale !== 1) {
|
|
95
|
+
control._isScaledByManager = true;
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
enumerable: false,
|
|
101
|
+
configurable: true
|
|
102
|
+
});
|
|
103
|
+
Object.defineProperty(GUI3DManager.prototype, "useRealisticScaling", {
|
|
104
|
+
/** Gets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */
|
|
105
|
+
get: function () {
|
|
106
|
+
return this.controlScaling === GUI3DManager.MRTK_REALISTIC_SCALING;
|
|
107
|
+
},
|
|
108
|
+
/** Sets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */
|
|
109
|
+
set: function (newValue) {
|
|
110
|
+
this.controlScaling = newValue ? GUI3DManager.MRTK_REALISTIC_SCALING : 1;
|
|
111
|
+
},
|
|
112
|
+
enumerable: false,
|
|
113
|
+
configurable: true
|
|
114
|
+
});
|
|
75
115
|
GUI3DManager.prototype._handlePointerOut = function (pointerId, isPointerUp) {
|
|
76
116
|
var previousControlOver = this._lastControlOver[pointerId];
|
|
77
117
|
if (previousControlOver) {
|
|
@@ -87,23 +127,26 @@ var GUI3DManager = /** @class */ (function () {
|
|
|
87
127
|
this.onPickedPointChangedObservable.notifyObservers(null);
|
|
88
128
|
};
|
|
89
129
|
GUI3DManager.prototype._doPicking = function (pi) {
|
|
90
|
-
var _a, _b;
|
|
130
|
+
var _a, _b, _c;
|
|
91
131
|
if (!this._utilityLayer || !this._utilityLayer.shouldRender || !this._utilityLayer.utilityLayerScene.activeCamera) {
|
|
92
132
|
return false;
|
|
93
133
|
}
|
|
94
|
-
var pointerEvent =
|
|
134
|
+
var pointerEvent = pi.event;
|
|
95
135
|
var pointerId = pointerEvent.pointerId || 0;
|
|
96
136
|
var buttonIndex = pointerEvent.button;
|
|
97
137
|
var pickingInfo = pi.pickInfo;
|
|
138
|
+
if (pickingInfo) {
|
|
139
|
+
this.onPickingObservable.notifyObservers(pickingInfo.pickedMesh);
|
|
140
|
+
}
|
|
98
141
|
if (!pickingInfo || !pickingInfo.hit) {
|
|
99
142
|
this._handlePointerOut(pointerId, pi.type === PointerEventTypes.POINTERUP);
|
|
100
143
|
return false;
|
|
101
144
|
}
|
|
102
|
-
var control = ((_b = (_a = pickingInfo.pickedMesh.metadata) === null || _a === void 0 ? void 0 : _a.GUI3D) === null || _b === void 0 ? void 0 : _b.control);
|
|
103
145
|
if (pickingInfo.pickedPoint) {
|
|
104
146
|
this.onPickedPointChangedObservable.notifyObservers(pickingInfo.pickedPoint);
|
|
105
147
|
}
|
|
106
|
-
|
|
148
|
+
var control = (_b = (_a = pickingInfo.pickedMesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) === null || _b === void 0 ? void 0 : _b.control;
|
|
149
|
+
if (!!control && !control._processObservables(pi.type, pickingInfo.pickedPoint, ((_c = pickingInfo.originMesh) === null || _c === void 0 ? void 0 : _c.position) || null, pointerId, buttonIndex)) {
|
|
107
150
|
if (pi.type === PointerEventTypes.POINTERMOVE) {
|
|
108
151
|
if (this._lastControlOver[pointerId]) {
|
|
109
152
|
this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId]);
|
|
@@ -147,6 +190,10 @@ var GUI3DManager = /** @class */ (function () {
|
|
|
147
190
|
*/
|
|
148
191
|
GUI3DManager.prototype.addControl = function (control) {
|
|
149
192
|
this._rootContainer.addControl(control);
|
|
193
|
+
if (this._customControlScaling !== 1) {
|
|
194
|
+
control.scaling.scaleInPlace(this._customControlScaling);
|
|
195
|
+
control._isScaledByManager = true;
|
|
196
|
+
}
|
|
150
197
|
return this;
|
|
151
198
|
};
|
|
152
199
|
/**
|
|
@@ -156,6 +203,10 @@ var GUI3DManager = /** @class */ (function () {
|
|
|
156
203
|
*/
|
|
157
204
|
GUI3DManager.prototype.removeControl = function (control) {
|
|
158
205
|
this._rootContainer.removeControl(control);
|
|
206
|
+
if (control._isScaledByManager) {
|
|
207
|
+
control.scaling.scaleInPlace(1 / this._customControlScaling);
|
|
208
|
+
control._isScaledByManager = false;
|
|
209
|
+
}
|
|
159
210
|
return this;
|
|
160
211
|
};
|
|
161
212
|
/**
|
|
@@ -170,11 +221,19 @@ var GUI3DManager = /** @class */ (function () {
|
|
|
170
221
|
this._sharedMaterials[materialName].dispose();
|
|
171
222
|
}
|
|
172
223
|
this._sharedMaterials = {};
|
|
224
|
+
for (var materialName in this._touchSharedMaterials) {
|
|
225
|
+
if (!this._touchSharedMaterials.hasOwnProperty(materialName)) {
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
this._touchSharedMaterials[materialName].dispose();
|
|
229
|
+
}
|
|
230
|
+
this._touchSharedMaterials = {};
|
|
173
231
|
if (this._pointerOutObserver && this._utilityLayer) {
|
|
174
232
|
this._utilityLayer.onPointerOutObservable.remove(this._pointerOutObserver);
|
|
175
233
|
this._pointerOutObserver = null;
|
|
176
234
|
}
|
|
177
235
|
this.onPickedPointChangedObservable.clear();
|
|
236
|
+
this.onPickingObservable.clear();
|
|
178
237
|
var utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;
|
|
179
238
|
if (utilityLayerScene) {
|
|
180
239
|
if (this._pointerObserver) {
|
|
@@ -192,6 +251,7 @@ var GUI3DManager = /** @class */ (function () {
|
|
|
192
251
|
this._utilityLayer.dispose();
|
|
193
252
|
}
|
|
194
253
|
};
|
|
254
|
+
GUI3DManager.MRTK_REALISTIC_SCALING = 0.032;
|
|
195
255
|
return GUI3DManager;
|
|
196
256
|
}());
|
|
197
257
|
export { GUI3DManager };
|
package/3D/gui3DManager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gui3DManager.js","sourceRoot":"","sources":["../../../sourceES6/gui/src/3D/gui3DManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { Observable, Observer } from \"@babylonjs/core/Misc/observable\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { PointerInfo, PointerEventTypes } from '@babylonjs/core/Events/pointerEvents';\r\nimport { Material } from \"@babylonjs/core/Materials/material\";\r\nimport { HemisphericLight } from \"@babylonjs/core/Lights/hemisphericLight\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { UtilityLayerRenderer } from \"@babylonjs/core/Rendering/utilityLayerRenderer\";\r\nimport { EngineStore } from \"@babylonjs/core/Engines/engineStore\";\r\nimport { IDisposable, Scene } from \"@babylonjs/core/scene\";\r\n\r\nimport { Container3D } from \"./controls/container3D\";\r\nimport { Control3D } from \"./controls/control3D\";\r\n\r\n/**\r\n * Class used to manage 3D user interface\r\n * @see https://doc.babylonjs.com/how_to/gui3d\r\n */\r\nexport class GUI3DManager implements IDisposable {\r\n private _scene: Scene;\r\n private _sceneDisposeObserver: Nullable<Observer<Scene>>;\r\n private _utilityLayer: Nullable<UtilityLayerRenderer>;\r\n private _rootContainer: Container3D;\r\n private _pointerObserver: Nullable<Observer<PointerInfo>>;\r\n private _pointerOutObserver: Nullable<Observer<number>>;\r\n /** @hidden */\r\n public _lastPickedControl: Control3D;\r\n /** @hidden */\r\n public _lastControlOver: { [pointerId: number]: Control3D } = {};\r\n /** @hidden */\r\n public _lastControlDown: { [pointerId: number]: Control3D } = {};\r\n\r\n /**\r\n * Observable raised when the point picked by the pointer events changed\r\n */\r\n public onPickedPointChangedObservable = new Observable<Nullable<Vector3>>();\r\n\r\n // Shared resources\r\n /** @hidden */\r\n public _sharedMaterials: { [key: string]: Material } = {};\r\n\r\n /** Gets the hosting scene */\r\n public get scene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /** Gets associated utility layer */\r\n public get utilityLayer(): Nullable<UtilityLayerRenderer> {\r\n return this._utilityLayer;\r\n }\r\n\r\n /**\r\n * Creates a new GUI3DManager\r\n * @param scene\r\n */\r\n public constructor(scene?: Scene) {\r\n this._scene = scene || EngineStore.LastCreatedScene!;\r\n this._sceneDisposeObserver = this._scene.onDisposeObservable.add(() => {\r\n this._sceneDisposeObserver = null;\r\n this._utilityLayer = null;\r\n this.dispose();\r\n });\r\n\r\n this._utilityLayer = new UtilityLayerRenderer(this._scene);\r\n this._utilityLayer.onlyCheckPointerDownEvents = false;\r\n this._utilityLayer.pickUtilitySceneFirst = false;\r\n this._utilityLayer.mainSceneTrackerPredicate = (mesh: Nullable<AbstractMesh>) => {\r\n return mesh && mesh.metadata?.GUI3D?.control?._node;\r\n };\r\n\r\n // Root\r\n this._rootContainer = new Container3D(\"RootContainer\");\r\n this._rootContainer._host = this;\r\n let utilityLayerScene = this._utilityLayer.utilityLayerScene;\r\n\r\n // Events\r\n this._pointerOutObserver = this._utilityLayer.onPointerOutObservable.add((pointerId) => {\r\n this._handlePointerOut(pointerId, true);\r\n });\r\n\r\n this._pointerObserver = utilityLayerScene.onPointerObservable.add((pi, state) => {\r\n this._doPicking(pi);\r\n });\r\n\r\n // Scene\r\n this._utilityLayer.utilityLayerScene.autoClear = false;\r\n this._utilityLayer.utilityLayerScene.autoClearDepthAndStencil = false;\r\n new HemisphericLight(\"hemi\", Vector3.Up(), this._utilityLayer.utilityLayerScene);\r\n }\r\n\r\n private _handlePointerOut(pointerId: number, isPointerUp: boolean) {\r\n var previousControlOver = this._lastControlOver[pointerId];\r\n if (previousControlOver) {\r\n previousControlOver._onPointerOut(previousControlOver);\r\n delete this._lastControlOver[pointerId];\r\n }\r\n\r\n if (isPointerUp) {\r\n if (this._lastControlDown[pointerId]) {\r\n this._lastControlDown[pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerId];\r\n }\r\n }\r\n\r\n this.onPickedPointChangedObservable.notifyObservers(null);\r\n }\r\n\r\n private _doPicking(pi: PointerInfo): boolean {\r\n if (!this._utilityLayer || !this._utilityLayer.shouldRender || !this._utilityLayer.utilityLayerScene.activeCamera) {\r\n return false;\r\n }\r\n\r\n let pointerEvent = <PointerEvent>(pi.event);\r\n\r\n let pointerId = pointerEvent.pointerId || 0;\r\n let buttonIndex = pointerEvent.button;\r\n\r\n let pickingInfo = pi.pickInfo;\r\n if (!pickingInfo || !pickingInfo.hit) {\r\n this._handlePointerOut(pointerId, pi.type === PointerEventTypes.POINTERUP);\r\n return false;\r\n }\r\n\r\n let control = <Control3D>(pickingInfo.pickedMesh!.metadata?.GUI3D?.control);\r\n if (pickingInfo.pickedPoint) {\r\n this.onPickedPointChangedObservable.notifyObservers(pickingInfo.pickedPoint);\r\n }\r\n\r\n if (!control._processObservables(pi.type, pickingInfo.pickedPoint!, pointerId, buttonIndex)) {\r\n\r\n if (pi.type === PointerEventTypes.POINTERMOVE) {\r\n if (this._lastControlOver[pointerId]) {\r\n this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId]);\r\n }\r\n\r\n delete this._lastControlOver[pointerId];\r\n }\r\n }\r\n\r\n if (pi.type === PointerEventTypes.POINTERUP) {\r\n if (this._lastControlDown[pointerEvent.pointerId]) {\r\n this._lastControlDown[pointerEvent.pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerEvent.pointerId];\r\n }\r\n\r\n if (pointerEvent.pointerType === \"touch\") {\r\n this._handlePointerOut(pointerId, false);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets the root container\r\n */\r\n public get rootContainer(): Container3D {\r\n return this._rootContainer;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if the given control is in the root child list\r\n * @param control defines the control to check\r\n * @returns true if the control is in the root child list\r\n */\r\n public containsControl(control: Control3D): boolean {\r\n return this._rootContainer.containsControl(control);\r\n }\r\n\r\n /**\r\n * Adds a control to the root child list\r\n * @param control defines the control to add\r\n * @returns the current manager\r\n */\r\n public addControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.addControl(control);\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a control from the root child list\r\n * @param control defines the control to remove\r\n * @returns the current container\r\n */\r\n public removeControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.removeControl(control);\r\n return this;\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n this._rootContainer.dispose();\r\n\r\n for (var materialName in this._sharedMaterials) {\r\n if (!this._sharedMaterials.hasOwnProperty(materialName)) {\r\n continue;\r\n }\r\n\r\n this._sharedMaterials[materialName].dispose();\r\n }\r\n\r\n this._sharedMaterials = {};\r\n\r\n if (this._pointerOutObserver && this._utilityLayer) {\r\n this._utilityLayer.onPointerOutObservable.remove(this._pointerOutObserver);\r\n this._pointerOutObserver = null;\r\n }\r\n\r\n this.onPickedPointChangedObservable.clear();\r\n\r\n let utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;\r\n\r\n if (utilityLayerScene) {\r\n if (this._pointerObserver) {\r\n utilityLayerScene.onPointerObservable.remove(this._pointerObserver);\r\n this._pointerObserver = null;\r\n }\r\n }\r\n if (this._scene) {\r\n if (this._sceneDisposeObserver) {\r\n this._scene.onDisposeObservable.remove(this._sceneDisposeObserver);\r\n this._sceneDisposeObserver = null;\r\n }\r\n }\r\n\r\n if (this._utilityLayer) {\r\n this._utilityLayer.dispose();\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"gui3DManager.js","sourceRoot":"","sources":["../../../sourceES6/gui/src/3D/gui3DManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { Observable, Observer } from \"@babylonjs/core/Misc/observable\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { PointerInfo, PointerEventTypes } from \"@babylonjs/core/Events/pointerEvents\";\r\nimport { Material } from \"@babylonjs/core/Materials/material\";\r\nimport { HemisphericLight } from \"@babylonjs/core/Lights/hemisphericLight\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { UtilityLayerRenderer } from \"@babylonjs/core/Rendering/utilityLayerRenderer\";\r\nimport { EngineStore } from \"@babylonjs/core/Engines/engineStore\";\r\nimport { IDisposable, Scene } from \"@babylonjs/core/scene\";\r\n\r\nimport { Container3D } from \"./controls/container3D\";\r\nimport { Control3D } from \"./controls/control3D\";\r\n\r\n/**\r\n * Class used to manage 3D user interface\r\n * @see https://doc.babylonjs.com/how_to/gui3d\r\n */\r\nexport class GUI3DManager implements IDisposable {\r\n private _scene: Scene;\r\n private _sceneDisposeObserver: Nullable<Observer<Scene>>;\r\n private _utilityLayer: Nullable<UtilityLayerRenderer>;\r\n private _rootContainer: Container3D;\r\n private _pointerObserver: Nullable<Observer<PointerInfo>>;\r\n private _pointerOutObserver: Nullable<Observer<number>>;\r\n private _customControlScaling = 1.0;\r\n /** @hidden */\r\n public _lastPickedControl: Control3D;\r\n /** @hidden */\r\n public _lastControlOver: { [pointerId: number]: Control3D } = {};\r\n /** @hidden */\r\n public _lastControlDown: { [pointerId: number]: Control3D } = {};\r\n\r\n protected static MRTK_REALISTIC_SCALING: number = 0.032;\r\n\r\n /**\r\n * Observable raised when the point picked by the pointer events changed\r\n */\r\n public onPickedPointChangedObservable = new Observable<Nullable<Vector3>>();\r\n\r\n /**\r\n * Observable raised when a picking happens\r\n */\r\n public onPickingObservable = new Observable<Nullable<AbstractMesh>>();\r\n\r\n // Shared resources\r\n /** @hidden */\r\n public _sharedMaterials: { [key: string]: Material } = {};\r\n\r\n /** @hidden */\r\n public _touchSharedMaterials: { [key: string]: Material } = {};\r\n\r\n /** Gets the hosting scene */\r\n public get scene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /** Gets associated utility layer */\r\n public get utilityLayer(): Nullable<UtilityLayerRenderer> {\r\n return this._utilityLayer;\r\n }\r\n\r\n /** Gets the scaling for all UI elements owned by this manager */\r\n public get controlScaling() {\r\n return this._customControlScaling;\r\n }\r\n\r\n /** Sets the scaling adjustment for all UI elements owned by this manager */\r\n public set controlScaling(newScale: number) {\r\n if (this._customControlScaling !== newScale && newScale > 0) {\r\n let scaleRatio = newScale / this._customControlScaling;\r\n this._customControlScaling = newScale;\r\n\r\n this._rootContainer.children.forEach((control: Control3D) => {\r\n control.scaling.scaleInPlace(scaleRatio);\r\n\r\n if (newScale !== 1) {\r\n control._isScaledByManager = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n /** Gets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */\r\n public get useRealisticScaling() {\r\n return this.controlScaling === GUI3DManager.MRTK_REALISTIC_SCALING;\r\n }\r\n\r\n /** Sets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */\r\n public set useRealisticScaling(newValue: boolean) {\r\n this.controlScaling = newValue ? GUI3DManager.MRTK_REALISTIC_SCALING : 1;\r\n }\r\n\r\n /**\r\n * Creates a new GUI3DManager\r\n * @param scene\r\n */\r\n public constructor(scene?: Scene) {\r\n this._scene = scene || EngineStore.LastCreatedScene!;\r\n this._sceneDisposeObserver = this._scene.onDisposeObservable.add(() => {\r\n this._sceneDisposeObserver = null;\r\n this._utilityLayer = null;\r\n this.dispose();\r\n });\r\n\r\n this._utilityLayer = UtilityLayerRenderer._CreateDefaultUtilityLayerFromScene(this._scene);\r\n this._utilityLayer.onlyCheckPointerDownEvents = false;\r\n this._utilityLayer.pickUtilitySceneFirst = false;\r\n this._utilityLayer.mainSceneTrackerPredicate = (mesh: Nullable<AbstractMesh>) => {\r\n return mesh && mesh.reservedDataStore?.GUI3D?.control?._node;\r\n };\r\n\r\n // Root\r\n this._rootContainer = new Container3D(\"RootContainer\");\r\n this._rootContainer._host = this;\r\n let utilityLayerScene = this._utilityLayer.utilityLayerScene;\r\n\r\n // Events\r\n this._pointerOutObserver = this._utilityLayer.onPointerOutObservable.add((pointerId) => {\r\n this._handlePointerOut(pointerId, true);\r\n });\r\n\r\n this._pointerObserver = utilityLayerScene.onPointerObservable.add((pi, state) => {\r\n this._doPicking(pi);\r\n });\r\n\r\n // Scene\r\n this._utilityLayer.utilityLayerScene.autoClear = false;\r\n this._utilityLayer.utilityLayerScene.autoClearDepthAndStencil = false;\r\n new HemisphericLight(\"hemi\", Vector3.Up(), this._utilityLayer.utilityLayerScene);\r\n }\r\n\r\n private _handlePointerOut(pointerId: number, isPointerUp: boolean) {\r\n var previousControlOver = this._lastControlOver[pointerId];\r\n if (previousControlOver) {\r\n previousControlOver._onPointerOut(previousControlOver);\r\n delete this._lastControlOver[pointerId];\r\n }\r\n\r\n if (isPointerUp) {\r\n if (this._lastControlDown[pointerId]) {\r\n this._lastControlDown[pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerId];\r\n }\r\n }\r\n\r\n this.onPickedPointChangedObservable.notifyObservers(null);\r\n }\r\n\r\n private _doPicking(pi: PointerInfo): boolean {\r\n if (!this._utilityLayer || !this._utilityLayer.shouldRender || !this._utilityLayer.utilityLayerScene.activeCamera) {\r\n return false;\r\n }\r\n\r\n let pointerEvent = <PointerEvent>pi.event;\r\n\r\n let pointerId = pointerEvent.pointerId || 0;\r\n let buttonIndex = pointerEvent.button;\r\n\r\n let pickingInfo = pi.pickInfo;\r\n if (pickingInfo) {\r\n this.onPickingObservable.notifyObservers(pickingInfo.pickedMesh);\r\n }\r\n\r\n if (!pickingInfo || !pickingInfo.hit) {\r\n this._handlePointerOut(pointerId, pi.type === PointerEventTypes.POINTERUP);\r\n return false;\r\n }\r\n\r\n if (pickingInfo.pickedPoint) {\r\n this.onPickedPointChangedObservable.notifyObservers(pickingInfo.pickedPoint);\r\n }\r\n\r\n const control = <Control3D>pickingInfo.pickedMesh!.reservedDataStore?.GUI3D?.control;\r\n if (!!control && !control._processObservables(pi.type, pickingInfo.pickedPoint!, pickingInfo.originMesh?.position || null, pointerId, buttonIndex)) {\r\n if (pi.type === PointerEventTypes.POINTERMOVE) {\r\n if (this._lastControlOver[pointerId]) {\r\n this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId]);\r\n }\r\n\r\n delete this._lastControlOver[pointerId];\r\n }\r\n }\r\n\r\n if (pi.type === PointerEventTypes.POINTERUP) {\r\n if (this._lastControlDown[pointerEvent.pointerId]) {\r\n this._lastControlDown[pointerEvent.pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerEvent.pointerId];\r\n }\r\n\r\n if (pointerEvent.pointerType === \"touch\") {\r\n this._handlePointerOut(pointerId, false);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets the root container\r\n */\r\n public get rootContainer(): Container3D {\r\n return this._rootContainer;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if the given control is in the root child list\r\n * @param control defines the control to check\r\n * @returns true if the control is in the root child list\r\n */\r\n public containsControl(control: Control3D): boolean {\r\n return this._rootContainer.containsControl(control);\r\n }\r\n\r\n /**\r\n * Adds a control to the root child list\r\n * @param control defines the control to add\r\n * @returns the current manager\r\n */\r\n public addControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.addControl(control);\r\n if (this._customControlScaling !== 1) {\r\n control.scaling.scaleInPlace(this._customControlScaling);\r\n control._isScaledByManager = true;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a control from the root child list\r\n * @param control defines the control to remove\r\n * @returns the current container\r\n */\r\n public removeControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.removeControl(control);\r\n if (control._isScaledByManager) {\r\n control.scaling.scaleInPlace(1 / this._customControlScaling);\r\n control._isScaledByManager = false;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n this._rootContainer.dispose();\r\n\r\n for (var materialName in this._sharedMaterials) {\r\n if (!this._sharedMaterials.hasOwnProperty(materialName)) {\r\n continue;\r\n }\r\n\r\n this._sharedMaterials[materialName].dispose();\r\n }\r\n\r\n this._sharedMaterials = {};\r\n\r\n for (var materialName in this._touchSharedMaterials) {\r\n if (!this._touchSharedMaterials.hasOwnProperty(materialName)) {\r\n continue;\r\n }\r\n\r\n this._touchSharedMaterials[materialName].dispose();\r\n }\r\n\r\n this._touchSharedMaterials = {};\r\n\r\n if (this._pointerOutObserver && this._utilityLayer) {\r\n this._utilityLayer.onPointerOutObservable.remove(this._pointerOutObserver);\r\n this._pointerOutObserver = null;\r\n }\r\n\r\n this.onPickedPointChangedObservable.clear();\r\n this.onPickingObservable.clear();\r\n\r\n let utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;\r\n\r\n if (utilityLayerScene) {\r\n if (this._pointerObserver) {\r\n utilityLayerScene.onPointerObservable.remove(this._pointerObserver);\r\n this._pointerObserver = null;\r\n }\r\n }\r\n if (this._scene) {\r\n if (this._sceneDisposeObserver) {\r\n this._scene.onDisposeObservable.remove(this._sceneDisposeObserver);\r\n this._sceneDisposeObserver = null;\r\n }\r\n }\r\n\r\n if (this._utilityLayer) {\r\n this._utilityLayer.dispose();\r\n }\r\n }\r\n}\r\n"]}
|
package/3D/index.d.ts
CHANGED
package/3D/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export * from "./controls";
|
|
2
|
-
export * from "./materials";
|
|
3
|
-
export * from "./
|
|
4
|
-
export * from "./
|
|
1
|
+
export * from "./controls/index.js";
|
|
2
|
+
export * from "./materials/index.js";
|
|
3
|
+
export * from "./gizmos/index.js";
|
|
4
|
+
export * from "./gui3DManager.js";
|
|
5
|
+
export * from "./vector3WithInfo.js";
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
package/3D/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../sourceES6/gui/src/3D/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../sourceES6/gui/src/3D/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC","sourcesContent":["export * from \"./controls/index\";\r\nexport * from \"./materials/index\";\r\nexport * from \"./gizmos/index\";\r\n\r\nexport * from \"./gui3DManager\";\r\nexport * from \"./vector3WithInfo\";\r\n"]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Nullable } from "@babylonjs/core/types";
|
|
2
|
+
import { Vector3, Matrix } from "@babylonjs/core/Maths/math.vector";
|
|
3
|
+
import { BaseTexture } from "@babylonjs/core/Materials/Textures/baseTexture";
|
|
4
|
+
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines";
|
|
5
|
+
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial";
|
|
6
|
+
import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
|
|
7
|
+
import { SubMesh } from "@babylonjs/core/Meshes/subMesh";
|
|
8
|
+
import { Mesh } from "@babylonjs/core/Meshes/mesh";
|
|
9
|
+
import { Scene } from "@babylonjs/core/scene";
|
|
10
|
+
import { Color3, Color4 } from "@babylonjs/core/Maths/math.color";
|
|
11
|
+
import "./shaders/fluent.vertex";
|
|
12
|
+
import "./shaders/fluent.fragment";
|
|
13
|
+
/** @hidden */
|
|
14
|
+
export declare class FluentMaterialDefines extends MaterialDefines {
|
|
15
|
+
INNERGLOW: boolean;
|
|
16
|
+
BORDER: boolean;
|
|
17
|
+
HOVERLIGHT: boolean;
|
|
18
|
+
TEXTURE: boolean;
|
|
19
|
+
constructor();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Class used to render controls with fluent desgin
|
|
23
|
+
*/
|
|
24
|
+
export declare class FluentMaterial extends PushMaterial {
|
|
25
|
+
/**
|
|
26
|
+
* Gets or sets inner glow intensity. A value of 0 means no glow (default is 0.5)
|
|
27
|
+
*/
|
|
28
|
+
innerGlowColorIntensity: number;
|
|
29
|
+
/**
|
|
30
|
+
* Gets or sets the inner glow color (white by default)
|
|
31
|
+
*/
|
|
32
|
+
innerGlowColor: Color3;
|
|
33
|
+
/**
|
|
34
|
+
* Gets or sets the albedo color (Default is Color3(0.3, 0.35, 0.4))
|
|
35
|
+
*/
|
|
36
|
+
albedoColor: Color3;
|
|
37
|
+
/**
|
|
38
|
+
* Gets or sets a boolean indicating if borders must be rendered (default is false)
|
|
39
|
+
*/
|
|
40
|
+
renderBorders: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Gets or sets border width (default is 0.5)
|
|
43
|
+
*/
|
|
44
|
+
borderWidth: number;
|
|
45
|
+
/**
|
|
46
|
+
* Gets or sets a value indicating the smoothing value applied to border edges (0.02 by default)
|
|
47
|
+
*/
|
|
48
|
+
edgeSmoothingValue: number;
|
|
49
|
+
/**
|
|
50
|
+
* Gets or sets the minimum value that can be applied to border width (default is 0.1)
|
|
51
|
+
*/
|
|
52
|
+
borderMinValue: number;
|
|
53
|
+
/**
|
|
54
|
+
* Gets or sets a boolean indicating if hover light must be rendered (default is false)
|
|
55
|
+
*/
|
|
56
|
+
renderHoverLight: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Gets or sets the radius used to render the hover light (default is 1.0)
|
|
59
|
+
*/
|
|
60
|
+
hoverRadius: number;
|
|
61
|
+
/**
|
|
62
|
+
* Gets or sets the color used to render the hover light (default is Color4(0.3, 0.3, 0.3, 1.0))
|
|
63
|
+
*/
|
|
64
|
+
hoverColor: Color4;
|
|
65
|
+
/**
|
|
66
|
+
* Gets or sets the hover light position in world space (default is Vector3.Zero())
|
|
67
|
+
*/
|
|
68
|
+
hoverPosition: Vector3;
|
|
69
|
+
private _albedoTexture;
|
|
70
|
+
/** Gets or sets the texture to use for albedo color */
|
|
71
|
+
albedoTexture: Nullable<BaseTexture>;
|
|
72
|
+
/**
|
|
73
|
+
* Creates a new Fluent material
|
|
74
|
+
* @param name defines the name of the material
|
|
75
|
+
* @param scene defines the hosting scene
|
|
76
|
+
*/
|
|
77
|
+
constructor(name: string, scene: Scene);
|
|
78
|
+
needAlphaBlending(): boolean;
|
|
79
|
+
needAlphaTesting(): boolean;
|
|
80
|
+
getAlphaTestTexture(): Nullable<BaseTexture>;
|
|
81
|
+
isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh, useInstances?: boolean): boolean;
|
|
82
|
+
bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void;
|
|
83
|
+
getActiveTextures(): BaseTexture[];
|
|
84
|
+
hasTexture(texture: BaseTexture): boolean;
|
|
85
|
+
dispose(forceDisposeEffect?: boolean): void;
|
|
86
|
+
clone(name: string): FluentMaterial;
|
|
87
|
+
serialize(): any;
|
|
88
|
+
getClassName(): string;
|
|
89
|
+
static Parse(source: any, scene: Scene, rootUrl: string): FluentMaterial;
|
|
90
|
+
}
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { __decorate, __extends } from "tslib";
|
|
2
|
+
import { serializeAsColor4, serializeAsVector3, serializeAsTexture, serialize, expandToProperty, serializeAsColor3, SerializationHelper } from "@babylonjs/core/Misc/decorators.js";
|
|
3
|
+
import { Vector3, TmpVectors } from "@babylonjs/core/Maths/math.vector.js";
|
|
4
|
+
import { MaterialDefines } from "@babylonjs/core/Materials/materialDefines.js";
|
|
5
|
+
import { MaterialHelper } from "@babylonjs/core/Materials/materialHelper.js";
|
|
6
|
+
import { PushMaterial } from "@babylonjs/core/Materials/pushMaterial.js";
|
|
7
|
+
import { VertexBuffer } from "@babylonjs/core/Buffers/buffer.js";
|
|
8
|
+
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
|
9
|
+
import { Color3, Color4 } from "@babylonjs/core/Maths/math.color.js";
|
|
10
|
+
import "./shaders/fluent.vertex.js";
|
|
11
|
+
import "./shaders/fluent.fragment.js";
|
|
12
|
+
/** @hidden */
|
|
13
|
+
var FluentMaterialDefines = /** @class */ (function (_super) {
|
|
14
|
+
__extends(FluentMaterialDefines, _super);
|
|
15
|
+
function FluentMaterialDefines() {
|
|
16
|
+
var _this = _super.call(this) || this;
|
|
17
|
+
_this.INNERGLOW = false;
|
|
18
|
+
_this.BORDER = false;
|
|
19
|
+
_this.HOVERLIGHT = false;
|
|
20
|
+
_this.TEXTURE = false;
|
|
21
|
+
_this.rebuild();
|
|
22
|
+
return _this;
|
|
23
|
+
}
|
|
24
|
+
return FluentMaterialDefines;
|
|
25
|
+
}(MaterialDefines));
|
|
26
|
+
export { FluentMaterialDefines };
|
|
27
|
+
/**
|
|
28
|
+
* Class used to render controls with fluent desgin
|
|
29
|
+
*/
|
|
30
|
+
var FluentMaterial = /** @class */ (function (_super) {
|
|
31
|
+
__extends(FluentMaterial, _super);
|
|
32
|
+
/**
|
|
33
|
+
* Creates a new Fluent material
|
|
34
|
+
* @param name defines the name of the material
|
|
35
|
+
* @param scene defines the hosting scene
|
|
36
|
+
*/
|
|
37
|
+
function FluentMaterial(name, scene) {
|
|
38
|
+
var _this = _super.call(this, name, scene) || this;
|
|
39
|
+
/**
|
|
40
|
+
* Gets or sets inner glow intensity. A value of 0 means no glow (default is 0.5)
|
|
41
|
+
*/
|
|
42
|
+
_this.innerGlowColorIntensity = 0.5;
|
|
43
|
+
/**
|
|
44
|
+
* Gets or sets the inner glow color (white by default)
|
|
45
|
+
*/
|
|
46
|
+
_this.innerGlowColor = new Color3(1.0, 1.0, 1.0);
|
|
47
|
+
/**
|
|
48
|
+
* Gets or sets the albedo color (Default is Color3(0.3, 0.35, 0.4))
|
|
49
|
+
*/
|
|
50
|
+
_this.albedoColor = new Color3(0.3, 0.35, 0.4);
|
|
51
|
+
/**
|
|
52
|
+
* Gets or sets a boolean indicating if borders must be rendered (default is false)
|
|
53
|
+
*/
|
|
54
|
+
_this.renderBorders = false;
|
|
55
|
+
/**
|
|
56
|
+
* Gets or sets border width (default is 0.5)
|
|
57
|
+
*/
|
|
58
|
+
_this.borderWidth = 0.5;
|
|
59
|
+
/**
|
|
60
|
+
* Gets or sets a value indicating the smoothing value applied to border edges (0.02 by default)
|
|
61
|
+
*/
|
|
62
|
+
_this.edgeSmoothingValue = 0.02;
|
|
63
|
+
/**
|
|
64
|
+
* Gets or sets the minimum value that can be applied to border width (default is 0.1)
|
|
65
|
+
*/
|
|
66
|
+
_this.borderMinValue = 0.1;
|
|
67
|
+
/**
|
|
68
|
+
* Gets or sets a boolean indicating if hover light must be rendered (default is false)
|
|
69
|
+
*/
|
|
70
|
+
_this.renderHoverLight = false;
|
|
71
|
+
/**
|
|
72
|
+
* Gets or sets the radius used to render the hover light (default is 1.0)
|
|
73
|
+
*/
|
|
74
|
+
_this.hoverRadius = 1.0;
|
|
75
|
+
/**
|
|
76
|
+
* Gets or sets the color used to render the hover light (default is Color4(0.3, 0.3, 0.3, 1.0))
|
|
77
|
+
*/
|
|
78
|
+
_this.hoverColor = new Color4(0.3, 0.3, 0.3, 1.0);
|
|
79
|
+
/**
|
|
80
|
+
* Gets or sets the hover light position in world space (default is Vector3.Zero())
|
|
81
|
+
*/
|
|
82
|
+
_this.hoverPosition = Vector3.Zero();
|
|
83
|
+
return _this;
|
|
84
|
+
}
|
|
85
|
+
FluentMaterial.prototype.needAlphaBlending = function () {
|
|
86
|
+
return this.alpha !== 1.0;
|
|
87
|
+
};
|
|
88
|
+
FluentMaterial.prototype.needAlphaTesting = function () {
|
|
89
|
+
return false;
|
|
90
|
+
};
|
|
91
|
+
FluentMaterial.prototype.getAlphaTestTexture = function () {
|
|
92
|
+
return null;
|
|
93
|
+
};
|
|
94
|
+
FluentMaterial.prototype.isReadyForSubMesh = function (mesh, subMesh, useInstances) {
|
|
95
|
+
if (this.isFrozen) {
|
|
96
|
+
if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (!subMesh.materialDefines) {
|
|
101
|
+
subMesh.materialDefines = new FluentMaterialDefines();
|
|
102
|
+
}
|
|
103
|
+
var scene = this.getScene();
|
|
104
|
+
var defines = subMesh.materialDefines;
|
|
105
|
+
if (!this.checkReadyOnEveryCall && subMesh.effect) {
|
|
106
|
+
if (defines._renderId === scene.getRenderId()) {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (defines._areTexturesDirty) {
|
|
111
|
+
defines.INNERGLOW = this.innerGlowColorIntensity > 0;
|
|
112
|
+
defines.BORDER = this.renderBorders;
|
|
113
|
+
defines.HOVERLIGHT = this.renderHoverLight;
|
|
114
|
+
if (this._albedoTexture) {
|
|
115
|
+
if (!this._albedoTexture.isReadyOrNotBlocking()) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
defines.TEXTURE = true;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
defines.TEXTURE = false;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
var engine = scene.getEngine();
|
|
127
|
+
// Get correct effect
|
|
128
|
+
if (defines.isDirty) {
|
|
129
|
+
defines.markAsProcessed();
|
|
130
|
+
scene.resetCachedMaterial();
|
|
131
|
+
//Attributes
|
|
132
|
+
var attribs = [VertexBuffer.PositionKind];
|
|
133
|
+
attribs.push(VertexBuffer.NormalKind);
|
|
134
|
+
attribs.push(VertexBuffer.UVKind);
|
|
135
|
+
var shaderName = "fluent";
|
|
136
|
+
var uniforms = ["world", "viewProjection", "innerGlowColor", "albedoColor", "borderWidth", "edgeSmoothingValue", "scaleFactor", "borderMinValue",
|
|
137
|
+
"hoverColor", "hoverPosition", "hoverRadius", "textureMatrix"
|
|
138
|
+
];
|
|
139
|
+
var samplers = ["albedoSampler"];
|
|
140
|
+
var uniformBuffers = new Array();
|
|
141
|
+
MaterialHelper.PrepareUniformsAndSamplersList({
|
|
142
|
+
uniformsNames: uniforms,
|
|
143
|
+
uniformBuffersNames: uniformBuffers,
|
|
144
|
+
samplers: samplers,
|
|
145
|
+
defines: defines,
|
|
146
|
+
maxSimultaneousLights: 4
|
|
147
|
+
});
|
|
148
|
+
var join = defines.toString();
|
|
149
|
+
subMesh.setEffect(scene.getEngine().createEffect(shaderName, {
|
|
150
|
+
attributes: attribs,
|
|
151
|
+
uniformsNames: uniforms,
|
|
152
|
+
uniformBuffersNames: uniformBuffers,
|
|
153
|
+
samplers: samplers,
|
|
154
|
+
defines: join,
|
|
155
|
+
fallbacks: null,
|
|
156
|
+
onCompiled: this.onCompiled,
|
|
157
|
+
onError: this.onError,
|
|
158
|
+
indexParameters: { maxSimultaneousLights: 4 }
|
|
159
|
+
}, engine), defines, this._materialContext);
|
|
160
|
+
}
|
|
161
|
+
if (!subMesh.effect || !subMesh.effect.isReady()) {
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
defines._renderId = scene.getRenderId();
|
|
165
|
+
subMesh.effect._wasPreviouslyReady = true;
|
|
166
|
+
return true;
|
|
167
|
+
};
|
|
168
|
+
FluentMaterial.prototype.bindForSubMesh = function (world, mesh, subMesh) {
|
|
169
|
+
var scene = this.getScene();
|
|
170
|
+
var defines = subMesh.materialDefines;
|
|
171
|
+
if (!defines) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
var effect = subMesh.effect;
|
|
175
|
+
if (!effect) {
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
this._activeEffect = effect;
|
|
179
|
+
// Matrices
|
|
180
|
+
this.bindOnlyWorldMatrix(world);
|
|
181
|
+
this._activeEffect.setMatrix("viewProjection", scene.getTransformMatrix());
|
|
182
|
+
if (this._mustRebind(scene, effect)) {
|
|
183
|
+
this._activeEffect.setColor4("albedoColor", this.albedoColor, this.alpha);
|
|
184
|
+
if (defines.INNERGLOW) {
|
|
185
|
+
this._activeEffect.setColor4("innerGlowColor", this.innerGlowColor, this.innerGlowColorIntensity);
|
|
186
|
+
}
|
|
187
|
+
if (defines.BORDER) {
|
|
188
|
+
this._activeEffect.setFloat("borderWidth", this.borderWidth);
|
|
189
|
+
this._activeEffect.setFloat("edgeSmoothingValue", this.edgeSmoothingValue);
|
|
190
|
+
this._activeEffect.setFloat("borderMinValue", this.borderMinValue);
|
|
191
|
+
mesh.getBoundingInfo().boundingBox.extendSize.multiplyToRef(mesh.scaling, TmpVectors.Vector3[0]);
|
|
192
|
+
this._activeEffect.setVector3("scaleFactor", TmpVectors.Vector3[0]);
|
|
193
|
+
}
|
|
194
|
+
if (defines.HOVERLIGHT) {
|
|
195
|
+
this._activeEffect.setDirectColor4("hoverColor", this.hoverColor);
|
|
196
|
+
this._activeEffect.setFloat("hoverRadius", this.hoverRadius);
|
|
197
|
+
this._activeEffect.setVector3("hoverPosition", this.hoverPosition);
|
|
198
|
+
}
|
|
199
|
+
if (defines.TEXTURE && this._albedoTexture) {
|
|
200
|
+
this._activeEffect.setTexture("albedoSampler", this._albedoTexture);
|
|
201
|
+
var matrix = this._albedoTexture.getTextureMatrix();
|
|
202
|
+
this._activeEffect.setMatrix("textureMatrix", matrix);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
this._afterBind(mesh, this._activeEffect);
|
|
206
|
+
};
|
|
207
|
+
FluentMaterial.prototype.getActiveTextures = function () {
|
|
208
|
+
var activeTextures = _super.prototype.getActiveTextures.call(this);
|
|
209
|
+
return activeTextures;
|
|
210
|
+
};
|
|
211
|
+
FluentMaterial.prototype.hasTexture = function (texture) {
|
|
212
|
+
if (_super.prototype.hasTexture.call(this, texture)) {
|
|
213
|
+
return true;
|
|
214
|
+
}
|
|
215
|
+
return false;
|
|
216
|
+
};
|
|
217
|
+
FluentMaterial.prototype.dispose = function (forceDisposeEffect) {
|
|
218
|
+
_super.prototype.dispose.call(this, forceDisposeEffect);
|
|
219
|
+
};
|
|
220
|
+
FluentMaterial.prototype.clone = function (name) {
|
|
221
|
+
var _this = this;
|
|
222
|
+
return SerializationHelper.Clone(function () { return new FluentMaterial(name, _this.getScene()); }, this);
|
|
223
|
+
};
|
|
224
|
+
FluentMaterial.prototype.serialize = function () {
|
|
225
|
+
var serializationObject = SerializationHelper.Serialize(this);
|
|
226
|
+
serializationObject.customType = "BABYLON.GUI.FluentMaterial";
|
|
227
|
+
return serializationObject;
|
|
228
|
+
};
|
|
229
|
+
FluentMaterial.prototype.getClassName = function () {
|
|
230
|
+
return "FluentMaterial";
|
|
231
|
+
};
|
|
232
|
+
// Statics
|
|
233
|
+
FluentMaterial.Parse = function (source, scene, rootUrl) {
|
|
234
|
+
return SerializationHelper.Parse(function () { return new FluentMaterial(source.name, scene); }, source, scene, rootUrl);
|
|
235
|
+
};
|
|
236
|
+
__decorate([
|
|
237
|
+
serialize(),
|
|
238
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
239
|
+
], FluentMaterial.prototype, "innerGlowColorIntensity", void 0);
|
|
240
|
+
__decorate([
|
|
241
|
+
serializeAsColor3()
|
|
242
|
+
], FluentMaterial.prototype, "innerGlowColor", void 0);
|
|
243
|
+
__decorate([
|
|
244
|
+
serializeAsColor3()
|
|
245
|
+
], FluentMaterial.prototype, "albedoColor", void 0);
|
|
246
|
+
__decorate([
|
|
247
|
+
serialize(),
|
|
248
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
249
|
+
], FluentMaterial.prototype, "renderBorders", void 0);
|
|
250
|
+
__decorate([
|
|
251
|
+
serialize()
|
|
252
|
+
], FluentMaterial.prototype, "borderWidth", void 0);
|
|
253
|
+
__decorate([
|
|
254
|
+
serialize()
|
|
255
|
+
], FluentMaterial.prototype, "edgeSmoothingValue", void 0);
|
|
256
|
+
__decorate([
|
|
257
|
+
serialize()
|
|
258
|
+
], FluentMaterial.prototype, "borderMinValue", void 0);
|
|
259
|
+
__decorate([
|
|
260
|
+
serialize(),
|
|
261
|
+
expandToProperty("_markAllSubMeshesAsTexturesDirty")
|
|
262
|
+
], FluentMaterial.prototype, "renderHoverLight", void 0);
|
|
263
|
+
__decorate([
|
|
264
|
+
serialize()
|
|
265
|
+
], FluentMaterial.prototype, "hoverRadius", void 0);
|
|
266
|
+
__decorate([
|
|
267
|
+
serializeAsColor4()
|
|
268
|
+
], FluentMaterial.prototype, "hoverColor", void 0);
|
|
269
|
+
__decorate([
|
|
270
|
+
serializeAsVector3()
|
|
271
|
+
], FluentMaterial.prototype, "hoverPosition", void 0);
|
|
272
|
+
__decorate([
|
|
273
|
+
serializeAsTexture("albedoTexture")
|
|
274
|
+
], FluentMaterial.prototype, "_albedoTexture", void 0);
|
|
275
|
+
__decorate([
|
|
276
|
+
expandToProperty("_markAllSubMeshesAsTexturesAndMiscDirty")
|
|
277
|
+
], FluentMaterial.prototype, "albedoTexture", void 0);
|
|
278
|
+
return FluentMaterial;
|
|
279
|
+
}(PushMaterial));
|
|
280
|
+
export { FluentMaterial };
|
|
281
|
+
RegisterClass("BABYLON.GUI.FluentMaterial", FluentMaterial);
|
|
282
|
+
//# sourceMappingURL=fluentMaterial.js.map
|