babylonjs-gui 5.0.0-beta.9 → 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) {
@@ -1820,7 +1867,7 @@ __webpack_require__.r(__webpack_exports__);
1820
1867
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
1821
1868
  /* harmony import */ var _textBlock__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./textBlock */ "./2D/controls/textBlock.ts");
1822
1869
  /* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./image */ "./2D/controls/image.ts");
1823
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
1870
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
1824
1871
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__);
1825
1872
 
1826
1873
 
@@ -2075,7 +2122,7 @@ Object(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__["RegisterClass"])("
2075
2122
  __webpack_require__.r(__webpack_exports__);
2076
2123
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Checkbox", function() { return Checkbox; });
2077
2124
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
2078
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
2125
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
2079
2126
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
2080
2127
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
2081
2128
  /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stackPanel */ "./2D/controls/stackPanel.ts");
@@ -2273,7 +2320,7 @@ Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
2273
2320
  __webpack_require__.r(__webpack_exports__);
2274
2321
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColorPicker", function() { return ColorPicker; });
2275
2322
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
2276
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
2323
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
2277
2324
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
2278
2325
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
2279
2326
  /* harmony import */ var _inputText__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./inputText */ "./2D/controls/inputText.ts");
@@ -3696,7 +3743,7 @@ Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
3696
3743
  __webpack_require__.r(__webpack_exports__);
3697
3744
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Container", function() { return Container; });
3698
3745
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
3699
- /* harmony import */ var babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/logger */ "babylonjs/Misc/perfCounter");
3746
+ /* harmony import */ var babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/logger */ "babylonjs/Misc/observable");
3700
3747
  /* harmony import */ var babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__);
