babylonjs-gui 5.0.0-beta.9 → 5.0.0-rc.2

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/babylon.gui.js CHANGED
@@ -7,7 +7,7 @@
7
7
  exports["babylonjs-gui"] = factory(require("babylonjs"));
8
8
  else
9
9
  root["BABYLON"] = root["BABYLON"] || {}, root["BABYLON"]["GUI"] = factory(root["BABYLON"]);
10
- })((typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this), function(__WEBPACK_EXTERNAL_MODULE_babylonjs_Misc_perfCounter__) {
10
+ })((typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this), function(__WEBPACK_EXTERNAL_MODULE_babylonjs_Misc_observable__) {
11
11
  return /******/ (function(modules) { // webpackBootstrap
12
12
  /******/ // The module cache
13
13
  /******/ var installedModules = {};
@@ -97,9 +97,9 @@ return /******/ (function(modules) { // webpackBootstrap
97
97
  /******/ ({
98
98
 
99
99
  /***/ "../../node_modules/tslib/tslib.es6.js":
100
- /*!************************************************************************************!*\
101
- !*** C:/Users/raweber/Documents/GitHub/Babylon.js/node_modules/tslib/tslib.es6.js ***!
102
- \************************************************************************************/
100
+ /*!*************************************************************!*\
101
+ !*** E:/Babylon/Babylon.js/node_modules/tslib/tslib.es6.js ***!
102
+ \*************************************************************/
103
103
  /*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __createBinding, __exportStar, __values, __read, __spread, __spreadArrays, __spreadArray, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault, __classPrivateFieldGet, __classPrivateFieldSet */
104
104
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
105
105
 
@@ -413,7 +413,7 @@ module.exports = g;
413
413
  "use strict";
414
414
  __webpack_require__.r(__webpack_exports__);
415
415
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AdvancedDynamicTextureInstrumentation", function() { return AdvancedDynamicTextureInstrumentation; });
416
- /* harmony import */ var babylonjs_Misc_perfCounter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/perfCounter */ "babylonjs/Misc/perfCounter");
416
+ /* harmony import */ var babylonjs_Misc_perfCounter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/perfCounter */ "babylonjs/Misc/observable");
417
417
  /* harmony import */ var babylonjs_Misc_perfCounter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_perfCounter__WEBPACK_IMPORTED_MODULE_0__);
418
418
 
419
419
  /**
@@ -556,7 +556,7 @@ var AdvancedDynamicTextureInstrumentation = /** @class */ (function () {
556
556
  __webpack_require__.r(__webpack_exports__);
557
557
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AdvancedDynamicTexture", function() { return AdvancedDynamicTexture; });
558
558
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
559
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
559
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
560
560
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
561
561
  /* harmony import */ var _controls_container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./controls/container */ "./2D/controls/container.ts");
562
562
  /* harmony import */ var _controls_control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./controls/control */ "./2D/controls/control.ts");
@@ -667,6 +667,13 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
667
667
  * Gets or sets a boolean indicating that the canvas must be reverted on Y when updating the texture
668
668
  */
669
669
  _this.applyYInversionOnUpdate = true;
670
+ /**
671
+ * If set to true, every scene render will trigger a pointer event for the GUI
672
+ * if it is linked to a mesh or has controls linked to a mesh. This will allow
673
+ * you to catch the pointer moving around the GUI due to camera or mesh movements,
674
+ * but it has a performance cost.
675
+ */
676
+ _this.checkPointerEveryFrame = false;
670
677
  _this._useInvalidateRectOptimization = true;
671
678
  // Invalidated rectangle which is the combination of all invalidated controls after they have been rotated into absolute position
672
679
  _this._invalidatedRectangle = null;
@@ -1140,6 +1147,9 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1140
1147
  if (this._pointerMoveObserver) {
1141
1148
  scene.onPrePointerObservable.remove(this._pointerMoveObserver);
1142
1149
  }
1150
+ if (this._sceneRenderObserver) {
1151
+ scene.onBeforeRenderObservable.remove(this._sceneRenderObserver);
1152
+ }
1143
1153
  if (this._pointerObserver) {
1144
1154
  scene.onPointerObservable.remove(this._pointerObserver);
1145
1155
  }
@@ -1377,6 +1387,61 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1377
1387
  this._cleanControlAfterRemovalFromList(this._lastControlDown, control);
1378
1388
  this._cleanControlAfterRemovalFromList(this._lastControlOver, control);
1379
1389
  };
1390
+ AdvancedDynamicTexture.prototype._translateToPicking = function (scene, tempViewport, pi) {
1391
+ var camera = scene.cameraToUseForPointers || scene.activeCamera;
1392
+ var engine = scene.getEngine();
1393
+ var originalCameraToUseForPointers = scene.cameraToUseForPointers;
1394
+ if (!camera) {
1395
+ tempViewport.x = 0;
1396
+ tempViewport.y = 0;
1397
+ tempViewport.width = engine.getRenderWidth();
1398
+ tempViewport.height = engine.getRenderHeight();
1399
+ }
1400
+ else {
1401
+ if (camera.rigCameras.length) {
1402
+ // rig camera - we need to find the camera to use for this event
1403
+ var rigViewport_1 = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Viewport"](0, 0, 1, 1);
1404
+ camera.rigCameras.forEach(function (rigCamera) {
1405
+ // generate the viewport of this camera
1406
+ rigCamera.viewport.toGlobalToRef(engine.getRenderWidth(), engine.getRenderHeight(), rigViewport_1);
1407
+ var x = scene.pointerX / engine.getHardwareScalingLevel() - rigViewport_1.x;
1408
+ var y = scene.pointerY / engine.getHardwareScalingLevel() - (engine.getRenderHeight() - rigViewport_1.y - rigViewport_1.height);
1409
+ // check if the pointer is in the camera's viewport
1410
+ if (x < 0 || y < 0 || x > rigViewport_1.width || y > rigViewport_1.height) {
1411
+ // out of viewport - don't use this camera
1412
+ return;
1413
+ }
1414
+ // set the camera to use for pointers until this pointer loop is over
1415
+ scene.cameraToUseForPointers = rigCamera;
1416
+ // set the viewport
1417
+ tempViewport.x = rigViewport_1.x;
1418
+ tempViewport.y = rigViewport_1.y;
1419
+ tempViewport.width = rigViewport_1.width;
1420
+ tempViewport.height = rigViewport_1.height;
1421
+ });
1422
+ }
1423
+ else {
1424
+ camera.viewport.toGlobalToRef(engine.getRenderWidth(), engine.getRenderHeight(), tempViewport);
1425
+ }
1426
+ }
1427
+ var x = scene.pointerX / engine.getHardwareScalingLevel() - tempViewport.x;
1428
+ var y = scene.pointerY / engine.getHardwareScalingLevel() - (engine.getRenderHeight() - tempViewport.y - tempViewport.height);
1429
+ this._shouldBlockPointer = false;
1430
+ // Do picking modifies _shouldBlockPointer
1431
+ if (pi) {
1432
+ var pointerId = pi.event.pointerId || this._defaultMousePointerId;
1433
+ this._doPicking(x, y, pi, pi.type, pointerId, pi.event.button, pi.event.deltaX, pi.event.deltaY);
1434
+ // Avoid overwriting a true skipOnPointerObservable to false
1435
+ if (this._shouldBlockPointer) {
1436
+ pi.skipOnPointerObservable = this._shouldBlockPointer;
1437
+ }
1438
+ }
1439
+ else {
1440
+ this._doPicking(x, y, null, babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERMOVE, this._defaultMousePointerId, 0);
1441
+ }
1442
+ // if overridden by a rig camera - reset back to the original value
1443
+ scene.cameraToUseForPointers = originalCameraToUseForPointers;
1444
+ };
1380
1445
  /** Attach to all scene events required to support pointer events */
1381
1446
  AdvancedDynamicTexture.prototype.attach = function () {
1382
1447
  var _this = this;
@@ -1398,55 +1463,9 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1398
1463
  if (pi.type === babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERMOVE && pi.event.pointerId) {
1399
1464
  _this._defaultMousePointerId = pi.event.pointerId; // This is required to make sure we have the correct pointer ID for wheel
1400
1465
  }
1401
- var camera = scene.cameraToUseForPointers || scene.activeCamera;
1402
- var engine = scene.getEngine();
1403
- var originalCameraToUseForPointers = scene.cameraToUseForPointers;
1404
- if (!camera) {
1405
- tempViewport.x = 0;
1406
- tempViewport.y = 0;
1407
- tempViewport.width = engine.getRenderWidth();
1408
- tempViewport.height = engine.getRenderHeight();
1409
- }
1410
- else {
1411
- if (camera.rigCameras.length) {
1412
- // rig camera - we need to find the camera to use for this event
1413
- var rigViewport_1 = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Viewport"](0, 0, 1, 1);
1414
- camera.rigCameras.forEach(function (rigCamera) {
1415
- // generate the viewport of this camera
1416
- rigCamera.viewport.toGlobalToRef(engine.getRenderWidth(), engine.getRenderHeight(), rigViewport_1);
1417
- var x = scene.pointerX / engine.getHardwareScalingLevel() - rigViewport_1.x;
1418
- var y = scene.pointerY / engine.getHardwareScalingLevel() - (engine.getRenderHeight() - rigViewport_1.y - rigViewport_1.height);
1419
- // check if the pointer is in the camera's viewport
1420
- if (x < 0 || y < 0 || x > rigViewport_1.width || y > rigViewport_1.height) {
1421
- // out of viewport - don't use this camera
1422
- return;
1423
- }
1424
- // set the camera to use for pointers until this pointer loop is over
1425
- scene.cameraToUseForPointers = rigCamera;
1426
- // set the viewport
1427
- tempViewport.x = rigViewport_1.x;
1428
- tempViewport.y = rigViewport_1.y;
1429
- tempViewport.width = rigViewport_1.width;
1430
- tempViewport.height = rigViewport_1.height;
1431
- });
1432
- }
1433
- else {
1434
- camera.viewport.toGlobalToRef(engine.getRenderWidth(), engine.getRenderHeight(), tempViewport);
1435
- }
1436
- }
1437
- var x = scene.pointerX / engine.getHardwareScalingLevel() - tempViewport.x;
1438
- var y = scene.pointerY / engine.getHardwareScalingLevel() - (engine.getRenderHeight() - tempViewport.y - tempViewport.height);
1439
- _this._shouldBlockPointer = false;
1440
- // Do picking modifies _shouldBlockPointer
1441
- var pointerId = pi.event.pointerId || _this._defaultMousePointerId;
1442
- _this._doPicking(x, y, pi, pi.type, pointerId, pi.event.button, pi.event.deltaX, pi.event.deltaY);
1443
- // Avoid overwriting a true skipOnPointerObservable to false
1444
- if (_this._shouldBlockPointer) {
1445
- pi.skipOnPointerObservable = _this._shouldBlockPointer;
1446
- }
1447
- // if overridden by a rig camera - reset back to the original value
1448
- scene.cameraToUseForPointers = originalCameraToUseForPointers;
1466
+ _this._translateToPicking(scene, tempViewport, pi);
1449
1467
  });
1468
+ this._attachPickingToSceneRender(scene, function () { return _this._translateToPicking(scene, tempViewport, null); }, false);
1450
1469
  this._attachToOnPointerOut(scene);
1451
1470
  this._attachToOnBlur(scene);
1452
1471
  };
@@ -1532,6 +1551,23 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1532
1551
  }
1533
1552
  });
1534
1553
  mesh.enablePointerMoveEvents = supportPointerMove;
1554
+ this._attachPickingToSceneRender(scene, function () {
1555
+ var pointerId = _this._defaultMousePointerId;
1556
+ var pick = scene === null || scene === void 0 ? void 0 : scene.pick(scene.pointerX, scene.pointerY);
1557
+ if (pick && pick.hit && pick.pickedMesh === mesh) {
1558
+ var uv = pick.getTextureCoordinates();
1559
+ if (uv) {
1560
+ var size = _this.getSize();
1561
+ _this._doPicking(uv.x * size.width, (_this.applyYInversionOnUpdate ? 1.0 - uv.y : uv.y) * size.height, null, babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERMOVE, pointerId, 0);
1562
+ }
1563
+ }
1564
+ else {
1565
+ if (_this._lastControlOver[pointerId]) {
1566
+ _this._lastControlOver[pointerId]._onPointerOut(_this._lastControlOver[pointerId], null, true);
1567
+ }
1568
+ delete _this._lastControlOver[pointerId];
1569
+ }
1570
+ }, true);
1535
1571
  this._attachToOnPointerOut(scene);
1536
1572
  this._attachToOnBlur(scene);
1537
1573
  };
@@ -1560,6 +1596,17 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1560
1596
  }
1561
1597
  }
1562
1598
  };
