babylonjs-gui 5.0.0-beta.7 → 5.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/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 = {};
@@ -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) {
@@ -1777,6 +1824,23 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1777
1824
  result.attach();
1778
1825
  return result;
1779
1826
  };
1827
+ /**
1828
+ * Scales the texture
1829
+ * @param ratio the scale factor to apply to both width and height
1830
+ */
1831
+ AdvancedDynamicTexture.prototype.scale = function (ratio) {
1832
+ _super.prototype.scale.call(this, ratio);
1833
+ this.markAsDirty();
1834
+ };
1835
+ /**
1836
+ * Resizes the texture
1837
+ * @param width the new width
1838
+ * @param height the new height
1839
+ */
1840
+ AdvancedDynamicTexture.prototype.scaleTo = function (width, height) {
1841
+ _super.prototype.scaleTo.call(this, width, height);
1842
+ this.markAsDirty();
1843
+ };
1780
1844
  /** Define the Uurl to load snippets */
1781
1845
  AdvancedDynamicTexture.SnippetUrl = "https://snippet.babylonjs.com";
1782
1846
  /** Indicates if some optimizations can be performed in GUI GPU management (the downside is additional memory/GPU texture memory used) */
@@ -1803,7 +1867,7 @@ __webpack_require__.r(__webpack_exports__);
1803
1867
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
1804
1868
  /* harmony import */ var _textBlock__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./textBlock */ "./2D/controls/textBlock.ts");
1805
1869
  /* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./image */ "./2D/controls/image.ts");
1806
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
1870
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
1807
1871
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__);
1808
1872
 
1809
1873
 
@@ -2058,7 +2122,7 @@ Object(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__["RegisterClass"])("
2058
2122
  __webpack_require__.r(__webpack_exports__);
2059
2123
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Checkbox", function() { return Checkbox; });
2060
2124
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
2061
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
2125
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
2062
2126
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
2063
2127
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
2064
2128
  /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stackPanel */ "./2D/controls/stackPanel.ts");
@@ -2256,7 +2320,7 @@ Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
2256
2320
  __webpack_require__.r(__webpack_exports__);
2257
2321
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColorPicker", function() { return ColorPicker; });
2258
2322
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
2259
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
2323
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
2260
2324
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
2261
2325
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
2262
2326
  /* harmony import */ var _inputText__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./inputText */ "./2D/controls/inputText.ts");
@@ -3679,7 +3743,7 @@ Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
3679
3743
  __webpack_require__.r(__webpack_exports__);
3680
3744
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Container", function() { return Container; });
3681
3745
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
3682
- /* harmony import */ var babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/logger */ "babylonjs/Misc/perfCounter");
3746
+ /* harmony import */ var babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/logger */ "babylonjs/Misc/observable");
3683
3747
  /* harmony import */ var babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__);