3701
3748
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
3702
3749
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../measure */ "./2D/measure.ts");
@@ -4240,7 +4287,7 @@ Object(babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])("BAB
4240
4287
  __webpack_require__.r(__webpack_exports__);
4241
4288
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Control", function() { return Control; });
4242
4289
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
4243
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
4290
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
4244
4291
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
4245
4292
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
4246
4293
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../measure */ "./2D/measure.ts");
@@ -5619,11 +5666,9 @@ var Control = /** @class */ (function () {
5619
5666
  var _a;
5620
5667
  var oldLeft = this._left.getValue(this._host);
5621
5668
  var oldTop = this._top.getValue(this._host);
5622
- if (this._currentMeasure.width === 0 && this._currentMeasure.height === 0) {
5623
- var parentMeasure = (_a = this.parent) === null || _a === void 0 ? void 0 : _a._currentMeasure;
5624
- if (parentMeasure) {
5625
- this._processMeasures(parentMeasure, this._host.getContext());
5626
- }
5669
+ var parentMeasure = (_a = this.parent) === null || _a === void 0 ? void 0 : _a._currentMeasure;
5670
+ if (parentMeasure) {
5671
+ this._processMeasures(parentMeasure, this._host.getContext());
5627
5672
  }
5628
5673
  var newLeft = projectedPosition.x + this._linkOffsetX.getValue(this._host) - this._currentMeasure.width / 2;
5629
5674
  var newTop = projectedPosition.y + this._linkOffsetY.getValue(this._host) - this._currentMeasure.height / 2;
@@ -5661,19 +5706,19 @@ var Control = /** @class */ (function () {
5661
5706
  // No child
5662
5707
  };
5663
5708
  /** @hidden */
5664
- Control.prototype._intersectsRect = function (rect) {
5665
- // Rotate the control's current measure into local space and check if it intersects the passed in rectangle
5666
- this._currentMeasure.transformToRef(this._transformMatrix, this._tmpMeasureA);
5667
- if (this._tmpMeasureA.left >= rect.left + rect.width) {
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) {
5668
5713
  return false;
5669
5714
  }
5670
- if (this._tmpMeasureA.top >= rect.top + rect.height) {
5715
+ if (this._evaluatedMeasure.top >= rect.top + rect.height) {
5671
5716
  return false;
5672
5717
  }
5673
- if (this._tmpMeasureA.left + this._tmpMeasureA.width <= rect.left) {
5718
+ if (this._evaluatedMeasure.left + this._evaluatedMeasure.width <= rect.left) {
5674
5719
  return false;
5675
5720
  }
5676
- if (this._tmpMeasureA.top + this._tmpMeasureA.height <= rect.top) {
5721
+ if (this._evaluatedMeasure.top + this._evaluatedMeasure.height <= rect.top) {
5677
5722
  return false;
5678
5723
  }
5679
5724
  return true;
@@ -5715,6 +5760,7 @@ var Control = /** @class */ (function () {
5715
5760
  return;
5716
5761
  }
5717
5762
  this._isDirty = true;
5763
+ this._markMatrixAsDirty();
5718
5764
  // Redraw only this rectangle
5719
5765
  if (this._host) {
5720
5766
  this._host.markAsDirty();
@@ -5759,6 +5805,7 @@ var Control = /** @class */ (function () {
5759
5805
  this._flagDescendantsAsMatrixDirty();
5760
5806
  _math2D__WEBPACK_IMPORTED_MODULE_4__["Matrix2D"].ComposeToRef(-offsetX, -offsetY, this._rotation, this._scaleX, this._scaleY, this.parent ? this.parent._transformMatrix : null, this._transformMatrix);
5761
5807
  this._transformMatrix.invertToRef(this._invertTransformMatrix);
5808
+ this._currentMeasure.transformToRef(this._transformMatrix, this._evaluatedMeasure);
5762
5809
  }
5763
5810
  };
5764
5811
  /** @hidden */
@@ -6569,7 +6616,7 @@ __webpack_require__.r(__webpack_exports__);
6569
6616
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DisplayGrid", function() { return DisplayGrid; });
6570
6617
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
6571
6618
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
6572
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
6619
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
6573
6620
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
6574
6621
 
6575
6622
 
@@ -6833,7 +6880,7 @@ __webpack_require__.r(__webpack_exports__);
6833
6880
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
6834
6881
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
6835
6882
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
6836
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
6883
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
6837
6884
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__);
6838
6885
 
6839
6886
 
@@ -6936,7 +6983,7 @@ __webpack_require__.r(__webpack_exports__);
6936
6983
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FocusableButton", function() { return FocusableButton; });
6937
6984
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
6938
6985
  /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./button */ "./2D/controls/button.ts");
6939
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
6986
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
6940
6987
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
6941
6988
 
6942
6989
 
@@ -7048,7 +7095,7 @@ __webpack_require__.r(__webpack_exports__);
7048
7095
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
7049
7096
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
7050
7097
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
7051
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
7098
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
7052
7099
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__);
7053
7100
 
7054
7101
 
@@ -7590,7 +7637,7 @@ Object(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__["RegisterClass"])("BABY
7590
7637
  __webpack_require__.r(__webpack_exports__);
7591
7638
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Image", function() { return Image; });
7592
7639
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
7593
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
7640
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
7594
7641
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
7595
7642
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
7596
7643
 
@@ -8629,7 +8676,7 @@ __webpack_require__.r(__webpack_exports__);
8629
8676
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InputPassword", function() { return InputPassword; });
8630
8677
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
8631
8678
  /* harmony import */ var _inputText__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./inputText */ "./2D/controls/inputText.ts");
8632
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
8679
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
8633
8680
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
8634
8681
  /* harmony import */ var _textWrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./textWrapper */ "./2D/controls/textWrapper.ts");
8635
8682
 
@@ -8672,7 +8719,7 @@ Object(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__["RegisterClass"])("
8672
8719
  __webpack_require__.r(__webpack_exports__);
8673
8720
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InputText", function() { return InputText; });
8674
8721
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
8675
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
8722
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
8676
8723
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
8677
8724
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
8678
8725
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
@@ -9065,7 +9112,7 @@ var InputText = /** @class */ (function (_super) {
9065
9112
  this._cursorOffset = 0;
9066
9113
  this._markAsDirty();
9067
9114
  this.onFocusObservable.notifyObservers(this);
9068
- if (navigator.userAgent.indexOf("Mobile") !== -1 && !this.disableMobilePrompt) {
9115
+ if (this._focusedBy === "touch" && !this.disableMobilePrompt) {
9069
9116
  var value = prompt(this.promptMessage);
9070
9117
  if (value !== null) {
9071
9118
  this.text = value;
@@ -9678,6 +9725,7 @@ var InputText = /** @class */ (function (_super) {
9678
9725
  this._cursorIndex = -1;
9679
9726
  this._isPointerDown = true;
9680
9727
  this._host._capturingControl[pointerId] = this;
9728
+ this._focusedBy = pi.event.pointerType;
9681
9729
  if (this._host.focusedControl === this) {
9682
9730
  // Move cursor
9683
9731
  clearTimeout(this._blinkTimeout);
@@ -9787,7 +9835,7 @@ Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
9787
9835
  __webpack_require__.r(__webpack_exports__);
9788
9836
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Line", function() { return Line; });
9789
9837
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
9790
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
9838
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
9791
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__);
9792
9840
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
9793
9841
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
@@ -10077,7 +10125,7 @@ Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"]
10077
10125
  __webpack_require__.r(__webpack_exports__);
10078
10126
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultiLine", function() { return MultiLine; });
10079
10127
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
10080
- /* harmony import */ var babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/abstractMesh */ "babylonjs/Misc/perfCounter");
10128
+ /* harmony import */ var babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/abstractMesh */ "babylonjs/Misc/observable");
10081
10129
  /* harmony import */ var babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__);
10082
10130
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
10083
10131
  /* harmony import */ var _multiLinePoint__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../multiLinePoint */ "./2D/multiLinePoint.ts");
@@ -10358,7 +10406,7 @@ Object(babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__["RegisterClass
10358
10406
  __webpack_require__.r(__webpack_exports__);
10359
10407
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RadioButton", function() { return RadioButton; });
10360
10408
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
10361
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
10409
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
10362
10410
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
10363
10411
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
10364
10412
  /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stackPanel */ "./2D/controls/stackPanel.ts");
@@ -10584,7 +10632,7 @@ __webpack_require__.r(__webpack_exports__);
10584
10632
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Rectangle", function() { return Rectangle; });
10585
10633
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
10586
10634
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
10587
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
10635
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
10588
10636
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
10589
10637
 
10590
10638
 
@@ -10757,7 +10805,7 @@ __webpack_require__.r(__webpack_exports__);
10757
10805
  /* harmony import */ var _scrollViewerWindow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./scrollViewerWindow */ "./2D/controls/scrollViewers/scrollViewerWindow.ts");
10758
10806
  /* harmony import */ var _sliders_scrollBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../sliders/scrollBar */ "./2D/controls/sliders/scrollBar.ts");
10759
10807
  /* harmony import */ var _sliders_imageScrollBar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../sliders/imageScrollBar */ "./2D/controls/sliders/imageScrollBar.ts");
10760
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
10808
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
10761
10809
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7__);
10762
10810
 
10763
10811
 
@@ -12388,7 +12436,7 @@ var SelectionPanel = /** @class */ (function (_super) {
12388
12436
  __webpack_require__.r(__webpack_exports__);
12389
12437
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseSlider", function() { return BaseSlider; });
12390
12438
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
12391
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
12439
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
12392
12440
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
12393
12441
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../control */ "./2D/controls/control.ts");
12394
12442
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../valueAndUnit */ "./2D/valueAndUnit.ts");
@@ -12671,7 +12719,7 @@ var BaseSlider = /** @class */ (function (_super) {
12671
12719
  else {
12672
12720
  value = this._minimum + ((x - this._currentMeasure.left) / this._currentMeasure.width) * (this._maximum - this._minimum);
12673
12721
  }
12674
- this.value = this._step ? ((value / this._step) | 0) * this._step : value;
12722
+ this.value = this._step ? Math.round(value / this._step) * this._step : value;
12675
12723
  };
12676
12724
  BaseSlider.prototype._onPointerDown = function (target, coordinates, pointerId, buttonIndex, pi) {
12677
12725
  if (!_super.prototype._onPointerDown.call(this, target, coordinates, pointerId, buttonIndex, pi)) {
@@ -12753,7 +12801,7 @@ __webpack_require__.r(__webpack_exports__);
12753
12801
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
12754
12802
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../measure */ "./2D/measure.ts");
12755
12803
  /* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../image */ "./2D/controls/image.ts");
12756
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
12804
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
12757
12805
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4__);
12758
12806
 
12759
12807
 
@@ -12960,7 +13008,7 @@ __webpack_require__.r(__webpack_exports__);
12960
13008
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
12961
13009
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
12962
13010
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../measure */ "./2D/measure.ts");
12963
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
13011
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
12964
13012
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__);
12965
13013
 
12966
13014
 
@@ -13235,7 +13283,7 @@ __webpack_require__.r(__webpack_exports__);
13235
13283
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
13236
13284
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
13237
13285
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../measure */ "./2D/measure.ts");
13238
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
13286
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
13239
13287
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__);
13240
13288
 
13241
13289
 
@@ -13389,7 +13437,7 @@ __webpack_require__.r(__webpack_exports__);
13389
13437
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Slider", function() { return Slider; });
13390
13438
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
13391
13439
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
13392
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
13440
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
13393
13441
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
13394
13442
 
13395
13443
 
@@ -13677,7 +13725,7 @@ Object(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__["RegisterClass"])("
13677
13725
  __webpack_require__.r(__webpack_exports__);
13678
13726
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StackPanel", function() { return StackPanel; });
13679
13727
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
13680
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
13728
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
13681
13729
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
13682
13730
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
13683
13731
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
@@ -13997,7 +14045,7 @@ __webpack_require__.r(__webpack_exports__);
13997
14045
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextWrapping", function() { return TextWrapping; });
13998
14046
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextBlock", function() { return TextBlock; });
13999
14047
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
14000
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
14048
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
14001
14049
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
14002
14050
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
14003
14051
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
@@ -14418,30 +14466,40 @@ var TextBlock = /** @class */ (function (_super) {
14418
14466
  var lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
14419
14467
  return { text: line, width: lineWidth };
14420
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
+ };
14421
14477
  TextBlock.prototype._parseLineEllipsis = function (line, width, context) {
14422
14478
  if (line === void 0) { line = ""; }
14423
14479
  var textMetrics = context.measureText(line);
14424
14480
  var lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
14425
- if (lineWidth > width) {
14426
- line += "…";
14427
- }
14481
+ var removeChars = this._getCharsToRemove(lineWidth, width, line.length);
14428
14482
  // unicode support. split('') does not work with unicode!
14429
14483
  // make sure Array.from is available
14430
14484
  var characters = Array.from && Array.from(line);
14431
14485
  if (!characters) {
14432
14486
  // no array.from, use the old method
14433
14487
  while (line.length > 2 && lineWidth > width) {
14434
- line = line.slice(0, -2) + "…";
14435
- textMetrics = context.measureText(line);
14488
+ line = line.slice(0, -removeChars);
14489
+ textMetrics = context.measureText(line + "…");
14436
14490
  lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
14491
+ removeChars = this._getCharsToRemove(lineWidth, width, line.length);
14437
14492
  }
14493
+ // Add on the end
14494
+ line += "…";
14438
14495
  }
14439
14496
  else {
14440
14497
  while (characters.length && lineWidth > width) {
14441
- characters.pop();
14442
- line = "".concat(characters.join(""), "...");
14498
+ characters.splice(characters.length - removeChars, removeChars);
14499
+ line = "".concat(characters.join(""), "\u2026");
14443
14500
  textMetrics = context.measureText(line);
14444
14501
  lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
14502
+ removeChars = this._getCharsToRemove(lineWidth, width, line.length);
14445
14503
  }
14446
14504
  }
14447
14505
  return { text: line, width: lineWidth };
@@ -14720,7 +14778,7 @@ var TextWrapper = /** @class */ (function () {
14720
14778
  __webpack_require__.r(__webpack_exports__);
14721
14779
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ToggleButton", function() { return ToggleButton; });
14722
14780
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
14723
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
14781
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
14724
14782
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
14725
14783
  /* harmony import */ var _rectangle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rectangle */ "./2D/controls/rectangle.ts");
14726
14784
 
@@ -14973,7 +15031,7 @@ __webpack_require__.r(__webpack_exports__);
14973
15031
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyPropertySet", function() { return KeyPropertySet; });
14974
15032
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualKeyboard", function() { return VirtualKeyboard; });
14975
15033
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
14976
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
15034
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
14977
15035
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
14978
15036
  /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stackPanel */ "./2D/controls/stackPanel.ts");
14979
15037
  /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./button */ "./2D/controls/button.ts");
@@ -15368,7 +15426,7 @@ __webpack_require__.r(__webpack_exports__);
15368
15426
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Vector2WithInfo", function() { return Vector2WithInfo; });
15369
15427
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Matrix2D", function() { return Matrix2D; });
15370
15428
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
15371
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
15429
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
15372
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__);
15373
15431
 
15374
15432
 
@@ -15605,7 +15663,7 @@ var Matrix2D = /** @class */ (function () {
15605
15663
  "use strict";
15606
15664
  __webpack_require__.r(__webpack_exports__);
15607
15665
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Measure", function() { return Measure; });
15608
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
15666
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
15609
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__);
15610
15668
 
15611
15669
  var tmpRect = [
@@ -15770,7 +15828,7 @@ var Measure = /** @class */ (function () {
15770
15828
  "use strict";
15771
15829
  __webpack_require__.r(__webpack_exports__);
15772
15830
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultiLinePoint", function() { return MultiLinePoint; });
15773
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
15831
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
15774
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__);
15775
15833
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./valueAndUnit */ "./2D/valueAndUnit.ts");
15776
15834
 
@@ -15914,7 +15972,7 @@ var MultiLinePoint = /** @class */ (function () {
15914
15972
  "use strict";
15915
15973
  __webpack_require__.r(__webpack_exports__);
15916
15974
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Style", function() { return Style; });
15917
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
15975
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
15918
15976
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
15919
15977
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./valueAndUnit */ "./2D/valueAndUnit.ts");
15920
15978
 
@@ -16028,7 +16086,7 @@ var Style = /** @class */ (function () {
16028
16086
  "use strict";
16029
16087
  __webpack_require__.r(__webpack_exports__);
16030
16088
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ValueAndUnit", function() { return ValueAndUnit; });
16031
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
16089
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
16032
16090
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
16033
16091
 
16034
16092
  /**
@@ -16267,10 +16325,11 @@ var ValueAndUnit = /** @class */ (function () {
16267
16325
  __webpack_require__.r(__webpack_exports__);
16268
16326
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "XmlLoader", function() { return XmlLoader; });
16269
16327
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16270
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
16328
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/observable");
16271
16329
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1__);
16272
16330
 
16273
16331
 
16332
+ var XmlLoaderError = "XmlLoader Exception : XML file is malformed or corrupted.";
16274
16333
  /**
16275
16334
  * Class used to load GUI via XML.
16276
16335
  */
@@ -16573,7 +16632,13 @@ var XmlLoader = /** @class */ (function () {
16573
16632
  xhttp.onload = function () {
16574
16633
  if (xhttp.readyState === 4 && xhttp.status === 200) {
16575
16634
  if (!xhttp.responseXML) {
16576
- throw "XmlLoader Exception : XML file is malformed or corrupted.";
16635
+ if (onError) {
16636
+ onError(XmlLoaderError);
16637
+ return;
16638
+ }
16639
+ else {
16640
+ throw XmlLoaderError;
16641
+ }
16577
16642
  }
16578
16643
  var xmlDoc = xhttp.responseXML.documentElement;
16579
16644
  _this._parseXml(xmlDoc.firstChild, rootNode);
@@ -16624,7 +16689,7 @@ var XmlLoader = /** @class */ (function () {
16624
16689
  "use strict";
16625
16690
  __webpack_require__.r(__webpack_exports__);
16626
16691
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultBehavior", function() { return DefaultBehavior; });
16627
- /* harmony import */ var babylonjs_Behaviors_Meshes_followBehavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/followBehavior */ "babylonjs/Misc/perfCounter");
16692
+ /* harmony import */ var babylonjs_Behaviors_Meshes_followBehavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/followBehavior */ "babylonjs/Misc/observable");
16628
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__);
16629
16694
 
16630
16695
 
@@ -16762,7 +16827,7 @@ var DefaultBehavior = /** @class */ (function () {
16762
16827
  __webpack_require__.r(__webpack_exports__);
16763
16828
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AbstractButton3D", function() { return AbstractButton3D; });
16764
16829
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16765
- /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/perfCounter");
16830
+ /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/observable");
16766
16831
  /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__);
16767
16832
  /* harmony import */ var _contentDisplay3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./contentDisplay3D */ "./3D/controls/contentDisplay3D.ts");
16768
16833
 
@@ -16805,7 +16870,7 @@ var AbstractButton3D = /** @class */ (function (_super) {
16805
16870
  __webpack_require__.r(__webpack_exports__);
16806
16871
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Button3D", function() { return Button3D; });
16807
16872
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16808
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
16873
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
16809
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__);
16810
16875
  /* harmony import */ var _abstractButton3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./abstractButton3D */ "./3D/controls/abstractButton3D.ts");
16811
16876
 
@@ -16916,7 +16981,7 @@ var Button3D = /** @class */ (function (_super) {
16916
16981
  __webpack_require__.r(__webpack_exports__);
16917
16982
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Container3D", function() { return Container3D; });
16918
16983
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16919
- /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/perfCounter");
16984
+ /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/observable");
16920
16985
  /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__);
16921
16986
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
16922
16987
 
@@ -17076,7 +17141,7 @@ __webpack_require__.r(__webpack_exports__);
17076
17141
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17077
17142
  /* harmony import */ var _2D_advancedDynamicTexture__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../2D/advancedDynamicTexture */ "./2D/advancedDynamicTexture.ts");
17078
17143
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
17079
- /* harmony import */ var babylonjs_Materials_Textures_texture__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Materials/Textures/texture */ "babylonjs/Misc/perfCounter");
17144
+ /* harmony import */ var babylonjs_Materials_Textures_texture__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Materials/Textures/texture */ "babylonjs/Misc/observable");
17080
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__);
17081
17146
 
17082
17147
 
@@ -17102,7 +17167,7 @@ var ContentDisplay3D = /** @class */ (function (_super) {
17102
17167
  },
17103
17168
  set: function (value) {
17104
17169
  this._content = value;
17105
- if (!this._host || !this._host.utilityLayer) {
17170
+ if (!value || !this._host || !this._host.utilityLayer) {
17106
17171
  return;
17107
17172
  }
17108
17173
  if (!this._facadeTexture) {
@@ -17170,7 +17235,7 @@ var ContentDisplay3D = /** @class */ (function (_super) {
17170
17235
  "use strict";
17171
17236
  __webpack_require__.r(__webpack_exports__);
17172
17237
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Control3D", function() { return Control3D; });
17173
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
17238
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
17174
17239
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
17175
17240
  /* harmony import */ var _vector3WithInfo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../vector3WithInfo */ "./3D/vector3WithInfo.ts");
17176
17241
 
@@ -17596,7 +17661,7 @@ var Control3D = /** @class */ (function () {
17596
17661
  __webpack_require__.r(__webpack_exports__);
17597
17662
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CylinderPanel", function() { return CylinderPanel; });
17598
17663
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17599
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
17664
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
17600
17665
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
17601
17666
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
17602
17667
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
@@ -17682,7 +17747,7 @@ __webpack_require__.r(__webpack_exports__);
17682
17747
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HandMenu", function() { return HandMenu; });
17683
17748
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17684
17749
  /* harmony import */ var _touchHolographicMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./touchHolographicMenu */ "./3D/controls/touchHolographicMenu.ts");
17685
- /* harmony import */ var babylonjs_Behaviors_Meshes_handConstraintBehavior__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/handConstraintBehavior */ "babylonjs/Misc/perfCounter");
17750
+ /* harmony import */ var babylonjs_Behaviors_Meshes_handConstraintBehavior__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/handConstraintBehavior */ "babylonjs/Misc/observable");
17686
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__);
17687
17752
 
17688
17753
 
@@ -17746,7 +17811,7 @@ var HandMenu = /** @class */ (function (_super) {
17746
17811
  __webpack_require__.r(__webpack_exports__);
17747
17812
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HolographicBackplate", function() { return HolographicBackplate; });
17748
17813
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17749
- /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/perfCounter");
17814
+ /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/observable");
17750
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__);
17751
17816
  /* harmony import */ var _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/fluentBackplate/fluentBackplateMaterial */ "./3D/materials/fluentBackplate/fluentBackplateMaterial.ts");
17752
17817
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
@@ -17886,7 +17951,7 @@ __webpack_require__.r(__webpack_exports__);
17886
17951
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HolographicButton", function() { return HolographicButton; });
17887
17952
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17888
17953
  /* harmony import */ var _button3D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./button3D */ "./3D/controls/button3D.ts");
17889
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
17954
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
17890
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__);
17891
17956
  /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
17892
17957
  /* harmony import */ var _2D_controls_stackPanel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../2D/controls/stackPanel */ "./2D/controls/stackPanel.ts");
@@ -18246,15 +18311,21 @@ var HolographicButton = /** @class */ (function (_super) {
18246
18311
  __webpack_require__.r(__webpack_exports__);
18247
18312
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HolographicSlate", function() { return HolographicSlate; });
18248
18313
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
18249
- /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/perfCounter");
18250
- /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__);
18251
- /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
18252
- /* harmony import */ var _touchHolographicButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./touchHolographicButton */ "./3D/controls/touchHolographicButton.ts");
18253
- /* harmony import */ var _contentDisplay3D__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./contentDisplay3D */ "./3D/controls/contentDisplay3D.ts");
18254
- /* harmony import */ var _2D_controls_image__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../2D/controls/image */ "./2D/controls/image.ts");
18255
- /* harmony import */ var _gizmos_slateGizmo__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../gizmos/slateGizmo */ "./3D/gizmos/slateGizmo.ts");
18256
- /* harmony import */ var _behaviors_defaultBehavior__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../behaviors/defaultBehavior */ "./3D/behaviors/defaultBehavior.ts");
18257
- /* harmony import */ var _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../materials/fluentBackplate/fluentBackplateMaterial */ "./3D/materials/fluentBackplate/fluentBackplateMaterial.ts");
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
+
18258
18329
 
18259
18330
 
18260
18331
 
@@ -18284,35 +18355,31 @@ var HolographicSlate = /** @class */ (function (_super) {
18284
18355
  function HolographicSlate(name) {
18285
18356
  var _this = _super.call(this, name) || this;
18286
18357
  /**
18287
- * Dimensions of the slate
18288
- */
18289
- _this.dimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](21.875, 12.5, 0.001);
18290
- /**
18291
- * Minimum dimensions of the slate
18358
+ * Margin between title bar and contentplate
18292
18359
  */
18293
- _this.minDimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](15.625, 6.25, 0.001);
18360
+ _this.titleBarMargin = 0.005;
18294
18361
  /**
18295
- * Default dimensions of the slate
18296
- */
18297
- _this.defaultDimensions = _this.dimensions.clone();
18298
- /**
18299
- * Dimensions of the backplate
18362
+ * Origin in local coordinates (top left corner)
18300
18363
  */
18301
- _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;
18302
18369
  /**
18303
- * Margin between backplate and contentplate
18370
+ * Minimum dimensions of the slate
18304
18371
  */
18305
- _this.backPlateMargin = 0.005;
18372
+ _this.minDimensions = new babylonjs_Behaviors_Meshes_pointerDragBehavior__WEBPACK_IMPORTED_MODULE_10__["Vector2"](15.625, 6.25);
18306
18373
  /**
18307
- * Origin in local coordinates (top left corner)
18374
+ * Default dimensions of the slate
18308
18375
  */
18309
- _this.origin = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0, 0, 0);
18310
- _this._contentScaleRatio = 1;
18311
- _this._followButton = new _touchHolographicButton__WEBPACK_IMPORTED_MODULE_3__["TouchHolographicButton"]("followButton" + _this.name);
18312
- _this._closeButton = new _touchHolographicButton__WEBPACK_IMPORTED_MODULE_3__["TouchHolographicButton"]("closeButton" + _this.name);
18313
- _this._contentViewport = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Viewport"](0, 0, 1, 1);
18314
- _this._contentDragBehavior = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["PointerDragBehavior"]({
18315
- dragPlaneNormal: new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0, 0, -1),
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),
18316
18383
  });
18317
18384
  return _this;
18318
18385
  }
@@ -18326,35 +18393,76 @@ var HolographicSlate = /** @class */ (function (_super) {
18326
18393
  enumerable: false,
18327
18394
  configurable: true
18328
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
+ });
18329
18438
  Object.defineProperty(HolographicSlate.prototype, "renderingGroupId", {
18330
18439
  get: function () {
18331
- return this._backPlate.renderingGroupId;
18440
+ return this._titleBar.renderingGroupId;
18332
18441
  },
18333
18442
  /**
18334
- * Rendering ground id of all the mesh in the button
18443
+ * Rendering ground id of all the meshes
18335
18444
  */
18336
18445
  set: function (id) {
18337
- this._backPlate.renderingGroupId = id;
18446
+ this._titleBar.renderingGroupId = id;
18447
+ this._titleBarTitle.renderingGroupId = id;
18338
18448
  this._contentPlate.renderingGroupId = id;
18449
+ this._backPlate.renderingGroupId = id;
18339
18450
  },
18340
18451
  enumerable: false,
18341
18452
  configurable: true
18342
18453
  });
18343
- Object.defineProperty(HolographicSlate.prototype, "imageUrl", {
18344
- /**
18345
- * Gets or sets the image url for the button
18346
- */
18454
+ Object.defineProperty(HolographicSlate.prototype, "title", {
18347
18455
  get: function () {
18348
- return this._imageUrl;
18456
+ return this._titleText;
18349
18457
  },
18350
- set: function (value) {
18351
- if (this._imageUrl === value) {
18352
- 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;
18353
18465
  }
18354
- this._imageUrl = value;
18355
- this._rebuildContent();
18356
- this._resetContentPositionAndZoom();
18357
- this._applyContentViewport();
18358
18466
  },
18359
18467
  enumerable: false,
18360
18468
  configurable: true
@@ -18366,22 +18474,9 @@ var HolographicSlate = /** @class */ (function (_super) {
18366
18474
  */
18367
18475
  HolographicSlate.prototype._applyFacade = function (facadeTexture) {
18368
18476
  this._contentMaterial.albedoTexture = facadeTexture;
18369
- // We should have a content plate by this point, but check for safety
18370
- if (this._contentPlate) {
18371
- facadeTexture.attachToMesh(this._contentPlate, true);
18372
- }
18373
- };
18374
- HolographicSlate.prototype._rebuildContent = function () {
18375
- this._disposeFacadeTexture();
18376
- if (babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["DomManagement"].IsDocumentAvailable() && !!document.createElement) {
18377
- if (this._imageUrl) {
18378
- var image = new _2D_controls_image__WEBPACK_IMPORTED_MODULE_5__["Image"]();
18379
- image.source = this._imageUrl;
18380
- if (this._contentPlate) {
18381
- this.content = image;
18382
- }
18383
- }
18384
- }
18477
+ this._resetContentPositionAndZoom();
18478
+ this._applyContentViewport();
18479
+ facadeTexture.attachToMesh(this._contentPlate, true);
18385
18480
  };
18386
18481
  HolographicSlate.prototype._addControl = function (control) {
18387
18482
  control._host = this._host;
@@ -18396,32 +18491,40 @@ var HolographicSlate = /** @class */ (function (_super) {
18396
18491
  * @hidden
18397
18492
  */
18398
18493
  HolographicSlate.prototype._positionElements = function () {
18399
- var followButtonMesh = this._followButton.mesh;
18400
- var closeButtonMesh = this._closeButton.mesh;
18401
- var backPlate = this._backPlate;
18494
+ var followButton = this._followButton;
18495
+ var closeButton = this._closeButton;
18496
+ var titleBar = this._titleBar;
18497
+ var titleBarTitle = this._titleBarTitle;
18402
18498
  var contentPlate = this._contentPlate;
18403
- if (followButtonMesh && closeButtonMesh && backPlate) {
18404
- // World size of a button with 1 scaling
18405
- var buttonBaseSize = 1;
18406
- // Buttons take full backPlate on Y axis
18407
- var backPlateYScale = this.backplateDimensions.y / buttonBaseSize;
18408
- closeButtonMesh.scaling.setAll(backPlateYScale);
18409
- followButtonMesh.scaling.setAll(backPlateYScale);
18410
- closeButtonMesh.position
18411
- .copyFromFloats(this.backplateDimensions.x - backPlateYScale / 2, -this.backplateDimensions.y / 2, (-this.backplateDimensions.z / 2) * (this._host.scene.useRightHandedSystem ? -1 : 1))
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)
18412
18505
  .addInPlace(this.origin);
18413
- followButtonMesh.position
18414
- .copyFromFloats(this.backplateDimensions.x - (3 * backPlateYScale) / 2, -this.backplateDimensions.y / 2, (-this.backplateDimensions.z / 2) * (this._host.scene.useRightHandedSystem ? -1 : 1))
18506
+ followButton.position
18507
+ .copyFromFloats(this.dimensions.x - (3 * this.titleBarHeight) / 2, -this.titleBarHeight / 2, 0)
18415
18508
  .addInPlace(this.origin);
18416
- var contentPlateHeight = this.dimensions.y - this.backplateDimensions.y - this.backPlateMargin;
18417
- backPlate.scaling.copyFrom(this.backplateDimensions);
18418
- contentPlate.scaling.copyFromFloats(this.dimensions.x, contentPlateHeight, this.dimensions.z);
18419
- backPlate.position.copyFromFloats(this.backplateDimensions.x / 2, -(this.backplateDimensions.y / 2), 0).addInPlace(this.origin);
18420
- contentPlate.position.copyFromFloats(this.dimensions.x / 2, -(this.backplateDimensions.y + this.backPlateMargin + contentPlateHeight / 2), 0).addInPlace(this.origin);
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);
18421
18521
  var aspectRatio = this.dimensions.x / contentPlateHeight;
18422
18522
  this._contentViewport.width = this._contentScaleRatio;
18423
18523
  this._contentViewport.height = this._contentScaleRatio / aspectRatio;
18424
18524
  this._applyContentViewport();
18525
+ if (this._gizmo) {
18526
+ this._gizmo.updateBoundingBox();
18527
+ }
18425
18528
  }
18426
18529
  };
18427
18530
  HolographicSlate.prototype._applyContentViewport = function () {
@@ -18447,45 +18550,61 @@ var HolographicSlate = /** @class */ (function (_super) {
18447
18550
  return;
18448
18551
  }
18449
18552
  // Update pivot point so it is at the center of geometry
18450
- var center = this.dimensions.scale(0.5);
18451
18553
  // As origin is topleft corner in 2D, dimensions are calculated towards bottom right corner, thus y axis is downwards
18452
- 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"]);
18453
18555
  center.addInPlace(this.origin);
18454
18556
  center.z = 0;
18455
- var origin = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0, 0, 0);
18456
- babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformCoordinatesToRef(origin, this.mesh.computeWorldMatrix(true), origin);
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);
18457
18559
  this.mesh.setPivotPoint(center);
18458
- var origin2 = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0, 0, 0);
18459
- babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformCoordinatesToRef(origin2, this.mesh.computeWorldMatrix(true), origin2);
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);
18460
18562
  this.mesh.position.addInPlace(origin).subtractInPlace(origin2);
18461
18563
  };
18462
18564
  // Mesh association
18463
18565
  HolographicSlate.prototype._createNode = function (scene) {
18464
18566
  var _this = this;
18465
- var node = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Mesh"]("slate" + this.name, scene);
18466
- this._backPlate = Object(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])("backPlate" + this.name, { size: 1 }, scene);
18467
- var faceUV = new Array(6).fill(new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector4"](0, 0, 1, 1));
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);
18468
18580
  if (scene.useRightHandedSystem) {
18469
- 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);
18470
18584
  }
18471
- this._contentPlate = Object(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])("contentPlate" + this.name, { size: 1, faceUV: faceUV }, scene);
18472
- this._backPlate.parent = node;
18473
- this._backPlate.isNearGrabbable = true;
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;
18474
18592
  this._contentPlate.parent = node;
18593
+ this._backPlate.parent = node;
18475
18594
  this._attachContentPlateBehavior();
18476
18595
  this._addControl(this._followButton);
18477
18596
  this._addControl(this._closeButton);
18478
- var followButtonMesh = this._followButton.mesh;
18479
- var closeButtonMesh = this._closeButton.mesh;
18480
- followButtonMesh.parent = node;
18481
- closeButtonMesh.parent = node;
18597
+ var followButton = this._followButton;
18598
+ var closeButton = this._closeButton;
18599
+ followButton.node.parent = node;
18600
+ closeButton.node.parent = node;
18482
18601
  this._positionElements();
18483
18602
  this._followButton.imageUrl = HolographicSlate.ASSETS_BASE_URL + HolographicSlate.FOLLOW_ICON_FILENAME;
18484
18603
  this._closeButton.imageUrl = HolographicSlate.ASSETS_BASE_URL + HolographicSlate.CLOSE_ICON_FILENAME;
18485
18604
  this._followButton.isBackplateVisible = false;
18486
18605
  this._closeButton.isBackplateVisible = false;
18487
- this._followButton.onPointerClickObservable.add(function () {
18488
- _this._defaultBehavior.followBehaviorEnabled = !_this._defaultBehavior.followBehaviorEnabled;
18606
+ this._followButton.onToggleObservable.add(function (isToggled) {
18607
+ _this._defaultBehavior.followBehaviorEnabled = isToggled;
18489
18608
  if (_this._defaultBehavior.followBehaviorEnabled) {
18490
18609
  _this._defaultBehavior.followBehavior.recenter();
18491
18610
  }
@@ -18493,7 +18612,7 @@ var HolographicSlate = /** @class */ (function (_super) {
18493
18612
  this._closeButton.onPointerClickObservable.add(function () {
18494
18613
  _this.dispose();
18495
18614
  });
18496
- 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();
18497
18616
  node.isVisible = false;
18498
18617
  return node;
18499
18618
  };
@@ -18503,11 +18622,11 @@ var HolographicSlate = /** @class */ (function (_super) {
18503
18622
  this._contentDragBehavior.moveAttached = false;
18504
18623
  this._contentDragBehavior.useObjectOrientationForDragging = true;
18505
18624
  this._contentDragBehavior.updateDragPlane = false;
18506
- var origin = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
18507
- var worldDimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
18508
- var upWorld = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
18509
- var rightWorld = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
18510
- var projectedOffset = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector2"]();
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"]();
18511
18630
  var startViewport;
18512
18631
  var worldMatrix;
18513
18632
  this._contentDragBehavior.onDragStartObservable.add(function (event) {
@@ -18517,65 +18636,67 @@ var HolographicSlate = /** @class */ (function (_super) {
18517
18636
  startViewport = _this._contentViewport.clone();
18518
18637
  worldMatrix = _this.node.computeWorldMatrix(true);
18519
18638
  origin.copyFrom(event.dragPlanePoint);
18520
- worldDimensions.copyFrom(_this.dimensions);
18521
- worldDimensions.y -= _this.backplateDimensions.y + _this.backPlateMargin;
18522
- babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformNormalToRef(worldDimensions, worldMatrix, worldDimensions);
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);
18523
18642
  upWorld.copyFromFloats(0, 1, 0);
18524
- 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);
18525
18644
  rightWorld.copyFromFloats(1, 0, 0);
18526
- 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);
18527
18646
  upWorld.normalize();
18528
- 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));
18529
18648
  rightWorld.normalize();
18530
- 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));
18531
18650
  });
18532
- 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"]();
18533
18652
  this._contentDragBehavior.onDragObservable.add(function (event) {
18534
18653
  offset.copyFrom(event.dragPlanePoint);
18535
18654
  offset.subtractInPlace(origin);
18536
- projectedOffset.copyFromFloats(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Dot(offset, rightWorld), babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Dot(offset, upWorld));
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));
18537
18656
  // By default, content takes full width available and height is cropped to keep aspect ratio
18538
- _this._contentViewport.x = babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Scalar"].Clamp(startViewport.x - offset.x, 0, 1 - _this._contentViewport.width * _this._contentScaleRatio);
18539
- _this._contentViewport.y = babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Scalar"].Clamp(startViewport.y - offset.y, 0, 1 - _this._contentViewport.height * _this._contentScaleRatio);
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);
18540
18659
  _this._applyContentViewport();
18541
18660
  });
18542
18661
  };
18543
18662
  HolographicSlate.prototype._affectMaterial = function (mesh) {
18544
18663
  // TODO share materials
18545
- this._backPlateMaterial = new _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_8__["FluentBackplateMaterial"]("".concat(this.name, " plateMaterial"), mesh.getScene());
18546
- this._pickedPointObserver = this._host.onPickedPointChangedObservable.add(function (pickedPoint) {
18547
- // if (pickedPoint) {
18548
- // this._backPlateMaterial. = pickedPoint;
18549
- // this._backPlateMaterial.hoverColor.a = 1.0;
18550
- // } else {
18551
- // this._backPlateMaterial.hoverColor.a = 0;
18552
- // }
18553
- });
18554
- this._contentMaterial = new _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_2__["FluentMaterial"](this.name + "contentMaterial", mesh.getScene());
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());
18555
18666
  this._contentMaterial.renderBorders = true;
18556
- 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;
18557
18672
  this._contentPlate.material = this._contentMaterial;
18558
- this._rebuildContent();
18673
+ this._backPlate.material = this._backMaterial;
18674
+ this._resetContent();
18559
18675
  this._applyContentViewport();
18560
18676
  };