1599
+ AdvancedDynamicTexture.prototype._attachPickingToSceneRender = function (scene, pickFunction, forcePicking) {
1600
+ var _this = this;
1601
+ this._sceneRenderObserver = scene.onBeforeRenderObservable.add(function () {
1602
+ if (!_this.checkPointerEveryFrame) {
1603
+ return;
1604
+ }
1605
+ if (_this._linkedControls.length > 0 || forcePicking) {
1606
+ pickFunction();
1607
+ }
1608
+ });
1609
+ };
1563
1610
  AdvancedDynamicTexture.prototype._attachToOnPointerOut = function (scene) {
1564
1611
  var _this = this;
1565
1612
  this._canvasPointerOutObserver = scene.getEngine().onCanvasPointerOutObservable.add(function (pointerEvent) {
@@ -1699,32 +1746,41 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1699
1746
  * @param supportPointerMove defines a boolean indicating if the texture must capture move events (true by default)
1700
1747
  * @param onlyAlphaTesting defines a boolean indicating that alpha blending will not be used (only alpha testing) (false by default)
1701
1748
  * @param invertY defines if the texture needs to be inverted on the y axis during loading (true by default)
1749
+ * @param materialSetupCallback defines a custom way of creating and seting up the material on the mesh
1702
1750
  * @returns a new AdvancedDynamicTexture
1703
1751
  */
1704
- AdvancedDynamicTexture.CreateForMesh = function (mesh, width, height, supportPointerMove, onlyAlphaTesting, invertY) {
1752
+ AdvancedDynamicTexture.CreateForMesh = function (mesh, width, height, supportPointerMove, onlyAlphaTesting, invertY, materialSetupCallback) {
1705
1753
  if (width === void 0) { width = 1024; }
1706
1754
  if (height === void 0) { height = 1024; }
1707
1755
  if (supportPointerMove === void 0) { supportPointerMove = true; }
1708
1756
  if (onlyAlphaTesting === void 0) { onlyAlphaTesting = false; }
1757
+ if (materialSetupCallback === void 0) { materialSetupCallback = this._CreateMaterial; }
1709
1758
  // use a unique ID in name so serialization will work even if you create two ADTs for a single mesh
1710
1759
  var uniqueId = Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["RandomGUID"])();
1711
1760
  var result = new AdvancedDynamicTexture("AdvancedDynamicTexture for ".concat(mesh.name, " [").concat(uniqueId, "]"), width, height, mesh.getScene(), true, babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Texture"].TRILINEAR_SAMPLINGMODE, invertY);
1712
- var material = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["StandardMaterial"]("AdvancedDynamicTextureMaterial for ".concat(mesh.name, " [").concat(uniqueId, "]"), mesh.getScene());
1761
+ materialSetupCallback(mesh, uniqueId, result, onlyAlphaTesting);
1762
+ result.attachToMesh(mesh, supportPointerMove);
1763
+ return result;
1764
+ };
1765
+ AdvancedDynamicTexture._CreateMaterial = function (mesh, uniqueId, texture, onlyAlphaTesting) {
1766
+ var internalClassType = Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["GetClass"])("BABYLON.StandardMaterial");
1767
+ if (!internalClassType) {
1768
+ throw "StandardMaterial needs to be imported before as it contains a side-effect required by your code.";
1769
+ }
1770
+ var material = new internalClassType("AdvancedDynamicTextureMaterial for ".concat(mesh.name, " [").concat(uniqueId, "]"), mesh.getScene());
1713
1771
  material.backFaceCulling = false;
1714
1772
  material.diffuseColor = babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Color3"].Black();
1715
1773
  material.specularColor = babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Color3"].Black();
1716
1774
  if (onlyAlphaTesting) {
1717
- material.diffuseTexture = result;
1718
- material.emissiveTexture = result;
1719
- result.hasAlpha = true;
1775
+ material.diffuseTexture = texture;
1776
+ material.emissiveTexture = texture;
1777
+ texture.hasAlpha = true;
1720
1778
  }
1721
1779
  else {
1722
- material.emissiveTexture = result;
1723
- material.opacityTexture = result;
1780
+ material.emissiveTexture = texture;
1781
+ material.opacityTexture = texture;
1724
1782
  }
1725
1783
  mesh.material = material;
1726
- result.attachToMesh(mesh, supportPointerMove);
1727
- return result;
1728
1784
  };
1729
1785
  /**
1730
1786
  * Creates a new AdvancedDynamicTexture in projected mode (ie. attached to a mesh) BUT do not create a new material for the mesh. You will be responsible for connecting the texture
@@ -1820,7 +1876,7 @@ __webpack_require__.r(__webpack_exports__);
1820
1876
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
1821
1877
  /* harmony import */ var _textBlock__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./textBlock */ "./2D/controls/textBlock.ts");
1822
1878
  /* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./image */ "./2D/controls/image.ts");
1823
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
1879
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
1824
1880
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__);
1825
1881
 
1826
1882
 
@@ -2075,7 +2131,7 @@ Object(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__["RegisterClass"])("
2075
2131
  __webpack_require__.r(__webpack_exports__);
2076
2132
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Checkbox", function() { return Checkbox; });
2077
2133
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
2078
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
2134
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
2079
2135
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
2080
2136
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
2081
2137
  /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stackPanel */ "./2D/controls/stackPanel.ts");
@@ -2273,7 +2329,7 @@ Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
2273
2329
  __webpack_require__.r(__webpack_exports__);
2274
2330
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColorPicker", function() { return ColorPicker; });
2275
2331
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
2276
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
2332
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
2277
2333
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
2278
2334
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
2279
2335
  /* harmony import */ var _inputText__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./inputText */ "./2D/controls/inputText.ts");
@@ -3696,7 +3752,7 @@ Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
3696
3752
  __webpack_require__.r(__webpack_exports__);
3697
3753
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Container", function() { return Container; });
3698
3754
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
3699
- /* harmony import */ var babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/logger */ "babylonjs/Misc/perfCounter");
3755
+ /* harmony import */ var babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/logger */ "babylonjs/Misc/observable");
3700
3756
  /* harmony import */ var babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__);