3684
3748
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
3685
3749
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../measure */ "./2D/measure.ts");
@@ -4223,7 +4287,7 @@ Object(babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])("BAB
4223
4287
  __webpack_require__.r(__webpack_exports__);
4224
4288
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Control", function() { return Control; });
4225
4289
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
4226
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
4290
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
4227
4291
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
4228
4292
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
4229
4293
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../measure */ "./2D/measure.ts");
@@ -5361,6 +5425,9 @@ var Control = /** @class */ (function () {
5361
5425
  this._markAsDirty();
5362
5426
  // if this control or any of it's descendants are under a pointer, we need to fire a pointerOut event
5363
5427
  var recursivelyFirePointerOut = function (control) {
5428
+ if (!control.host) {
5429
+ return;
5430
+ }
5364
5431
  for (var pointer in control.host._lastControlOver) {
5365
5432
  if (control === _this.host._lastControlOver[pointer]) {
5366
5433
  control._onPointerOut(control, null, true);
@@ -5599,11 +5666,9 @@ var Control = /** @class */ (function () {
5599
5666
  var _a;
5600
5667
  var oldLeft = this._left.getValue(this._host);
5601
5668
  var oldTop = this._top.getValue(this._host);
5602
- if (this._currentMeasure.width === 0 && this._currentMeasure.height === 0) {
5603
- var parentMeasure = (_a = this.parent) === null || _a === void 0 ? void 0 : _a._currentMeasure;
5604
- if (parentMeasure) {
5605
- this._processMeasures(parentMeasure, this._host.getContext());
5606
- }
5669
+ var parentMeasure = (_a = this.parent) === null || _a === void 0 ? void 0 : _a._currentMeasure;
5670
+ if (parentMeasure) {
5671
+ this._processMeasures(parentMeasure, this._host.getContext());
5607
5672
  }
5608
5673
  var newLeft = projectedPosition.x + this._linkOffsetX.getValue(this._host) - this._currentMeasure.width / 2;
5609
5674
  var newTop = projectedPosition.y + this._linkOffsetY.getValue(this._host) - this._currentMeasure.height / 2;
@@ -5641,19 +5706,19 @@ var Control = /** @class */ (function () {
5641
5706
  // No child
5642
5707
  };
5643
5708
  /** @hidden */
5644
- Control.prototype._intersectsRect = function (rect) {
5645
- // Rotate the control's current measure into local space and check if it intersects the passed in rectangle
5646
- this._currentMeasure.transformToRef(this._transformMatrix, this._tmpMeasureA);
5647
- if (this._tmpMeasureA.left >= rect.left + rect.width) {
5709
+ Control.prototype._intersectsRect = function (rect, context) {
5710
+ // make sure we are transformed correctly before checking intersections. no-op if nothing is dirty.
5711
+ this._transform(context);
5712
+ if (this._evaluatedMeasure.left >= rect.left + rect.width) {
5648
5713
  return false;
5649
5714
  }
5650
- if (this._tmpMeasureA.top >= rect.top + rect.height) {
5715
+ if (this._evaluatedMeasure.top >= rect.top + rect.height) {
5651
5716
  return false;
5652
5717
  }
5653
- if (this._tmpMeasureA.left + this._tmpMeasureA.width <= rect.left) {
5718
+ if (this._evaluatedMeasure.left + this._evaluatedMeasure.width <= rect.left) {
5654
5719
  return false;
5655
5720
  }
5656
- if (this._tmpMeasureA.top + this._tmpMeasureA.height <= rect.top) {
5721
+ if (this._evaluatedMeasure.top + this._evaluatedMeasure.height <= rect.top) {
5657
5722
  return false;
5658
5723
  }
5659
5724
  return true;
@@ -5695,6 +5760,7 @@ var Control = /** @class */ (function () {
5695
5760
  return;
5696
5761
  }
5697
5762
  this._isDirty = true;
5763
+ this._markMatrixAsDirty();
5698
5764
  // Redraw only this rectangle
5699
5765
  if (this._host) {
5700
5766
  this._host.markAsDirty();
@@ -5739,6 +5805,7 @@ var Control = /** @class */ (function () {
5739
5805
  this._flagDescendantsAsMatrixDirty();
5740
5806
  _math2D__WEBPACK_IMPORTED_MODULE_4__["Matrix2D"].ComposeToRef(-offsetX, -offsetY, this._rotation, this._scaleX, this._scaleY, this.parent ? this.parent._transformMatrix : null, this._transformMatrix);
5741
5807
  this._transformMatrix.invertToRef(this._invertTransformMatrix);
5808
+ this._currentMeasure.transformToRef(this._transformMatrix, this._evaluatedMeasure);
5742
5809
  }
5743
5810
  };
5744
5811
  /** @hidden */
@@ -6549,7 +6616,7 @@ __webpack_require__.r(__webpack_exports__);
6549
6616
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DisplayGrid", function() { return DisplayGrid; });
6550
6617
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
6551
6618
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
6552
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
6619
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
6553
6620
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
6554
6621
 
6555
6622
 
@@ -6813,7 +6880,7 @@ __webpack_require__.r(__webpack_exports__);
6813
6880
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
6814
6881
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
6815
6882
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
6816
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
6883
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
6817
6884
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__);
6818
6885
 
6819
6886
 
@@ -6916,7 +6983,7 @@ __webpack_require__.r(__webpack_exports__);
6916
6983
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FocusableButton", function() { return FocusableButton; });
6917
6984
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
6918
6985
  /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./button */ "./2D/controls/button.ts");
6919
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
6986
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
6920
6987
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
6921
6988
 
6922
6989
 
@@ -7028,7 +7095,7 @@ __webpack_require__.r(__webpack_exports__);
7028
7095
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
7029
7096
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
7030
7097
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
7031
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
7098
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
7032
7099
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__);
7033
7100
 
7034
7101
 
@@ -7570,7 +7637,7 @@ Object(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__["RegisterClass"])("BABY
7570
7637
  __webpack_require__.r(__webpack_exports__);
7571
7638
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Image", function() { return Image; });
7572
7639
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
7573
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
7640
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
7574
7641
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
7575
7642
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
7576
7643
 
@@ -8609,7 +8676,7 @@ __webpack_require__.r(__webpack_exports__);
8609
8676
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InputPassword", function() { return InputPassword; });
8610
8677
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
8611
8678
  /* harmony import */ var _inputText__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./inputText */ "./2D/controls/inputText.ts");
8612
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
8679
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
8613
8680
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
8614
8681
  /* harmony import */ var _textWrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./textWrapper */ "./2D/controls/textWrapper.ts");
8615
8682
 
@@ -8652,7 +8719,7 @@ Object(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__["RegisterClass"])("
8652
8719
  __webpack_require__.r(__webpack_exports__);
8653
8720
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InputText", function() { return InputText; });
8654
8721
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
8655
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
8722
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
8656
8723
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
8657
8724
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
8658
8725
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
@@ -9045,7 +9112,7 @@ var InputText = /** @class */ (function (_super) {
9045
9112
  this._cursorOffset = 0;
9046
9113
  this._markAsDirty();
9047
9114
  this.onFocusObservable.notifyObservers(this);
9048
- if (navigator.userAgent.indexOf("Mobile") !== -1 && !this.disableMobilePrompt) {
9115
+ if (this._focusedBy === "touch" && !this.disableMobilePrompt) {
9049
9116
  var value = prompt(this.promptMessage);
9050
9117
  if (value !== null) {
9051
9118
  this.text = value;
@@ -9658,6 +9725,7 @@ var InputText = /** @class */ (function (_super) {
9658
9725
  this._cursorIndex = -1;
9659
9726
  this._isPointerDown = true;
9660
9727
  this._host._capturingControl[pointerId] = this;
9728
+ this._focusedBy = pi.event.pointerType;
9661
9729
  if (this._host.focusedControl === this) {
9662
9730
  // Move cursor
9663
9731
  clearTimeout(this._blinkTimeout);
@@ -9767,7 +9835,7 @@ Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
9767
9835
  __webpack_require__.r(__webpack_exports__);
9768
9836
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Line", function() { return Line; });
9769
9837
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
9770
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
9838
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
9771
9839
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
9772
9840
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
9773
9841
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
@@ -10057,7 +10125,7 @@ Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"]
10057
10125
  __webpack_require__.r(__webpack_exports__);
10058
10126
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultiLine", function() { return MultiLine; });
10059
10127
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
10060
- /* harmony import */ var babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/abstractMesh */ "babylonjs/Misc/perfCounter");
10128
+ /* harmony import */ var babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/abstractMesh */ "babylonjs/Misc/observable");
10061
10129
  /* harmony import */ var babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__);
10062
10130
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
10063
10131
  /* harmony import */ var _multiLinePoint__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../multiLinePoint */ "./2D/multiLinePoint.ts");
@@ -10338,7 +10406,7 @@ Object(babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__["RegisterClass
10338
10406
  __webpack_require__.r(__webpack_exports__);
10339
10407
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RadioButton", function() { return RadioButton; });
10340
10408
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
10341
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
10409
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
10342
10410
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
10343
10411
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
10344
10412
  /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stackPanel */ "./2D/controls/stackPanel.ts");
@@ -10564,7 +10632,7 @@ __webpack_require__.r(__webpack_exports__);
10564
10632
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Rectangle", function() { return Rectangle; });
10565
10633
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
10566
10634
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
10567
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
10635
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
10568
10636
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
10569
10637
 
10570
10638
 
@@ -10737,7 +10805,7 @@ __webpack_require__.r(__webpack_exports__);
10737
10805
  /* harmony import */ var _scrollViewerWindow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./scrollViewerWindow */ "./2D/controls/scrollViewers/scrollViewerWindow.ts");
10738
10806
  /* harmony import */ var _sliders_scrollBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../sliders/scrollBar */ "./2D/controls/sliders/scrollBar.ts");
10739
10807
  /* harmony import */ var _sliders_imageScrollBar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../sliders/imageScrollBar */ "./2D/controls/sliders/imageScrollBar.ts");
10740
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
10808
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
10741
10809
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7__);
10742
10810
 
10743
10811
 
@@ -12368,7 +12436,7 @@ var SelectionPanel = /** @class */ (function (_super) {
12368
12436
  __webpack_require__.r(__webpack_exports__);
12369
12437
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseSlider", function() { return BaseSlider; });
12370
12438
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
12371
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
12439
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
12372
12440
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
12373
12441
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../control */ "./2D/controls/control.ts");
12374
12442
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../valueAndUnit */ "./2D/valueAndUnit.ts");
@@ -12651,7 +12719,7 @@ var BaseSlider = /** @class */ (function (_super) {
12651
12719
  else {
12652
12720
  value = this._minimum + ((x - this._currentMeasure.left) / this._currentMeasure.width) * (this._maximum - this._minimum);
12653
12721
  }
12654
- this.value = this._step ? ((value / this._step) | 0) * this._step : value;
12722
+ this.value = this._step ? Math.round(value / this._step) * this._step : value;
12655
12723
  };
12656
12724
  BaseSlider.prototype._onPointerDown = function (target, coordinates, pointerId, buttonIndex, pi) {
12657
12725
  if (!_super.prototype._onPointerDown.call(this, target, coordinates, pointerId, buttonIndex, pi)) {
@@ -12733,7 +12801,7 @@ __webpack_require__.r(__webpack_exports__);
12733
12801
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
12734
12802
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../measure */ "./2D/measure.ts");
12735
12803
  /* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../image */ "./2D/controls/image.ts");
12736
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
12804
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
12737
12805
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4__);
12738
12806
 
12739
12807
 
@@ -12940,7 +13008,7 @@ __webpack_require__.r(__webpack_exports__);
12940
13008
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
12941
13009
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
12942
13010
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../measure */ "./2D/measure.ts");
12943
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
13011
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
12944
13012
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__);
12945
13013
 
12946
13014
 
@@ -13215,7 +13283,7 @@ __webpack_require__.r(__webpack_exports__);
13215
13283
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
13216
13284
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
13217
13285
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../measure */ "./2D/measure.ts");
13218
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
13286
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
13219
13287
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__);
13220
13288
 
13221
13289
 
@@ -13369,7 +13437,7 @@ __webpack_require__.r(__webpack_exports__);
13369
13437
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Slider", function() { return Slider; });
13370
13438
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
13371
13439
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
13372
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
13440
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
13373
13441
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
13374
13442
 
13375
13443
 
@@ -13657,7 +13725,7 @@ Object(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__["RegisterClass"])("
13657
13725
  __webpack_require__.r(__webpack_exports__);
13658
13726
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StackPanel", function() { return StackPanel; });
13659
13727
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
13660
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
13728
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
13661
13729
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
13662
13730
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
13663
13731
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
@@ -13977,7 +14045,7 @@ __webpack_require__.r(__webpack_exports__);
13977
14045
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextWrapping", function() { return TextWrapping; });
13978
14046
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextBlock", function() { return TextBlock; });
13979
14047
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
13980
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
14048
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
13981
14049
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
13982
14050
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
13983
14051
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
@@ -14398,30 +14466,40 @@ var TextBlock = /** @class */ (function (_super) {
14398
14466
  var lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
14399
14467
  return { text: line, width: lineWidth };
14400
14468
  };
14469
+ //Calculate how many characters approximately we need to remove
14470
+ TextBlock.prototype._getCharsToRemove = function (lineWidth, width, lineLength) {
14471
+ var diff = lineWidth > width ? lineWidth - width : 0;
14472
+ // This isn't exact unless the font is monospaced
14473
+ var charWidth = lineWidth / lineLength;
14474
+ var removeChars = Math.max(Math.floor(diff / charWidth), 1);
14475
+ return removeChars;
14476
+ };
14401
14477
  TextBlock.prototype._parseLineEllipsis = function (line, width, context) {
14402
14478
  if (line === void 0) { line = ""; }
14403
14479
  var textMetrics = context.measureText(line);
14404
14480
  var lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
14405
- if (lineWidth > width) {
14406
- line += "…";
14407
- }
14481
+ var removeChars = this._getCharsToRemove(lineWidth, width, line.length);
14408
14482
  // unicode support. split('') does not work with unicode!
14409
14483
  // make sure Array.from is available
14410
14484
  var characters = Array.from && Array.from(line);
14411
14485
  if (!characters) {
14412
14486
  // no array.from, use the old method
14413
14487
  while (line.length > 2 && lineWidth > width) {
14414
- line = line.slice(0, -2) + "…";
14415
- textMetrics = context.measureText(line);
14488
+ line = line.slice(0, -removeChars);
14489
+ textMetrics = context.measureText(line + "…");
14416
14490
  lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
14491
+ removeChars = this._getCharsToRemove(lineWidth, width, line.length);
14417
14492
  }
14493
+ // Add on the end
14494
+ line += "…";
14418
14495
  }
14419
14496
  else {
14420
14497
  while (characters.length && lineWidth > width) {
14421
- characters.pop();
14422
- line = "".concat(characters.join(""), "...");
14498
+ characters.splice(characters.length - removeChars, removeChars);
14499
+ line = "".concat(characters.join(""), "\u2026");
14423
14500
  textMetrics = context.measureText(line);
14424
14501
  lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
14502
+ removeChars = this._getCharsToRemove(lineWidth, width, line.length);
14425
14503
  }
14426
14504
  }
14427
14505
  return { text: line, width: lineWidth };
@@ -14700,7 +14778,7 @@ var TextWrapper = /** @class */ (function () {
14700
14778
  __webpack_require__.r(__webpack_exports__);
14701
14779
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ToggleButton", function() { return ToggleButton; });
14702
14780
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
14703
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
14781
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
14704
14782
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
14705
14783
  /* harmony import */ var _rectangle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rectangle */ "./2D/controls/rectangle.ts");
14706
14784
 
@@ -14953,7 +15031,7 @@ __webpack_require__.r(__webpack_exports__);
14953
15031
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyPropertySet", function() { return KeyPropertySet; });
14954
15032
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualKeyboard", function() { return VirtualKeyboard; });
14955
15033
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
14956
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
15034
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
14957
15035
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
14958
15036
  /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stackPanel */ "./2D/controls/stackPanel.ts");
14959
15037
  /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./button */ "./2D/controls/button.ts");
@@ -15348,7 +15426,7 @@ __webpack_require__.r(__webpack_exports__);
15348
15426
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Vector2WithInfo", function() { return Vector2WithInfo; });
15349
15427
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Matrix2D", function() { return Matrix2D; });
15350
15428
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
15351
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
15429
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
15352
15430
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
15353
15431
 
15354
15432
 
@@ -15585,7 +15663,7 @@ var Matrix2D = /** @class */ (function () {
15585
15663
  "use strict";
15586
15664
  __webpack_require__.r(__webpack_exports__);
15587
15665
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Measure", function() { return Measure; });
15588
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
15666
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
15589
15667
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__);
15590
15668
 
15591
15669
  var tmpRect = [
@@ -15750,7 +15828,7 @@ var Measure = /** @class */ (function () {
15750
15828
  "use strict";
15751
15829
  __webpack_require__.r(__webpack_exports__);
15752
15830
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultiLinePoint", function() { return MultiLinePoint; });
15753
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
15831
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
15754
15832
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__);
15755
15833
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./valueAndUnit */ "./2D/valueAndUnit.ts");
15756
15834
 
@@ -15894,7 +15972,7 @@ var MultiLinePoint = /** @class */ (function () {
15894
15972
  "use strict";
15895
15973
  __webpack_require__.r(__webpack_exports__);
15896
15974
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Style", function() { return Style; });
15897
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
15975
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
15898
15976
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
15899
15977
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./valueAndUnit */ "./2D/valueAndUnit.ts");
15900
15978
 
@@ -16008,7 +16086,7 @@ var Style = /** @class */ (function () {
16008
16086
  "use strict";
16009
16087
  __webpack_require__.r(__webpack_exports__);
16010
16088
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ValueAndUnit", function() { return ValueAndUnit; });
16011
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
16089
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
16012
16090
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
16013
16091
 
16014
16092
  /**
@@ -16247,10 +16325,11 @@ var ValueAndUnit = /** @class */ (function () {
16247
16325
  __webpack_require__.r(__webpack_exports__);
16248
16326
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "XmlLoader", function() { return XmlLoader; });
16249
16327
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16250
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
16328
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
16251
16329
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1__);
16252
16330
 
16253
16331
 
16332
+ var XmlLoaderError = "XmlLoader Exception : XML file is malformed or corrupted.";
16254
16333
  /**
16255
16334
  * Class used to load GUI via XML.
16256
16335
  */
@@ -16553,7 +16632,13 @@ var XmlLoader = /** @class */ (function () {
16553
16632
  xhttp.onload = function () {
16554
16633
  if (xhttp.readyState === 4 && xhttp.status === 200) {
16555
16634
  if (!xhttp.responseXML) {
16556
- throw "XmlLoader Exception : XML file is malformed or corrupted.";
16635
+ if (onError) {
16636
+ onError(XmlLoaderError);
16637
+ return;
16638
+ }
16639
+ else {
16640
+ throw XmlLoaderError;
16641
+ }
16557
16642
  }
16558
16643
  var xmlDoc = xhttp.responseXML.documentElement;
16559
16644
  _this._parseXml(xmlDoc.firstChild, rootNode);
@@ -16604,7 +16689,7 @@ var XmlLoader = /** @class */ (function () {
16604
16689
  "use strict";
16605
16690
  __webpack_require__.r(__webpack_exports__);
16606
16691
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultBehavior", function() { return DefaultBehavior; });
16607
- /* harmony import */ var babylonjs_Behaviors_Meshes_followBehavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/followBehavior */ "babylonjs/Misc/perfCounter");
16692
+ /* harmony import */ var babylonjs_Behaviors_Meshes_followBehavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/followBehavior */ "babylonjs/Misc/observable");
16608
16693
  /* harmony import */ var babylonjs_Behaviors_Meshes_followBehavior__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Behaviors_Meshes_followBehavior__WEBPACK_IMPORTED_MODULE_0__);
16609
16694
 
16610
16695
 
@@ -16742,7 +16827,7 @@ var DefaultBehavior = /** @class */ (function () {
16742
16827
  __webpack_require__.r(__webpack_exports__);
16743
16828
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AbstractButton3D", function() { return AbstractButton3D; });
16744
16829
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16745
- /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/perfCounter");
16830
+ /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/observable");
16746
16831
  /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__);
16747
16832
  /* harmony import */ var _contentDisplay3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./contentDisplay3D */ "./3D/controls/contentDisplay3D.ts");
16748
16833
 
@@ -16785,7 +16870,7 @@ var AbstractButton3D = /** @class */ (function (_super) {
16785
16870
  __webpack_require__.r(__webpack_exports__);
16786
16871
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Button3D", function() { return Button3D; });
16787
16872
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16788
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
16873
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
16789
16874
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
16790
16875
  /* harmony import */ var _abstractButton3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./abstractButton3D */ "./3D/controls/abstractButton3D.ts");
16791
16876
 
@@ -16896,7 +16981,7 @@ var Button3D = /** @class */ (function (_super) {
16896
16981
  __webpack_require__.r(__webpack_exports__);
16897
16982
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Container3D", function() { return Container3D; });
16898
16983
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16899
- /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/perfCounter");
16984
+ /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/observable");
16900
16985
  /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__);
16901
16986
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
16902
16987
 
@@ -17056,7 +17141,7 @@ __webpack_require__.r(__webpack_exports__);
17056
17141
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17057
17142
  /* harmony import */ var _2D_advancedDynamicTexture__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../2D/advancedDynamicTexture */ "./2D/advancedDynamicTexture.ts");
17058
17143
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
17059
- /* harmony import */ var babylonjs_Materials_Textures_texture__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Materials/Textures/texture */ "babylonjs/Misc/perfCounter");
17144
+ /* harmony import */ var babylonjs_Materials_Textures_texture__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Materials/Textures/texture */ "babylonjs/Misc/observable");
17060
17145
  /* harmony import */ var babylonjs_Materials_Textures_texture__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Materials_Textures_texture__WEBPACK_IMPORTED_MODULE_3__);
17061
17146
 
17062
17147
 
@@ -17082,7 +17167,7 @@ var ContentDisplay3D = /** @class */ (function (_super) {
17082
17167
  },
17083
17168
  set: function (value) {
17084
17169
  this._content = value;
17085
- if (!this._host || !this._host.utilityLayer) {
17170
+ if (!value || !this._host || !this._host.utilityLayer) {
17086
17171
  return;
17087
17172
  }
17088
17173
  if (!this._facadeTexture) {
@@ -17150,7 +17235,7 @@ var ContentDisplay3D = /** @class */ (function (_super) {
17150
17235
  "use strict";
17151
17236
  __webpack_require__.r(__webpack_exports__);
17152
17237
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Control3D", function() { return Control3D; });
17153
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
17238
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
17154
17239
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
17155
17240
  /* harmony import */ var _vector3WithInfo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../vector3WithInfo */ "./3D/vector3WithInfo.ts");
17156
17241
 
@@ -17576,7 +17661,7 @@ var Control3D = /** @class */ (function () {
17576
17661
  __webpack_require__.r(__webpack_exports__);
17577
17662
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CylinderPanel", function() { return CylinderPanel; });
17578
17663
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17579
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
17664
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
17580
17665
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
17581
17666
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
17582
17667
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
@@ -17662,7 +17747,7 @@ __webpack_require__.r(__webpack_exports__);
17662
17747
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HandMenu", function() { return HandMenu; });
17663
17748
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17664
17749
  /* harmony import */ var _touchHolographicMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./touchHolographicMenu */ "./3D/controls/touchHolographicMenu.ts");
17665
- /* harmony import */ var babylonjs_Behaviors_Meshes_handConstraintBehavior__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/handConstraintBehavior */ "babylonjs/Misc/perfCounter");
17750
+ /* harmony import */ var babylonjs_Behaviors_Meshes_handConstraintBehavior__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/handConstraintBehavior */ "babylonjs/Misc/observable");
17666
17751
  /* harmony import */ var babylonjs_Behaviors_Meshes_handConstraintBehavior__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Behaviors_Meshes_handConstraintBehavior__WEBPACK_IMPORTED_MODULE_2__);
17667
17752
 
17668
17753
 
@@ -17726,7 +17811,7 @@ var HandMenu = /** @class */ (function (_super) {
17726
17811
  __webpack_require__.r(__webpack_exports__);
17727
17812
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HolographicBackplate", function() { return HolographicBackplate; });
17728
17813
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17729
- /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/perfCounter");
17814
+ /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/observable");
17730
17815
  /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__);
17731
17816
  /* harmony import */ var _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/fluentBackplate/fluentBackplateMaterial */ "./3D/materials/fluentBackplate/fluentBackplateMaterial.ts");
17732
17817
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
@@ -17866,7 +17951,7 @@ __webpack_require__.r(__webpack_exports__);
17866
17951
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HolographicButton", function() { return HolographicButton; });
17867
17952
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17868
17953
  /* harmony import */ var _button3D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./button3D */ "./3D/controls/button3D.ts");
17869
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
17954
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
17870
17955
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__);
17871
17956
  /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
17872
17957
  /* harmony import */ var _2D_controls_stackPanel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../2D/controls/stackPanel */ "./2D/controls/stackPanel.ts");
@@ -18226,15 +18311,21 @@ var HolographicButton = /** @class */ (function (_super) {
18226
18311
  __webpack_require__.r(__webpack_exports__);
18227
18312
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HolographicSlate", function() { return HolographicSlate; });
18228
18313
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
18229
- /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/perfCounter");
18230
- /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__);
18231
- /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
18232
- /* harmony import */ var _touchHolographicButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./touchHolographicButton */ "./3D/controls/touchHolographicButton.ts");
18233
- /* harmony import */ var _contentDisplay3D__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./contentDisplay3D */ "./3D/controls/contentDisplay3D.ts");
18234
- /* harmony import */ var _2D_controls_image__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../2D/controls/image */ "./2D/controls/image.ts");
18235
- /* harmony import */ var _gizmos_slateGizmo__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../gizmos/slateGizmo */ "./3D/gizmos/slateGizmo.ts");
18236
- /* harmony import */ var _behaviors_defaultBehavior__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../behaviors/defaultBehavior */ "./3D/behaviors/defaultBehavior.ts");
18237
- /* harmony import */ var _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../materials/fluentBackplate/fluentBackplateMaterial */ "./3D/materials/fluentBackplate/fluentBackplateMaterial.ts");
18314
+ /* harmony import */ var _contentDisplay3D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./contentDisplay3D */ "./3D/controls/contentDisplay3D.ts");
18315
+ /* harmony import */ var _touchHolographicButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./touchHolographicButton */ "./3D/controls/touchHolographicButton.ts");
18316
+ /* harmony import */ var _2D_advancedDynamicTexture__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../2D/advancedDynamicTexture */ "./2D/advancedDynamicTexture.ts");
18317
+ /* harmony import */ var _2D_controls_control__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../2D/controls/control */ "./2D/controls/control.ts");
18318
+ /* harmony import */ var _2D_controls_textBlock__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../2D/controls/textBlock */ "./2D/controls/textBlock.ts");
18319
+ /* harmony import */ var _behaviors_defaultBehavior__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../behaviors/defaultBehavior */ "./3D/behaviors/defaultBehavior.ts");
18320
+ /* harmony import */ var _gizmos_slateGizmo__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../gizmos/slateGizmo */ "./3D/gizmos/slateGizmo.ts");
18321
+ /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
18322
+ /* harmony import */ var _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../materials/fluentBackplate/fluentBackplateMaterial */ "./3D/materials/fluentBackplate/fluentBackplateMaterial.ts");
18323
+ /* harmony import */ var babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/pointerDragBehavior */ "babylonjs/Misc/observable");
18324
+ /* harmony import */ var babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__);
18325
+
18326
+
18327
+
18328
+
18238
18329
 
18239
18330
 
18240
18331
 
@@ -18264,35 +18355,31 @@ var HolographicSlate = /** @class */ (function (_super) {
18264
18355
  function HolographicSlate(name) {
18265
18356
  var _this = _super.call(this, name) || this;
18266
18357
  /**
18267
- * Dimensions of the slate
18268
- */
18269
- _this.dimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](21.875, 12.5, 0.001);
18270
- /**
18271
- * Minimum dimensions of the slate
18272
- */
18273
- _this.minDimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](15.625, 6.25, 0.001);
18274
- /**
18275
- * Default dimensions of the slate
18358
+ * Margin between title bar and contentplate
18276
18359
  */
18277
- _this.defaultDimensions = _this.dimensions.clone();
18360
+ _this.titleBarMargin = 0.005;
18278
18361
  /**
18279
- * Dimensions of the backplate
18362
+ * Origin in local coordinates (top left corner)
18280
18363
  */
18281
- _this.backplateDimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](21.875, 0.625, 0.001);
18364
+ _this.origin = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"](0, 0, 0);
18365
+ _this._dimensions = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector2"](21.875, 12.5);
18366
+ _this._titleBarHeight = 0.625;
18367
+ _this._titleText = "";
18368
+ _this._contentScaleRatio = 1;
18282
18369
  /**
18283
- * Margin between backplate and contentplate
18370
+ * Minimum dimensions of the slate
18284
18371
  */
18285
- _this.backPlateMargin = 0.005;
18372
+ _this.minDimensions = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector2"](15.625, 6.25);
18286
18373
  /**
18287
- * Origin in local coordinates (top left corner)
18374
+ * Default dimensions of the slate
18288
18375
  */
18289
- _this.origin = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0, 0, 0);
18290
- _this._contentScaleRatio = 1;
18291
- _this._followButton = new _touchHolographicButton__WEBPACK_IMPORTED_MODULE_3__["TouchHolographicButton"]("followButton" + _this.name);
18292
- _this._closeButton = new _touchHolographicButton__WEBPACK_IMPORTED_MODULE_3__["TouchHolographicButton"]("closeButton" + _this.name);
18293
- _this._contentViewport = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Viewport"](0, 0, 1, 1);
18294
- _this._contentDragBehavior = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["PointerDragBehavior"]({
18295
- dragPlaneNormal: new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0, 0, -1),
18376
+ _this.defaultDimensions = _this._dimensions.clone();
18377
+ _this._followButton = new _touchHolographicButton__WEBPACK_IMPORTED_MODULE_2__["TouchHolographicButton"]("followButton" + _this.name);
18378
+ _this._followButton.isToggleButton = true;
18379
+ _this._closeButton = new _touchHolographicButton__WEBPACK_IMPORTED_MODULE_2__["TouchHolographicButton"]("closeButton" + _this.name);
18380
+ _this._contentViewport = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Viewport"](0, 0, 1, 1);
18381
+ _this._contentDragBehavior = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["PointerDragBehavior"]({
18382
+ dragPlaneNormal: new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"](0, 0, -1),
18296
18383
  });
18297
18384
  return _this;
18298
18385
  }
@@ -18306,35 +18393,76 @@ var HolographicSlate = /** @class */ (function (_super) {
18306
18393
  enumerable: false,
18307
18394
  configurable: true
18308
18395
  });
18396
+ Object.defineProperty(HolographicSlate.prototype, "dimensions", {
18397
+ /**
18398
+ * 2D dimensions of the slate
18399
+ */
18400
+ get: function () {
18401
+ return this._dimensions;
18402
+ },
18403
+ set: function (value) {
18404
+ //clamp, respecting ratios
18405
+ var scale = 1.0;
18406
+ if (value.x < this.minDimensions.x || value.y < this.minDimensions.y) {
18407
+ var newRatio = value.x / value.y;
18408
+ var minRatio = this.minDimensions.x / this.minDimensions.y;
18409
+ if (minRatio > newRatio) {
18410
+ // We just need to make sure the x-val is greater than the min
18411
+ scale = this.minDimensions.x / value.x;
18412
+ }
18413
+ else {
18414
+ // We just need to make sure the y-val is greater than the min
18415
+ scale = this.minDimensions.y / value.y;
18416
+ }
18417
+ }
18418
+ this._dimensions.copyFrom(value).scaleInPlace(scale);
18419
+ this._updatePivot();
18420
+ this._positionElements();
18421
+ },
18422
+ enumerable: false,
18423
+ configurable: true
18424
+ });
18425
+ Object.defineProperty(HolographicSlate.prototype, "titleBarHeight", {
18426
+ /**
18427
+ * Height of the title bar component
18428
+ */
18429
+ get: function () {
18430
+ return this._titleBarHeight;
18431
+ },
18432
+ set: function (value) {
18433
+ this._titleBarHeight = value;
18434
+ },
18435
+ enumerable: false,
18436
+ configurable: true
18437
+ });
18309
18438
  Object.defineProperty(HolographicSlate.prototype, "renderingGroupId", {
18310
18439
  get: function () {
18311
- return this._backPlate.renderingGroupId;
18440
+ return this._titleBar.renderingGroupId;
18312
18441
  },
18313
18442
  /**
18314
- * Rendering ground id of all the mesh in the button
18443
+ * Rendering ground id of all the meshes
18315
18444
  */
18316
18445
  set: function (id) {
18317
- this._backPlate.renderingGroupId = id;
18446
+ this._titleBar.renderingGroupId = id;
18447
+ this._titleBarTitle.renderingGroupId = id;
18318
18448
  this._contentPlate.renderingGroupId = id;
18449
+ this._backPlate.renderingGroupId = id;
18319
18450
  },
18320
18451
  enumerable: false,
18321
18452
  configurable: true
18322
18453
  });
18323
- Object.defineProperty(HolographicSlate.prototype, "imageUrl", {
18324
- /**
18325
- * Gets or sets the image url for the button
18326
- */
18454
+ Object.defineProperty(HolographicSlate.prototype, "title", {
18327
18455
  get: function () {
18328
- return this._imageUrl;
18456
+ return this._titleText;
18329
18457
  },
18330
- set: function (value) {
18331
- if (this._imageUrl === value) {
18332
- return;
18458
+ /**
18459
+ * The title text displayed at the top of the slate
18460
+ */
18461
+ set: function (title) {
18462
+ this._titleText = title;
18463
+ if (this._titleTextComponent) {
18464
+ this._titleTextComponent.text = title;
18333
18465
  }
18334
- this._imageUrl = value;
18335
- this._rebuildContent();
18336
- this._resetContentPositionAndZoom();
18337
- this._applyContentViewport();
18338
18466
  },
18339
18467
  enumerable: false,
18340
18468
  configurable: true
@@ -18346,18 +18474,9 @@ var HolographicSlate = /** @class */ (function (_super) {
18346
18474
  */
18347
18475
  HolographicSlate.prototype._applyFacade = function (facadeTexture) {
18348
18476
  this._contentMaterial.albedoTexture = facadeTexture;
18349
- };
18350
- HolographicSlate.prototype._rebuildContent = function () {
18351
- this._disposeFacadeTexture();
18352
- if (babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["DomManagement"].IsDocumentAvailable() && !!document.createElement) {
18353
- if (this._imageUrl) {
18354
- var image = new _2D_controls_image__WEBPACK_IMPORTED_MODULE_5__["Image"]();
18355
- image.source = this._imageUrl;
18356
- if (this._contentPlate) {
18357
- this.content = image;
18358
- }
18359
- }
18360
- }
18477
+ this._resetContentPositionAndZoom();
18478
+ this._applyContentViewport();
18479
+ facadeTexture.attachToMesh(this._contentPlate, true);
18361
18480
  };
18362
18481
  HolographicSlate.prototype._addControl = function (control) {
18363
18482
  control._host = this._host;
@@ -18372,32 +18491,40 @@ var HolographicSlate = /** @class */ (function (_super) {
18372
18491
  * @hidden
18373
18492
  */
18374
18493
  HolographicSlate.prototype._positionElements = function () {
18375
- var followButtonMesh = this._followButton.mesh;
18376
- var closeButtonMesh = this._closeButton.mesh;
18377
- var backPlate = this._backPlate;
18494
+ var followButton = this._followButton;
18495
+ var closeButton = this._closeButton;
18496
+ var titleBar = this._titleBar;
18497
+ var titleBarTitle = this._titleBarTitle;
18378
18498
  var contentPlate = this._contentPlate;
18379
- if (followButtonMesh && closeButtonMesh && backPlate) {
18380
- // World size of a button with 1 scaling
18381
- var buttonBaseSize = 1;
18382
- // Buttons take full backPlate on Y axis
18383
- var backPlateYScale = this.backplateDimensions.y / buttonBaseSize;
18384
- closeButtonMesh.scaling.setAll(backPlateYScale);
18385
- followButtonMesh.scaling.setAll(backPlateYScale);
18386
- closeButtonMesh.position
18387
- .copyFromFloats(this.backplateDimensions.x - backPlateYScale / 2, -this.backplateDimensions.y / 2, (-this.backplateDimensions.z / 2) * (this._host.scene.useRightHandedSystem ? -1 : 1))
18499
+ var backPlate = this._backPlate;
18500
+ if (followButton && closeButton && titleBar) {
18501
+ closeButton.scaling.setAll(this.titleBarHeight);
18502
+ followButton.scaling.setAll(this.titleBarHeight);
18503
+ closeButton.position
18504
+ .copyFromFloats(this.dimensions.x - this.titleBarHeight / 2, -this.titleBarHeight / 2, 0)
18388
18505
  .addInPlace(this.origin);
18389
- followButtonMesh.position
18390
- .copyFromFloats(this.backplateDimensions.x - (3 * backPlateYScale) / 2, -this.backplateDimensions.y / 2, (-this.backplateDimensions.z / 2) * (this._host.scene.useRightHandedSystem ? -1 : 1))
18506
+ followButton.position
18507
+ .copyFromFloats(this.dimensions.x - (3 * this.titleBarHeight) / 2, -this.titleBarHeight / 2, 0)
18391
18508
  .addInPlace(this.origin);
18392
- var contentPlateHeight = this.dimensions.y - this.backplateDimensions.y - this.backPlateMargin;
18393
- backPlate.scaling.copyFrom(this.backplateDimensions);
18394
- contentPlate.scaling.copyFromFloats(this.dimensions.x, contentPlateHeight, this.dimensions.z);
18395
- backPlate.position.copyFromFloats(this.backplateDimensions.x / 2, -(this.backplateDimensions.y / 2), 0).addInPlace(this.origin);
18396
- contentPlate.position.copyFromFloats(this.dimensions.x / 2, -(this.backplateDimensions.y + this.backPlateMargin + contentPlateHeight / 2), 0).addInPlace(this.origin);
18509
+ var contentPlateHeight = this.dimensions.y - this.titleBarHeight - this.titleBarMargin;
18510
+ var rightHandScene = contentPlate.getScene().useRightHandedSystem;
18511
+ titleBar.scaling.set(this.dimensions.x, this.titleBarHeight, babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"]);
18512
+ titleBarTitle.scaling.set(this.dimensions.x - (2 * this.titleBarHeight), this.titleBarHeight, babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"]);
18513
+ contentPlate.scaling.copyFromFloats(this.dimensions.x, contentPlateHeight, babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"]);
18514
+ backPlate.scaling.copyFromFloats(this.dimensions.x, contentPlateHeight, babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"]);
18515
+ titleBar.position.copyFromFloats(this.dimensions.x / 2, -(this.titleBarHeight / 2), 0).addInPlace(this.origin);
18516
+ 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);
18517
+ contentPlate.position.copyFromFloats(this.dimensions.x / 2, -(this.titleBarHeight + this.titleBarMargin + contentPlateHeight / 2), 0).addInPlace(this.origin);
18518
+ 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);
18519
+ // Update the title's AdvancedDynamicTexture scale to avoid visual stretching
18520
+ this._titleTextComponent.host.scaleTo(HolographicSlate.DEFAULT_TEXT_RESOLUTION_Y * titleBarTitle.scaling.x / titleBarTitle.scaling.y, HolographicSlate.DEFAULT_TEXT_RESOLUTION_Y);
18397
18521
  var aspectRatio = this.dimensions.x / contentPlateHeight;
18398
18522
  this._contentViewport.width = this._contentScaleRatio;
18399
18523
  this._contentViewport.height = this._contentScaleRatio / aspectRatio;
18400
18524
  this._applyContentViewport();
18525
+ if (this._gizmo) {
18526
+ this._gizmo.updateBoundingBox();
18527
+ }
18401
18528
  }
18402
18529
  };
18403
18530
  HolographicSlate.prototype._applyContentViewport = function () {
@@ -18423,45 +18550,61 @@ var HolographicSlate = /** @class */ (function (_super) {
18423
18550
  return;
18424
18551
  }
18425
18552
  // Update pivot point so it is at the center of geometry
18426
- var center = this.dimensions.scale(0.5);
18427
18553
  // As origin is topleft corner in 2D, dimensions are calculated towards bottom right corner, thus y axis is downwards
18428
- center.y *= -1;
18554
+ 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"]);
18429
18555
  center.addInPlace(this.origin);
18430
18556
  center.z = 0;
18431
- var origin = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0, 0, 0);
18432
- babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformCoordinatesToRef(origin, this.mesh.computeWorldMatrix(true), origin);
18557
+ var origin = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"](0, 0, 0);
18558
+ babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].TransformCoordinatesToRef(origin, this.mesh.computeWorldMatrix(true), origin);
18433
18559
  this.mesh.setPivotPoint(center);
18434
- var origin2 = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0, 0, 0);
18435
- babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformCoordinatesToRef(origin2, this.mesh.computeWorldMatrix(true), origin2);
18560
+ var origin2 = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"](0, 0, 0);
18561
+ babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].TransformCoordinatesToRef(origin2, this.mesh.computeWorldMatrix(true), origin2);
18436
18562
  this.mesh.position.addInPlace(origin).subtractInPlace(origin2);
18437
18563
  };
18438
18564
  // Mesh association
18439
18565
  HolographicSlate.prototype._createNode = function (scene) {
18440
18566
  var _this = this;
18441
- var node = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Mesh"]("slate" + this.name, scene);
18442
- this._backPlate = Object(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])("backPlate" + this.name, { size: 1 }, scene);
18443
- var faceUV = new Array(6).fill(new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector4"](0, 0, 1, 1));
18567
+ var node = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Mesh"]("slate_" + this.name, scene);
18568
+ this._titleBar = Object(babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["CreateBox"])("titleBar_" + this.name, { size: 1 }, scene);
18569
+ this._titleBarTitle = Object(babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["CreatePlane"])("titleText_" + this.name, { size: 1 }, scene);
18570
+ this._titleBarTitle.parent = node;
18571
+ this._titleBarTitle.isPickable = false;
18572
+ var adt = _2D_advancedDynamicTexture__WEBPACK_IMPORTED_MODULE_3__["AdvancedDynamicTexture"].CreateForMesh(this._titleBarTitle);
18573
+ this._titleTextComponent = new _2D_controls_textBlock__WEBPACK_IMPORTED_MODULE_5__["TextBlock"]("titleText_" + this.name, this._titleText);
18574
+ this._titleTextComponent.textWrapping = _2D_controls_textBlock__WEBPACK_IMPORTED_MODULE_5__["TextWrapping"].Ellipsis;
18575
+ this._titleTextComponent.textHorizontalAlignment = _2D_controls_control__WEBPACK_IMPORTED_MODULE_4__["Control"].HORIZONTAL_ALIGNMENT_LEFT;
18576
+ this._titleTextComponent.color = "white";
18577
+ this._titleTextComponent.fontSize = HolographicSlate.DEFAULT_TEXT_RESOLUTION_Y / 2;
18578
+ this._titleTextComponent.paddingLeft = HolographicSlate.DEFAULT_TEXT_RESOLUTION_Y / 4;
18579
+ adt.addControl(this._titleTextComponent);
18444
18580
  if (scene.useRightHandedSystem) {
18445
- faceUV[0].copyFromFloats(0, 1, 1, 0);
18581
+ var faceUV = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector4"](0, 0, 1, 1);
18582
+ 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);
18583
+ 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);
18446
18584
  }
18447
- this._contentPlate = Object(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])("contentPlate" + this.name, { size: 1, faceUV: faceUV }, scene);
18448
- this._backPlate.parent = node;
18449
- this._backPlate.isNearGrabbable = true;
18585
+ else {
18586
+ var faceUV = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector4"](0, 0, 1, 1);
18587
+ 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);
18588
+ 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);
18589
+ }
18590
+ this._titleBar.parent = node;
18591
+ this._titleBar.isNearGrabbable = true;
18450
18592
  this._contentPlate.parent = node;
18593
+ this._backPlate.parent = node;
18451
18594
  this._attachContentPlateBehavior();
18452
18595
  this._addControl(this._followButton);
18453
18596
  this._addControl(this._closeButton);
18454
- var followButtonMesh = this._followButton.mesh;
18455
- var closeButtonMesh = this._closeButton.mesh;
18456
- followButtonMesh.parent = node;
18457
- closeButtonMesh.parent = node;
18597
+ var followButton = this._followButton;
18598
+ var closeButton = this._closeButton;
18599
+ followButton.node.parent = node;
18600
+ closeButton.node.parent = node;
18458
18601
  this._positionElements();
18459
18602
  this._followButton.imageUrl = HolographicSlate.ASSETS_BASE_URL + HolographicSlate.FOLLOW_ICON_FILENAME;
18460
18603
  this._closeButton.imageUrl = HolographicSlate.ASSETS_BASE_URL + HolographicSlate.CLOSE_ICON_FILENAME;
18461
18604
  this._followButton.isBackplateVisible = false;
18462
18605
  this._closeButton.isBackplateVisible = false;
18463
- this._followButton.onPointerClickObservable.add(function () {
18464
- _this._defaultBehavior.followBehaviorEnabled = !_this._defaultBehavior.followBehaviorEnabled;
18606
+ this._followButton.onToggleObservable.add(function (isToggled) {
18607
+ _this._defaultBehavior.followBehaviorEnabled = isToggled;
18465
18608
  if (_this._defaultBehavior.followBehaviorEnabled) {
18466
18609
  _this._defaultBehavior.followBehavior.recenter();
18467
18610
  }
@@ -18469,7 +18612,7 @@ var HolographicSlate = /** @class */ (function (_super) {
18469
18612
  this._closeButton.onPointerClickObservable.add(function () {
18470
18613
  _this.dispose();
18471
18614
  });
18472
- node.rotationQuaternion = babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Quaternion"].Identity();
18615
+ node.rotationQuaternion = babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Quaternion"].Identity();
18473
18616
  node.isVisible = false;
18474
18617
  return node;
18475
18618
  };
@@ -18479,11 +18622,11 @@ var HolographicSlate = /** @class */ (function (_super) {
18479
18622
  this._contentDragBehavior.moveAttached = false;
18480
18623
  this._contentDragBehavior.useObjectOrientationForDragging = true;
18481
18624
  this._contentDragBehavior.updateDragPlane = false;
18482
- var origin = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
18483
- var worldDimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
18484
- var upWorld = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
18485
- var rightWorld = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
18486
- var projectedOffset = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector2"]();
18625
+ var origin = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"]();
18626
+ var worldDimensions = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"]();
18627
+ var upWorld = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"]();
18628
+ var rightWorld = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"]();
18629
+ var projectedOffset = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector2"]();
18487
18630
  var startViewport;
18488
18631
  var worldMatrix;
18489
18632
  this._contentDragBehavior.onDragStartObservable.add(function (event) {
@@ -18493,65 +18636,67 @@ var HolographicSlate = /** @class */ (function (_super) {
18493
18636
  startViewport = _this._contentViewport.clone();
18494
18637
  worldMatrix = _this.node.computeWorldMatrix(true);
18495
18638
  origin.copyFrom(event.dragPlanePoint);
18496
- worldDimensions.copyFrom(_this.dimensions);
18497
- worldDimensions.y -= _this.backplateDimensions.y + _this.backPlateMargin;
18498
- babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformNormalToRef(worldDimensions, worldMatrix, worldDimensions);
18639
+ worldDimensions.set(_this.dimensions.x, _this.dimensions.y, babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"]);
18640
+ worldDimensions.y -= _this.titleBarHeight + _this.titleBarMargin;
18641
+ babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].TransformNormalToRef(worldDimensions, worldMatrix, worldDimensions);
18499
18642
  upWorld.copyFromFloats(0, 1, 0);
18500
- babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformNormalToRef(upWorld, worldMatrix, upWorld);
18643
+ babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].TransformNormalToRef(upWorld, worldMatrix, upWorld);
18501
18644
  rightWorld.copyFromFloats(1, 0, 0);
18502
- babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformNormalToRef(rightWorld, worldMatrix, rightWorld);
18645
+ babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].TransformNormalToRef(rightWorld, worldMatrix, rightWorld);
18503
18646
  upWorld.normalize();
18504
- upWorld.scaleInPlace(1 / babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Dot(upWorld, worldDimensions));
18647
+ upWorld.scaleInPlace(1 / babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].Dot(upWorld, worldDimensions));
18505
18648
  rightWorld.normalize();
18506
- rightWorld.scaleInPlace(1 / babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Dot(rightWorld, worldDimensions));
18649
+ rightWorld.scaleInPlace(1 / babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"].Dot(rightWorld, worldDimensions));
18507
18650
  });
18508
- var offset = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
18651
+ var offset = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector3"]();
18509
18652
  this._contentDragBehavior.onDragObservable.add(function (event) {
18510
18653
  offset.copyFrom(event.dragPlanePoint);
18511
18654
  offset.subtractInPlace(origin);
18512
- 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));
18655
+ 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));
18513
18656
  // By default, content takes full width available and height is cropped to keep aspect ratio
18514
- _this._contentViewport.x = babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Scalar"].Clamp(startViewport.x - offset.x, 0, 1 - _this._contentViewport.width * _this._contentScaleRatio);
18515
- _this._contentViewport.y = babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Scalar"].Clamp(startViewport.y - offset.y, 0, 1 - _this._contentViewport.height * _this._contentScaleRatio);
18657
+ _this._contentViewport.x = babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Scalar"].Clamp(startViewport.x - offset.x, 0, 1 - _this._contentViewport.width * _this._contentScaleRatio);
18658
+ _this._contentViewport.y = babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Scalar"].Clamp(startViewport.y - offset.y, 0, 1 - _this._contentViewport.height * _this._contentScaleRatio);
18516
18659
  _this._applyContentViewport();
18517
18660
  });
18518
18661
  };
18519
18662
  HolographicSlate.prototype._affectMaterial = function (mesh) {
18520
18663
  // TODO share materials
18521
- this._backPlateMaterial = new _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_8__["FluentBackplateMaterial"]("".concat(this.name, " plateMaterial"), mesh.getScene());
18522
- this._pickedPointObserver = this._host.onPickedPointChangedObservable.add(function (pickedPoint) {
18523
- // if (pickedPoint) {
18524
- // this._backPlateMaterial. = pickedPoint;
18525
- // this._backPlateMaterial.hoverColor.a = 1.0;
18526
- // } else {
18527
- // this._backPlateMaterial.hoverColor.a = 0;
18528
- // }
18529
- });
18530
- this._contentMaterial = new _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_2__["FluentMaterial"](this.name + "contentMaterial", mesh.getScene());
18664
+ this._titleBarMaterial = new _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_9__["FluentBackplateMaterial"]("".concat(this.name, " plateMaterial"), mesh.getScene());
18665
+ this._contentMaterial = new _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_8__["FluentMaterial"]("".concat(this.name, " contentMaterial"), mesh.getScene());
18531
18666
  this._contentMaterial.renderBorders = true;
18532
- this._backPlate.material = this._backPlateMaterial;
18667
+ this._backMaterial = new _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_9__["FluentBackplateMaterial"]("".concat(this.name, " backPlate"), mesh.getScene());
18668
+ this._backMaterial.lineWidth = babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Epsilon"];
18669
+ this._backMaterial.radius = 0.005;
18670
+ this._backMaterial.backFaceCulling = true;
18671
+ this._titleBar.material = this._titleBarMaterial;
18533
18672
  this._contentPlate.material = this._contentMaterial;
18534
- this._rebuildContent();
18673
+ this._backPlate.material = this._backMaterial;
18674
+ this._resetContent();
18535
18675
  this._applyContentViewport();
18536
18676
  };
18537
18677
  /** @hidden **/
18538
18678
  HolographicSlate.prototype._prepareNode = function (scene) {
18539
18679
  var _this = this;
18540
18680
  _super.prototype._prepareNode.call(this, scene);
18541
- this._gizmo = new _gizmos_slateGizmo__WEBPACK_IMPORTED_MODULE_6__["SlateGizmo"](this._host.utilityLayer);
18681
+ this._gizmo = new _gizmos_slateGizmo__WEBPACK_IMPORTED_MODULE_7__["SlateGizmo"](this._host.utilityLayer);
18542
18682
  this._gizmo.attachedSlate = this;
18543
- this._defaultBehavior = new _behaviors_defaultBehavior__WEBPACK_IMPORTED_MODULE_7__["DefaultBehavior"]();
18544
- this._defaultBehavior.attach(this.node, [this._backPlate]);
18683
+ this._defaultBehavior = new _behaviors_defaultBehavior__WEBPACK_IMPORTED_MODULE_6__["DefaultBehavior"]();
18684
+ this._defaultBehavior.attach(this.node, [this._titleBar]);
18685
+ this._defaultBehavior.sixDofDragBehavior.onDragStartObservable.add(function () {
18686
+ _this._followButton.isToggled = false;
18687
+ });
18545
18688
  this._positionChangedObserver = this._defaultBehavior.sixDofDragBehavior.onPositionChangedObservable.add(function () {
18546
18689
  _this._gizmo.updateBoundingBox();
18547
18690
  });
18548
18691
  this._updatePivot();
18549
- this.resetDefaultAspectAndPose();
18692
+ this.resetDefaultAspectAndPose(false);
18550
18693
  };
18551
18694
  /**
18552
18695
  * Resets the aspect and pose of the slate so it is right in front of the active camera, facing towards it.
18696
+ * @param resetAspect Should the slate's dimensions/aspect ratio be reset as well
18553
18697
  */
18554
- HolographicSlate.prototype.resetDefaultAspectAndPose = function () {
18698
+ HolographicSlate.prototype.resetDefaultAspectAndPose = function (resetAspect) {
18699
+ if (resetAspect === void 0) { resetAspect = true; }
18555
18700
  if (!this._host || !this._host.utilityLayer || !this.node) {
18556
18701
  return;
18557
18702
  }
@@ -18559,13 +18704,15 @@ var HolographicSlate = /** @class */ (function (_super) {
18559
18704
  var camera = scene.activeCamera;
18560
18705
  if (camera) {
18561
18706
  var worldMatrix = camera.getWorldMatrix();
18562
- 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);
18563
- this.dimensions.copyFrom(this.defaultDimensions);
18707
+ 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);
18564
18708
  this.origin.setAll(0);
18565
18709
  this._gizmo.updateBoundingBox();
18566
18710
  var pivot = this.node.getAbsolutePivotPoint();
18567
18711
  this.node.position.copyFrom(camera.position).subtractInPlace(backward).subtractInPlace(pivot);
18568
- 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));
18712
+ 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));
18713
+ if (resetAspect) {
18714
+ this.dimensions = this.defaultDimensions;
18715
+ }
18569
18716
  }
18570
18717
  };
18571
18718
  /**
@@ -18573,10 +18720,12 @@ var HolographicSlate = /** @class */ (function (_super) {
18573
18720
  */
18574
18721
  HolographicSlate.prototype.dispose = function () {
18575
18722
  _super.prototype.dispose.call(this);
18576
- this._backPlateMaterial.dispose();
18723
+ this._titleBarMaterial.dispose();
18577
18724
  this._contentMaterial.dispose();
18578
- this._backPlate.dispose();
18725
+ this._titleBar.dispose();
18726
+ this._titleBarTitle.dispose();
18579
18727
  this._contentPlate.dispose();
18728
+ this._backPlate.dispose();
18580
18729
  this._followButton.dispose();
18581
18730
  this._closeButton.dispose();
18582
18731
  this._host.onPickedPointChangedObservable.remove(this._pickedPointObserver);
@@ -18597,8 +18746,9 @@ var HolographicSlate = /** @class */ (function (_super) {
18597
18746
  * File name for the close icon.
18598
18747
  */
18599
18748
  HolographicSlate.FOLLOW_ICON_FILENAME = "IconFollowMe.png";
18749
+ HolographicSlate.DEFAULT_TEXT_RESOLUTION_Y = 102.4;
18600
18750
  return HolographicSlate;
18601
- }(_contentDisplay3D__WEBPACK_IMPORTED_MODULE_4__["ContentDisplay3D"]));
18751
+ }(_contentDisplay3D__WEBPACK_IMPORTED_MODULE_1__["ContentDisplay3D"]));
18602
18752
 
18603
18753
 
18604
18754
 
@@ -18919,7 +19069,7 @@ var NearMenu = /** @class */ (function (_super) {
18919
19069
  __webpack_require__.r(__webpack_exports__);
18920
19070
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PlanePanel", function() { return PlanePanel; });
18921
19071
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
18922
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
19072
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
18923
19073
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
18924
19074
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
18925
19075
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
@@ -18974,7 +19124,7 @@ var PlanePanel = /** @class */ (function (_super) {
18974
19124
  __webpack_require__.r(__webpack_exports__);
18975
19125
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ScatterPanel", function() { return ScatterPanel; });
18976
19126
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
18977
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
19127
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
18978
19128
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
18979
19129
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
18980
19130
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
@@ -19101,7 +19251,7 @@ var ScatterPanel = /** @class */ (function (_super) {
19101
19251
  __webpack_require__.r(__webpack_exports__);
19102
19252
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Slider3D", function() { return Slider3D; });
19103
19253
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19104
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
19254
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
19105
19255
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
19106
19256
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
19107
19257
  /* harmony import */ var _materials_mrdl_mrdlSliderBarMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/mrdl/mrdlSliderBarMaterial */ "./3D/materials/mrdl/mrdlSliderBarMaterial.ts");
@@ -19389,7 +19539,7 @@ var Slider3D = /** @class */ (function (_super) {
19389
19539
  __webpack_require__.r(__webpack_exports__);
19390
19540
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SpherePanel", function() { return SpherePanel; });
19391
19541
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19392
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
19542
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
19393
19543
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
19394
19544
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
19395
19545
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
@@ -19475,7 +19625,7 @@ var SpherePanel = /** @class */ (function (_super) {
19475
19625
  __webpack_require__.r(__webpack_exports__);
19476
19626
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StackPanel3D", function() { return StackPanel3D; });
19477
19627
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19478
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
19628
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
19479
19629
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
19480
19630
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
19481
19631
 
@@ -19600,7 +19750,7 @@ var StackPanel3D = /** @class */ (function (_super) {
19600
19750
  __webpack_require__.r(__webpack_exports__);
19601
19751
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchButton3D", function() { return TouchButton3D; });
19602
19752
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19603
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
19753
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
19604
19754
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
19605
19755
  /* harmony import */ var _button3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./button3D */ "./3D/controls/button3D.ts");
19606
19756
  // Assumptions: absolute position of button mesh is inside the mesh
@@ -19623,6 +19773,7 @@ var TouchButton3D = /** @class */ (function (_super) {
19623
19773
  function TouchButton3D(name, collisionMesh) {
19624
19774
  var _this = _super.call(this, name) || this;
19625
19775
  _this._isNearPressed = false;
19776
+ _this._interactionSurfaceHeight = 0;
19626
19777
  _this._isToggleButton = false;
19627
19778
  _this._toggleState = false;
19628
19779
  _this._toggleButtonCallback = function () { _this._onToggle(!_this._toggleState); };
@@ -19636,6 +19787,16 @@ var TouchButton3D = /** @class */ (function (_super) {
19636
19787
  }
19637
19788
  return _this;
19638
19789
  }
19790
+ Object.defineProperty(TouchButton3D.prototype, "isActiveNearInteraction", {
19791
+ /**
19792
+ * Whether the current interaction is caused by near interaction or not
19793
+ */
19794
+ get: function () {
19795
+ return this._isNearPressed;
19796
+ },
19797
+ enumerable: false,
19798
+ configurable: true
19799
+ });
19639
19800
  Object.defineProperty(TouchButton3D.prototype, "collidableFrontDirection", {
19640
19801
  /**
19641
19802
  * Returns the front-facing direction of the button, or Vector3.Zero if there is no 'front'
@@ -19672,14 +19833,29 @@ var TouchButton3D = /** @class */ (function (_super) {
19672
19833
  * @param collisionMesh the new collision mesh for the button
19673
19834
  */
19674
19835
  set: function (collisionMesh) {
19675
- var _a, _b;
19676
- // Remove the GUI3DManager's data from the previous collision mesh's reserved data store
19677
- if ((_b = (_a = this._collisionMesh) === null || _a === void 0 ? void 0 : _a.reservedDataStore) === null || _b === void 0 ? void 0 : _b.GUI3D) {
19678
- this._collisionMesh.reservedDataStore.GUI3D = {};
19836
+ var _this = this;
19837
+ var _a;
19838
+ // Remove the GUI3DManager's data from the previous collision mesh's reserved data store, and reset interactability
19839
+ if (this._collisionMesh) {
19840
+ this._collisionMesh.isNearPickable = false;
19841
+ if ((_a = this._collisionMesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) {
19842
+ this._collisionMesh.reservedDataStore.GUI3D = {};
19843
+ }
19844
+ this._collisionMesh.getChildMeshes().forEach(function (mesh) {
19845
+ var _a;
19846
+ mesh.isNearPickable = false;
19847
+ if ((_a = mesh.reservedDataStore) === null || _a === void 0 ? void 0 : _a.GUI3D) {
19848
+ mesh.reservedDataStore.GUI3D = {};
19849
+ }
19850
+ });
19679
19851
  }
19680
19852
  this._collisionMesh = collisionMesh;
19681
19853
  this._injectGUI3DReservedDataStore(this._collisionMesh).control = this;
19682
19854
  this._collisionMesh.isNearPickable = true;
19855
+ this._collisionMesh.getChildMeshes().forEach(function (mesh) {
19856
+ _this._injectGUI3DReservedDataStore(mesh).control = _this;
19857
+ mesh.isNearPickable = true;
19858
+ });
19683
19859
  this.collidableFrontDirection = collisionMesh.forward;
19684
19860
  },
19685
19861
  enumerable: false,
@@ -19736,6 +19912,18 @@ var TouchButton3D = /** @class */ (function (_super) {
19736
19912
  TouchButton3D.prototype._isInteractionInFrontOfButton = function (collidablePos) {
19737
19913
  return this._getInteractionHeight(collidablePos, this._collisionMesh.getAbsolutePosition()) > 0;
19738
19914
  };
19915
+ /**
19916
+ * Get the height of the touchPoint from the collidable part of the button
19917
+ * @param touchPoint the point to compare to the button, in absolute position
19918
+ * @returns the depth of the touch point into the front of the button
19919
+ */
19920
+ TouchButton3D.prototype.getPressDepth = function (touchPoint) {
19921
+ if (!this._isNearPressed) {
19922
+ return 0;
19923
+ }
19924
+ var interactionHeight = this._getInteractionHeight(touchPoint, this._collisionMesh.getAbsolutePosition());
19925
+ return this._interactionSurfaceHeight - interactionHeight;
19926
+ };
19739
19927
  // Returns true if the collidable is in front of the button, or if the button has no front direction
19740
19928
  TouchButton3D.prototype._getInteractionHeight = function (interactionPos, basePos) {
19741
19929
  var frontDir = this.collidableFrontDirection;
@@ -19756,6 +19944,7 @@ var TouchButton3D = /** @class */ (function (_super) {
19756
19944
  }
19757
19945
  else {
19758
19946
  this._isNearPressed = true;
19947
+ this._interactionSurfaceHeight = this._getInteractionHeight(nearMeshPosition, this._collisionMesh.getAbsolutePosition());
19759
19948
  }
19760
19949
  }
19761
19950
  if (providedType === babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERUP) {
@@ -19806,7 +19995,7 @@ var TouchButton3D = /** @class */ (function (_super) {
19806
19995
  __webpack_require__.r(__webpack_exports__);
19807
19996
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchHolographicButton", function() { return TouchHolographicButton; });
19808
19997
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19809
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
19998
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
19810
19999
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
19811
20000
  /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
19812
20001
  /* harmony import */ var _materials_fluentButton_fluentButtonMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/fluentButton/fluentButtonMaterial */ "./3D/materials/fluentButton/fluentButtonMaterial.ts");
@@ -19833,6 +20022,7 @@ __webpack_require__.r(__webpack_exports__);
19833
20022
 
19834
20023
 
19835
20024
 
20025
+
19836
20026
  /**
19837
20027
  * Class used to create a holographic button in 3D
19838
20028
  * @since 5.0.0
@@ -19862,7 +20052,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19862
20052
  _this._frontMaterial.rightBlobEnable = false;
19863
20053
  };
19864
20054
  _this.pointerDownAnimation = function () {
19865
- if (_this._frontPlate && !_this._isNearPressed) {
20055
+ if (_this._frontPlate && !_this.isActiveNearInteraction) {
19866
20056
  _this._frontPlate.scaling.z = _this._frontPlateDepth * 0.2;
19867
20057
  _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);
19868
20058
  _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);
@@ -19876,7 +20066,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19876
20066
  }
19877
20067
  };
19878
20068
  _this.onPointerMoveObservable.add(function (position) {
19879
- if (_this._frontPlate && _this._isNearPressed) {
20069
+ if (_this._frontPlate && _this.isActiveNearInteraction) {
19880
20070
  var scale = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Zero();
19881
20071
  if (_this._backPlate.getWorldMatrix().decompose(scale, undefined, undefined)) {
19882
20072
  var interactionHeight = _this._getInteractionHeight(position, _this._backPlate.getAbsolutePosition()) / scale.z;
@@ -19924,6 +20114,16 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19924
20114
  enumerable: false,
19925
20115
  configurable: true
19926
20116
  });
20117
+ Object.defineProperty(TouchHolographicButton.prototype, "mesh", {
20118
+ /**
20119
+ * Gets the mesh used to render this control
20120
+ */
20121
+ get: function () {
20122
+ return this._backPlate;
20123
+ },
20124
+ enumerable: false,
20125
+ configurable: true
20126
+ });
19927
20127
  Object.defineProperty(TouchHolographicButton.prototype, "tooltipText", {
19928
20128
  get: function () {
19929
20129
  if (this._tooltipTextBlock) {
@@ -20144,7 +20344,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
20144
20344
  height: 1.0,
20145
20345
  depth: this._backPlateDepth,
20146
20346
  }, scene);
20147
- this._backPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(scene.useRightHandedSystem).scale(-this._backPlateDepth / 2);
20347
+ this._backPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(scene.useRightHandedSystem).scale(this._backPlateDepth / 2);
20148
20348
  this._backPlate.isPickable = false;
20149
20349
  this._textPlate = _super.prototype._createNode.call(this, scene);
20150
20350
  this._textPlate.name = "".concat(this.name, "_textPlate");
@@ -20152,9 +20352,11 @@ var TouchHolographicButton = /** @class */ (function (_super) {
20152
20352
  this._textPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(scene.useRightHandedSystem).scale(-this._frontPlateDepth / 2);
20153
20353
  this._backPlate.addChild(collisionMesh);
20154
20354
  this._backPlate.addChild(this._textPlate);
20355
+ var tn = new babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["TransformNode"]("{this.name}_root", scene);
20356
+ this._backPlate.setParent(tn);
20155
20357
  this.collisionMesh = collisionMesh;
20156
20358
  this.collidableFrontDirection = this._backPlate.forward.negate(); // Mesh is facing the wrong way
20157
- return this._backPlate;
20359
+ return tn;
20158
20360
  };
20159
20361
  TouchHolographicButton.prototype._applyFacade = function (facadeTexture) {
20160
20362
  this._plateMaterial.emissiveTexture = facadeTexture;
@@ -20263,7 +20465,7 @@ __webpack_require__.r(__webpack_exports__);
20263
20465
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchHolographicMenu", function() { return TouchHolographicMenu; });
20264
20466
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20265
20467
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
20266
- /* harmony import */ var babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Meshes/mesh */ "babylonjs/Misc/perfCounter");
20468
+ /* harmony import */ var babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Meshes/mesh */ "babylonjs/Misc/observable");
20267
20469
  /* harmony import */ var babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2__);
20268
20470
  /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
20269
20471
 
@@ -20507,7 +20709,7 @@ var TouchMeshButton3D = /** @class */ (function (_super) {
20507
20709
  __webpack_require__.r(__webpack_exports__);
20508
20710
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VolumeBasedPanel", function() { return VolumeBasedPanel; });
20509
20711
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20510
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
20712
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
20511
20713
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
20512
20714
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
20513
20715
 
@@ -20702,7 +20904,7 @@ __webpack_require__.r(__webpack_exports__);
20702
20904
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SideHandle", function() { return SideHandle; });
20703
20905
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CornerHandle", function() { return CornerHandle; });
20704
20906
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20705
- /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/perfCounter");
20907
+ /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/observable");
20706
20908
  /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__);
20707
20909
  /* harmony import */ var _materials_handle_handleMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/handle/handleMaterial */ "./3D/materials/handle/handleMaterial.ts");
20708
20910
 
@@ -20956,7 +21158,7 @@ __webpack_require__.r(__webpack_exports__);
20956
21158
  __webpack_require__.r(__webpack_exports__);
20957
21159
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SlateGizmo", function() { return SlateGizmo; });
20958
21160
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20959
- /* harmony import */ var babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Gizmos/gizmo */ "babylonjs/Misc/perfCounter");
21161
+ /* harmony import */ var babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Gizmos/gizmo */ "babylonjs/Misc/observable");
20960
21162
  /* harmony import */ var babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__);
20961
21163
  /* harmony import */ var _gizmoHandle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./gizmoHandle */ "./3D/gizmos/gizmoHandle.ts");
20962
21164
 
@@ -20965,6 +21167,7 @@ __webpack_require__.r(__webpack_exports__);
20965
21167
 
20966
21168
 
20967
21169
 
21170
+
20968
21171
  /**
20969
21172
  * Gizmo to resize 2D slates
20970
21173
  */
@@ -20988,6 +21191,7 @@ var SlateGizmo = /** @class */ (function (_super) {
20988
21191
  * Value we use to offset handles from mesh
20989
21192
  */
20990
21193
  _this._margin = 0.35;
21194
+ _this._handleSize = 0.075;
20991
21195
  _this._attachedSlate = null;
20992
21196
  _this._existingSlateScale = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
20993
21197
  /**
@@ -20998,10 +21202,6 @@ var SlateGizmo = /** @class */ (function (_super) {
20998
21202
  * The distance away from the object which the draggable meshes should appear world sized when fixedScreenSize is set to true (default: 10)
20999
21203
  */
21000
21204
  _this.fixedScreenSizeDistanceFactor = 10;
21001
- /**
21002
- * Size of the handles (meters in XR)
21003
- */
21004
- _this.handleSize = 0.01;
21005
21205
  _this._createNode();
21006
21206
  _this.updateScale = false;
21007
21207
  _this._renderObserver = _this.gizmoLayer.originalScene.onBeforeRenderObservable.add(function () {
@@ -21072,7 +21272,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21072
21272
  var corner = new _gizmoHandle__WEBPACK_IMPORTED_MODULE_2__["CornerHandle"](this, this.gizmoLayer.utilityLayerScene);
21073
21273
  this._corners.push(corner);
21074
21274
  corner.node.rotation.z = (Math.PI / 2) * i;
21075
- corner.node.scaling.setAll(this.handleSize);
21076
21275
  corner.node.parent = this._handlesParent;
21077
21276
  this._assignDragBehaviorCorners(corner, function (originStart, dimensionsStart, offset, masks) { return _this._moveHandle(originStart, dimensionsStart, offset, masks, true); }, masksCorners[i]);
21078
21277
  }
@@ -21080,7 +21279,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21080
21279
  var side = new _gizmoHandle__WEBPACK_IMPORTED_MODULE_2__["SideHandle"](this, this.gizmoLayer.utilityLayerScene);
21081
21280
  this._sides.push(side);
21082
21281
  side.node.rotation.z = (Math.PI / 2) * i;
21083
- side.node.scaling.copyFromFloats(this.handleSize, this.handleSize, this.handleSize);
21084
21282
  side.node.parent = this._handlesParent;
21085
21283
  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));
21086
21284
  }
@@ -21127,8 +21325,7 @@ var SlateGizmo = /** @class */ (function (_super) {
21127
21325
  offsetOriginMasked.copyFrom(offset).multiplyInPlace(masks.origin);
21128
21326
  offsetDimensionsMasked.copyFrom(offset).multiplyInPlace(masks.dimensions);
21129
21327
  this._attachedSlate.origin.copyFrom(originStart).addInPlace(offsetOriginMasked);
21130
- this._attachedSlate.dimensions.copyFrom(dimensionsStart).addInPlace(offsetDimensionsMasked);
21131
- this._attachedSlate.backplateDimensions.x = this._attachedSlate.dimensions.x;
21328
+ this._attachedSlate.dimensions.set(dimensionsStart.x + offsetDimensionsMasked.x, dimensionsStart.y + offsetDimensionsMasked.y);
21132
21329
  };
21133
21330
  SlateGizmo.prototype._assignDragBehaviorCorners = function (handle, moveFn, masks) {
21134
21331
  var _this = this;
@@ -21137,7 +21334,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21137
21334
  var dragOrigin = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21138
21335
  var toObjectFrame = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Matrix"]();
21139
21336
  var dragPlaneNormal = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21140
- var previousFollowState = false;
21141
21337
  var projectToRef = function (position, normal, origin, ref) {
21142
21338
  // Projects on the plane with its normal and origin
21143
21339
  position.subtractToRef(origin, babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["TmpVectors"].Vector3[0]);
@@ -21148,13 +21344,12 @@ var SlateGizmo = /** @class */ (function (_super) {
21148
21344
  };
21149
21345
  var dragStart = function (event) {
21150
21346
  if (_this.attachedSlate && _this.attachedMesh) {
21151
- dimensionsStart.copyFrom(_this.attachedSlate.dimensions);
21347
+ dimensionsStart.set(_this.attachedSlate.dimensions.x, _this.attachedSlate.dimensions.y, babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Epsilon"]);
21152
21348
  originStart.copyFrom(_this.attachedSlate.origin);
21153
21349
  dragOrigin.copyFrom(event.position);
21154
21350
  toObjectFrame.copyFrom(_this.attachedMesh.computeWorldMatrix(true));
21155
21351
  toObjectFrame.invert();
21156
- previousFollowState = _this.attachedSlate.defaultBehavior.followBehaviorEnabled;
21157
- _this.attachedSlate.defaultBehavior.followBehaviorEnabled = false;
21352
+ _this.attachedSlate._followButton.isToggled = false;
21158
21353
  babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformNormalToRef(babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(), _this.attachedMesh.getWorldMatrix(), dragPlaneNormal);
21159
21354
  dragPlaneNormal.normalize();
21160
21355
  if (_this._handleHovered) {
@@ -21176,7 +21371,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21176
21371
  var dragEnd = function () {
21177
21372
  if (_this.attachedSlate && _this.attachedNode) {
21178
21373
  _this.attachedSlate._updatePivot();
21179
- _this.attachedSlate.defaultBehavior.followBehaviorEnabled = previousFollowState;
21180
21374
  if (_this._handleDragged) {
21181
21375
  _this._handleDragged.drag = false;
21182
21376
  _this._handleDragged = null;
@@ -21191,16 +21385,14 @@ var SlateGizmo = /** @class */ (function (_super) {
21191
21385
  var dragOrigin = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21192
21386
  var directionOrigin = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21193
21387
  var worldPivot = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21194
- var previousFollowState;
21195
21388
  var worldPlaneNormal = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21196
21389
  var dragStart = function (event) {
21197
21390
  if (_this.attachedSlate && _this.attachedMesh) {
21198
21391
  quaternionOrigin.copyFrom(_this.attachedMesh.rotationQuaternion);
21199
21392
  dragOrigin.copyFrom(event.position);
21200
- previousFollowState = _this.attachedSlate.defaultBehavior.followBehaviorEnabled;
21201
- _this.attachedSlate.defaultBehavior.followBehaviorEnabled = false;
21202
21393
  worldPivot.copyFrom(_this.attachedMesh.getAbsolutePivotPoint());
21203
21394
  directionOrigin.copyFrom(dragOrigin).subtractInPlace(worldPivot).normalize();
21395
+ _this.attachedSlate._followButton.isToggled = false;
21204
21396
  babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformNormalToRef(dragPlaneNormal, _this.attachedMesh.getWorldMatrix(), worldPlaneNormal);
21205
21397
  worldPlaneNormal.normalize();
21206
21398
  if (_this._handleHovered) {
@@ -21222,7 +21414,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21222
21414
  var dragEnd = function () {
21223
21415
  if (_this.attachedSlate && _this.attachedNode) {
21224
21416
  _this.attachedSlate._updatePivot();
21225
- _this.attachedSlate.defaultBehavior.followBehaviorEnabled = previousFollowState;
21226
21417
  if (_this._handleDragged) {
21227
21418
  _this._handleDragged.drag = false;
21228
21419
  _this._handleDragged = null;
@@ -21262,6 +21453,7 @@ var SlateGizmo = /** @class */ (function (_super) {
21262
21453
  this._boundingBoxGizmo.max = boundingMinMax.max;
21263
21454
  // Update handles of the gizmo
21264
21455
  this._updateHandlesPosition();
21456
+ this._updateHandlesScaling();
21265
21457
  // Restore position/rotation values
21266
21458
  this.attachedMesh.rotationQuaternion.copyFrom(this._tmpQuaternion);
21267
21459
  this.attachedMesh.position.copyFrom(this._tmpVector);
@@ -21290,6 +21482,19 @@ var SlateGizmo = /** @class */ (function (_super) {
21290
21482
  this._sides[2].node.position.copyFromFloats(max.x, center.y, 0);
21291
21483
  this._sides[3].node.position.copyFromFloats(center.x, max.y, 0);
21292
21484
  };
21485
+ SlateGizmo.prototype._updateHandlesScaling = function () {
21486
+ if (this._attachedSlate && this._attachedSlate.mesh) {
21487
+ var scaledWidth = this._attachedSlate.mesh.scaling.x * this._attachedSlate.dimensions.x;
21488
+ var scaledHeight = this._attachedSlate.mesh.scaling.y * this._attachedSlate.dimensions.y;
21489
+ var scale = Math.min(scaledWidth, scaledHeight) * this._handleSize;
21490
+ for (var index = 0; index < this._corners.length; index++) {
21491
+ this._corners[index].node.scaling.setAll(scale);
21492
+ }
21493
+ for (var index = 0; index < this._sides.length; index++) {
21494
+ this._sides[index].node.scaling.setAll(scale);
21495
+ }
21496
+ }
21497
+ };
21293
21498
  SlateGizmo.prototype._update = function () {
21294
21499
  _super.prototype._update.call(this);
21295
21500
  if (!this.gizmoLayer.utilityLayerScene.activeCamera) {
@@ -21298,10 +21503,13 @@ var SlateGizmo = /** @class */ (function (_super) {
21298
21503
  if (this._attachedSlate && this._attachedSlate.mesh) {
21299
21504
  if (this.fixedScreenSize) {
21300
21505
  this._attachedSlate.mesh.absolutePosition.subtractToRef(this.gizmoLayer.utilityLayerScene.activeCamera.position, this._tmpVector);
21301
- var distanceFromCamera = (this.handleSize * this._tmpVector.length()) / this.fixedScreenSizeDistanceFactor;
21506
+ var distanceFromCamera = (this._handleSize * this._tmpVector.length()) / this.fixedScreenSizeDistanceFactor;
21302
21507
  for (var i = 0; i < this._corners.length; i++) {
21303
21508
  this._corners[i].node.scaling.set(distanceFromCamera, distanceFromCamera, distanceFromCamera);
21304
21509
  }
21510
+ for (var i = 0; i < this._sides.length; i++) {
21511
+ this._sides[i].node.scaling.set(distanceFromCamera, distanceFromCamera, distanceFromCamera);
21512
+ }
21305
21513
  }
21306
21514
  this._updateHandlesPosition();
21307
21515
  }
@@ -21336,7 +21544,7 @@ var SlateGizmo = /** @class */ (function (_super) {
21336
21544
  "use strict";
21337
21545
  __webpack_require__.r(__webpack_exports__);
21338
21546
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GUI3DManager", function() { return GUI3DManager; });
21339
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
21547
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
21340
21548
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
21341
21549
  /* harmony import */ var _controls_container3D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./controls/container3D */ "./3D/controls/container3D.ts");
21342
21550
 
@@ -21707,7 +21915,7 @@ __webpack_require__.r(__webpack_exports__);
21707
21915
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentMaterialDefines", function() { return FluentMaterialDefines; });
21708
21916
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentMaterial", function() { return FluentMaterial; });
21709
21917
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
21710
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
21918
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
21711
21919
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
21712
21920
  /* harmony import */ var _shaders_fluent_vertex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/fluent.vertex */ "./3D/materials/fluent/shaders/fluent.vertex.ts");
21713
21921
  /* harmony import */ var _shaders_fluent_fragment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/fluent.fragment */ "./3D/materials/fluent/shaders/fluent.fragment.ts");
@@ -22025,7 +22233,7 @@ __webpack_require__.r(__webpack_exports__);
22025
22233
  "use strict";
22026
22234
  __webpack_require__.r(__webpack_exports__);
22027
22235
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentPixelShader", function() { return fluentPixelShader; });
22028
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22236
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
22029
22237
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22030
22238
 
22031
22239
  var name = 'fluentPixelShader';
@@ -22047,7 +22255,7 @@ var fluentPixelShader = { name: name, shader: shader };
22047
22255
  "use strict";
22048
22256
  __webpack_require__.r(__webpack_exports__);
22049
22257
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentVertexShader", function() { return fluentVertexShader; });
22050
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22258
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
22051
22259
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22052
22260
 
22053
22261
  var name = 'fluentVertexShader';
@@ -22070,7 +22278,7 @@ var fluentVertexShader = { name: name, shader: shader };
22070
22278
  __webpack_require__.r(__webpack_exports__);
22071
22279
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentBackplateMaterial", function() { return FluentBackplateMaterial; });
22072
22280
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
22073
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
22281
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
22074
22282
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
22075
22283
  /* harmony import */ var _shaders_fluentBackplate_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/fluentBackplate.fragment */ "./3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.ts");
22076
22284
  /* harmony import */ var _shaders_fluentBackplate_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/fluentBackplate.vertex */ "./3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.ts");
@@ -22539,7 +22747,7 @@ __webpack_require__.r(__webpack_exports__);
22539
22747
  "use strict";
22540
22748
  __webpack_require__.r(__webpack_exports__);
22541
22749
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentBackplatePixelShader", function() { return fluentBackplatePixelShader; });
22542
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22750
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
22543
22751
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22544
22752
 
22545
22753
  var name = 'fluentBackplatePixelShader';
@@ -22561,7 +22769,7 @@ var fluentBackplatePixelShader = { name: name, shader: shader };
22561
22769
  "use strict";
22562
22770
  __webpack_require__.r(__webpack_exports__);
22563
22771
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentBackplateVertexShader", function() { return fluentBackplateVertexShader; });
22564
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22772
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
22565
22773
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22566
22774
 
22567
22775
  var name = 'fluentBackplateVertexShader';
@@ -22584,7 +22792,7 @@ var fluentBackplateVertexShader = { name: name, shader: shader };
22584
22792
  __webpack_require__.r(__webpack_exports__);
22585
22793
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentButtonMaterial", function() { return FluentButtonMaterial; });
22586
22794
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
22587
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
22795
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
22588
22796
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
22589
22797
  /* harmony import */ var _shaders_fluentButton_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/fluentButton.fragment */ "./3D/materials/fluentButton/shaders/fluentButton.fragment.ts");
22590
22798
  /* harmony import */ var _shaders_fluentButton_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/fluentButton.vertex */ "./3D/materials/fluentButton/shaders/fluentButton.vertex.ts");
@@ -23156,7 +23364,7 @@ __webpack_require__.r(__webpack_exports__);
23156
23364
  "use strict";
23157
23365
  __webpack_require__.r(__webpack_exports__);
23158
23366
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentButtonPixelShader", function() { return fluentButtonPixelShader; });
23159
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
23367
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
23160
23368
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
23161
23369
 
23162
23370
  var name = 'fluentButtonPixelShader';
@@ -23178,7 +23386,7 @@ var fluentButtonPixelShader = { name: name, shader: shader };
23178
23386
  "use strict";
23179
23387
  __webpack_require__.r(__webpack_exports__);
23180
23388
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentButtonVertexShader", function() { return fluentButtonVertexShader; });
23181
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
23389
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
23182
23390
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
23183
23391
 
23184
23392
  var name = 'fluentButtonVertexShader';
@@ -23201,7 +23409,7 @@ var fluentButtonVertexShader = { name: name, shader: shader };
23201
23409
  __webpack_require__.r(__webpack_exports__);
23202
23410
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HandleMaterial", function() { return HandleMaterial; });
23203
23411
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
23204
- /* harmony import */ var babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Materials/shaderMaterial */ "babylonjs/Misc/perfCounter");
23412
+ /* harmony import */ var babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Materials/shaderMaterial */ "babylonjs/Misc/observable");
23205
23413
  /* harmony import */ var babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1__);
23206
23414
  /* harmony import */ var _shaders_handle_vertex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/handle.vertex */ "./3D/materials/handle/shaders/handle.vertex.ts");
23207
23415
  /* harmony import */ var _shaders_handle_fragment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/handle.fragment */ "./3D/materials/handle/shaders/handle.fragment.ts");
@@ -23362,7 +23570,7 @@ __webpack_require__.r(__webpack_exports__);
23362
23570
  "use strict";
23363
23571
  __webpack_require__.r(__webpack_exports__);
23364
23572
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "handlePixelShader", function() { return handlePixelShader; });
23365
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
23573
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
23366
23574
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
23367
23575
 
23368
23576
  var name = 'handlePixelShader';
@@ -23384,7 +23592,7 @@ var handlePixelShader = { name: name, shader: shader };
23384
23592
  "use strict";
23385
23593
  __webpack_require__.r(__webpack_exports__);
23386
23594
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "handleVertexShader", function() { return handleVertexShader; });
23387
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
23595
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
23388
23596
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
23389
23597
 
23390
23598
  var name = 'handleVertexShader';
@@ -23471,7 +23679,7 @@ __webpack_require__.r(__webpack_exports__);
23471
23679
  __webpack_require__.r(__webpack_exports__);
23472
23680
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MRDLBackplateMaterial", function() { return MRDLBackplateMaterial; });
23473
23681
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
23474
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
23682
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
23475
23683
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
23476
23684
  /* harmony import */ var _shaders_mrdlBackplate_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/mrdlBackplate.fragment */ "./3D/materials/mrdl/shaders/mrdlBackplate.fragment.ts");
23477
23685
  /* harmony import */ var _shaders_mrdlBackplate_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/mrdlBackplate.vertex */ "./3D/materials/mrdl/shaders/mrdlBackplate.vertex.ts");
@@ -23899,7 +24107,7 @@ Object(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
23899
24107
  __webpack_require__.r(__webpack_exports__);
23900
24108
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MRDLSliderBarMaterial", function() { return MRDLSliderBarMaterial; });
23901
24109
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
23902
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
24110
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
23903
24111
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
23904
24112
  /* harmony import */ var _shaders_mrdlSliderBar_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/mrdlSliderBar.fragment */ "./3D/materials/mrdl/shaders/mrdlSliderBar.fragment.ts");
23905
24113
  /* harmony import */ var _shaders_mrdlSliderBar_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/mrdlSliderBar.vertex */ "./3D/materials/mrdl/shaders/mrdlSliderBar.vertex.ts");
@@ -24704,7 +24912,7 @@ Object(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
24704
24912
  __webpack_require__.r(__webpack_exports__);
24705
24913
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MRDLSliderThumbMaterial", function() { return MRDLSliderThumbMaterial; });
24706
24914
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
24707
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
24915
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
24708
24916
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
24709
24917
  /* harmony import */ var _shaders_mrdlSliderThumb_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/mrdlSliderThumb.fragment */ "./3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.ts");
24710
24918
  /* harmony import */ var _shaders_mrdlSliderThumb_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/mrdlSliderThumb.vertex */ "./3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.ts");
@@ -25508,7 +25716,7 @@ Object(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
25508
25716
  "use strict";
25509
25717
  __webpack_require__.r(__webpack_exports__);
25510
25718
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlBackplatePixelShader", function() { return mrdlBackplatePixelShader; });
25511
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25719
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25512
25720
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25513
25721
 
25514
25722
  var name = 'mrdlBackplatePixelShader';
@@ -25530,7 +25738,7 @@ var mrdlBackplatePixelShader = { name: name, shader: shader };
25530
25738
  "use strict";
25531
25739
  __webpack_require__.r(__webpack_exports__);
25532
25740
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlBackplateVertexShader", function() { return mrdlBackplateVertexShader; });
25533
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25741
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25534
25742
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25535
25743
 
25536
25744
  var name = 'mrdlBackplateVertexShader';
@@ -25552,7 +25760,7 @@ var mrdlBackplateVertexShader = { name: name, shader: shader };
25552
25760
  "use strict";
25553
25761
  __webpack_require__.r(__webpack_exports__);
25554
25762
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderBarPixelShader", function() { return mrdlSliderBarPixelShader; });
25555
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25763
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25556
25764
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25557
25765
 
25558
25766
  var name = 'mrdlSliderBarPixelShader';
@@ -25574,7 +25782,7 @@ var mrdlSliderBarPixelShader = { name: name, shader: shader };
25574
25782
  "use strict";
25575
25783
  __webpack_require__.r(__webpack_exports__);
25576
25784
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderBarVertexShader", function() { return mrdlSliderBarVertexShader; });
25577
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25785
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25578
25786
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25579
25787
 
25580
25788
  var name = 'mrdlSliderBarVertexShader';
@@ -25596,7 +25804,7 @@ var mrdlSliderBarVertexShader = { name: name, shader: shader };
25596
25804
  "use strict";
25597
25805
  __webpack_require__.r(__webpack_exports__);
25598
25806
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderThumbPixelShader", function() { return mrdlSliderThumbPixelShader; });
25599
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25807
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25600
25808
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25601
25809
 
25602
25810
  var name = 'mrdlSliderThumbPixelShader';
@@ -25618,7 +25826,7 @@ var mrdlSliderThumbPixelShader = { name: name, shader: shader };
25618
25826
  "use strict";
25619
25827
  __webpack_require__.r(__webpack_exports__);
25620
25828
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderThumbVertexShader", function() { return mrdlSliderThumbVertexShader; });
25621
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25829
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25622
25830
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25623
25831
 
25624
25832
  var name = 'mrdlSliderThumbVertexShader';
@@ -25641,7 +25849,7 @@ var mrdlSliderThumbVertexShader = { name: name, shader: shader };
25641
25849
  __webpack_require__.r(__webpack_exports__);
25642
25850
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Vector3WithInfo", function() { return Vector3WithInfo; });
25643
25851
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
25644
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
25852
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
25645
25853
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
25646
25854
 
25647
25855
 
@@ -26035,14 +26243,14 @@ if (typeof globalObject !== "undefined") {
26035
26243
 
26036
26244
  /***/ }),
26037
26245
 
26038
- /***/ "babylonjs/Misc/perfCounter":
26246
+ /***/ "babylonjs/Misc/observable":
26039
26247
  /*!****************************************************************************************************!*\
26040
26248
  !*** external {"root":"BABYLON","commonjs":"babylonjs","commonjs2":"babylonjs","amd":"babylonjs"} ***!
26041
26249
  \****************************************************************************************************/
26042
26250
  /*! no static exports found */
26043
26251
  /***/ (function(module, exports) {
26044
26252
 
26045
- module.exports = __WEBPACK_EXTERNAL_MODULE_babylonjs_Misc_perfCounter__;
26253
+ module.exports = __WEBPACK_EXTERNAL_MODULE_babylonjs_Misc_observable__;
26046
26254
 
26047
26255
  /***/ })
26048
26256