18561
18677
  /** @hidden **/
18562
18678
  HolographicSlate.prototype._prepareNode = function (scene) {
18563
18679
  var _this = this;
18564
18680
  _super.prototype._prepareNode.call(this, scene);
18565
- 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);
18566
18682
  this._gizmo.attachedSlate = this;
18567
- this._defaultBehavior = new _behaviors_defaultBehavior__WEBPACK_IMPORTED_MODULE_7__["DefaultBehavior"]();
18568
- 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
+ });
18569
18688
  this._positionChangedObserver = this._defaultBehavior.sixDofDragBehavior.onPositionChangedObservable.add(function () {
18570
18689
  _this._gizmo.updateBoundingBox();
18571
18690
  });
18572
18691
  this._updatePivot();
18573
- this.resetDefaultAspectAndPose();
18692
+ this.resetDefaultAspectAndPose(false);
18574
18693
  };
18575
18694
  /**
18576
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
18577
18697
  */
18578
- HolographicSlate.prototype.resetDefaultAspectAndPose = function () {
18698
+ HolographicSlate.prototype.resetDefaultAspectAndPose = function (resetAspect) {
18699
+ if (resetAspect === void 0) { resetAspect = true; }
18579
18700
  if (!this._host || !this._host.utilityLayer || !this.node) {
18580
18701
  return;
18581
18702
  }
@@ -18583,13 +18704,15 @@ var HolographicSlate = /** @class */ (function (_super) {
18583
18704
  var camera = scene.activeCamera;
18584
18705
  if (camera) {
18585
18706
  var worldMatrix = camera.getWorldMatrix();
18586
- var backward = babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformNormal(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Backward(scene.useRightHandedSystem), worldMatrix);
18587
- this.dimensions.copyFrom(this.defaultDimensions);
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);
18588
18708
  this.origin.setAll(0);
18589
18709
  this._gizmo.updateBoundingBox();
18590
18710
  var pivot = this.node.getAbsolutePivotPoint();
18591
18711
  this.node.position.copyFrom(camera.position).subtractInPlace(backward).subtractInPlace(pivot);
18592
- this.node.rotationQuaternion = babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Quaternion"].FromLookDirectionLH(backward, new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0, 1, 0));
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
+ }
18593
18716
  }
18594
18717
  };
18595
18718
  /**
@@ -18597,10 +18720,12 @@ var HolographicSlate = /** @class */ (function (_super) {
18597
18720
  */
18598
18721
  HolographicSlate.prototype.dispose = function () {
18599
18722
  _super.prototype.dispose.call(this);
18600
- this._backPlateMaterial.dispose();
18723
+ this._titleBarMaterial.dispose();
18601
18724
  this._contentMaterial.dispose();
18602
- this._backPlate.dispose();
18725
+ this._titleBar.dispose();
18726
+ this._titleBarTitle.dispose();
18603
18727
  this._contentPlate.dispose();
18728
+ this._backPlate.dispose();
18604
18729
  this._followButton.dispose();
18605
18730
  this._closeButton.dispose();
18606
18731
  this._host.onPickedPointChangedObservable.remove(this._pickedPointObserver);
@@ -18621,8 +18746,9 @@ var HolographicSlate = /** @class */ (function (_super) {
18621
18746
  * File name for the close icon.
18622
18747
  */
18623
18748
  HolographicSlate.FOLLOW_ICON_FILENAME = "IconFollowMe.png";
18749
+ HolographicSlate.DEFAULT_TEXT_RESOLUTION_Y = 102.4;
18624
18750
  return HolographicSlate;
18625
- }(_contentDisplay3D__WEBPACK_IMPORTED_MODULE_4__["ContentDisplay3D"]));
18751
+ }(_contentDisplay3D__WEBPACK_IMPORTED_MODULE_1__["ContentDisplay3D"]));
18626
18752
 
18627
18753
 
18628
18754
 
@@ -18943,7 +19069,7 @@ var NearMenu = /** @class */ (function (_super) {
18943
19069
  __webpack_require__.r(__webpack_exports__);
18944
19070
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PlanePanel", function() { return PlanePanel; });
18945
19071
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
18946
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
19072
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
18947
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__);
18948
19074
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
18949
19075
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
@@ -18998,7 +19124,7 @@ var PlanePanel = /** @class */ (function (_super) {
18998
19124
  __webpack_require__.r(__webpack_exports__);
18999
19125
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ScatterPanel", function() { return ScatterPanel; });
19000
19126
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19001
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
19127
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
19002
19128
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
19003
19129
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
19004
19130
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
@@ -19125,7 +19251,7 @@ var ScatterPanel = /** @class */ (function (_super) {
19125
19251
  __webpack_require__.r(__webpack_exports__);
19126
19252
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Slider3D", function() { return Slider3D; });
19127
19253
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19128
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
19254
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
19129
19255
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
19130
19256
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
19131
19257
  /* harmony import */ var _materials_mrdl_mrdlSliderBarMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/mrdl/mrdlSliderBarMaterial */ "./3D/materials/mrdl/mrdlSliderBarMaterial.ts");
@@ -19413,7 +19539,7 @@ var Slider3D = /** @class */ (function (_super) {
19413
19539
  __webpack_require__.r(__webpack_exports__);
19414
19540
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SpherePanel", function() { return SpherePanel; });
19415
19541
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19416
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
19542
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
19417
19543
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
19418
19544
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
19419
19545
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
@@ -19499,7 +19625,7 @@ var SpherePanel = /** @class */ (function (_super) {
19499
19625
  __webpack_require__.r(__webpack_exports__);
19500
19626
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StackPanel3D", function() { return StackPanel3D; });
19501
19627
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19502
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
19628
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
19503
19629
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
19504
19630
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
19505
19631
 
@@ -19624,7 +19750,7 @@ var StackPanel3D = /** @class */ (function (_super) {
19624
19750
  __webpack_require__.r(__webpack_exports__);
19625
19751
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchButton3D", function() { return TouchButton3D; });
19626
19752
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19627
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
19753
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
19628
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__);
19629
19755
  /* harmony import */ var _button3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./button3D */ "./3D/controls/button3D.ts");
19630
19756
  // Assumptions: absolute position of button mesh is inside the mesh
@@ -19647,6 +19773,7 @@ var TouchButton3D = /** @class */ (function (_super) {
19647
19773
  function TouchButton3D(name, collisionMesh) {
19648
19774
  var _this = _super.call(this, name) || this;
19649
19775
  _this._isNearPressed = false;
19776
+ _this._interactionSurfaceHeight = 0;
19650
19777
  _this._isToggleButton = false;
19651
19778
  _this._toggleState = false;
19652
19779
  _this._toggleButtonCallback = function () { _this._onToggle(!_this._toggleState); };
@@ -19660,6 +19787,16 @@ var TouchButton3D = /** @class */ (function (_super) {
19660
19787
  }
19661
19788
  return _this;
19662
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
+ });
19663
19800
  Object.defineProperty(TouchButton3D.prototype, "collidableFrontDirection", {
19664
19801
  /**
19665
19802
  * Returns the front-facing direction of the button, or Vector3.Zero if there is no 'front'
@@ -19696,14 +19833,29 @@ var TouchButton3D = /** @class */ (function (_super) {
19696
19833
  * @param collisionMesh the new collision mesh for the button
19697
19834
  */
19698
19835
  set: function (collisionMesh) {
19699
- var _a, _b;
19700
- // Remove the GUI3DManager's data from the previous collision mesh's reserved data store
19701
- if ((_b = (_a = this._collisionMesh) === null || _a === void 0 ? void 0 : _a.reservedDataStore) === null || _b === void 0 ? void 0 : _b.GUI3D) {
19702
- this._collisionMesh.reservedDataStore.GUI3D = {};
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
+ });
19703
19851
  }
19704
19852
  this._collisionMesh = collisionMesh;
19705
19853
  this._injectGUI3DReservedDataStore(this._collisionMesh).control = this;
19706
19854
  this._collisionMesh.isNearPickable = true;
19855
+ this._collisionMesh.getChildMeshes().forEach(function (mesh) {
19856
+ _this._injectGUI3DReservedDataStore(mesh).control = _this;
19857
+ mesh.isNearPickable = true;
19858
+ });
19707
19859
  this.collidableFrontDirection = collisionMesh.forward;
19708
19860
  },
19709
19861
  enumerable: false,
@@ -19760,6 +19912,18 @@ var TouchButton3D = /** @class */ (function (_super) {
19760
19912
  TouchButton3D.prototype._isInteractionInFrontOfButton = function (collidablePos) {
19761
19913
  return this._getInteractionHeight(collidablePos, this._collisionMesh.getAbsolutePosition()) > 0;
19762
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
+ };
19763
19927
  // Returns true if the collidable is in front of the button, or if the button has no front direction
19764
19928
  TouchButton3D.prototype._getInteractionHeight = function (interactionPos, basePos) {
19765
19929
  var frontDir = this.collidableFrontDirection;
@@ -19780,6 +19944,7 @@ var TouchButton3D = /** @class */ (function (_super) {
19780
19944
  }
19781
19945
  else {
19782
19946
  this._isNearPressed = true;
19947
+ this._interactionSurfaceHeight = this._getInteractionHeight(nearMeshPosition, this._collisionMesh.getAbsolutePosition());
19783
19948
  }
19784
19949
  }
19785
19950
  if (providedType === babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERUP) {
@@ -19830,7 +19995,7 @@ var TouchButton3D = /** @class */ (function (_super) {
19830
19995
  __webpack_require__.r(__webpack_exports__);
19831
19996
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchHolographicButton", function() { return TouchHolographicButton; });
19832
19997
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19833
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
19998
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
19834
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__);
19835
20000
  /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
19836
20001
  /* harmony import */ var _materials_fluentButton_fluentButtonMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/fluentButton/fluentButtonMaterial */ "./3D/materials/fluentButton/fluentButtonMaterial.ts");
@@ -19857,6 +20022,7 @@ __webpack_require__.r(__webpack_exports__);
19857
20022
 
19858
20023
 
19859
20024
 
20025
+
19860
20026
  /**
19861
20027
  * Class used to create a holographic button in 3D
19862
20028
  * @since 5.0.0
@@ -19886,7 +20052,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19886
20052
  _this._frontMaterial.rightBlobEnable = false;
19887
20053
  };
19888
20054
  _this.pointerDownAnimation = function () {
19889
- if (_this._frontPlate && !_this._isNearPressed) {
20055
+ if (_this._frontPlate && !_this.isActiveNearInteraction) {
19890
20056
  _this._frontPlate.scaling.z = _this._frontPlateDepth * 0.2;
19891
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);
19892
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);
@@ -19900,7 +20066,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19900
20066
  }
19901
20067
  };
19902
20068
  _this.onPointerMoveObservable.add(function (position) {
19903
- if (_this._frontPlate && _this._isNearPressed) {
20069
+ if (_this._frontPlate && _this.isActiveNearInteraction) {
19904
20070
  var scale = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Zero();
19905
20071
  if (_this._backPlate.getWorldMatrix().decompose(scale, undefined, undefined)) {
19906
20072
  var interactionHeight = _this._getInteractionHeight(position, _this._backPlate.getAbsolutePosition()) / scale.z;
@@ -19948,6 +20114,16 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19948
20114
  enumerable: false,
19949
20115
  configurable: true
19950
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
+ });
19951
20127
  Object.defineProperty(TouchHolographicButton.prototype, "tooltipText", {
19952
20128
  get: function () {
19953
20129
  if (this._tooltipTextBlock) {
@@ -20168,7 +20344,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
20168
20344
  height: 1.0,
20169
20345
  depth: this._backPlateDepth,
20170
20346
  }, scene);
20171
- 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);
20172
20348
  this._backPlate.isPickable = false;
20173
20349
  this._textPlate = _super.prototype._createNode.call(this, scene);
20174
20350
  this._textPlate.name = "".concat(this.name, "_textPlate");
@@ -20176,9 +20352,11 @@ var TouchHolographicButton = /** @class */ (function (_super) {
20176
20352
  this._textPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(scene.useRightHandedSystem).scale(-this._frontPlateDepth / 2);
20177
20353
  this._backPlate.addChild(collisionMesh);
20178
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);
20179
20357
  this.collisionMesh = collisionMesh;
20180
20358
  this.collidableFrontDirection = this._backPlate.forward.negate(); // Mesh is facing the wrong way
20181
- return this._backPlate;
20359
+ return tn;
20182
20360
  };
20183
20361
  TouchHolographicButton.prototype._applyFacade = function (facadeTexture) {
20184
20362
  this._plateMaterial.emissiveTexture = facadeTexture;
@@ -20287,7 +20465,7 @@ __webpack_require__.r(__webpack_exports__);
20287
20465
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchHolographicMenu", function() { return TouchHolographicMenu; });
20288
20466
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20289
20467
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
20290
- /* harmony import */ var babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Meshes/mesh */ "babylonjs/Misc/perfCounter");
20468
+ /* harmony import */ var babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Meshes/mesh */ "babylonjs/Misc/observable");
20291
20469
  /* harmony import */ var babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2__);
20292
20470
  /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
20293
20471
 
@@ -20531,7 +20709,7 @@ var TouchMeshButton3D = /** @class */ (function (_super) {
20531
20709
  __webpack_require__.r(__webpack_exports__);
20532
20710
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VolumeBasedPanel", function() { return VolumeBasedPanel; });
20533
20711
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20534
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
20712
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/observable");
20535
20713
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
20536
20714
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
20537
20715
 
@@ -20726,7 +20904,7 @@ __webpack_require__.r(__webpack_exports__);
20726
20904
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SideHandle", function() { return SideHandle; });
20727
20905
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CornerHandle", function() { return CornerHandle; });
20728
20906
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20729
- /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/perfCounter");
20907
+ /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/observable");
20730
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__);
20731
20909
  /* harmony import */ var _materials_handle_handleMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/handle/handleMaterial */ "./3D/materials/handle/handleMaterial.ts");
20732
20910
 
@@ -20980,7 +21158,7 @@ __webpack_require__.r(__webpack_exports__);
20980
21158
  __webpack_require__.r(__webpack_exports__);
20981
21159
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SlateGizmo", function() { return SlateGizmo; });
20982
21160
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20983
- /* harmony import */ var babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Gizmos/gizmo */ "babylonjs/Misc/perfCounter");
21161
+ /* harmony import */ var babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Gizmos/gizmo */ "babylonjs/Misc/observable");
20984
21162
  /* harmony import */ var babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__);
20985
21163
  /* harmony import */ var _gizmoHandle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./gizmoHandle */ "./3D/gizmos/gizmoHandle.ts");
20986
21164
 
@@ -20989,6 +21167,7 @@ __webpack_require__.r(__webpack_exports__);
20989
21167
 
20990
21168
 
20991
21169
 
21170
+
20992
21171
  /**
20993
21172
  * Gizmo to resize 2D slates
20994
21173
  */
@@ -21012,6 +21191,7 @@ var SlateGizmo = /** @class */ (function (_super) {
21012
21191
  * Value we use to offset handles from mesh
21013
21192
  */
21014
21193
  _this._margin = 0.35;
21194
+ _this._handleSize = 0.075;
21015
21195
  _this._attachedSlate = null;
21016
21196
  _this._existingSlateScale = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21017
21197
  /**
@@ -21022,10 +21202,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21022
21202
  * The distance away from the object which the draggable meshes should appear world sized when fixedScreenSize is set to true (default: 10)
21023
21203
  */
21024
21204
  _this.fixedScreenSizeDistanceFactor = 10;
21025
- /**
21026
- * Size of the handles (meters in XR)
21027
- */
21028
- _this.handleSize = 0.01;
21029
21205
  _this._createNode();
21030
21206
  _this.updateScale = false;
21031
21207
  _this._renderObserver = _this.gizmoLayer.originalScene.onBeforeRenderObservable.add(function () {
@@ -21096,7 +21272,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21096
21272
  var corner = new _gizmoHandle__WEBPACK_IMPORTED_MODULE_2__["CornerHandle"](this, this.gizmoLayer.utilityLayerScene);
21097
21273
  this._corners.push(corner);
21098
21274
  corner.node.rotation.z = (Math.PI / 2) * i;
21099
- corner.node.scaling.setAll(this.handleSize);
21100
21275
  corner.node.parent = this._handlesParent;
21101
21276
  this._assignDragBehaviorCorners(corner, function (originStart, dimensionsStart, offset, masks) { return _this._moveHandle(originStart, dimensionsStart, offset, masks, true); }, masksCorners[i]);
21102
21277
  }
@@ -21104,7 +21279,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21104
21279
  var side = new _gizmoHandle__WEBPACK_IMPORTED_MODULE_2__["SideHandle"](this, this.gizmoLayer.utilityLayerScene);
21105
21280
  this._sides.push(side);
21106
21281
  side.node.rotation.z = (Math.PI / 2) * i;
21107
- side.node.scaling.copyFromFloats(this.handleSize, this.handleSize, this.handleSize);
21108
21282
  side.node.parent = this._handlesParent;
21109
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));
21110
21284
  }
@@ -21151,8 +21325,7 @@ var SlateGizmo = /** @class */ (function (_super) {
21151
21325
  offsetOriginMasked.copyFrom(offset).multiplyInPlace(masks.origin);
21152
21326
  offsetDimensionsMasked.copyFrom(offset).multiplyInPlace(masks.dimensions);
21153
21327
  this._attachedSlate.origin.copyFrom(originStart).addInPlace(offsetOriginMasked);
21154
- this._attachedSlate.dimensions.copyFrom(dimensionsStart).addInPlace(offsetDimensionsMasked);
21155
- this._attachedSlate.backplateDimensions.x = this._attachedSlate.dimensions.x;
21328
+ this._attachedSlate.dimensions.set(dimensionsStart.x + offsetDimensionsMasked.x, dimensionsStart.y + offsetDimensionsMasked.y);
21156
21329
  };
21157
21330
  SlateGizmo.prototype._assignDragBehaviorCorners = function (handle, moveFn, masks) {
21158
21331
  var _this = this;
@@ -21161,7 +21334,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21161
21334
  var dragOrigin = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21162
21335
  var toObjectFrame = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Matrix"]();
21163
21336
  var dragPlaneNormal = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21164
- var previousFollowState = false;
21165
21337
  var projectToRef = function (position, normal, origin, ref) {
21166
21338
  // Projects on the plane with its normal and origin
21167
21339
  position.subtractToRef(origin, babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["TmpVectors"].Vector3[0]);
@@ -21172,13 +21344,12 @@ var SlateGizmo = /** @class */ (function (_super) {
21172
21344
  };
21173
21345
  var dragStart = function (event) {
21174
21346
  if (_this.attachedSlate && _this.attachedMesh) {
21175
- dimensionsStart.copyFrom(_this.attachedSlate.dimensions);
21347
+ dimensionsStart.set(_this.attachedSlate.dimensions.x, _this.attachedSlate.dimensions.y, babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Epsilon"]);
21176
21348
  originStart.copyFrom(_this.attachedSlate.origin);
21177
21349
  dragOrigin.copyFrom(event.position);
21178
21350
  toObjectFrame.copyFrom(_this.attachedMesh.computeWorldMatrix(true));
21179
21351
  toObjectFrame.invert();
21180
- previousFollowState = _this.attachedSlate.defaultBehavior.followBehaviorEnabled;
21181
- _this.attachedSlate.defaultBehavior.followBehaviorEnabled = false;
21352
+ _this.attachedSlate._followButton.isToggled = false;
21182
21353
  babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformNormalToRef(babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(), _this.attachedMesh.getWorldMatrix(), dragPlaneNormal);
21183
21354
  dragPlaneNormal.normalize();
21184
21355
  if (_this._handleHovered) {
@@ -21200,7 +21371,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21200
21371
  var dragEnd = function () {
21201
21372
  if (_this.attachedSlate && _this.attachedNode) {
21202
21373
  _this.attachedSlate._updatePivot();
21203
- _this.attachedSlate.defaultBehavior.followBehaviorEnabled = previousFollowState;
21204
21374
  if (_this._handleDragged) {
21205
21375
  _this._handleDragged.drag = false;
21206
21376
  _this._handleDragged = null;
@@ -21215,16 +21385,14 @@ var SlateGizmo = /** @class */ (function (_super) {
21215
21385
  var dragOrigin = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21216
21386
  var directionOrigin = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21217
21387
  var worldPivot = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21218
- var previousFollowState;
21219
21388
  var worldPlaneNormal = new babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"]();
21220
21389
  var dragStart = function (event) {
21221
21390
  if (_this.attachedSlate && _this.attachedMesh) {
21222
21391
  quaternionOrigin.copyFrom(_this.attachedMesh.rotationQuaternion);
21223
21392
  dragOrigin.copyFrom(event.position);
21224
- previousFollowState = _this.attachedSlate.defaultBehavior.followBehaviorEnabled;
21225
- _this.attachedSlate.defaultBehavior.followBehaviorEnabled = false;
21226
21393
  worldPivot.copyFrom(_this.attachedMesh.getAbsolutePivotPoint());
21227
21394
  directionOrigin.copyFrom(dragOrigin).subtractInPlace(worldPivot).normalize();
21395
+ _this.attachedSlate._followButton.isToggled = false;
21228
21396
  babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__["Vector3"].TransformNormalToRef(dragPlaneNormal, _this.attachedMesh.getWorldMatrix(), worldPlaneNormal);
21229
21397
  worldPlaneNormal.normalize();
21230
21398
  if (_this._handleHovered) {
@@ -21246,7 +21414,6 @@ var SlateGizmo = /** @class */ (function (_super) {
21246
21414
  var dragEnd = function () {
21247
21415
  if (_this.attachedSlate && _this.attachedNode) {
21248
21416
  _this.attachedSlate._updatePivot();
21249
- _this.attachedSlate.defaultBehavior.followBehaviorEnabled = previousFollowState;
21250
21417
  if (_this._handleDragged) {
21251
21418
  _this._handleDragged.drag = false;
21252
21419
  _this._handleDragged = null;
@@ -21286,6 +21453,7 @@ var SlateGizmo = /** @class */ (function (_super) {
21286
21453
  this._boundingBoxGizmo.max = boundingMinMax.max;
21287
21454
  // Update handles of the gizmo
21288
21455
  this._updateHandlesPosition();
21456
+ this._updateHandlesScaling();
21289
21457
  // Restore position/rotation values
21290
21458
  this.attachedMesh.rotationQuaternion.copyFrom(this._tmpQuaternion);
21291
21459
  this.attachedMesh.position.copyFrom(this._tmpVector);
@@ -21314,6 +21482,19 @@ var SlateGizmo = /** @class */ (function (_super) {
21314
21482
  this._sides[2].node.position.copyFromFloats(max.x, center.y, 0);
21315
21483
  this._sides[3].node.position.copyFromFloats(center.x, max.y, 0);
21316
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
+ };
21317
21498
  SlateGizmo.prototype._update = function () {
21318
21499
  _super.prototype._update.call(this);
21319
21500
  if (!this.gizmoLayer.utilityLayerScene.activeCamera) {
@@ -21322,10 +21503,13 @@ var SlateGizmo = /** @class */ (function (_super) {
21322
21503
  if (this._attachedSlate && this._attachedSlate.mesh) {
21323
21504
  if (this.fixedScreenSize) {
21324
21505
  this._attachedSlate.mesh.absolutePosition.subtractToRef(this.gizmoLayer.utilityLayerScene.activeCamera.position, this._tmpVector);
21325
- var distanceFromCamera = (this.handleSize * this._tmpVector.length()) / this.fixedScreenSizeDistanceFactor;
21506
+ var distanceFromCamera = (this._handleSize * this._tmpVector.length()) / this.fixedScreenSizeDistanceFactor;
21326
21507
  for (var i = 0; i < this._corners.length; i++) {
21327
21508
  this._corners[i].node.scaling.set(distanceFromCamera, distanceFromCamera, distanceFromCamera);
21328
21509
  }
21510
+ for (var i = 0; i < this._sides.length; i++) {
21511
+ this._sides[i].node.scaling.set(distanceFromCamera, distanceFromCamera, distanceFromCamera);
21512
+ }
21329
21513
  }
21330
21514
  this._updateHandlesPosition();
21331
21515
  }
@@ -21360,7 +21544,7 @@ var SlateGizmo = /** @class */ (function (_super) {
21360
21544
  "use strict";
21361
21545
  __webpack_require__.r(__webpack_exports__);
21362
21546
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GUI3DManager", function() { return GUI3DManager; });
21363
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
21547
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
21364
21548
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
21365
21549
  /* harmony import */ var _controls_container3D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./controls/container3D */ "./3D/controls/container3D.ts");
21366
21550
 
@@ -21731,7 +21915,7 @@ __webpack_require__.r(__webpack_exports__);
21731
21915
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentMaterialDefines", function() { return FluentMaterialDefines; });
21732
21916
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentMaterial", function() { return FluentMaterial; });
21733
21917
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
21734
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
21918
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
21735
21919
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
21736
21920
  /* harmony import */ var _shaders_fluent_vertex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/fluent.vertex */ "./3D/materials/fluent/shaders/fluent.vertex.ts");
21737
21921
  /* harmony import */ var _shaders_fluent_fragment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/fluent.fragment */ "./3D/materials/fluent/shaders/fluent.fragment.ts");
@@ -22049,7 +22233,7 @@ __webpack_require__.r(__webpack_exports__);
22049
22233
  "use strict";
22050
22234
  __webpack_require__.r(__webpack_exports__);
22051
22235
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentPixelShader", function() { return fluentPixelShader; });
22052
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22236
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
22053
22237
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22054
22238
 
22055
22239
  var name = 'fluentPixelShader';
@@ -22071,7 +22255,7 @@ var fluentPixelShader = { name: name, shader: shader };
22071
22255
  "use strict";
22072
22256
  __webpack_require__.r(__webpack_exports__);
22073
22257
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentVertexShader", function() { return fluentVertexShader; });
22074
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22258
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
22075
22259
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22076
22260
 
22077
22261
  var name = 'fluentVertexShader';
@@ -22094,7 +22278,7 @@ var fluentVertexShader = { name: name, shader: shader };
22094
22278
  __webpack_require__.r(__webpack_exports__);
22095
22279
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentBackplateMaterial", function() { return FluentBackplateMaterial; });
22096
22280
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
22097
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
22281
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
22098
22282
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
22099
22283
  /* harmony import */ var _shaders_fluentBackplate_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/fluentBackplate.fragment */ "./3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.ts");
22100
22284
  /* harmony import */ var _shaders_fluentBackplate_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/fluentBackplate.vertex */ "./3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.ts");
@@ -22563,7 +22747,7 @@ __webpack_require__.r(__webpack_exports__);
22563
22747
  "use strict";
22564
22748
  __webpack_require__.r(__webpack_exports__);
22565
22749
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentBackplatePixelShader", function() { return fluentBackplatePixelShader; });
22566
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22750
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
22567
22751
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22568
22752
 
22569
22753
  var name = 'fluentBackplatePixelShader';
@@ -22585,7 +22769,7 @@ var fluentBackplatePixelShader = { name: name, shader: shader };
22585
22769
  "use strict";
22586
22770
  __webpack_require__.r(__webpack_exports__);
22587
22771
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentBackplateVertexShader", function() { return fluentBackplateVertexShader; });
22588
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22772
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
22589
22773
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22590
22774
 
22591
22775
  var name = 'fluentBackplateVertexShader';
@@ -22608,7 +22792,7 @@ var fluentBackplateVertexShader = { name: name, shader: shader };
22608
22792
  __webpack_require__.r(__webpack_exports__);
22609
22793
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentButtonMaterial", function() { return FluentButtonMaterial; });
22610
22794
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
22611
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
22795
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
22612
22796
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
22613
22797
  /* harmony import */ var _shaders_fluentButton_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/fluentButton.fragment */ "./3D/materials/fluentButton/shaders/fluentButton.fragment.ts");
22614
22798
  /* harmony import */ var _shaders_fluentButton_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/fluentButton.vertex */ "./3D/materials/fluentButton/shaders/fluentButton.vertex.ts");
@@ -23180,7 +23364,7 @@ __webpack_require__.r(__webpack_exports__);
23180
23364
  "use strict";
23181
23365
  __webpack_require__.r(__webpack_exports__);
23182
23366
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentButtonPixelShader", function() { return fluentButtonPixelShader; });
23183
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
23367
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
23184
23368
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
23185
23369
 
23186
23370
  var name = 'fluentButtonPixelShader';
@@ -23202,7 +23386,7 @@ var fluentButtonPixelShader = { name: name, shader: shader };
23202
23386
  "use strict";
23203
23387
  __webpack_require__.r(__webpack_exports__);
23204
23388
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentButtonVertexShader", function() { return fluentButtonVertexShader; });
23205
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
23389
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
23206
23390
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
23207
23391
 
23208
23392
  var name = 'fluentButtonVertexShader';
@@ -23225,7 +23409,7 @@ var fluentButtonVertexShader = { name: name, shader: shader };
23225
23409
  __webpack_require__.r(__webpack_exports__);
23226
23410
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HandleMaterial", function() { return HandleMaterial; });
23227
23411
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
23228
- /* harmony import */ var babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Materials/shaderMaterial */ "babylonjs/Misc/perfCounter");
23412
+ /* harmony import */ var babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Materials/shaderMaterial */ "babylonjs/Misc/observable");
23229
23413
  /* harmony import */ var babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1__);
23230
23414
  /* harmony import */ var _shaders_handle_vertex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/handle.vertex */ "./3D/materials/handle/shaders/handle.vertex.ts");
23231
23415
  /* harmony import */ var _shaders_handle_fragment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/handle.fragment */ "./3D/materials/handle/shaders/handle.fragment.ts");
@@ -23386,7 +23570,7 @@ __webpack_require__.r(__webpack_exports__);
23386
23570
  "use strict";
23387
23571
  __webpack_require__.r(__webpack_exports__);
23388
23572
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "handlePixelShader", function() { return handlePixelShader; });
23389
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
23573
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
23390
23574
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
23391
23575
 
23392
23576
  var name = 'handlePixelShader';
@@ -23408,7 +23592,7 @@ var handlePixelShader = { name: name, shader: shader };
23408
23592
  "use strict";
23409
23593
  __webpack_require__.r(__webpack_exports__);
23410
23594
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "handleVertexShader", function() { return handleVertexShader; });
23411
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
23595
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
23412
23596
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
23413
23597
 
23414
23598
  var name = 'handleVertexShader';
@@ -23495,7 +23679,7 @@ __webpack_require__.r(__webpack_exports__);
23495
23679
  __webpack_require__.r(__webpack_exports__);
23496
23680
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MRDLBackplateMaterial", function() { return MRDLBackplateMaterial; });
23497
23681
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
23498
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
23682
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
23499
23683
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
23500
23684
  /* harmony import */ var _shaders_mrdlBackplate_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/mrdlBackplate.fragment */ "./3D/materials/mrdl/shaders/mrdlBackplate.fragment.ts");
23501
23685
  /* harmony import */ var _shaders_mrdlBackplate_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/mrdlBackplate.vertex */ "./3D/materials/mrdl/shaders/mrdlBackplate.vertex.ts");
@@ -23923,7 +24107,7 @@ Object(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
23923
24107
  __webpack_require__.r(__webpack_exports__);
23924
24108
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MRDLSliderBarMaterial", function() { return MRDLSliderBarMaterial; });
23925
24109
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
23926
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
24110
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
23927
24111
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
23928
24112
  /* harmony import */ var _shaders_mrdlSliderBar_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/mrdlSliderBar.fragment */ "./3D/materials/mrdl/shaders/mrdlSliderBar.fragment.ts");
23929
24113
  /* harmony import */ var _shaders_mrdlSliderBar_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/mrdlSliderBar.vertex */ "./3D/materials/mrdl/shaders/mrdlSliderBar.vertex.ts");
@@ -24728,7 +24912,7 @@ Object(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
24728
24912
  __webpack_require__.r(__webpack_exports__);
24729
24913
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MRDLSliderThumbMaterial", function() { return MRDLSliderThumbMaterial; });
24730
24914
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
24731
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
24915
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/observable");
24732
24916
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
24733
24917
  /* harmony import */ var _shaders_mrdlSliderThumb_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/mrdlSliderThumb.fragment */ "./3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.ts");
24734
24918
  /* harmony import */ var _shaders_mrdlSliderThumb_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/mrdlSliderThumb.vertex */ "./3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.ts");
@@ -25532,7 +25716,7 @@ Object(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
25532
25716
  "use strict";
25533
25717
  __webpack_require__.r(__webpack_exports__);
25534
25718
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlBackplatePixelShader", function() { return mrdlBackplatePixelShader; });
25535
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25719
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25536
25720
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25537
25721
 
25538
25722
  var name = 'mrdlBackplatePixelShader';
@@ -25554,7 +25738,7 @@ var mrdlBackplatePixelShader = { name: name, shader: shader };
25554
25738
  "use strict";
25555
25739
  __webpack_require__.r(__webpack_exports__);
25556
25740
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlBackplateVertexShader", function() { return mrdlBackplateVertexShader; });
25557
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25741
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25558
25742
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25559
25743
 
25560
25744
  var name = 'mrdlBackplateVertexShader';
@@ -25576,7 +25760,7 @@ var mrdlBackplateVertexShader = { name: name, shader: shader };
25576
25760
  "use strict";
25577
25761
  __webpack_require__.r(__webpack_exports__);
25578
25762
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderBarPixelShader", function() { return mrdlSliderBarPixelShader; });
25579
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25763
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25580
25764
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25581
25765
 
25582
25766
  var name = 'mrdlSliderBarPixelShader';
@@ -25598,7 +25782,7 @@ var mrdlSliderBarPixelShader = { name: name, shader: shader };
25598
25782
  "use strict";
25599
25783
  __webpack_require__.r(__webpack_exports__);
25600
25784
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderBarVertexShader", function() { return mrdlSliderBarVertexShader; });
25601
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25785
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25602
25786
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25603
25787
 
25604
25788
  var name = 'mrdlSliderBarVertexShader';
@@ -25620,7 +25804,7 @@ var mrdlSliderBarVertexShader = { name: name, shader: shader };
25620
25804
  "use strict";
25621
25805
  __webpack_require__.r(__webpack_exports__);
25622
25806
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderThumbPixelShader", function() { return mrdlSliderThumbPixelShader; });
25623
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25807
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25624
25808
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25625
25809
 
25626
25810
  var name = 'mrdlSliderThumbPixelShader';
@@ -25642,7 +25826,7 @@ var mrdlSliderThumbPixelShader = { name: name, shader: shader };
25642
25826
  "use strict";
25643
25827
  __webpack_require__.r(__webpack_exports__);
25644
25828
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderThumbVertexShader", function() { return mrdlSliderThumbVertexShader; });
25645
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25829
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/observable");
25646
25830
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25647
25831
 
25648
25832
  var name = 'mrdlSliderThumbVertexShader';
@@ -25665,7 +25849,7 @@ var mrdlSliderThumbVertexShader = { name: name, shader: shader };
25665
25849
  __webpack_require__.r(__webpack_exports__);
25666
25850
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Vector3WithInfo", function() { return Vector3WithInfo; });
25667
25851
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
25668
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
25852
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
25669
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__);
25670
25854
 
25671
25855
 
@@ -26059,14 +26243,14 @@ if (typeof globalObject !== "undefined") {
26059
26243
 
26060
26244
  /***/ }),
26061
26245
 
26062
- /***/ "babylonjs/Misc/perfCounter":
26246
+ /***/ "babylonjs/Misc/observable":
26063
26247
  /*!****************************************************************************************************!*\
26064
26248
  !*** external {"root":"BABYLON","commonjs":"babylonjs","commonjs2":"babylonjs","amd":"babylonjs"} ***!
26065
26249
  \****************************************************************************************************/
26066
26250
  /*! no static exports found */
26067
26251
  /***/ (function(module, exports) {
26068
26252
 
26069
- module.exports = __WEBPACK_EXTERNAL_MODULE_babylonjs_Misc_perfCounter__;
26253
+ module.exports = __WEBPACK_EXTERNAL_MODULE_babylonjs_Misc_observable__;
26070
26254
 
26071
26255
  /***/ })
26072
26256