3701
3757
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
3702
3758
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../measure */ "./2D/measure.ts");
@@ -4240,7 +4296,7 @@ Object(babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])("BAB
4240
4296
  __webpack_require__.r(__webpack_exports__);
4241
4297
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Control", function() { return Control; });
4242
4298
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
4243
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
4299
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
4244
4300
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
4245
4301
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
4246
4302
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../measure */ "./2D/measure.ts");
@@ -5619,11 +5675,9 @@ var Control = /** @class */ (function () {
5619
5675
  var _a;
5620
5676
  var oldLeft = this._left.getValue(this._host);
5621
5677
  var oldTop = this._top.getValue(this._host);
5622
- if (this._currentMeasure.width === 0 && this._currentMeasure.height === 0) {
5623
- var parentMeasure = (_a = this.parent) === null || _a === void 0 ? void 0 : _a._currentMeasure;
5624
- if (parentMeasure) {
5625
- this._processMeasures(parentMeasure, this._host.getContext());
5626
- }
5678
+ var parentMeasure = (_a = this.parent) === null || _a === void 0 ? void 0 : _a._currentMeasure;
5679
+ if (parentMeasure) {
5680
+ this._processMeasures(parentMeasure, this._host.getContext());
5627
5681
  }
5628
5682
  var newLeft = projectedPosition.x + this._linkOffsetX.getValue(this._host) - this._currentMeasure.width / 2;
5629
5683
  var newTop = projectedPosition.y + this._linkOffsetY.getValue(this._host) - this._currentMeasure.height / 2;
@@ -5661,19 +5715,19 @@ var Control = /** @class */ (function () {
5661
5715
  // No child
5662
5716
  };
5663
5717
  /** @hidden */
5664
- Control.prototype._intersectsRect = function (rect) {
5665
- // Rotate the control's current measure into local space and check if it intersects the passed in rectangle
5666
- this._currentMeasure.transformToRef(this._transformMatrix, this._tmpMeasureA);
5667
- if (this._tmpMeasureA.left >= rect.left + rect.width) {
5718
+ Control.prototype._intersectsRect = function (rect, context) {
5719
+ // make sure we are transformed correctly before checking intersections. no-op if nothing is dirty.
5720
+ this._transform(context);
5721
+ if (this._evaluatedMeasure.left >= rect.left + rect.width) {
5668
5722
  return false;
5669
5723
  }
5670
- if (this._tmpMeasureA.top >= rect.top + rect.height) {
5724
+ if (this._evaluatedMeasure.top >= rect.top + rect.height) {
5671
5725
  return false;
5672
5726
  }
5673
- if (this._tmpMeasureA.left + this._tmpMeasureA.width <= rect.left) {
5727
+ if (this._evaluatedMeasure.left + this._evaluatedMeasure.width <= rect.left) {
5674
5728
  return false;
5675
5729
  }
5676
- if (this._tmpMeasureA.top + this._tmpMeasureA.height <= rect.top) {
5730
+ if (this._evaluatedMeasure.top + this._evaluatedMeasure.height <= rect.top) {
5677
5731
  return false;
5678
5732
  }
5679
5733
  return true;
@@ -5715,6 +5769,7 @@ var Control = /** @class */ (function () {
5715
5769
  return;
5716
5770
  }
5717
5771
  this._isDirty = true;
5772
+ this._markMatrixAsDirty();
5718
5773
  // Redraw only this rectangle
5719
5774
  if (this._host) {
5720
5775
  this._host.markAsDirty();
@@ -5759,6 +5814,7 @@ var Control = /** @class */ (function () {
5759
5814
  this._flagDescendantsAsMatrixDirty();
5760
5815
  _math2D__WEBPACK_IMPORTED_MODULE_4__["Matrix2D"].ComposeToRef(-offsetX, -offsetY, this._rotation, this._scaleX, this._scaleY, this.parent ? this.parent._transformMatrix : null, this._transformMatrix);
5761
5816
  this._transformMatrix.invertToRef(this._invertTransformMatrix);
5817
+ this._currentMeasure.transformToRef(this._transformMatrix, this._evaluatedMeasure);
5762
5818
  }
5763
5819
  };
5764
5820
  /** @hidden */
@@ -6569,7 +6625,7 @@ __webpack_require__.r(__webpack_exports__);
6569
6625
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DisplayGrid", function() { return DisplayGrid; });
6570
6626
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
6571
6627
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
6572
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
6628
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
6573
6629
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
6574
6630
 
6575
6631
 
@@ -6833,7 +6889,7 @@ __webpack_require__.r(__webpack_exports__);
6833
6889
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
6834
6890
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
6835
6891
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
6836
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
6892
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
6837
6893
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__);
6838
6894
 
6839
6895
 
@@ -6936,7 +6992,7 @@ __webpack_require__.r(__webpack_exports__);
6936
6992
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FocusableButton", function() { return FocusableButton; });
6937
6993
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
6938
6994
  /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./button */ "./2D/controls/button.ts");
6939
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
6995
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
6940
6996
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
6941
6997
 
6942
6998
 
@@ -7048,7 +7104,7 @@ __webpack_require__.r(__webpack_exports__);
7048
7104
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
7049
7105
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
7050
7106
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
7051
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
7107
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
7052
7108
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__);
7053
7109
 
7054
7110
 
@@ -7590,7 +7646,7 @@ Object(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__["RegisterClass"])("BABY
7590
7646
  __webpack_require__.r(__webpack_exports__);
7591
7647
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Image", function() { return Image; });
7592
7648
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
7593
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
7649
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
7594
7650
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
7595
7651
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
7596
7652
 
@@ -8629,7 +8685,7 @@ __webpack_require__.r(__webpack_exports__);
8629
8685
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InputPassword", function() { return InputPassword; });
8630
8686
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
8631
8687
  /* harmony import */ var _inputText__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./inputText */ "./2D/controls/inputText.ts");
8632
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
8688
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
8633
8689
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
8634
8690
  /* harmony import */ var _textWrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./textWrapper */ "./2D/controls/textWrapper.ts");
8635
8691
 
@@ -8672,7 +8728,7 @@ Object(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__["RegisterClass"])("
8672
8728
  __webpack_require__.r(__webpack_exports__);
8673
8729
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InputText", function() { return InputText; });
8674
8730
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
8675
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
8731
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
8676
8732
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
8677
8733
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
8678
8734
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
@@ -9065,7 +9121,7 @@ var InputText = /** @class */ (function (_super) {
9065
9121
  this._cursorOffset = 0;
9066
9122
  this._markAsDirty();
9067
9123
  this.onFocusObservable.notifyObservers(this);
9068
- if (navigator.userAgent.indexOf("Mobile") !== -1 && !this.disableMobilePrompt) {
9124
+ if (this._focusedBy === "touch" && !this.disableMobilePrompt) {
9069
9125
  var value = prompt(this.promptMessage);
9070
9126
  if (value !== null) {
9071
9127
  this.text = value;
@@ -9678,6 +9734,7 @@ var InputText = /** @class */ (function (_super) {
9678
9734
  this._cursorIndex = -1;
9679
9735
  this._isPointerDown = true;
9680
9736
  this._host._capturingControl[pointerId] = this;
9737
+ this._focusedBy = pi.event.pointerType;
9681
9738
  if (this._host.focusedControl === this) {
9682
9739
  // Move cursor
9683
9740
  clearTimeout(this._blinkTimeout);
@@ -9787,7 +9844,7 @@ Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
9787
9844
  __webpack_require__.r(__webpack_exports__);
9788
9845
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Line", function() { return Line; });
9789
9846
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
9790
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
9847
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
9791
9848
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
9792
9849
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
9793
9850
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
@@ -10077,7 +10134,7 @@ Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"]
10077
10134
  __webpack_require__.r(__webpack_exports__);
10078
10135
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultiLine", function() { return MultiLine; });
10079
10136
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
10080
- /* harmony import */ var babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/abstractMesh */ "babylonjs/Misc/perfCounter");
10137
+ /* harmony import */ var babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/abstractMesh */ "babylonjs/Misc/observable");
10081
10138
  /* harmony import */ var babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__);
10082
10139
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
10083
10140
  /* harmony import */ var _multiLinePoint__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../multiLinePoint */ "./2D/multiLinePoint.ts");
@@ -10358,7 +10415,7 @@ Object(babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__["RegisterClass
10358
10415
  __webpack_require__.r(__webpack_exports__);
10359
10416
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RadioButton", function() { return RadioButton; });
10360
10417
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
10361
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
10418
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
10362
10419
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
10363
10420
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
10364
10421
  /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stackPanel */ "./2D/controls/stackPanel.ts");
@@ -10584,7 +10641,7 @@ __webpack_require__.r(__webpack_exports__);
10584
10641
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Rectangle", function() { return Rectangle; });
10585
10642
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
10586
10643
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
10587
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
10644
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
10588
10645
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
10589
10646
 
10590
10647
 
@@ -10757,7 +10814,7 @@ __webpack_require__.r(__webpack_exports__);
10757
10814
  /* harmony import */ var _scrollViewerWindow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./scrollViewerWindow */ "./2D/controls/scrollViewers/scrollViewerWindow.ts");
10758
10815
  /* harmony import */ var _sliders_scrollBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../sliders/scrollBar */ "./2D/controls/sliders/scrollBar.ts");
10759
10816
  /* harmony import */ var _sliders_imageScrollBar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../sliders/imageScrollBar */ "./2D/controls/sliders/imageScrollBar.ts");
10760
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
10817
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
10761
10818
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7__);
10762
10819
 
10763
10820
 
@@ -12388,7 +12445,7 @@ var SelectionPanel = /** @class */ (function (_super) {
12388
12445
  __webpack_require__.r(__webpack_exports__);
12389
12446
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseSlider", function() { return BaseSlider; });
12390
12447
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
12391
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
12448
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
12392
12449
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
12393
12450
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../control */ "./2D/controls/control.ts");
12394
12451
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../valueAndUnit */ "./2D/valueAndUnit.ts");
@@ -12671,7 +12728,7 @@ var BaseSlider = /** @class */ (function (_super) {
12671
12728
  else {
12672
12729
  value = this._minimum + ((x - this._currentMeasure.left) / this._currentMeasure.width) * (this._maximum - this._minimum);
12673
12730
  }
12674
- this.value = this._step ? ((value / this._step) | 0) * this._step : value;
12731
+ this.value = this._step ? Math.round(value / this._step) * this._step : value;
12675
12732
  };
12676
12733
  BaseSlider.prototype._onPointerDown = function (target, coordinates, pointerId, buttonIndex, pi) {
12677
12734
  if (!_super.prototype._onPointerDown.call(this, target, coordinates, pointerId, buttonIndex, pi)) {
@@ -12753,7 +12810,7 @@ __webpack_require__.r(__webpack_exports__);
12753
12810
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
12754
12811
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../measure */ "./2D/measure.ts");
12755
12812
  /* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../image */ "./2D/controls/image.ts");
12756
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
12813
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
12757
12814
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4__);
12758
12815
 
12759
12816
 
@@ -12960,7 +13017,7 @@ __webpack_require__.r(__webpack_exports__);
12960
13017
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
12961
13018
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
12962
13019
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../measure */ "./2D/measure.ts");
12963
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
13020
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
12964
13021
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__);
12965
13022
 
12966
13023
 
@@ -13235,7 +13292,7 @@ __webpack_require__.r(__webpack_exports__);
13235
13292
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
13236
13293
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
13237
13294
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../measure */ "./2D/measure.ts");
13238
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
13295
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
13239
13296
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__);
13240
13297
 
13241
13298
 
@@ -13389,7 +13446,7 @@ __webpack_require__.r(__webpack_exports__);
13389
13446
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Slider", function() { return Slider; });
13390
13447
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
13391
13448
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
13392
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
13449
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
13393
13450
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
13394
13451
 
13395
13452
 
@@ -13677,7 +13734,7 @@ Object(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__["RegisterClass"])("
13677
13734
  __webpack_require__.r(__webpack_exports__);
13678
13735
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StackPanel", function() { return StackPanel; });
13679
13736
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
13680
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
13737
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
13681
13738
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
13682
13739
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
13683
13740
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
@@ -13997,7 +14054,7 @@ __webpack_require__.r(__webpack_exports__);
13997
14054
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextWrapping", function() { return TextWrapping; });
13998
14055
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextBlock", function() { return TextBlock; });
13999
14056
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
14000
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
14057
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
14001
14058
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
14002
14059
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
14003
14060
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
@@ -14418,30 +14475,40 @@ var TextBlock = /** @class */ (function (_super) {
14418
14475
  var lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
14419
14476
  return { text: line, width: lineWidth };
14420
14477
  };
14478
+ //Calculate how many characters approximately we need to remove
14479
+ TextBlock.prototype._getCharsToRemove = function (lineWidth, width, lineLength) {
14480
+ var diff = lineWidth > width ? lineWidth - width : 0;
14481
+ // This isn't exact unless the font is monospaced
14482
+ var charWidth = lineWidth / lineLength;
14483
+ var removeChars = Math.max(Math.floor(diff / charWidth), 1);
14484
+ return removeChars;
14485
+ };
14421
14486
  TextBlock.prototype._parseLineEllipsis = function (line, width, context) {
14422
14487
  if (line === void 0) { line = ""; }
14423
14488
  var textMetrics = context.measureText(line);
14424
14489
  var lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
14425
- if (lineWidth > width) {
14426
- line += "…";
14427
- }
14490
+ var removeChars = this._getCharsToRemove(lineWidth, width, line.length);
14428
14491
  // unicode support. split('') does not work with unicode!
14429
14492
  // make sure Array.from is available
14430
14493
  var characters = Array.from && Array.from(line);
14431
14494
  if (!characters) {
14432
14495
  // no array.from, use the old method
14433
14496
  while (line.length > 2 && lineWidth > width) {
14434
- line = line.slice(0, -2) + "…";
14435
- textMetrics = context.measureText(line);
14497
+ line = line.slice(0, -removeChars);
14498
+ textMetrics = context.measureText(line + "…");
14436
14499
  lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
14500
+ removeChars = this._getCharsToRemove(lineWidth, width, line.length);
14437
14501
  }
14502
+ // Add on the end
14503
+ line += "…";
14438
14504
  }
14439
14505
  else {
14440
14506
  while (characters.length && lineWidth > width) {
14441
- characters.pop();
14442
- line = "".concat(characters.join(""), "...");
14507
+ characters.splice(characters.length - removeChars, removeChars);
14508
+ line = "".concat(characters.join(""), "\u2026");
14443
14509
  textMetrics = context.measureText(line);
14444
14510
  lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
14511
+ removeChars = this._getCharsToRemove(lineWidth, width, line.length);
14445
14512
  }
14446
14513
  }
14447
14514
  return { text: line, width: lineWidth };
@@ -14720,7 +14787,7 @@ var TextWrapper = /** @class */ (function () {
14720
14787
  __webpack_require__.r(__webpack_exports__);
14721
14788
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ToggleButton", function() { return ToggleButton; });
14722
14789
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
14723
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
14790
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
14724
14791
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
14725
14792
  /* harmony import */ var _rectangle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rectangle */ "./2D/controls/rectangle.ts");
14726
14793
 
@@ -14973,7 +15040,7 @@ __webpack_require__.r(__webpack_exports__);
14973
15040
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyPropertySet", function() { return KeyPropertySet; });
14974
15041
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualKeyboard", function() { return VirtualKeyboard; });
14975
15042
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
14976
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
15043
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
14977
15044
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
14978
15045
  /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stackPanel */ "./2D/controls/stackPanel.ts");
14979
15046
  /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./button */ "./2D/controls/button.ts");
@@ -15368,7 +15435,7 @@ __webpack_require__.r(__webpack_exports__);
15368
15435
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Vector2WithInfo", function() { return Vector2WithInfo; });
15369
15436
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Matrix2D", function() { return Matrix2D; });
15370
15437
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
15371
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
15438
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
15372
15439
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
15373
15440
 
15374
15441
 
@@ -15605,7 +15672,7 @@ var Matrix2D = /** @class */ (function () {
15605
15672
  "use strict";
15606
15673
  __webpack_require__.r(__webpack_exports__);
15607
15674
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Measure", function() { return Measure; });
15608
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
15675
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
15609
15676
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__);
15610
15677
 
15611
15678
  var tmpRect = [
@@ -15770,7 +15837,7 @@ var Measure = /** @class */ (function () {
15770
15837
  "use strict";
15771
15838
  __webpack_require__.r(__webpack_exports__);
15772
15839
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultiLinePoint", function() { return MultiLinePoint; });
15773
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
15840
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
15774
15841
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__);
15775
15842
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./valueAndUnit */ "./2D/valueAndUnit.ts");
15776
15843
 
@@ -15914,7 +15981,7 @@ var MultiLinePoint = /** @class */ (function () {
15914
15981
  "use strict";
15915
15982
  __webpack_require__.r(__webpack_exports__);
15916
15983
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Style", function() { return Style; });
15917
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
15984
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
15918
15985
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
15919
15986
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./valueAndUnit */ "./2D/valueAndUnit.ts");
15920
15987
 
@@ -16028,7 +16095,7 @@ var Style = /** @class */ (function () {
16028
16095
  "use strict";
16029
16096
  __webpack_require__.r(__webpack_exports__);
16030
16097
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ValueAndUnit", function() { return ValueAndUnit; });
16031
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
16098
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
16032
16099
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
16033
16100
 
16034
16101
  /**
@@ -16267,10 +16334,11 @@ var ValueAndUnit = /** @class */ (function () {
16267
16334
  __webpack_require__.r(__webpack_exports__);
16268
16335
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "XmlLoader", function() { return XmlLoader; });
16269
16336
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16270
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
16337
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
16271
16338
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1__);
16272
16339
 
16273
16340
 
16341
+ var XmlLoaderError = "XmlLoader Exception : XML file is malformed or corrupted.";
16274
16342
  /**
16275
16343
  * Class used to load GUI via XML.
16276
16344
  */
@@ -16573,7 +16641,13 @@ var XmlLoader = /** @class */ (function () {
16573
16641
  xhttp.onload = function () {
16574
16642
  if (xhttp.readyState === 4 && xhttp.status === 200) {
16575
16643
  if (!xhttp.responseXML) {
16576
- throw "XmlLoader Exception : XML file is malformed or corrupted.";
16644
+ if (onError) {
16645
+ onError(XmlLoaderError);
16646
+ return;
16647
+ }
16648
+ else {
16649
+ throw XmlLoaderError;
16650
+ }
16577
16651
  }
16578
16652
  var xmlDoc = xhttp.responseXML.documentElement;
16579
16653
  _this._parseXml(xmlDoc.firstChild, rootNode);
@@ -16624,7 +16698,7 @@ var XmlLoader = /** @class */ (function () {
16624
16698
  "use strict";
16625
16699
  __webpack_require__.r(__webpack_exports__);
16626
16700
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultBehavior", function() { return DefaultBehavior; });
16627
- /* harmony import */ var babylonjs_Behaviors_Meshes_followBehavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/followBehavior */ "babylonjs/Misc/perfCounter");
16701
+ /* harmony import */ var babylonjs_Behaviors_Meshes_followBehavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/followBehavior */ "babylonjs/Misc/observable");
16628
16702
  /* harmony import */ var babylonjs_Behaviors_Meshes_followBehavior__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Behaviors_Meshes_followBehavior__WEBPACK_IMPORTED_MODULE_0__);
16629
16703
 
16630
16704
 
@@ -16762,7 +16836,7 @@ var DefaultBehavior = /** @class */ (function () {
16762
16836
  __webpack_require__.r(__webpack_exports__);
16763
16837
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AbstractButton3D", function() { return AbstractButton3D; });
16764
16838
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16765
- /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/perfCounter");
16839
+ /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/observable");
16766
16840
  /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__);
16767
16841
  /* harmony import */ var _contentDisplay3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./contentDisplay3D */ "./3D/controls/contentDisplay3D.ts");
16768
16842
 
@@ -16805,7 +16879,7 @@ var AbstractButton3D = /** @class */ (function (_super) {
16805
16879
  __webpack_require__.r(__webpack_exports__);
16806
16880
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Button3D", function() { return Button3D; });
16807
16881
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16808
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
16882
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
16809
16883
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
16810
16884
  /* harmony import */ var _abstractButton3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./abstractButton3D */ "./3D/controls/abstractButton3D.ts");
16811
16885
 
@@ -16916,7 +16990,7 @@ var Button3D = /** @class */ (function (_super) {
16916
16990
  __webpack_require__.r(__webpack_exports__);
16917
16991
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Container3D", function() { return Container3D; });
16918
16992
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16919
- /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/perfCounter");
16993
+ /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/observable");
16920
16994
  /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__);
16921
16995
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
16922
16996
 
@@ -17076,7 +17150,7 @@ __webpack_require__.r(__webpack_exports__);
17076
17150
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17077
17151
  /* harmony import */ var _2D_advancedDynamicTexture__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../2D/advancedDynamicTexture */ "./2D/advancedDynamicTexture.ts");
17078
17152
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
17079
- /* harmony import */ var babylonjs_Materials_Textures_texture__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Materials/Textures/texture */ "babylonjs/Misc/perfCounter");
17153
+ /* harmony import */ var babylonjs_Materials_Textures_texture__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Materials/Textures/texture */ "babylonjs/Misc/observable");
17080
17154
  /* harmony import */ var babylonjs_Materials_Textures_texture__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Materials_Textures_texture__WEBPACK_IMPORTED_MODULE_3__);
17081
17155
 
17082
17156
 
@@ -17102,7 +17176,7 @@ var ContentDisplay3D = /** @class */ (function (_super) {
17102
17176
  },
17103
17177
  set: function (value) {
17104
17178
  this._content = value;
17105
- if (!this._host || !this._host.utilityLayer) {
17179
+ if (!value || !this._host || !this._host.utilityLayer) {
17106
17180
  return;
17107
17181
  }
17108
17182
  if (!this._facadeTexture) {
@@ -17170,7 +17244,7 @@ var ContentDisplay3D = /** @class */ (function (_super) {
17170
17244
  "use strict";
17171
17245
  __webpack_require__.r(__webpack_exports__);
17172
17246
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Control3D", function() { return Control3D; });
17173
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
17247
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
17174
17248
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
17175
17249
  /* harmony import */ var _vector3WithInfo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../vector3WithInfo */ "./3D/vector3WithInfo.ts");
17176
17250
 
@@ -17596,7 +17670,7 @@ var Control3D = /** @class */ (function () {
17596
17670
  __webpack_require__.r(__webpack_exports__);
17597
17671
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CylinderPanel", function() { return CylinderPanel; });
17598
17672
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17599
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
17673
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
17600
17674
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
17601
17675
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
17602
17676
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
@@ -17682,7 +17756,7 @@ __webpack_require__.r(__webpack_exports__);
17682
17756
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HandMenu", function() { return HandMenu; });
17683
17757
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17684
17758
  /* harmony import */ var _touchHolographicMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./touchHolographicMenu */ "./3D/controls/touchHolographicMenu.ts");
17685
- /* harmony import */ var babylonjs_Behaviors_Meshes_handConstraintBehavior__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/handConstraintBehavior */ "babylonjs/Misc/perfCounter");
17759
+ /* harmony import */ var babylonjs_Behaviors_Meshes_handConstraintBehavior__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/handConstraintBehavior */ "babylonjs/Misc/observable");
17686
17760
  /* harmony import */ var babylonjs_Behaviors_Meshes_handConstraintBehavior__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Behaviors_Meshes_handConstraintBehavior__WEBPACK_IMPORTED_MODULE_2__);
17687
17761
 
17688
17762
 
@@ -17746,7 +17820,7 @@ var HandMenu = /** @class */ (function (_super) {
17746
17820
  __webpack_require__.r(__webpack_exports__);
17747
17821
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HolographicBackplate", function() { return HolographicBackplate; });
17748
17822
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17749
- /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/perfCounter");
17823
+ /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/observable");
17750
17824
  /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__);
17751
17825
  /* harmony import */ var _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/fluentBackplate/fluentBackplateMaterial */ "./3D/materials/fluentBackplate/fluentBackplateMaterial.ts");
17752
17826
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
@@ -17886,7 +17960,7 @@ __webpack_require__.r(__webpack_exports__);
17886
17960
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HolographicButton", function() { return HolographicButton; });
17887
17961
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17888
17962
  /* harmony import */ var _button3D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./button3D */ "./3D/controls/button3D.ts");
17889
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
17963
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
17890
17964
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__);
17891
17965
  /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
17892
17966
  /* harmony import */ var _2D_controls_stackPanel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../2D/controls/stackPanel */ "./2D/controls/stackPanel.ts");
@@ -18246,15 +18320,21 @@ var HolographicButton = /** @class */ (function (_super) {
18246
18320
  __webpack_require__.r(__webpack_exports__);
18247
18321
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HolographicSlate", function() { return HolographicSlate; });
18248
18322
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
18249
- /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/perfCounter");
18250
- /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__);
18251
- /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
18252
- /* harmony import */ var _touchHolographicButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./touchHolographicButton */ "./3D/controls/touchHolographicButton.ts");
18253
- /* harmony import */ var _contentDisplay3D__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./contentDisplay3D */ "./3D/controls/contentDisplay3D.ts");
18254
- /* harmony import */ var _2D_controls_image__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../2D/controls/image */ "./2D/controls/image.ts");
18255
- /* harmony import */ var _gizmos_slateGizmo__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../gizmos/slateGizmo */ "./3D/gizmos/slateGizmo.ts");
18256
- /* harmony import */ var _behaviors_defaultBehavior__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../behaviors/defaultBehavior */ "./3D/behaviors/defaultBehavior.ts");
18257
- /* harmony import */ var _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../materials/fluentBackplate/fluentBackplateMaterial */ "./3D/materials/fluentBackplate/fluentBackplateMaterial.ts");
18323
+ /* harmony import */ var _contentDisplay3D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./contentDisplay3D */ "./3D/controls/contentDisplay3D.ts");
18324
+ /* harmony import */ var _touchHolographicButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./touchHolographicButton */ "./3D/controls/touchHolographicButton.ts");
18325
+ /* harmony import */ var _2D_advancedDynamicTexture__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../2D/advancedDynamicTexture */ "./2D/advancedDynamicTexture.ts");
18326
+ /* harmony import */ var _2D_controls_control__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../2D/controls/control */ "./2D/controls/control.ts");
18327
+ /* harmony import */ var _2D_controls_textBlock__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../2D/controls/textBlock */ "./2D/controls/textBlock.ts");
18328
+ /* harmony import */ var _behaviors_defaultBehavior__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../behaviors/defaultBehavior */ "./3D/behaviors/defaultBehavior.ts");
18329
+ /* harmony import */ var _gizmos_slateGizmo__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../gizmos/slateGizmo */ "./3D/gizmos/slateGizmo.ts");
18330
+ /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
18331
+ /* harmony import */ var _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../materials/fluentBackplate/fluentBackplateMaterial */ "./3D/materials/fluentBackplate/fluentBackplateMaterial.ts");
18332
+ /* harmony import */ var babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/pointerDragBehavior */ "babylonjs/Misc/observable");
18333
+ /* harmony import */ var babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__);
18334
+
18335
+
18336
+
18337
+
18258
18338
 
18259
18339
 
18260
18340
 
@@ -18284,35 +18364,31 @@ var HolographicSlate = /** @class */ (function (_super) {
18284
18364
  function HolographicSlate(name) {
18285
18365
  var _this = _super.call(this, name) || this;
18286
18366
  /**
18287
- * Dimensions of the slate
18288
- */
18289
- _this.dimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](21.875, 12.5, 0.001);
18290
- /**
18291
- * Minimum dimensions of the slate
18292
- */
18293
- _this.minDimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](15.625, 6.25, 0.001);
18294
- /**
18295
- * Default dimensions of the slate
18367
+ * Margin between title bar and contentplate
18296
18368
  */
18297
- _this.defaultDimensions = _this.dimensions.clone();
18369
+ _this.titleBarMargin = 0.005;
18298
18370
  /**
18299
- * Dimensions of the backplate
18371
+ * Origin in local coordinates (top left corner)
18300
18372
  */
18301
- _this.backplateDimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](21.875, 0.625, 0.001);
18373
+ _this.origin = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"](0, 0, 0);
18374
+ _this._dimensions = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector2"](21.875, 12.5);
18375
+ _this._titleBarHeight = 0.625;
18376
+ _this._titleText = "";
18377
+ _this._contentScaleRatio = 1;
18302
18378
  /**
18303
- * Margin between backplate and contentplate
18379
+ * Minimum dimensions of the slate
18304
18380
  */
18305
- _this.backPlateMargin = 0.005;
18381
+ _this.minDimensions = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector2"](15.625, 6.25);
18306
18382
  /**
18307
- * Origin in local coordinates (top left corner)
18383
+ * Default dimensions of the slate
18308
18384
  */
18309
- _this.origin = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0, 0, 0);
18310
- _this._contentScaleRatio = 1;
18311
- _this._followButton = new _touchHolographicButton__WEBPACK_IMPORTED_MODULE_3__["TouchHolographicButton"]("followButton" + _this.name);
18312
- _this._closeButton = new _touchHolographicButton__WEBPACK_IMPORTED_MODULE_3__["TouchHolographicButton"]("closeButton" + _this.name);
18313
- _this._contentViewport = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Viewport"](0, 0, 1, 1);
18314
- _this._contentDragBehavior = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["PointerDragBehavior"]({
18315
- dragPlaneNormal: new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0, 0, -1),
18385
+ _this.defaultDimensions = _this._dimensions.clone();
18386
+ _this._followButton = new _touchHolographicButton__WEBPACK_IMPORTED_MODULE_2__["TouchHolographicButton"]("followButton" + _this.name);
18387
+ _this._followButton.isToggleButton = true;
18388
+ _this._closeButton = new _touchHolographicButton__WEBPACK_IMPORTED_MODULE_2__["TouchHolographicButton"]("closeButton" + _this.name);
18389
+ _this._contentViewport = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Viewport"](0, 0, 1, 1);
18390
+ _this._contentDragBehavior = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["PointerDragBehavior"]({
18391
+ dragPlaneNormal: new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"](0, 0, -1),
18316
18392
  });
18317
18393
  return _this;
18318
18394
  }
@@ -18326,35 +18402,76 @@ var HolographicSlate = /** @class */ (function (_super) {
18326
18402
  enumerable: false,
18327
18403
  configurable: true
18328
18404
  });
18405
+ Object.defineProperty(HolographicSlate.prototype, "dimensions", {
18406
+ /**
18407
+ * 2D dimensions of the slate
18408
+ */
18409
+ get: function () {
18410
+ return this._dimensions;
18411
+ },
18412
+ set: function (value) {
18413
+ //clamp, respecting ratios
18414
+ var scale = 1.0;
18415
+ if (value.x < this.minDimensions.x || value.y < this.minDimensions.y) {
18416
+ var newRatio = value.x / value.y;
18417
+ var minRatio = this.minDimensions.x / this.minDimensions.y;
18418
+ if (minRatio > newRatio) {
18419
+ // We just need to make sure the x-val is greater than the min
18420
+ scale = this.minDimensions.x / value.x;
18421
+ }
18422
+ else {
18423
+ // We just need to make sure the y-val is greater than the min
18424
+ scale = this.minDimensions.y / value.y;
18425
+ }
18426
+ }
18427
+ this._dimensions.copyFrom(value).scaleInPlace(scale);
18428
+ this._updatePivot();
18429
+ this._positionElements();
18430
+ },
18431
+ enumerable: false,
18432
+ configurable: true
18433
+ });
18434
+ Object.defineProperty(HolographicSlate.prototype, "titleBarHeight", {
18435
+ /**
18436
+ * Height of the title bar component
18437
+ */
18438
+ get: function () {
18439
+ return this._titleBarHeight;
18440
+ },
18441
+ set: function (value) {
18442
+ this._titleBarHeight = value;
18443
+ },
18444
+ enumerable: false,
18445
+ configurable: true
18446
+ });
18329
18447
  Object.defineProperty(HolographicSlate.prototype, "renderingGroupId", {
18330
18448
  get: function () {
18331
- return this._backPlate.renderingGroupId;
18449
+ return this._titleBar.renderingGroupId;
18332
18450
  },
18333
18451
  /**
18334
- * Rendering ground id of all the mesh in the button
18452
+ * Rendering ground id of all the meshes
18335
18453
  */
18336
18454
  set: function (id) {
18337
- this._backPlate.renderingGroupId = id;
18455
+ this._titleBar.renderingGroupId = id;
18456
+ this._titleBarTitle.renderingGroupId = id;
18338
18457
  this._contentPlate.renderingGroupId = id;
18458
+ this._backPlate.renderingGroupId = id;
18339
18459
  },
18340
18460
  enumerable: false,
18341
18461
  configurable: true
18342
18462
  });
18343
- Object.defineProperty(HolographicSlate.prototype, "imageUrl", {
18344
- /**
18345
- * Gets or sets the image url for the button
18346
- */
18463
+ Object.defineProperty(HolographicSlate.prototype, "title", {
18347
18464
  get: function () {
18348
- return this._imageUrl;
18465
+ return this._titleText;
18349
18466
  },
18350
- set: function (value) {
18351
- if (this._imageUrl === value) {
18352
- return;
18467
+ /**
18468
+ * The title text displayed at the top of the slate
18469
+ */
18470
+ set: function (title) {
18471
+ this._titleText = title;
18472
+ if (this._titleTextComponent) {
18473
+ this._titleTextComponent.text = title;
18353
18474
  }
18354
- this._imageUrl = value;
18355
- this._rebuildContent();
18356
- this._resetContentPositionAndZoom();
18357
- this._applyContentViewport();
18358
18475
  },
18359
18476
  enumerable: false,
18360
18477
  configurable: true
@@ -18366,22 +18483,9 @@ var HolographicSlate = /** @class */ (function (_super) {
18366
18483
  */
18367
18484
  HolographicSlate.prototype._applyFacade = function (facadeTexture) {
18368
18485
  this._contentMaterial.albedoTexture = facadeTexture;
18369
- // We should have a content plate by this point, but check for safety
18370
- if (this._contentPlate) {
18371
- facadeTexture.attachToMesh(this._contentPlate, true);
18372
- }
18373
- };
18374
- HolographicSlate.prototype._rebuildContent = function () {
18375
- this._disposeFacadeTexture();
18376
- if (babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["DomManagement"].IsDocumentAvailable() && !!document.createElement) {
18377
- if (this._imageUrl) {
18378
- var image = new _2D_controls_image__WEBPACK_IMPORTED_MODULE_5__["Image"]();
18379
- image.source = this._imageUrl;
18380
- if (this._contentPlate) {
18381
- this.content = image;
18382
- }
18383
- }
18384
- }
18486
+ this._resetContentPositionAndZoom();
18487
+ this._applyContentViewport();
18488
+ facadeTexture.attachToMesh(this._contentPlate, true);
18385
18489
  };
18386
18490
  HolographicSlate.prototype._addControl = function (control) {
18387
18491
  control._host = this._host;
@@ -18396,32 +18500,40 @@ var HolographicSlate = /** @class */ (function (_super) {
18396
18500
  * @hidden
18397
18501
  */
18398
18502
  HolographicSlate.prototype._positionElements = function () {
18399
- var followButtonMesh = this._followButton.mesh;
18400
- var closeButtonMesh = this._closeButton.mesh;
18401
- var backPlate = this._backPlate;
18503
+ var followButton = this._followButton;
18504
+ var closeButton = this._closeButton;
18505
+ var titleBar = this._titleBar;
18506
+ var titleBarTitle = this._titleBarTitle;
18402
18507
  var contentPlate = this._contentPlate;
18403
- if (followButtonMesh && closeButtonMesh && backPlate) {
18404
- // World size of a button with 1 scaling
18405
- var buttonBaseSize = 1;
18406
- // Buttons take full backPlate on Y axis
18407
- var backPlateYScale = this.backplateDimensions.y / buttonBaseSize;
18408
- closeButtonMesh.scaling.setAll(backPlateYScale);
18409
- followButtonMesh.scaling.setAll(backPlateYScale);
18410
- closeButtonMesh.position
18411
- .copyFromFloats(this.backplateDimensions.x - backPlateYScale / 2, -this.backplateDimensions.y / 2, (-this.backplateDimensions.z / 2) * (this._host.scene.useRightHandedSystem ? -1 : 1))
18508
+ var backPlate = this._backPlate;
18509
+ if (followButton && closeButton && titleBar) {
18510
+ closeButton.scaling.setAll(this.titleBarHeight);
18511
+ followButton.scaling.setAll(this.titleBarHeight);
18512
+ closeButton.position
18513
+ .copyFromFloats(this.dimensions.x - this.titleBarHeight / 2, -this.titleBarHeight / 2, 0)
18412
18514
  .addInPlace(this.origin);
18413
- followButtonMesh.position
18414
- .copyFromFloats(this.backplateDimensions.x - (3 * backPlateYScale) / 2, -this.backplateDimensions.y / 2, (-this.backplateDimensions.z / 2) * (this._host.scene.useRightHandedSystem ? -1 : 1))
18515
+ followButton.position
18516
+ .copyFromFloats(this.dimensions.x - (3 * this.titleBarHeight) / 2, -this.titleBarHeight / 2, 0)
18415
18517
  .addInPlace(this.origin);
18416
- var contentPlateHeight = this.dimensions.y - this.backplateDimensions.y - this.backPlateMargin;
18417
- backPlate.scaling.copyFrom(this.backplateDimensions);
18418
- contentPlate.scaling.copyFromFloats(this.dimensions.x, contentPlateHeight, this.dimensions.z);
18419
- backPlate.position.copyFromFloats(this.backplateDimensions.x / 2, -(this.backplateDimensions.y / 2), 0).addInPlace(this.origin);
18420
- contentPlate.position.copyFromFloats(this.dimensions.x / 2, -(this.backplateDimensions.y + this.backPlateMargin + contentPlateHeight / 2), 0).addInPlace(this.origin);
18518
+ var contentPlateHeight = this.dimensions.y - this.titleBarHeight - this.titleBarMargin;
18519
+ var rightHandScene = contentPlate.getScene().useRightHandedSystem;
18520
+ titleBar.scaling.set(this.dimensions.x, this.titleBarHeight, babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"]);
18521
+ titleBarTitle.scaling.set(this.dimensions.x - (2 * this.titleBarHeight), this.titleBarHeight, babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"]);
18522
+ contentPlate.scaling.copyFromFloats(this.dimensions.x, contentPlateHeight, babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"]);
18523
+ backPlate.scaling.copyFromFloats(this.dimensions.x, contentPlateHeight, babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"]);
18524
+ titleBar.position.copyFromFloats(this.dimensions.x / 2, -(this.titleBarHeight / 2), 0).addInPlace(this.origin);
18525
+ titleBarTitle.position.copyFromFloats((this.dimensions.x / 2) - this.titleBarHeight, -(this.titleBarHeight / 2), rightHandScene ? babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"] : -babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"]).addInPlace(this.origin);
18526
+ contentPlate.position.copyFromFloats(this.dimensions.x / 2, -(this.titleBarHeight + this.titleBarMargin + contentPlateHeight / 2), 0).addInPlace(this.origin);
18527
+ backPlate.position.copyFromFloats(this.dimensions.x / 2, -(this.titleBarHeight + this.titleBarMargin + contentPlateHeight / 2), rightHandScene ? -babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"] : babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"]).addInPlace(this.origin);
18528
+ // Update the title's AdvancedDynamicTexture scale to avoid visual stretching
18529
+ this._titleTextComponent.host.scaleTo(HolographicSlate.DEFAULT_TEXT_RESOLUTION_Y * titleBarTitle.scaling.x / titleBarTitle.scaling.y, HolographicSlate.DEFAULT_TEXT_RESOLUTION_Y);
18421
18530
  var aspectRatio = this.dimensions.x / contentPlateHeight;
18422
18531
  this._contentViewport.width = this._contentScaleRatio;
18423
18532
  this._contentViewport.height = this._contentScaleRatio / aspectRatio;
18424
18533
  this._applyContentViewport();
18534
+ if (this._gizmo) {
18535
+ this._gizmo.updateBoundingBox();
18536
+ }
18425
18537
  }
18426
18538
  };
18427
18539
  HolographicSlate.prototype._applyContentViewport = function () {
@@ -18447,45 +18559,61 @@ var HolographicSlate = /** @class */ (function (_super) {
18447
18559
  return;
18448
18560
  }
18449
18561
  // Update pivot point so it is at the center of geometry
18450
- var center = this.dimensions.scale(0.5);
18451
18562
  // As origin is topleft corner in 2D, dimensions are calculated towards bottom right corner, thus y axis is downwards
18452
- center.y *= -1;
18563
+ var center = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"](this.dimensions.x * 0.5, -this.dimensions.y * 0.5, babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"]);
18453
18564
  center.addInPlace(this.origin);
18454
18565
  center.z = 0;
18455
- var origin = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0, 0, 0);
18456
- babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformCoordinatesToRef(origin, this.mesh.computeWorldMatrix(true), origin);
18566
+ var origin = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"](0, 0, 0);
18567
+ babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].TransformCoordinatesToRef(origin, this.mesh.computeWorldMatrix(true), origin);
18457
18568
  this.mesh.setPivotPoint(center);
18458
- var origin2 = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0, 0, 0);
18459
- babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformCoordinatesToRef(origin2, this.mesh.computeWorldMatrix(true), origin2);
18569
+ var origin2 = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"](0, 0, 0);
18570
+ babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].TransformCoordinatesToRef(origin2, this.mesh.computeWorldMatrix(true), origin2);
18460
18571
  this.mesh.position.addInPlace(origin).subtractInPlace(origin2);
18461
18572
  };
18462
18573
  // Mesh association
18463
18574
  HolographicSlate.prototype._createNode = function (scene) {
18464
18575
  var _this = this;
18465
- var node = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Mesh"]("slate" + this.name, scene);
18466
- this._backPlate = Object(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])("backPlate" + this.name, { size: 1 }, scene);
18467
- var faceUV = new Array(6).fill(new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector4"](0, 0, 1, 1));
18576
+ var node = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Mesh"]("slate_" + this.name, scene);
18577
+ this._titleBar = Object(babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["CreateBox"])("titleBar_" + this.name, { size: 1 }, scene);
18578
+ this._titleBarTitle = Object(babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["CreatePlane"])("titleText_" + this.name, { size: 1 }, scene);
18579
+ this._titleBarTitle.parent = node;
18580
+ this._titleBarTitle.isPickable = false;
18581
+ var adt = _2D_advancedDynamicTexture__WEBPACK_IMPORTED_MODULE_3__["AdvancedDynamicTexture"].CreateForMesh(this._titleBarTitle);
18582
+ this._titleTextComponent = new _2D_controls_textBlock__WEBPACK_IMPORTED_MODULE_5__["TextBlock"]("titleText_" + this.name, this._titleText);
18583
+ this._titleTextComponent.textWrapping = _2D_controls_textBlock__WEBPACK_IMPORTED_MODULE_5__["TextWrapping"].Ellipsis;
18584
+ this._titleTextComponent.textHorizontalAlignment = _2D_controls_control__WEBPACK_IMPORTED_MODULE_4__["Control"].HORIZONTAL_ALIGNMENT_LEFT;
18585
+ this._titleTextComponent.color = "white";
18586
+ this._titleTextComponent.fontSize = HolographicSlate.DEFAULT_TEXT_RESOLUTION_Y / 2;
18587
+ this._titleTextComponent.paddingLeft = HolographicSlate.DEFAULT_TEXT_RESOLUTION_Y / 4;
18588
+ adt.addControl(this._titleTextComponent);
18468
18589
  if (scene.useRightHandedSystem) {
18469
- faceUV[0].copyFromFloats(0, 1, 1, 0);
18590
+ var faceUV = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector4"](0, 0, 1, 1);
18591
+ this._contentPlate = Object(babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["CreatePlane"])("contentPlate_" + this.name, { size: 1, sideOrientation: babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["VertexData"].BACKSIDE, frontUVs: faceUV }, scene);
18592
+ this._backPlate = Object(babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["CreatePlane"])("backPlate_" + this.name, { size: 1, sideOrientation: babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["VertexData"].FRONTSIDE }, scene);
18470
18593
  }
18471
- this._contentPlate = Object(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])("contentPlate" + this.name, { size: 1, faceUV: faceUV }, scene);
18472
- this._backPlate.parent = node;
18473
- this._backPlate.isNearGrabbable = true;
18594
+ else {
18595
+ var faceUV = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector4"](0, 0, 1, 1);
18596
+ this._contentPlate = Object(babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["CreatePlane"])("contentPlate_" + this.name, { size: 1, sideOrientation: babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["VertexData"].FRONTSIDE, frontUVs: faceUV }, scene);
18597
+ this._backPlate = Object(babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["CreatePlane"])("backPlate_" + this.name, { size: 1, sideOrientation: babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["VertexData"].BACKSIDE }, scene);
18598
+ }
18599
+ this._titleBar.parent = node;
18600
+ this._titleBar.isNearGrabbable = true;
18474
18601
  this._contentPlate.parent = node;
18602
+ this._backPlate.parent = node;
18475
18603
  this._attachContentPlateBehavior();
18476
18604
  this._addControl(this._followButton);
18477
18605
  this._addControl(this._closeButton);
18478
- var followButtonMesh = this._followButton.mesh;
18479
- var closeButtonMesh = this._closeButton.mesh;
18480
- followButtonMesh.parent = node;
18481
- closeButtonMesh.parent = node;
18606
+ var followButton = this._followButton;
18607
+ var closeButton = this._closeButton;
18608
+ followButton.node.parent = node;
18609
+ closeButton.node.parent = node;
18482
18610
  this._positionElements();
18483
18611
  this._followButton.imageUrl = HolographicSlate.ASSETS_BASE_URL + HolographicSlate.FOLLOW_ICON_FILENAME;
18484
18612
  this._closeButton.imageUrl = HolographicSlate.ASSETS_BASE_URL + HolographicSlate.CLOSE_ICON_FILENAME;
18485
18613
  this._followButton.isBackplateVisible = false;
18486
18614
  this._closeButton.isBackplateVisible = false;
18487
- this._followButton.onPointerClickObservable.add(function () {
18488
- _this._defaultBehavior.followBehaviorEnabled = !_this._defaultBehavior.followBehaviorEnabled;
18615
+ this._followButton.onToggleObservable.add(function (isToggled) {
18616
+ _this._defaultBehavior.followBehaviorEnabled = isToggled;
18489
18617
  if (_this._defaultBehavior.followBehaviorEnabled) {
18490
18618
  _this._defaultBehavior.followBehavior.recenter();
18491
18619
  }
@@ -18493,7 +18621,7 @@ var HolographicSlate = /** @class */ (function (_super) {
18493
18621
  this._closeButton.onPointerClickObservable.add(function () {
18494
18622
  _this.dispose();
18495
18623
  });
18496
- node.rotationQuaternion = babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Quaternion"].Identity();
18624
+ node.rotationQuaternion = babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Quaternion"].Identity();
18497
18625
  node.isVisible = false;
18498
18626
  return node;
18499
18627
  };
@@ -18503,11 +18631,11 @@ var HolographicSlate = /** @class */ (function (_super) {
18503
18631
  this._contentDragBehavior.moveAttached = false;
18504
18632
  this._contentDragBehavior.useObjectOrientationForDragging = true;
18505
18633
  this._contentDragBehavior.updateDragPlane = false;
18506
- var origin = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
18507
- var worldDimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
18508
- var upWorld = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
18509
- var rightWorld = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
18510
- var projectedOffset = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector2"]();
18634
+ var origin = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"]();
18635
+ var worldDimensions = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"]();
18636
+ var upWorld = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"]();
18637
+ var rightWorld = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"]();
18638
+ var projectedOffset = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector2"]();
18511
18639
  var startViewport;
18512
18640
  var worldMatrix;
18513
18641
  this._contentDragBehavior.onDragStartObservable.add(function (event) {
@@ -18517,65 +18645,67 @@ var HolographicSlate = /** @class */ (function (_super) {
18517
18645
  startViewport = _this._contentViewport.clone();
18518
18646
  worldMatrix = _this.node.computeWorldMatrix(true);
18519
18647
  origin.copyFrom(event.dragPlanePoint);
18520
- worldDimensions.copyFrom(_this.dimensions);
18521
- worldDimensions.y -= _this.backplateDimensions.y + _this.backPlateMargin;
18522
- babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformNormalToRef(worldDimensions, worldMatrix, worldDimensions);
18648
+ worldDimensions.set(_this.dimensions.x, _this.dimensions.y, babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"]);
18649
+ worldDimensions.y -= _this.titleBarHeight + _this.titleBarMargin;
18650
+ babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].TransformNormalToRef(worldDimensions, worldMatrix, worldDimensions);
18523
18651
  upWorld.copyFromFloats(0, 1, 0);
18524
- babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformNormalToRef(upWorld, worldMatrix, upWorld);
18652
+ babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].TransformNormalToRef(upWorld, worldMatrix, upWorld);
18525
18653
  rightWorld.copyFromFloats(1, 0, 0);
18526
- babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformNormalToRef(rightWorld, worldMatrix, rightWorld);
18654
+ babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].TransformNormalToRef(rightWorld, worldMatrix, rightWorld);
18527
18655
  upWorld.normalize();
18528
- upWorld.scaleInPlace(1 / babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Dot(upWorld, worldDimensions));
18656
+ upWorld.scaleInPlace(1 / babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].Dot(upWorld, worldDimensions));
18529
18657
  rightWorld.normalize();
18530
- rightWorld.scaleInPlace(1 / babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Dot(rightWorld, worldDimensions));
18658
+ rightWorld.scaleInPlace(1 / babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].Dot(rightWorld, worldDimensions));
18531
18659
  });
18532
- var offset = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
18660
+ var offset = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"]();
18533
18661
  this._contentDragBehavior.onDragObservable.add(function (event) {
18534
18662
  offset.copyFrom(event.dragPlanePoint);
18535
18663
  offset.subtractInPlace(origin);
18536
- projectedOffset.copyFromFloats(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Dot(offset, rightWorld), babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Dot(offset, upWorld));
18664
+ projectedOffset.copyFromFloats(babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].Dot(offset, rightWorld), babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].Dot(offset, upWorld));
18537
18665
  // By default, content takes full width available and height is cropped to keep aspect ratio
18538
- _this._contentViewport.x = babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Scalar"].Clamp(startViewport.x - offset.x, 0, 1 - _this._contentViewport.width * _this._contentScaleRatio);
18539
- _this._contentViewport.y = babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Scalar"].Clamp(startViewport.y - offset.y, 0, 1 - _this._contentViewport.height * _this._contentScaleRatio);
18666
+ _this._contentViewport.x = babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Scalar"].Clamp(startViewport.x - offset.x, 0, 1 - _this._contentViewport.width * _this._contentScaleRatio);
18667
+ _this._contentViewport.y = babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Scalar"].Clamp(startViewport.y - offset.y, 0, 1 - _this._contentViewport.height * _this._contentScaleRatio);
18540
18668
  _this._applyContentViewport();
18541
18669
  });
18542
18670
  };
18543
18671
  HolographicSlate.prototype._affectMaterial = function (mesh) {
18544
18672
  // TODO share materials
18545
- this._backPlateMaterial = new _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_8__["FluentBackplateMaterial"]("".concat(this.name, " plateMaterial"), mesh.getScene());
18546
- this._pickedPointObserver = this._host.onPickedPointChangedObservable.add(function (pickedPoint) {
18547
- // if (pickedPoint) {
18548
- // this._backPlateMaterial. = pickedPoint;
18549
- // this._backPlateMaterial.hoverColor.a = 1.0;
18550
- // } else {
18551
- // this._backPlateMaterial.hoverColor.a = 0;
18552
- // }
18553
- });
18554
- this._contentMaterial = new _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_2__["FluentMaterial"](this.name + "contentMaterial", mesh.getScene());
18673
+ this._titleBarMaterial = new _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_9__["FluentBackplateMaterial"]("".concat(this.name, " plateMaterial"), mesh.getScene());
18674
+ this._contentMaterial = new _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_8__["FluentMaterial"]("".concat(this.name, " contentMaterial"), mesh.getScene());
18555
18675
  this._contentMaterial.renderBorders = true;
18556
- this._backPlate.material = this._backPlateMaterial;
18676
+ this._backMaterial = new _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_9__["FluentBackplateMaterial"]("".concat(this.name, " backPlate"), mesh.getScene());
18677
+ this._backMaterial.lineWidth = babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"];
18678
+ this._backMaterial.radius = 0.005;
18679
+ this._backMaterial.backFaceCulling = true;
18680
+ this._titleBar.material = this._titleBarMaterial;
18557
18681
  this._contentPlate.material = this._contentMaterial;
18558
- this._rebuildContent();
18682
+ this._backPlate.material = this._backMaterial;
18683
+ this._resetContent();
18559
18684
  this._applyContentViewport();
18560
18685
  };
18561
18686
  /** @hidden **/
18562
18687
  HolographicSlate.prototype._prepareNode = function (scene) {
18563
18688
  var _this = this;
18564
18689
  _super.prototype._prepareNode.call(this, scene);
18565
- this._gizmo = new _gizmos_slateGizmo__WEBPACK_IMPORTED_MODULE_6__["SlateGizmo"](this._host.utilityLayer);
18690
+ this._gizmo = new _gizmos_slateGizmo__WEBPACK_IMPORTED_MODULE_7__["SlateGizmo"](this._host.utilityLayer);
18566
18691
  this._gizmo.attachedSlate = this;
18567
- this._defaultBehavior = new _behaviors_defaultBehavior__WEBPACK_IMPORTED_MODULE_7__["DefaultBehavior"]();
18568
- this._defaultBehavior.attach(this.node, [this._backPlate]);
18692
+ this._defaultBehavior = new _behaviors_defaultBehavior__WEBPACK_IMPORTED_MODULE_6__["DefaultBehavior"]();
18693
+ this._defaultBehavior.attach(this.node, [this._titleBar]);
18694
+ this._defaultBehavior.sixDofDragBehavior.onDragStartObservable.add(function () {
18695
+ _this._followButton.isToggled = false;
18696
+ });
18569
18697
  this._positionChangedObserver = this._defaultBehavior.sixDofDragBehavior.onPositionChangedObservable.add(function () {
18570
18698
  _this._gizmo.updateBoundingBox();
18571
18699
  });
18572
18700
  this._updatePivot();
18573
- this.resetDefaultAspectAndPose();
18701
+ this.resetDefaultAspectAndPose(false);
18574
18702
  };
18575
18703
  /**
18576
18704
  * Resets the aspect and pose of the slate so it is right in front of the active camera, facing towards it.
18705
+ * @param resetAspect Should the slate's dimensions/aspect ratio be reset as well
18577
18706
  */
18578
- HolographicSlate.prototype.resetDefaultAspectAndPose = function () {
18707
+ HolographicSlate.prototype.resetDefaultAspectAndPose = function (resetAspect) {
18708
+ if (resetAspect === void 0) { resetAspect = true; }
18579
18709
  if (!this._host || !this._host.utilityLayer || !this.node) {
18580
18710
  return;
18581
18711
  }
@@ -18583,13 +18713,15 @@ var HolographicSlate = /** @class */ (function (_super) {
18583
18713
  var camera = scene.activeCamera;
18584
18714
  if (camera) {
18585
18715
  var worldMatrix = camera.getWorldMatrix();
18586
- var backward = babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformNormal(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Backward(scene.useRightHandedSystem), worldMatrix);
18587
- this.dimensions.copyFrom(this.defaultDimensions);
18716
+ var backward = babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].TransformNormal(babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].Backward(scene.useRightHandedSystem), worldMatrix);
18588
18717
  this.origin.setAll(0);
18589
18718
  this._gizmo.updateBoundingBox();
18590
18719
  var pivot = this.node.getAbsolutePivotPoint();
18591
18720
  this.node.position.copyFrom(camera.position).subtractInPlace(backward).subtractInPlace(pivot);
18592
- this.node.rotationQuaternion = babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Quaternion"].FromLookDirectionLH(backward, new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0, 1, 0));
18721
+ this.node.rotationQuaternion = babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Quaternion"].FromLookDirectionLH(backward, new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"](0, 1, 0));
18722
+ if (resetAspect) {
18723
+ this.dimensions = this.defaultDimensions;
18724
+ }
18593
18725
  }
18594
18726
  };
18595
18727
  /**
@@ -18597,10 +18729,12 @@ var HolographicSlate = /** @class */ (function (_super) {
18597
18729
  */
18598
18730
  HolographicSlate.prototype.dispose = function () {
18599
18731
  _super.prototype.dispose.call(this);
18600
- this._backPlateMaterial.dispose();
18732
+ this._titleBarMaterial.dispose();
18601
18733
  this._contentMaterial.dispose();
18602
- this._backPlate.dispose();
18734
+ this._titleBar.dispose();
18735
+ this._titleBarTitle.dispose();
18603
18736
  this._contentPlate.dispose();
18737
+ this._backPlate.dispose();
18604
18738
  this._followButton.dispose();
18605
18739
  this._closeButton.dispose();
18606
18740
  this._host.onPickedPointChangedObservable.remove(this._pickedPointObserver);
@@ -18621,8 +18755,9 @@ var HolographicSlate = /** @class */ (function (_super) {
18621
18755
  * File name for the close icon.
18622
18756
  */
18623
18757
  HolographicSlate.FOLLOW_ICON_FILENAME = "IconFollowMe.png";
18758
+ HolographicSlate.DEFAULT_TEXT_RESOLUTION_Y = 102.4;
18624
18759
  return HolographicSlate;
18625
- }(_contentDisplay3D__WEBPACK_IMPORTED_MODULE_4__["ContentDisplay3D"]));
18760
+ }(_contentDisplay3D__WEBPACK_IMPORTED_MODULE_1__["ContentDisplay3D"]));
18626
18761
 
18627
18762
 
18628
18763
 
@@ -18943,7 +19078,7 @@ var NearMenu = /** @class */ (function (_super) {
18943
19078
  __webpack_require__.r(__webpack_exports__);
18944
19079
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PlanePanel", function() { return PlanePanel; });
18945
19080
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
18946
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
19081
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
18947
19082
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
18948
19083
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
18949
19084
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
@@ -18998,7 +19133,7 @@ var PlanePanel = /** @class */ (function (_super) {
18998
19133
  __webpack_require__.r(__webpack_exports__);
18999
19134
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ScatterPanel", function() { return ScatterPanel; });
19000
19135
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19001
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
19136
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
19002
19137
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
19003
19138
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
19004
19139
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
@@ -19125,7 +19260,7 @@ var ScatterPanel = /** @class */ (function (_super) {
19125
19260
  __webpack_require__.r(__webpack_exports__);
19126
19261
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Slider3D", function() { return Slider3D; });
19127
19262
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19128
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
19263
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
19129
19264
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
19130
19265
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
19131
19266
  /* harmony import */ var _materials_mrdl_mrdlSliderBarMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/mrdl/mrdlSliderBarMaterial */ "./3D/materials/mrdl/mrdlSliderBarMaterial.ts");
@@ -19235,6 +19370,9 @@ var Slider3D = /** @class */ (function (_super) {
19235
19370
  return;
19236
19371
  }
19237
19372
  this._value = Math.max(Math.min(value, this._maximum), this._minimum);
19373
+ if (this._sliderThumb) {
19374
+ this._sliderThumb.position.x = this._convertToPosition(this.value);
19375
+ }
19238
19376
  this.onValueChangedObservable.notifyObservers(this._value);
19239
19377
  },
19240
19378
  enumerable: false,
@@ -19355,13 +19493,12 @@ var Slider3D = /** @class */ (function (_super) {
19355
19493
  var _this = this;
19356
19494
  var pointerDragBehavior = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerDragBehavior"]({ dragAxis: babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Right() });
19357
19495
  pointerDragBehavior.moveAttached = false;
19358
- pointerDragBehavior.onDragObservable.add(function (event) {
19359
- var newPosition = _this._sliderThumb.position.x + event.dragDistance / _this.scaling.x;
19360
- _this._sliderThumb.position.x = Math.max(Math.min(newPosition, _this.end), _this.start);
19361
- _this.value = _this._convertToValue(_this._sliderThumb.position.x);
19496
+ pointerDragBehavior.onDragStartObservable.add(function (event) {
19497
+ _this._draggedPosition = _this._sliderThumb.position.x;
19362
19498
  });
19363
- pointerDragBehavior.onDragEndObservable.add(function (event) {
19364
- _this._sliderThumb.position.x = _this._convertToPosition(_this.value);
19499
+ pointerDragBehavior.onDragObservable.add(function (event) {
19500
+ _this._draggedPosition += event.dragDistance / _this.scaling.x;
19501
+ _this.value = _this._convertToValue(_this._draggedPosition);
19365
19502
  });
19366
19503
  return pointerDragBehavior;
19367
19504
  };
@@ -19413,7 +19550,7 @@ var Slider3D = /** @class */ (function (_super) {
19413
19550
  __webpack_require__.r(__webpack_exports__);
19414
19551
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SpherePanel", function() { return SpherePanel; });
19415
19552
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19416
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
19553
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
19417
19554
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
19418
19555
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
19419
19556
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
@@ -19499,7 +19636,7 @@ var SpherePanel = /** @class */ (function (_super) {
19499
19636
  __webpack_require__.r(__webpack_exports__);
19500
19637
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StackPanel3D", function() { return StackPanel3D; });
19501
19638
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19502
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
19639
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
19503
19640
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
19504
19641
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
19505
19642
 
@@ -19624,7 +19761,7 @@ var StackPanel3D = /** @class */ (function (_super) {
19624
19761
  __webpack_require__.r(__webpack_exports__);
19625
19762
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchButton3D", function() { return TouchButton3D; });
19626
19763
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19627
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
19764
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
19628
19765
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
19629
19766
  /* harmony import */ var _button3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./button3D */ "./3D/controls/button3D.ts");
19630
19767
  // Assumptions: absolute position of button mesh is inside the mesh
@@ -19647,6 +19784,7 @@ var TouchButton3D = /** @class */ (function (_super) {
19647
19784
  function TouchButton3D(name, collisionMesh) {
19648
19785
  var _this = _super.call(this, name) || this;
19649
19786
  _this._isNearPressed = false;
19787
+ _this._interactionSurfaceHeight = 0;
19650
19788
  _this._isToggleButton = false;
19651
19789
  _this._toggleState = false;
19652
19790
  _this._toggleButtonCallback = function () { _this._onToggle(!_this._toggleState); };
@@ -19660,6 +19798,16 @@ var TouchButton3D = /** @class */ (function (_super) {
19660
19798
  }
19661
19799
  return _this;
19662
19800
  }
19801
+ Object.defineProperty(TouchButton3D.prototype, "isActiveNearInteraction", {
19802
+ /**
19803
+ * Whether the current interaction is caused by near interaction or not
19804
+ */
19805
+ get: function () {
19806
+ return this._isNearPressed;
19807
+ },
19808
+ enumerable: false,
19809
+ configurable: true
19810
+ });
19663
19811
  Object.defineProperty(TouchButton3D.prototype, "collidableFrontDirection", {
19664
19812
  /**
19665
19813
  * Returns the front-facing direction of the button, or Vector3.Zero if there is no 'front'
@@ -19696,14 +19844,29 @@ var TouchButton3D = /** @class */ (function (_super) {
19696
19844
  * @param collisionMesh the new collision mesh for the button
19697
19845
  */
19698
19846
  set: function (collisionMesh) {
19699
- var _a, _b;
19700
- // Remove the GUI3DManager's data from the previous collision mesh's reserved data store
19701
- if ((_b = (_a = this._collisionMesh) === null || _a === void 0 ? void 0 : _a.reservedDataStore) === null || _b === void 0 ? void 0 : _b.GUI3D) {
19702
- this._collisionMesh.reservedDataStore.GUI3D = {};
19847
+ var _this = this;
19848
+ var _a;
19849
+ // Remove the GUI3DManager's data from the previous collision mesh's reserved data store, and reset interactability
19850
+ if (this._collisionMesh) {
19851
+ this._collisionMesh.isNearPickable = false;
19852
+ if ((_a = this._collisionMesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) {
19853
+ this._collisionMesh.reservedDataStore.GUI3D = {};
19854
+ }
19855
+ this._collisionMesh.getChildMeshes().forEach(function (mesh) {
19856
+ var _a;
19857
+ mesh.isNearPickable = false;
19858
+ if ((_a = mesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) {
19859
+ mesh.reservedDataStore.GUI3D = {};
19860
+ }
19861
+ });
19703
19862
  }
19704
19863
  this._collisionMesh = collisionMesh;
19705
19864
  this._injectGUI3DReservedDataStore(this._collisionMesh).control = this;
19706
19865
  this._collisionMesh.isNearPickable = true;
19866
+ this._collisionMesh.getChildMeshes().forEach(function (mesh) {
19867
+ _this._injectGUI3DReservedDataStore(mesh).control = _this;
19868
+ mesh.isNearPickable = true;
19869
+ });
19707
19870
  this.collidableFrontDirection = collisionMesh.forward;
19708
19871
  },
19709
19872
  enumerable: false,
@@ -19760,6 +19923,18 @@ var TouchButton3D = /** @class */ (function (_super) {
19760
19923
  TouchButton3D.prototype._isInteractionInFrontOfButton = function (collidablePos) {
19761
19924
  return this._getInteractionHeight(collidablePos, this._collisionMesh.getAbsolutePosition()) > 0;
19762
19925
  };
19926
+ /**
19927
+ * Get the height of the touchPoint from the collidable part of the button
19928
+ * @param touchPoint the point to compare to the button, in absolute position
19929
+ * @returns the depth of the touch point into the front of the button
19930
+ */
19931
+ TouchButton3D.prototype.getPressDepth = function (touchPoint) {
19932
+ if (!this._isNearPressed) {
19933
+ return 0;
19934
+ }
19935
+ var interactionHeight = this._getInteractionHeight(touchPoint, this._collisionMesh.getAbsolutePosition());
19936
+ return this._interactionSurfaceHeight - interactionHeight;
19937
+ };
19763
19938
  // Returns true if the collidable is in front of the button, or if the button has no front direction
19764
19939
  TouchButton3D.prototype._getInteractionHeight = function (interactionPos, basePos) {
19765
19940
  var frontDir = this.collidableFrontDirection;
@@ -19780,6 +19955,7 @@ var TouchButton3D = /** @class */ (function (_super) {
19780
19955
  }
19781
19956
  else {
19782
19957
  this._isNearPressed = true;
19958
+ this._interactionSurfaceHeight = this._getInteractionHeight(nearMeshPosition, this._collisionMesh.getAbsolutePosition());
19783
19959
  }
19784
19960
  }
19785
19961
  if (providedType === babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERUP) {
@@ -19830,7 +20006,7 @@ var TouchButton3D = /** @class */ (function (_super) {
19830
20006
  __webpack_require__.r(__webpack_exports__);
19831
20007
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchHolographicButton", function() { return TouchHolographicButton; });
19832
20008
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19833
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
20009
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
19834
20010
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
19835
20011
  /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
19836
20012
  /* harmony import */ var _materials_fluentButton_fluentButtonMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/fluentButton/fluentButtonMaterial */ "./3D/materials/fluentButton/fluentButtonMaterial.ts");
@@ -19857,6 +20033,7 @@ __webpack_require__.r(__webpack_exports__);
19857
20033
 
19858
20034
 
19859
20035
 
20036
+
19860
20037
  /**
19861
20038
  * Class used to create a holographic button in 3D
19862
20039
  * @since 5.0.0
@@ -19886,7 +20063,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19886
20063
  _this._frontMaterial.rightBlobEnable = false;
19887
20064
  };
19888
20065
  _this.pointerDownAnimation = function () {
19889
- if (_this._frontPlate && !_this._isNearPressed) {
20066
+ if (_this._frontPlate && !_this.isActiveNearInteraction) {
19890
20067
  _this._frontPlate.scaling.z = _this._frontPlateDepth * 0.2;
19891
20068
  _this._frontPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(_this._frontPlate._scene.useRightHandedSystem).scale((_this._frontPlateDepth - (0.2 * _this._frontPlateDepth)) / 2);
19892
20069
  _this._textPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(_this._textPlate._scene.useRightHandedSystem).scale(-(_this._backPlateDepth + (0.2 * _this._frontPlateDepth)) / 2);
@@ -19900,7 +20077,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19900
20077
  }
19901
20078
  };
19902
20079
  _this.onPointerMoveObservable.add(function (position) {
19903
- if (_this._frontPlate && _this._isNearPressed) {
20080
+ if (_this._frontPlate && _this.isActiveNearInteraction) {
19904
20081
  var scale = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Zero();
19905
20082
  if (_this._backPlate.getWorldMatrix().decompose(scale, undefined, undefined)) {
19906
20083
  var interactionHeight = _this._getInteractionHeight(position, _this._backPlate.getAbsolutePosition()) / scale.z;
@@ -19948,6 +20125,16 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19948
20125
  enumerable: false,
19949
20126
  configurable: true
19950
20127
  });
20128
+ Object.defineProperty(TouchHolographicButton.prototype, "mesh", {
20129
+ /**
20130
+ * Gets the mesh used to render this control
20131
+ */
20132
+ get: function () {
20133
+ return this._backPlate;
20134
+ },
20135
+ enumerable: false,
20136
+ configurable: true
20137
+ });
19951
20138
  Object.defineProperty(TouchHolographicButton.prototype, "tooltipText", {
19952
20139
  get: function () {
19953
20140
  if (this._tooltipTextBlock) {
@@ -20168,7 +20355,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
20168
20355
  height: 1.0,
20169
20356
  depth: this._backPlateDepth,
20170
20357
  }, scene);
20171
- this._backPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(scene.useRightHandedSystem).scale(-this._backPlateDepth / 2);
20358
+ this._backPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(scene.useRightHandedSystem).scale(this._backPlateDepth / 2);
20172
20359
  this._backPlate.isPickable = false;
20173
20360
  this._textPlate = _super.prototype._createNode.call(this, scene);
20174
20361
  this._textPlate.name = "".concat(this.name, "_textPlate");
@@ -20176,9 +20363,11 @@ var TouchHolographicButton = /** @class */ (function (_super) {
20176
20363
  this._textPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(scene.useRightHandedSystem).scale(-this._frontPlateDepth / 2);
20177
20364
  this._backPlate.addChild(collisionMesh);
20178
20365
  this._backPlate.addChild(this._textPlate);
20366
+ var tn = new babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["TransformNode"]("{this.name}_root", scene);
20367
+ this._backPlate.setParent(tn);
20179
20368
  this.collisionMesh = collisionMesh;
20180
20369
  this.collidableFrontDirection = this._backPlate.forward.negate(); // Mesh is facing the wrong way
20181
- return this._backPlate;
20370
+ return tn;
20182
20371
  };
20183
20372
  TouchHolographicButton.prototype._applyFacade = function (facadeTexture) {
20184
20373
  this._plateMaterial.emissiveTexture = facadeTexture;
@@ -20287,7 +20476,7 @@ __webpack_require__.r(__webpack_exports__);
20287
20476
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchHolographicMenu", function() { return TouchHolographicMenu; });
20288
20477
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20289
20478
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
20290
- /* harmony import */ var babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Meshes/mesh */ "babylonjs/Misc/perfCounter");
20479
+ /* harmony import */ var babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Meshes/mesh */ "babylonjs/Misc/observable");
20291
20480
  /* harmony import */ var babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2__);
20292
20481
  /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
20293
20482
 
@@ -20531,7 +20720,7 @@ var TouchMeshButton3D = /** @class */ (function (_super) {
20531
20720
  __webpack_require__.r(__webpack_exports__);
20532
20721
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VolumeBasedPanel", function() { return VolumeBasedPanel; });
20533
20722
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20534
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
20723
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
20535
20724
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
20536
20725
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
20537
20726
 
@@ -20726,7 +20915,7 @@ __webpack_require__.r(__webpack_exports__);
20726
20915
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SideHandle", function() { return SideHandle; });
20727
20916
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CornerHandle", function() { return CornerHandle; });
20728
20917
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20729
- /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/perfCounter");
20918
+ /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/observable");
20730
20919
  /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__);
20731
20920
  /* harmony import */ var _materials_handle_handleMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/handle/handleMaterial */ "./3D/materials/handle/handleMaterial.ts");
20732
20921
 
@@ -20980,7 +21169,7 @@ __webpack_require__.r(__webpack_exports__);
20980
21169
  __webpack_require__.r(__webpack_exports__);
20981
21170
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SlateGizmo", function() { return SlateGizmo; });
20982
21171
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20983
- /* harmony import */ var babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Gizmos/gizmo */ "babylonjs/Misc/perfCounter");
21172
+ /* harmony import */ var babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Gizmos/gizmo */ "babylonjs/Misc/observable");
20984
21173
  /* harmony import */ var babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__);
20985
21174
  /* harmony import */ var _gizmoHandle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./gizmoHandle */ "./3D/gizmos/gizmoHandle.ts");
20986
21175
 
@@ -20989,6 +21178,7 @@ __webpack_require__.r(__webpack_exports__);
20989
21178
 
20990
21179
 
20991
21180
 
21181
+
20992
21182
  /**
20993
21183
  * Gizmo to resize 2D slates
20994
21184
  */
@@ -21012,6 +21202,7 @@ var SlateGizmo = /** @class */ (function (_super) {
21012
21202
  * Value we use to offset handles from mesh
21013
21203
  */
21014
21204
  _this._margin = 0.35;
21205
+ _this._handleSize = 0.075;
21015
21206
  _this._attachedSlate = null;
21016
21207
  _this._existingSlateScale = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21017
21208
  /**
@@ -21022,10 +21213,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21022
21213
  * The distance away from the object which the draggable meshes should appear world sized when fixedScreenSize is set to true (default: 10)
21023
21214
  */
21024
21215
  _this.fixedScreenSizeDistanceFactor = 10;
21025
- /**
21026
- * Size of the handles (meters in XR)
21027
- */
21028
- _this.handleSize = 0.01;
21029
21216
  _this._createNode();
21030
21217
  _this.updateScale = false;
21031
21218
  _this._renderObserver = _this.gizmoLayer.originalScene.onBeforeRenderObservable.add(function () {
@@ -21096,7 +21283,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21096
21283
  var corner = new _gizmoHandle__WEBPACK_IMPORTED_MODULE_2__["CornerHandle"](this, this.gizmoLayer.utilityLayerScene);
21097
21284
  this._corners.push(corner);
21098
21285
  corner.node.rotation.z = (Math.PI / 2) * i;
21099
- corner.node.scaling.setAll(this.handleSize);
21100
21286
  corner.node.parent = this._handlesParent;
21101
21287
  this._assignDragBehaviorCorners(corner, function (originStart, dimensionsStart, offset, masks) { return _this._moveHandle(originStart, dimensionsStart, offset, masks, true); }, masksCorners[i]);
21102
21288
  }
@@ -21104,7 +21290,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21104
21290
  var side = new _gizmoHandle__WEBPACK_IMPORTED_MODULE_2__["SideHandle"](this, this.gizmoLayer.utilityLayerScene);
21105
21291
  this._sides.push(side);
21106
21292
  side.node.rotation.z = (Math.PI / 2) * i;
21107
- side.node.scaling.copyFromFloats(this.handleSize, this.handleSize, this.handleSize);
21108
21293
  side.node.parent = this._handlesParent;
21109
21294
  this._assignDragBehaviorSides(side, i % 2 === 0 ? new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0, 1, 0) : new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"](1, 0, 0));
21110
21295
  }
@@ -21151,8 +21336,7 @@ var SlateGizmo = /** @class */ (function (_super) {
21151
21336
  offsetOriginMasked.copyFrom(offset).multiplyInPlace(masks.origin);
21152
21337
  offsetDimensionsMasked.copyFrom(offset).multiplyInPlace(masks.dimensions);
21153
21338
  this._attachedSlate.origin.copyFrom(originStart).addInPlace(offsetOriginMasked);
21154
- this._attachedSlate.dimensions.copyFrom(dimensionsStart).addInPlace(offsetDimensionsMasked);
21155
- this._attachedSlate.backplateDimensions.x = this._attachedSlate.dimensions.x;
21339
+ this._attachedSlate.dimensions.set(dimensionsStart.x + offsetDimensionsMasked.x, dimensionsStart.y + offsetDimensionsMasked.y);
21156
21340
  };
21157
21341
  SlateGizmo.prototype._assignDragBehaviorCorners = function (handle, moveFn, masks) {
21158
21342
  var _this = this;
@@ -21161,7 +21345,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21161
21345
  var dragOrigin = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21162
21346
  var toObjectFrame = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Matrix"]();
21163
21347
  var dragPlaneNormal = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21164
- var previousFollowState = false;
21165
21348
  var projectToRef = function (position, normal, origin, ref) {
21166
21349
  // Projects on the plane with its normal and origin
21167
21350
  position.subtractToRef(origin, babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["TmpVectors"].Vector3[0]);
@@ -21172,13 +21355,12 @@ var SlateGizmo = /** @class */ (function (_super) {
21172
21355
  };
21173
21356
  var dragStart = function (event) {
21174
21357
  if (_this.attachedSlate && _this.attachedMesh) {
21175
- dimensionsStart.copyFrom(_this.attachedSlate.dimensions);
21358
+ dimensionsStart.set(_this.attachedSlate.dimensions.x, _this.attachedSlate.dimensions.y, babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Epsilon"]);
21176
21359
  originStart.copyFrom(_this.attachedSlate.origin);
21177
21360
  dragOrigin.copyFrom(event.position);
21178
21361
  toObjectFrame.copyFrom(_this.attachedMesh.computeWorldMatrix(true));
21179
21362
  toObjectFrame.invert();
21180
- previousFollowState = _this.attachedSlate.defaultBehavior.followBehaviorEnabled;
21181
- _this.attachedSlate.defaultBehavior.followBehaviorEnabled = false;
21363
+ _this.attachedSlate._followButton.isToggled = false;
21182
21364
  babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformNormalToRef(babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(), _this.attachedMesh.getWorldMatrix(), dragPlaneNormal);
21183
21365
  dragPlaneNormal.normalize();
21184
21366
  if (_this._handleHovered) {
@@ -21200,7 +21382,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21200
21382
  var dragEnd = function () {
21201
21383
  if (_this.attachedSlate && _this.attachedNode) {
21202
21384
  _this.attachedSlate._updatePivot();
21203
- _this.attachedSlate.defaultBehavior.followBehaviorEnabled = previousFollowState;
21204
21385
  if (_this._handleDragged) {
21205
21386
  _this._handleDragged.drag = false;
21206
21387
  _this._handleDragged = null;
@@ -21215,16 +21396,14 @@ var SlateGizmo = /** @class */ (function (_super) {
21215
21396
  var dragOrigin = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21216
21397
  var directionOrigin = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21217
21398
  var worldPivot = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21218
- var previousFollowState;
21219
21399
  var worldPlaneNormal = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21220
21400
  var dragStart = function (event) {
21221
21401
  if (_this.attachedSlate && _this.attachedMesh) {
21222
21402
  quaternionOrigin.copyFrom(_this.attachedMesh.rotationQuaternion);
21223
21403
  dragOrigin.copyFrom(event.position);
21224
- previousFollowState = _this.attachedSlate.defaultBehavior.followBehaviorEnabled;
21225
- _this.attachedSlate.defaultBehavior.followBehaviorEnabled = false;
21226
21404
  worldPivot.copyFrom(_this.attachedMesh.getAbsolutePivotPoint());
21227
21405
  directionOrigin.copyFrom(dragOrigin).subtractInPlace(worldPivot).normalize();
21406
+ _this.attachedSlate._followButton.isToggled = false;
21228
21407
  babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformNormalToRef(dragPlaneNormal, _this.attachedMesh.getWorldMatrix(), worldPlaneNormal);
21229
21408
  worldPlaneNormal.normalize();
21230
21409
  if (_this._handleHovered) {
@@ -21246,7 +21425,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21246
21425
  var dragEnd = function () {
21247
21426
  if (_this.attachedSlate && _this.attachedNode) {
21248
21427
  _this.attachedSlate._updatePivot();
21249
- _this.attachedSlate.defaultBehavior.followBehaviorEnabled = previousFollowState;
21250
21428
  if (_this._handleDragged) {
21251
21429
  _this._handleDragged.drag = false;
21252
21430
  _this._handleDragged = null;
@@ -21286,6 +21464,7 @@ var SlateGizmo = /** @class */ (function (_super) {
21286
21464
  this._boundingBoxGizmo.max = boundingMinMax.max;
21287
21465
  // Update handles of the gizmo
21288
21466
  this._updateHandlesPosition();
21467
+ this._updateHandlesScaling();
21289
21468
  // Restore position/rotation values
21290
21469
  this.attachedMesh.rotationQuaternion.copyFrom(this._tmpQuaternion);
21291
21470
  this.attachedMesh.position.copyFrom(this._tmpVector);
@@ -21314,6 +21493,19 @@ var SlateGizmo = /** @class */ (function (_super) {
21314
21493
  this._sides[2].node.position.copyFromFloats(max.x, center.y, 0);
21315
21494
  this._sides[3].node.position.copyFromFloats(center.x, max.y, 0);
21316
21495
  };
21496
+ SlateGizmo.prototype._updateHandlesScaling = function () {
21497
+ if (this._attachedSlate && this._attachedSlate.mesh) {
21498
+ var scaledWidth = this._attachedSlate.mesh.scaling.x * this._attachedSlate.dimensions.x;
21499
+ var scaledHeight = this._attachedSlate.mesh.scaling.y * this._attachedSlate.dimensions.y;
21500
+ var scale = Math.min(scaledWidth, scaledHeight) * this._handleSize;
21501
+ for (var index = 0; index < this._corners.length; index++) {
21502
+ this._corners[index].node.scaling.setAll(scale);
21503
+ }
21504
+ for (var index = 0; index < this._sides.length; index++) {
21505
+ this._sides[index].node.scaling.setAll(scale);
21506
+ }
21507
+ }
21508
+ };
21317
21509
  SlateGizmo.prototype._update = function () {
21318
21510
  _super.prototype._update.call(this);
21319
21511
  if (!this.gizmoLayer.utilityLayerScene.activeCamera) {
@@ -21322,10 +21514,13 @@ var SlateGizmo = /** @class */ (function (_super) {
21322
21514
  if (this._attachedSlate && this._attachedSlate.mesh) {
21323
21515
  if (this.fixedScreenSize) {
21324
21516
  this._attachedSlate.mesh.absolutePosition.subtractToRef(this.gizmoLayer.utilityLayerScene.activeCamera.position, this._tmpVector);
21325
- var distanceFromCamera = (this.handleSize * this._tmpVector.length()) / this.fixedScreenSizeDistanceFactor;
21517
+ var distanceFromCamera = (this._handleSize * this._tmpVector.length()) / this.fixedScreenSizeDistanceFactor;
21326
21518
  for (var i = 0; i < this._corners.length; i++) {
21327
21519
  this._corners[i].node.scaling.set(distanceFromCamera, distanceFromCamera, distanceFromCamera);
21328
21520
  }
21521
+ for (var i = 0; i < this._sides.length; i++) {
21522
+ this._sides[i].node.scaling.set(distanceFromCamera, distanceFromCamera, distanceFromCamera);
21523
+ }
21329
21524
  }
21330
21525
  this._updateHandlesPosition();
21331
21526
  }
@@ -21360,7 +21555,7 @@ var SlateGizmo = /** @class */ (function (_super) {
21360
21555
  "use strict";
21361
21556
  __webpack_require__.r(__webpack_exports__);
21362
21557
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GUI3DManager", function() { return GUI3DManager; });
21363
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
21558
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
21364
21559
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
21365
21560
  /* harmony import */ var _controls_container3D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./controls/container3D */ "./3D/controls/container3D.ts");
21366
21561
 
@@ -21731,7 +21926,7 @@ __webpack_require__.r(__webpack_exports__);
21731
21926
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentMaterialDefines", function() { return FluentMaterialDefines; });
21732
21927
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentMaterial", function() { return FluentMaterial; });
21733
21928
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
21734
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
21929
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
21735
21930
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
21736
21931
  /* harmony import */ var _shaders_fluent_vertex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/fluent.vertex */ "./3D/materials/fluent/shaders/fluent.vertex.ts");
21737
21932
  /* harmony import */ var _shaders_fluent_fragment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/fluent.fragment */ "./3D/materials/fluent/shaders/fluent.fragment.ts");
@@ -22049,7 +22244,7 @@ __webpack_require__.r(__webpack_exports__);
22049
22244
  "use strict";
22050
22245
  __webpack_require__.r(__webpack_exports__);
22051
22246
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentPixelShader", function() { return fluentPixelShader; });
22052
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22247
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
22053
22248
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22054
22249
 
22055
22250
  var name = 'fluentPixelShader';
@@ -22071,7 +22266,7 @@ var fluentPixelShader = { name: name, shader: shader };
22071
22266
  "use strict";
22072
22267
  __webpack_require__.r(__webpack_exports__);
22073
22268
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentVertexShader", function() { return fluentVertexShader; });
22074
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22269
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
22075
22270
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22076
22271
 
22077
22272
  var name = 'fluentVertexShader';
@@ -22094,7 +22289,7 @@ var fluentVertexShader = { name: name, shader: shader };
22094
22289
  __webpack_require__.r(__webpack_exports__);
22095
22290
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentBackplateMaterial", function() { return FluentBackplateMaterial; });
22096
22291
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
22097
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
22292
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
22098
22293
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
22099
22294
  /* harmony import */ var _shaders_fluentBackplate_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/fluentBackplate.fragment */ "./3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.ts");
22100
22295
  /* harmony import */ var _shaders_fluentBackplate_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/fluentBackplate.vertex */ "./3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.ts");
@@ -22563,7 +22758,7 @@ __webpack_require__.r(__webpack_exports__);
22563
22758
  "use strict";
22564
22759
  __webpack_require__.r(__webpack_exports__);
22565
22760
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentBackplatePixelShader", function() { return fluentBackplatePixelShader; });
22566
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22761
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
22567
22762
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22568
22763
 
22569
22764
  var name = 'fluentBackplatePixelShader';
@@ -22585,7 +22780,7 @@ var fluentBackplatePixelShader = { name: name, shader: shader };
22585
22780
  "use strict";
22586
22781
  __webpack_require__.r(__webpack_exports__);
22587
22782
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentBackplateVertexShader", function() { return fluentBackplateVertexShader; });
22588
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22783
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
22589
22784
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22590
22785
 
22591
22786
  var name = 'fluentBackplateVertexShader';
@@ -22608,7 +22803,7 @@ var fluentBackplateVertexShader = { name: name, shader: shader };
22608
22803
  __webpack_require__.r(__webpack_exports__);
22609
22804
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentButtonMaterial", function() { return FluentButtonMaterial; });
22610
22805
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
22611
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
22806
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
22612
22807
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
22613
22808
  /* harmony import */ var _shaders_fluentButton_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/fluentButton.fragment */ "./3D/materials/fluentButton/shaders/fluentButton.fragment.ts");
22614
22809
  /* harmony import */ var _shaders_fluentButton_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/fluentButton.vertex */ "./3D/materials/fluentButton/shaders/fluentButton.vertex.ts");
@@ -23180,7 +23375,7 @@ __webpack_require__.r(__webpack_exports__);
23180
23375
  "use strict";
23181
23376
  __webpack_require__.r(__webpack_exports__);
23182
23377
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentButtonPixelShader", function() { return fluentButtonPixelShader; });
23183
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
23378
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
23184
23379
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
23185
23380
 
23186
23381
  var name = 'fluentButtonPixelShader';
@@ -23202,7 +23397,7 @@ var fluentButtonPixelShader = { name: name, shader: shader };
23202
23397
  "use strict";
23203
23398
  __webpack_require__.r(__webpack_exports__);
23204
23399
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentButtonVertexShader", function() { return fluentButtonVertexShader; });
23205
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
23400
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
23206
23401
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
23207
23402
 
23208
23403
  var name = 'fluentButtonVertexShader';
@@ -23225,7 +23420,7 @@ var fluentButtonVertexShader = { name: name, shader: shader };
23225
23420
  __webpack_require__.r(__webpack_exports__);
23226
23421
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HandleMaterial", function() { return HandleMaterial; });
23227
23422
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
23228
- /* harmony import */ var babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Materials/shaderMaterial */ "babylonjs/Misc/perfCounter");
23423
+ /* harmony import */ var babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Materials/shaderMaterial */ "babylonjs/Misc/observable");
23229
23424
  /* harmony import */ var babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1__);
23230
23425
  /* harmony import */ var _shaders_handle_vertex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/handle.vertex */ "./3D/materials/handle/shaders/handle.vertex.ts");
23231
23426
  /* harmony import */ var _shaders_handle_fragment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/handle.fragment */ "./3D/materials/handle/shaders/handle.fragment.ts");
@@ -23386,7 +23581,7 @@ __webpack_require__.r(__webpack_exports__);
23386
23581
  "use strict";
23387
23582
  __webpack_require__.r(__webpack_exports__);
23388
23583
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "handlePixelShader", function() { return handlePixelShader; });
23389
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
23584
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
23390
23585
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
23391
23586
 
23392
23587
  var name = 'handlePixelShader';
@@ -23408,7 +23603,7 @@ var handlePixelShader = { name: name, shader: shader };
23408
23603
  "use strict";
23409
23604
  __webpack_require__.r(__webpack_exports__);
23410
23605
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "handleVertexShader", function() { return handleVertexShader; });
23411
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
23606
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
23412
23607
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
23413
23608
 
23414
23609
  var name = 'handleVertexShader';
@@ -23495,7 +23690,7 @@ __webpack_require__.r(__webpack_exports__);
23495
23690
  __webpack_require__.r(__webpack_exports__);
23496
23691
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MRDLBackplateMaterial", function() { return MRDLBackplateMaterial; });
23497
23692
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
23498
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
23693
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
23499
23694
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
23500
23695
  /* harmony import */ var _shaders_mrdlBackplate_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/mrdlBackplate.fragment */ "./3D/materials/mrdl/shaders/mrdlBackplate.fragment.ts");
23501
23696
  /* harmony import */ var _shaders_mrdlBackplate_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/mrdlBackplate.vertex */ "./3D/materials/mrdl/shaders/mrdlBackplate.vertex.ts");
@@ -23923,7 +24118,7 @@ Object(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
23923
24118
  __webpack_require__.r(__webpack_exports__);
23924
24119
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MRDLSliderBarMaterial", function() { return MRDLSliderBarMaterial; });
23925
24120
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
23926
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
24121
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
23927
24122
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
23928
24123
  /* harmony import */ var _shaders_mrdlSliderBar_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/mrdlSliderBar.fragment */ "./3D/materials/mrdl/shaders/mrdlSliderBar.fragment.ts");
23929
24124
  /* harmony import */ var _shaders_mrdlSliderBar_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/mrdlSliderBar.vertex */ "./3D/materials/mrdl/shaders/mrdlSliderBar.vertex.ts");
@@ -24728,7 +24923,7 @@ Object(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
24728
24923
  __webpack_require__.r(__webpack_exports__);
24729
24924
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MRDLSliderThumbMaterial", function() { return MRDLSliderThumbMaterial; });
24730
24925
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
24731
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
24926
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
24732
24927
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
24733
24928
  /* harmony import */ var _shaders_mrdlSliderThumb_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/mrdlSliderThumb.fragment */ "./3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.ts");
24734
24929
  /* harmony import */ var _shaders_mrdlSliderThumb_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/mrdlSliderThumb.vertex */ "./3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.ts");
@@ -25532,7 +25727,7 @@ Object(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
25532
25727
  "use strict";
25533
25728
  __webpack_require__.r(__webpack_exports__);
25534
25729
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlBackplatePixelShader", function() { return mrdlBackplatePixelShader; });
25535
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25730
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25536
25731
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25537
25732
 
25538
25733
  var name = 'mrdlBackplatePixelShader';
@@ -25554,7 +25749,7 @@ var mrdlBackplatePixelShader = { name: name, shader: shader };
25554
25749
  "use strict";
25555
25750
  __webpack_require__.r(__webpack_exports__);
25556
25751
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlBackplateVertexShader", function() { return mrdlBackplateVertexShader; });
25557
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25752
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25558
25753
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25559
25754
 
25560
25755
  var name = 'mrdlBackplateVertexShader';
@@ -25576,7 +25771,7 @@ var mrdlBackplateVertexShader = { name: name, shader: shader };
25576
25771
  "use strict";
25577
25772
  __webpack_require__.r(__webpack_exports__);
25578
25773
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderBarPixelShader", function() { return mrdlSliderBarPixelShader; });
25579
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25774
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25580
25775
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25581
25776
 
25582
25777
  var name = 'mrdlSliderBarPixelShader';
@@ -25598,7 +25793,7 @@ var mrdlSliderBarPixelShader = { name: name, shader: shader };
25598
25793
  "use strict";
25599
25794
  __webpack_require__.r(__webpack_exports__);
25600
25795
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderBarVertexShader", function() { return mrdlSliderBarVertexShader; });
25601
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25796
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25602
25797
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25603
25798
 
25604
25799
  var name = 'mrdlSliderBarVertexShader';
@@ -25620,7 +25815,7 @@ var mrdlSliderBarVertexShader = { name: name, shader: shader };
25620
25815
  "use strict";
25621
25816
  __webpack_require__.r(__webpack_exports__);
25622
25817
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderThumbPixelShader", function() { return mrdlSliderThumbPixelShader; });
25623
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25818
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25624
25819
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25625
25820
 
25626
25821
  var name = 'mrdlSliderThumbPixelShader';
@@ -25642,7 +25837,7 @@ var mrdlSliderThumbPixelShader = { name: name, shader: shader };
25642
25837
  "use strict";
25643
25838
  __webpack_require__.r(__webpack_exports__);
25644
25839
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderThumbVertexShader", function() { return mrdlSliderThumbVertexShader; });
25645
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25840
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25646
25841
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25647
25842
 
25648
25843
  var name = 'mrdlSliderThumbVertexShader';
@@ -25665,7 +25860,7 @@ var mrdlSliderThumbVertexShader = { name: name, shader: shader };
25665
25860
  __webpack_require__.r(__webpack_exports__);
25666
25861
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Vector3WithInfo", function() { return Vector3WithInfo; });
25667
25862
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
25668
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
25863
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
25669
25864
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
25670
25865
 
25671
25866
 
@@ -26059,14 +26254,14 @@ if (typeof globalObject !== "undefined") {
26059
26254
 
26060
26255
  /***/ }),
26061
26256
 
26062
- /***/ "babylonjs/Misc/perfCounter":
26257
+ /***/ "babylonjs/Misc/observable":
26063
26258
  /*!****************************************************************************************************!*\
26064
26259
  !*** external {"root":"BABYLON","commonjs":"babylonjs","commonjs2":"babylonjs","amd":"babylonjs"} ***!
26065
26260
  \****************************************************************************************************/
26066
26261
  /*! no static exports found */
26067
26262
  /***/ (function(module, exports) {
26068
26263
 
26069
- module.exports = __WEBPACK_EXTERNAL_MODULE_babylonjs_Misc_perfCounter__;
26264
+ module.exports = __WEBPACK_EXTERNAL_MODULE_babylonjs_Misc_observable__;
26070
26265
 
26071
26266
  /***/ })
26072
26267