babylonjs-gui 5.0.0-alpha.60 → 5.0.0-alpha.64

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_Maths_math_vector__) {
10
+ })((typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this), function(__WEBPACK_EXTERNAL_MODULE_babylonjs_Misc_perfCounter__) {
11
11
  return /******/ (function(modules) { // webpackBootstrap
12
12
  /******/ // The module cache
13
13
  /******/ var installedModules = {};
@@ -97,9 +97,9 @@ return /******/ (function(modules) { // webpackBootstrap
97
97
  /******/ ({
98
98
 
99
99
  /***/ "../../node_modules/tslib/tslib.es6.js":
100
- /*!************************************************************************************!*\
101
- !*** C:/Users/raweber/Documents/GitHub/Babylon.js/node_modules/tslib/tslib.es6.js ***!
102
- \************************************************************************************/
100
+ /*!*************************************************************!*\
101
+ !*** E:/Babylon/Babylon.js/node_modules/tslib/tslib.es6.js ***!
102
+ \*************************************************************/
103
103
  /*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __createBinding, __exportStar, __values, __read, __spread, __spreadArrays, __spreadArray, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault, __classPrivateFieldGet, __classPrivateFieldSet */
104
104
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
105
105
 
@@ -413,7 +413,7 @@ module.exports = g;
413
413
  "use strict";
414
414
  __webpack_require__.r(__webpack_exports__);
415
415
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AdvancedDynamicTextureInstrumentation", function() { return AdvancedDynamicTextureInstrumentation; });
416
- /* harmony import */ var babylonjs_Misc_perfCounter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/perfCounter */ "babylonjs/Maths/math.vector");
416
+ /* harmony import */ var babylonjs_Misc_perfCounter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/perfCounter */ "babylonjs/Misc/perfCounter");
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/Maths/math.vector");
559
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
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");
@@ -582,21 +582,21 @@ __webpack_require__.r(__webpack_exports__);
582
582
 
583
583
 
584
584
  /**
585
- * Class used to create texture to support 2D GUI elements
586
- * @see https://doc.babylonjs.com/how_to/gui
587
- */
585
+ * Class used to create texture to support 2D GUI elements
586
+ * @see https://doc.babylonjs.com/how_to/gui
587
+ */
588
588
  var AdvancedDynamicTexture = /** @class */ (function (_super) {
589
589
  Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(AdvancedDynamicTexture, _super);
590
590
  /**
591
- * Creates a new AdvancedDynamicTexture
592
- * @param name defines the name of the texture
593
- * @param width defines the width of the texture
594
- * @param height defines the height of the texture
595
- * @param scene defines the hosting scene
596
- * @param generateMipMaps defines a boolean indicating if mipmaps must be generated (false by default)
597
- * @param samplingMode defines the texture sampling mode (Texture.NEAREST_SAMPLINGMODE by default)
598
- * @param invertY defines if the texture needs to be inverted on the y axis during loading (true by default)
599
- */
591
+ * Creates a new AdvancedDynamicTexture
592
+ * @param name defines the name of the texture
593
+ * @param width defines the width of the texture
594
+ * @param height defines the height of the texture
595
+ * @param scene defines the hosting scene
596
+ * @param generateMipMaps defines a boolean indicating if mipmaps must be generated (false by default)
597
+ * @param samplingMode defines the texture sampling mode (Texture.NEAREST_SAMPLINGMODE by default)
598
+ * @param invertY defines if the texture needs to be inverted on the y axis during loading (true by default)
599
+ */
600
600
  function AdvancedDynamicTexture(name, width, height, scene, generateMipMaps, samplingMode, invertY) {
601
601
  if (width === void 0) { width = 0; }
602
602
  if (height === void 0) { height = 0; }
@@ -630,37 +630,37 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
630
630
  /** @hidden */
631
631
  _this._numRenderCalls = 0;
632
632
  /**
633
- * Define type to string to ensure compatibility across browsers
634
- * Safari doesn't support DataTransfer constructor
635
- */
633
+ * Define type to string to ensure compatibility across browsers
634
+ * Safari doesn't support DataTransfer constructor
635
+ */
636
636
  _this._clipboardData = "";
637
637
  /**
638
- * Observable event triggered each time an clipboard event is received from the rendering canvas
639
- */
638
+ * Observable event triggered each time an clipboard event is received from the rendering canvas
639
+ */
640
640
  _this.onClipboardObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
641
641
  /**
642
- * Observable event triggered each time a pointer down is intercepted by a control
643
- */
642
+ * Observable event triggered each time a pointer down is intercepted by a control
643
+ */
644
644
  _this.onControlPickedObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
645
645
  /**
646
- * Observable event triggered before layout is evaluated
647
- */
646
+ * Observable event triggered before layout is evaluated
647
+ */
648
648
  _this.onBeginLayoutObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
649
649
  /**
650
- * Observable event triggered after the layout was evaluated
651
- */
650
+ * Observable event triggered after the layout was evaluated
651
+ */
652
652
  _this.onEndLayoutObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
653
653
  /**
654
- * Observable event triggered before the texture is rendered
655
- */
654
+ * Observable event triggered before the texture is rendered
655
+ */
656
656
  _this.onBeginRenderObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
657
657
  /**
658
- * Observable event triggered after the texture was rendered
659
- */
658
+ * Observable event triggered after the texture was rendered
659
+ */
660
660
  _this.onEndRenderObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
661
661
  /**
662
- * Gets or sets a boolean defining if alpha is stored as premultiplied
663
- */
662
+ * Gets or sets a boolean defining if alpha is stored as premultiplied
663
+ */
664
664
  _this.premulAlpha = false;
665
665
  /**
666
666
  * Gets or sets a boolean indicating that the canvas must be reverted on Y when updating the texture
@@ -734,9 +734,9 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
734
734
  });
735
735
  Object.defineProperty(AdvancedDynamicTexture.prototype, "renderScale", {
736
736
  /**
737
- * Gets or sets a number used to scale rendering size (2 means that the texture will be twice bigger).
738
- * Useful when you want more antialiasing
739
- */
737
+ * Gets or sets a number used to scale rendering size (2 means that the texture will be twice bigger).
738
+ * Useful when you want more antialiasing
739
+ */
740
740
  get: function () {
741
741
  return this._renderScale;
742
742
  },
@@ -767,10 +767,10 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
767
767
  });
768
768
  Object.defineProperty(AdvancedDynamicTexture.prototype, "idealWidth", {
769
769
  /**
770
- * Gets or sets the ideal width used to design controls.
771
- * The GUI will then rescale everything accordingly
772
- * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
773
- */
770
+ * Gets or sets the ideal width used to design controls.
771
+ * The GUI will then rescale everything accordingly
772
+ * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
773
+ */
774
774
  get: function () {
775
775
  return this._idealWidth;
776
776
  },
@@ -787,10 +787,10 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
787
787
  });
788
788
  Object.defineProperty(AdvancedDynamicTexture.prototype, "idealHeight", {
789
789
  /**
790
- * Gets or sets the ideal height used to design controls.
791
- * The GUI will then rescale everything accordingly
792
- * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
793
- */
790
+ * Gets or sets the ideal height used to design controls.
791
+ * The GUI will then rescale everything accordingly
792
+ * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
793
+ */
794
794
  get: function () {
795
795
  return this._idealHeight;
796
796
  },
@@ -807,9 +807,9 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
807
807
  });
808
808
  Object.defineProperty(AdvancedDynamicTexture.prototype, "useSmallestIdeal", {
809
809
  /**
810
- * Gets or sets a boolean indicating if the smallest ideal value must be used if idealWidth and idealHeight are both set
811
- * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
812
- */
810
+ * Gets or sets a boolean indicating if the smallest ideal value must be used if idealWidth and idealHeight are both set
811
+ * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
812
+ */
813
813
  get: function () {
814
814
  return this._useSmallestIdeal;
815
815
  },
@@ -826,9 +826,9 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
826
826
  });
827
827
  Object.defineProperty(AdvancedDynamicTexture.prototype, "renderAtIdealSize", {
828
828
  /**
829
- * Gets or sets a boolean indicating if adaptive scaling must be used
830
- * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
831
- */
829
+ * Gets or sets a boolean indicating if adaptive scaling must be used
830
+ * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
831
+ */
832
832
  get: function () {
833
833
  return this._renderAtIdealSize;
834
834
  },
@@ -845,24 +845,26 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
845
845
  Object.defineProperty(AdvancedDynamicTexture.prototype, "idealRatio", {
846
846
  /**
847
847
  * Gets the ratio used when in "ideal mode"
848
- * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
848
+ * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
849
849
  * */
850
850
  get: function () {
851
851
  var rwidth = 0;
852
852
  var rheight = 0;
853
853
  if (this._idealWidth) {
854
- rwidth = (this.getSize().width) / this._idealWidth;
854
+ rwidth = this.getSize().width / this._idealWidth;
855
855
  }
856
856
  if (this._idealHeight) {
857
- rheight = (this.getSize().height) / this._idealHeight;
857
+ rheight = this.getSize().height / this._idealHeight;
858
858
  }
859
859
  if (this._useSmallestIdeal && this._idealWidth && this._idealHeight) {
860
860
  return window.innerWidth < window.innerHeight ? rwidth : rheight;
861
861
  }
862
- if (this._idealWidth) { // horizontal
862
+ if (this._idealWidth) {
863
+ // horizontal
863
864
  return rwidth;
864
865
  }
865
- if (this._idealHeight) { // vertical
866
+ if (this._idealHeight) {
867
+ // vertical
866
868
  return rheight;
867
869
  }
868
870
  return 1;
@@ -872,8 +874,8 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
872
874
  });
873
875
  Object.defineProperty(AdvancedDynamicTexture.prototype, "layer", {
874
876
  /**
875
- * Gets the underlying layer used to render the texture when in fullscreen mode
876
- */
877
+ * Gets the underlying layer used to render the texture when in fullscreen mode
878
+ */
877
879
  get: function () {
878
880
  return this._layerToDispose;
879
881
  },
@@ -882,8 +884,8 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
882
884
  });
883
885
  Object.defineProperty(AdvancedDynamicTexture.prototype, "rootContainer", {
884
886
  /**
885
- * Gets the root container control
886
- */
887
+ * Gets the root container control
888
+ */
887
889
  get: function () {
888
890
  return this._rootContainer;
889
891
  },
@@ -891,35 +893,35 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
891
893
  configurable: true
892
894
  });
893
895
  /**
894
- * Returns an array containing the root container.
895
- * This is mostly used to let the Inspector introspects the ADT
896
- * @returns an array containing the rootContainer
897
- */
896
+ * Returns an array containing the root container.
897
+ * This is mostly used to let the Inspector introspects the ADT
898
+ * @returns an array containing the rootContainer
899
+ */
898
900
  AdvancedDynamicTexture.prototype.getChildren = function () {
899
901
  return [this._rootContainer];
900
902
  };
901
903
  /**
902
- * Will return all controls that are inside this texture
903
- * @param directDescendantsOnly defines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered
904
- * @param predicate defines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored
905
- * @return all child controls
906
- */
904
+ * Will return all controls that are inside this texture
905
+ * @param directDescendantsOnly defines if true only direct descendants of 'this' will be considered, if false direct and also indirect (children of children, an so on in a recursive manner) descendants of 'this' will be considered
906
+ * @param predicate defines an optional predicate that will be called on every evaluated child, the predicate must return true for a given child to be part of the result, otherwise it will be ignored
907
+ * @return all child controls
908
+ */
907
909
  AdvancedDynamicTexture.prototype.getDescendants = function (directDescendantsOnly, predicate) {
908
910
  return this._rootContainer.getDescendants(directDescendantsOnly, predicate);
909
911
  };
910
912
  /**
911
- * Will return all controls with the given type name
912
- * @param typeName defines the type name to search for
913
- * @returns an array of all controls found
914
- */
913
+ * Will return all controls with the given type name
914
+ * @param typeName defines the type name to search for
915
+ * @returns an array of all controls found
916
+ */
915
917
  AdvancedDynamicTexture.prototype.getControlsByType = function (typeName) {
916
918
  return this._rootContainer.getDescendants(false, function (control) { return control.typeName === typeName; });
917
919
  };
918
920
  /**
919
- * Will return the first control with the given name
920
- * @param name defines the name to search for
921
- * @return the first control found or null
922
- */
921
+ * Will return the first control with the given name
922
+ * @param name defines the name to search for
923
+ * @return the first control found or null
924
+ */
923
925
  AdvancedDynamicTexture.prototype.getControlByName = function (name) {
924
926
  return this._getControlByKey("name", name);
925
927
  };
@@ -928,8 +930,8 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
928
930
  };
929
931
  Object.defineProperty(AdvancedDynamicTexture.prototype, "focusedControl", {
930
932
  /**
931
- * Gets or sets the current focused control
932
- */
933
+ * Gets or sets the current focused control
934
+ */
933
935
  get: function () {
934
936
  return this._focusedControl;
935
937
  },
@@ -950,13 +952,13 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
950
952
  });
951
953
  Object.defineProperty(AdvancedDynamicTexture.prototype, "isForeground", {
952
954
  /**
953
- * Gets or sets a boolean indicating if the texture must be rendered in background or foreground when in fullscreen mode
954
- */
955
+ * Gets or sets a boolean indicating if the texture must be rendered in background or foreground when in fullscreen mode
956
+ */
955
957
  get: function () {
956
958
  if (!this.layer) {
957
959
  return true;
958
960
  }
959
- return (!this.layer.isBackground);
961
+ return !this.layer.isBackground;
960
962
  },
961
963
  set: function (value) {
962
964
  if (!this.layer) {
@@ -972,8 +974,8 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
972
974
  });
973
975
  Object.defineProperty(AdvancedDynamicTexture.prototype, "clipboardData", {
974
976
  /**
975
- * Gets or set information about clipboardData
976
- */
977
+ * Gets or set information about clipboardData
978
+ */
977
979
  get: function () {
978
980
  return this._clipboardData;
979
981
  },
@@ -984,17 +986,17 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
984
986
  configurable: true
985
987
  });
986
988
  /**
987
- * Get the current class name of the texture useful for serialization or dynamic coding.
988
- * @returns "AdvancedDynamicTexture"
989
- */
989
+ * Get the current class name of the texture useful for serialization or dynamic coding.
990
+ * @returns "AdvancedDynamicTexture"
991
+ */
990
992
  AdvancedDynamicTexture.prototype.getClassName = function () {
991
993
  return "AdvancedDynamicTexture";
992
994
  };
993
995
  /**
994
- * Function used to execute a function on all controls
995
- * @param func defines the function to execute
996
- * @param container defines the container where controls belong. If null the root container will be used
997
- */
996
+ * Function used to execute a function on all controls
997
+ * @param func defines the function to execute
998
+ * @param container defines the container where controls belong. If null the root container will be used
999
+ */
998
1000
  AdvancedDynamicTexture.prototype.executeOnAllControls = function (func, container) {
999
1001
  if (!container) {
1000
1002
  container = this._rootContainer;
@@ -1047,40 +1049,83 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1047
1049
  }
1048
1050
  };
1049
1051
  /**
1050
- * Marks the texture as dirty forcing a complete update
1051
- */
1052
+ * Marks the texture as dirty forcing a complete update
1053
+ */
1052
1054
  AdvancedDynamicTexture.prototype.markAsDirty = function () {
1053
1055
  this._isDirty = true;
1054
1056
  };
1055
1057
  /**
1056
- * Helper function used to create a new style
1057
- * @returns a new style
1058
- * @see https://doc.babylonjs.com/how_to/gui#styles
1059
- */
1058
+ * Helper function used to create a new style
1059
+ * @returns a new style
1060
+ * @see https://doc.babylonjs.com/how_to/gui#styles
1061
+ */
1060
1062
  AdvancedDynamicTexture.prototype.createStyle = function () {
1061
1063
  return new _style__WEBPACK_IMPORTED_MODULE_4__["Style"](this);
1062
1064
  };
1063
1065
  /**
1064
- * Adds a new control to the root container
1065
- * @param control defines the control to add
1066
- * @returns the current texture
1067
- */
1066
+ * Adds a new control to the root container
1067
+ * @param control defines the control to add
1068
+ * @returns the current texture
1069
+ */
1068
1070
  AdvancedDynamicTexture.prototype.addControl = function (control) {
1069
1071
  this._rootContainer.addControl(control);
1070
1072
  return this;
1071
1073
  };
1072
1074
  /**
1073
- * Removes a control from the root container
1074
- * @param control defines the control to remove
1075
- * @returns the current texture
1076
- */
1075
+ * Removes a control from the root container
1076
+ * @param control defines the control to remove
1077
+ * @returns the current texture
1078
+ */
1077
1079
  AdvancedDynamicTexture.prototype.removeControl = function (control) {
1078
1080
  this._rootContainer.removeControl(control);
1079
1081
  return this;
1080
1082
  };
1081
1083
  /**
1082
- * Release all resources
1083
- */
1084
+ * Moves overlapped controls towards a position where it is not overlapping anymore.
1085
+ * Please note that this method alters linkOffsetXInPixels and linkOffsetYInPixels.
1086
+ * @param overlapGroup the overlap group which will be processed or undefined to process all overlap groups
1087
+ * @param deltaStep the step size (speed) to reach the target non overlapping position (default 0.1)
1088
+ * @param repelFactor how much is the control repelled by other controls
1089
+ */
1090
+ AdvancedDynamicTexture.prototype.moveToNonOverlappedPosition = function (overlapGroup, deltaStep, repelFactor) {
1091
+ if (deltaStep === void 0) { deltaStep = 1; }
1092
+ if (repelFactor === void 0) { repelFactor = 1; }
1093
+ var controlsForGroup;
1094
+ if (Array.isArray(overlapGroup)) {
1095
+ controlsForGroup = overlapGroup;
1096
+ }
1097
+ else {
1098
+ var descendants = this.getDescendants(true);
1099
+ // get only the controls with an overlapGroup property set
1100
+ // if the overlapGroup parameter is set, filter the controls and get only the controls belonging to that overlapGroup
1101
+ controlsForGroup = overlapGroup === undefined ? descendants.filter(function (c) { return c.overlapGroup !== undefined; }) : descendants.filter(function (c) { return c.overlapGroup === overlapGroup; });
1102
+ }
1103
+ controlsForGroup.forEach(function (control1) {
1104
+ var _a;
1105
+ var velocity = babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Vector2"].Zero();
1106
+ var center = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Vector2"](control1.centerX, control1.centerY);
1107
+ controlsForGroup.forEach(function (control2) {
1108
+ if (control1 !== control2 && AdvancedDynamicTexture._Overlaps(control1, control2)) {
1109
+ // if the two controls overlaps get a direction vector from one control's center to another control's center
1110
+ var diff = center.subtract(new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Vector2"](control2.centerX, control2.centerY));
1111
+ var diffLength = diff.length();
1112
+ if (diffLength > 0) {
1113
+ // calculate the velocity
1114
+ velocity = velocity.add(diff.normalize().scale(repelFactor / diffLength));
1115
+ }
1116
+ }
1117
+ });
1118
+ if (velocity.length() > 0) {
1119
+ // move the control along the direction vector away from the overlapping control
1120
+ velocity = velocity.normalize().scale(deltaStep * ((_a = control1.overlapDeltaMultiplier) !== null && _a !== void 0 ? _a : 1));
1121
+ control1.linkOffsetXInPixels += velocity.x;
1122
+ control1.linkOffsetYInPixels += velocity.y;
1123
+ }
1124
+ });
1125
+ };
1126
+ /**
1127
+ * Release all resources
1128
+ */
1084
1129
  AdvancedDynamicTexture.prototype.dispose = function () {
1085
1130
  var scene = this.getScene();
1086
1131
  if (!scene) {
@@ -1152,24 +1197,31 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1152
1197
  /** @hidden */
1153
1198
  AdvancedDynamicTexture.prototype._getGlobalViewport = function () {
1154
1199
  var size = this.getSize();
1155
- return this._fullscreenViewport.toGlobal(size.width, size.height);
1156
- };
1157
- /**
1158
- * Get screen coordinates for a vector3
1159
- * @param position defines the position to project
1160
- * @param worldMatrix defines the world matrix to use
1161
- * @returns the projected position
1162
- */
1200
+ var globalViewPort = this._fullscreenViewport.toGlobal(size.width, size.height);
1201
+ var targetX = Math.round(globalViewPort.width * (1 / this.rootContainer.scaleX));
1202
+ var targetY = Math.round(globalViewPort.height * (1 / this.rootContainer.scaleY));
1203
+ globalViewPort.x += (globalViewPort.width - targetX) / 2;
1204
+ globalViewPort.y += (globalViewPort.height - targetY) / 2;
1205
+ globalViewPort.width = targetX;
1206
+ globalViewPort.height = targetY;
1207
+ return globalViewPort;
1208
+ };
1209
+ /**
1210
+ * Get screen coordinates for a vector3
1211
+ * @param position defines the position to project
1212
+ * @param worldMatrix defines the world matrix to use
1213
+ * @returns the projected position
1214
+ */
1163
1215
  AdvancedDynamicTexture.prototype.getProjectedPosition = function (position, worldMatrix) {
1164
1216
  var result = this.getProjectedPositionWithZ(position, worldMatrix);
1165
1217
  return new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Vector2"](result.x, result.y);
1166
1218
  };
1167
1219
  /**
1168
- * Get screen coordinates for a vector3
1169
- * @param position defines the position to project
1170
- * @param worldMatrix defines the world matrix to use
1171
- * @returns the projected position with Z
1172
- */
1220
+ * Get screen coordinates for a vector3
1221
+ * @param position defines the position to project
1222
+ * @param worldMatrix defines the world matrix to use
1223
+ * @returns the projected position with Z
1224
+ */
1173
1225
  AdvancedDynamicTexture.prototype.getProjectedPositionWithZ = function (position, worldMatrix) {
1174
1226
  var scene = this.getScene();
1175
1227
  if (!scene) {
@@ -1221,7 +1273,7 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1221
1273
  }
1222
1274
  this._isDirty = false;
1223
1275
  this._render();
1224
- this.update(this.applyYInversionOnUpdate, this.premulAlpha);
1276
+ this.update(this.applyYInversionOnUpdate, this.premulAlpha, AdvancedDynamicTexture.AllowGPUOptimizations);
1225
1277
  };
1226
1278
  AdvancedDynamicTexture.prototype._render = function () {
1227
1279
  var textureSize = this.getSize();
@@ -1333,13 +1385,13 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1333
1385
  }
1334
1386
  var tempViewport = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Viewport"](0, 0, 0, 0);
1335
1387
  this._pointerMoveObserver = scene.onPrePointerObservable.add(function (pi, state) {
1336
- if (scene.isPointerCaptured((pi.event).pointerId)) {
1388
+ if (scene.isPointerCaptured(pi.event.pointerId)) {
1337
1389
  return;
1338
1390
  }
1339
- if (pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERMOVE
1340
- && pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERUP
1341
- && pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERDOWN
1342
- && pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERWHEEL) {
1391
+ if (pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERMOVE &&
1392
+ pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERUP &&
1393
+ pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERDOWN &&
1394
+ pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERWHEEL) {
1343
1395
  return;
1344
1396
  }
1345
1397
  if (pi.type === babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERMOVE && pi.event.pointerId) {
@@ -1347,6 +1399,7 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1347
1399
  }
1348
1400
  var camera = scene.cameraToUseForPointers || scene.activeCamera;
1349
1401
  var engine = scene.getEngine();
1402
+ var originalCameraToUseForPointers = scene.cameraToUseForPointers;
1350
1403
  if (!camera) {
1351
1404
  tempViewport.x = 0;
1352
1405
  tempViewport.y = 0;
@@ -1354,7 +1407,31 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1354
1407
  tempViewport.height = engine.getRenderHeight();
1355
1408
  }
1356
1409
  else {
1357
- camera.viewport.toGlobalToRef(engine.getRenderWidth(), engine.getRenderHeight(), tempViewport);
1410
+ if (camera.rigCameras.length) {
1411
+ // rig camera - we need to find the camera to use for this event
1412
+ var rigViewport_1 = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Viewport"](0, 0, 1, 1);
1413
+ camera.rigCameras.forEach(function (rigCamera) {
1414
+ // generate the viewport of this camera
1415
+ rigCamera.viewport.toGlobalToRef(engine.getRenderWidth(), engine.getRenderHeight(), rigViewport_1);
1416
+ var x = scene.pointerX / engine.getHardwareScalingLevel() - rigViewport_1.x;
1417
+ var y = scene.pointerY / engine.getHardwareScalingLevel() - (engine.getRenderHeight() - rigViewport_1.y - rigViewport_1.height);
1418
+ // check if the pointer is in the camera's viewport
1419
+ if (x < 0 || y < 0 || x > rigViewport_1.width || y > rigViewport_1.height) {
1420
+ // out of viewport - don't use this camera
1421
+ return;
1422
+ }
1423
+ // set the camera to use for pointers until this pointer loop is over
1424
+ scene.cameraToUseForPointers = rigCamera;
1425
+ // set the viewport
1426
+ tempViewport.x = rigViewport_1.x;
1427
+ tempViewport.y = rigViewport_1.y;
1428
+ tempViewport.width = rigViewport_1.width;
1429
+ tempViewport.height = rigViewport_1.height;
1430
+ });
1431
+ }
1432
+ else {
1433
+ camera.viewport.toGlobalToRef(engine.getRenderWidth(), engine.getRenderHeight(), tempViewport);
1434
+ }
1358
1435
  }
1359
1436
  var x = scene.pointerX / engine.getHardwareScalingLevel() - tempViewport.x;
1360
1437
  var y = scene.pointerY / engine.getHardwareScalingLevel() - (engine.getRenderHeight() - tempViewport.y - tempViewport.height);
@@ -1366,13 +1443,15 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1366
1443
  if (_this._shouldBlockPointer) {
1367
1444
  pi.skipOnPointerObservable = _this._shouldBlockPointer;
1368
1445
  }
1446
+ // if overridden by a rig camera - reset back to the original value
1447
+ scene.cameraToUseForPointers = originalCameraToUseForPointers;
1369
1448
  });
1370
1449
  this._attachToOnPointerOut(scene);
1371
1450
  this._attachToOnBlur(scene);
1372
1451
  };
1373
1452
  /**
1374
- * Register the clipboard Events onto the canvas
1375
- */
1453
+ * Register the clipboard Events onto the canvas
1454
+ */
1376
1455
  AdvancedDynamicTexture.prototype.registerClipboardEvents = function () {
1377
1456
  self.addEventListener("copy", this.onClipboardCopy, false);
1378
1457
  self.addEventListener("cut", this.onClipboardCut, false);
@@ -1387,10 +1466,10 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1387
1466
  self.removeEventListener("paste", this.onClipboardPaste);
1388
1467
  };
1389
1468
  /**
1390
- * Connect the texture to a hosting mesh to enable interactions
1391
- * @param mesh defines the mesh to attach to
1392
- * @param supportPointerMove defines a boolean indicating if pointer move events must be catched as well
1393
- */
1469
+ * Connect the texture to a hosting mesh to enable interactions
1470
+ * @param mesh defines the mesh to attach to
1471
+ * @param supportPointerMove defines a boolean indicating if pointer move events must be catched as well
1472
+ */
1394
1473
  AdvancedDynamicTexture.prototype.attachToMesh = function (mesh, supportPointerMove) {
1395
1474
  var _this = this;
1396
1475
  if (supportPointerMove === void 0) { supportPointerMove = true; }
@@ -1399,10 +1478,10 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1399
1478
  return;
1400
1479
  }
1401
1480
  this._pointerObserver = scene.onPointerObservable.add(function (pi, state) {
1402
- if (pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERMOVE
1403
- && pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERUP
1404
- && pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERDOWN
1405
- && pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERWHEEL) {
1481
+ if (pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERMOVE &&
1482
+ pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERUP &&
1483
+ pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERDOWN &&
1484
+ pi.type !== babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERWHEEL) {
1406
1485
  return;
1407
1486
  }
1408
1487
  if (pi.type === babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERMOVE && pi.event.pointerId) {
@@ -1413,7 +1492,7 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1413
1492
  var uv = pi.pickInfo.getTextureCoordinates();
1414
1493
  if (uv) {
1415
1494
  var size = _this.getSize();
1416
- _this._doPicking(uv.x * size.width, (_this.applyYInversionOnUpdate ? (1.0 - uv.y) : uv.y) * size.height, pi, pi.type, pointerId, pi.event.button, pi.event.deltaX, pi.event.deltaY);
1495
+ _this._doPicking(uv.x * size.width, (_this.applyYInversionOnUpdate ? 1.0 - uv.y : uv.y) * size.height, pi, pi.type, pointerId, pi.event.button, pi.event.deltaX, pi.event.deltaY);
1417
1496
  }
1418
1497
  }
1419
1498
  else if (pi.type === babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["PointerEventTypes"].POINTERUP) {
@@ -1456,9 +1535,9 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1456
1535
  this._attachToOnBlur(scene);
1457
1536
  };
1458
1537
  /**
1459
- * Move the focus to a specific control
1460
- * @param control defines the control which will receive the focus
1461
- */
1538
+ * Move the focus to a specific control
1539
+ * @param control defines the control which will receive the focus
1540
+ */
1462
1541
  AdvancedDynamicTexture.prototype.moveFocusToControl = function (control) {
1463
1542
  this.focusedControl = control;
1464
1543
  this._lastPickedControl = control;
@@ -1528,7 +1607,7 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1528
1607
  if (scaleToSize) {
1529
1608
  var width = serializedObject.width;
1530
1609
  var height = serializedObject.height;
1531
- if (typeof (width) === "number" && typeof (height) === "number" && width >= 0 && height >= 0) {
1610
+ if (typeof width === "number" && typeof height === "number" && width >= 0 && height >= 0) {
1532
1611
  this.scaleTo(width, height);
1533
1612
  }
1534
1613
  }
@@ -1565,11 +1644,11 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1565
1644
  });
1566
1645
  };
1567
1646
  /**
1568
- * Recreate the content of the ADT from a url json
1569
- * @param url defines the url to load
1570
- * @param scaleToSize defines whether to scale to texture to the saved size
1571
- * @returns a promise that will resolve on success
1572
- */
1647
+ * Recreate the content of the ADT from a url json
1648
+ * @param url defines the url to load
1649
+ * @param scaleToSize defines whether to scale to texture to the saved size
1650
+ * @returns a promise that will resolve on success
1651
+ */
1573
1652
  AdvancedDynamicTexture.prototype.parseFromURLAsync = function (url, scaleToSize) {
1574
1653
  var _this = this;
1575
1654
  if (url === "") {
@@ -1595,6 +1674,18 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1595
1674
  });
1596
1675
  };
1597
1676
  // Statics
1677
+ /**
1678
+ * Compares two rectangle based controls for pixel overlap
1679
+ * @param control1 The first control to compare
1680
+ * @param control2 The second control to compare
1681
+ * @returns true if overlaps, otherwise false
1682
+ */
1683
+ AdvancedDynamicTexture._Overlaps = function (control1, control2) {
1684
+ return !(control1.centerX > control2.centerX + control2.widthInPixels ||
1685
+ control1.centerX + control1.widthInPixels < control2.centerX ||
1686
+ control1.centerY + control1.heightInPixels < control2.centerY ||
1687
+ control1.centerY > control2.centerY + control2.heightInPixels);
1688
+ };
1598
1689
  /**
1599
1690
  * Creates a new AdvancedDynamicTexture in projected mode (ie. attached to a mesh)
1600
1691
  * @param mesh defines the mesh which will receive the texture
@@ -1646,33 +1737,43 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1646
1737
  return result;
1647
1738
  };
1648
1739
  /**
1649
- * Creates a new AdvancedDynamicTexture in fullscreen mode.
1650
- * In this mode the texture will rely on a layer for its rendering.
1651
- * This allows it to be treated like any other layer.
1652
- * As such, if you have a multi camera setup, you can set the layerMask on the GUI as well.
1653
- * LayerMask is set through advancedTexture.layer.layerMask
1654
- * @param name defines name for the texture
1655
- * @param foreground defines a boolean indicating if the texture must be rendered in foreground (default is true)
1656
- * @param scene defines the hosting scene
1657
- * @param sampling defines the texture sampling mode (Texture.BILINEAR_SAMPLINGMODE by default)
1658
- * @returns a new AdvancedDynamicTexture
1659
- */
1660
- AdvancedDynamicTexture.CreateFullscreenUI = function (name, foreground, scene, sampling) {
1740
+ * Creates a new AdvancedDynamicTexture in fullscreen mode.
1741
+ * In this mode the texture will rely on a layer for its rendering.
1742
+ * This allows it to be treated like any other layer.
1743
+ * As such, if you have a multi camera setup, you can set the layerMask on the GUI as well.
1744
+ * LayerMask is set through advancedTexture.layer.layerMask
1745
+ * @param name defines name for the texture
1746
+ * @param foreground defines a boolean indicating if the texture must be rendered in foreground (default is true)
1747
+ * @param scene defines the hosting scene
1748
+ * @param sampling defines the texture sampling mode (Texture.BILINEAR_SAMPLINGMODE by default)
1749
+ * @param adaptiveScaling defines whether to automatically scale root to match hardwarescaling (false by default)
1750
+ * @returns a new AdvancedDynamicTexture
1751
+ */
1752
+ AdvancedDynamicTexture.CreateFullscreenUI = function (name, foreground, scene, sampling, adaptiveScaling) {
1661
1753
  if (foreground === void 0) { foreground = true; }
1662
1754
  if (scene === void 0) { scene = null; }
1663
1755
  if (sampling === void 0) { sampling = babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Texture"].BILINEAR_SAMPLINGMODE; }
1756
+ if (adaptiveScaling === void 0) { adaptiveScaling = false; }
1664
1757
  var result = new AdvancedDynamicTexture(name, 0, 0, scene, false, sampling);
1665
1758
  // Display
1666
- var layer = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Layer"](name + "_layer", null, scene, !foreground);
1759
+ var resultScene = result.getScene();
1760
+ var layer = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Layer"](name + "_layer", null, resultScene, !foreground);
1667
1761
  layer.texture = result;
1668
1762
  result._layerToDispose = layer;
1669
1763
  result._isFullscreen = true;
1764
+ if (adaptiveScaling && resultScene) {
1765
+ var newScale = 1 / resultScene.getEngine().getHardwareScalingLevel();
1766
+ result._rootContainer.scaleX = newScale;
1767
+ result._rootContainer.scaleY = newScale;
1768
+ }
1670
1769
  // Attach
1671
1770
  result.attach();
1672
1771
  return result;
1673
1772
  };
1674
1773
  /** Define the Uurl to load snippets */
1675
1774
  AdvancedDynamicTexture.SnippetUrl = "https://snippet.babylonjs.com";
1775
+ /** Indicates if some optimizations can be performed in GUI GPU management (the downside is additional memory/GPU texture memory used) */
1776
+ AdvancedDynamicTexture.AllowGPUOptimizations = true;
1676
1777
  return AdvancedDynamicTexture;
1677
1778
  }(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["DynamicTexture"]));
1678
1779
 
@@ -1695,7 +1796,7 @@ __webpack_require__.r(__webpack_exports__);
1695
1796
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
1696
1797
  /* harmony import */ var _textBlock__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./textBlock */ "./2D/controls/textBlock.ts");
1697
1798
  /* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./image */ "./2D/controls/image.ts");
1698
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
1799
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
1699
1800
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__);
1700
1801
 
1701
1802
 
@@ -1927,7 +2028,7 @@ Object(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_5__["RegisterClass"])("
1927
2028
  __webpack_require__.r(__webpack_exports__);
1928
2029
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Checkbox", function() { return Checkbox; });
1929
2030
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
1930
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
2031
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
1931
2032
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
1932
2033
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
1933
2034
  /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stackPanel */ "./2D/controls/stackPanel.ts");
@@ -2125,7 +2226,7 @@ Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
2125
2226
  __webpack_require__.r(__webpack_exports__);
2126
2227
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColorPicker", function() { return ColorPicker; });
2127
2228
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
2128
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
2229
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
2129
2230
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
2130
2231
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
2131
2232
  /* harmony import */ var _inputText__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./inputText */ "./2D/controls/inputText.ts");
@@ -3548,7 +3649,7 @@ Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
3548
3649
  __webpack_require__.r(__webpack_exports__);
3549
3650
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Container", function() { return Container; });
3550
3651
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
3551
- /* harmony import */ var babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/logger */ "babylonjs/Maths/math.vector");
3652
+ /* harmony import */ var babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/logger */ "babylonjs/Misc/perfCounter");
3552
3653
  /* harmony import */ var babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__);
3553
3654
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
3554
3655
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../measure */ "./2D/measure.ts");
@@ -3893,10 +3994,10 @@ var Container = /** @class */ (function (_super) {
3893
3994
  child._tempParentMeasure.copyFrom(this._measureForChildren);
3894
3995
  if (child._layout(this._measureForChildren, context)) {
3895
3996
  if (this.adaptWidthToChildren && child._width.isPixel) {
3896
- computedWidth = Math.max(computedWidth, child._currentMeasure.width + child.paddingLeftInPixels + child.paddingRightInPixels);
3997
+ computedWidth = Math.max(computedWidth, child._currentMeasure.width + child._paddingLeftInPixels + child._paddingRightInPixels);
3897
3998
  }
3898
3999
  if (this.adaptHeightToChildren && child._height.isPixel) {
3899
- computedHeight = Math.max(computedHeight, child._currentMeasure.height + child.paddingTopInPixels + child.paddingBottomInPixels);
4000
+ computedHeight = Math.max(computedHeight, child._currentMeasure.height + child._paddingTopInPixels + child._paddingBottomInPixels);
3900
4001
  }
3901
4002
  }
3902
4003
  }
@@ -4086,7 +4187,7 @@ Object(babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])("BAB
4086
4187
  __webpack_require__.r(__webpack_exports__);
4087
4188
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Control", function() { return Control; });
4088
4189
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
4089
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
4190
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
4090
4191
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
4091
4192
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
4092
4193
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../measure */ "./2D/measure.ts");
@@ -4122,6 +4223,8 @@ var Control = /** @class */ (function () {
4122
4223
  this._zIndex = 0;
4123
4224
  /** @hidden */
4124
4225
  this._currentMeasure = _measure__WEBPACK_IMPORTED_MODULE_3__["Measure"].Empty();
4226
+ /** @hidden */
4227
+ this._tempPaddingMeasure = _measure__WEBPACK_IMPORTED_MODULE_3__["Measure"].Empty();
4125
4228
  this._fontFamily = "Arial";
4126
4229
  this._fontStyle = "";
4127
4230
  this._fontWeight = "";
@@ -4146,6 +4249,7 @@ var Control = /** @class */ (function () {
4146
4249
  this._prevCurrentMeasureTransformedIntoGlobalSpace = _measure__WEBPACK_IMPORTED_MODULE_3__["Measure"].Empty();
4147
4250
  /** @hidden */
4148
4251
  this._cachedParentMeasure = _measure__WEBPACK_IMPORTED_MODULE_3__["Measure"].Empty();
4252
+ this._descendantsOnlyPadding = false;
4149
4253
  this._paddingLeft = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"](0);
4150
4254
  this._paddingRight = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"](0);
4151
4255
  this._paddingTop = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"](0);
@@ -4176,6 +4280,8 @@ var Control = /** @class */ (function () {
4176
4280
  this._enterCount = -1;
4177
4281
  this._doNotRender = false;
4178
4282
  this._downPointerIds = {};
4283
+ this._evaluatedMeasure = new _measure__WEBPACK_IMPORTED_MODULE_3__["Measure"](0, 0, 0, 0);
4284
+ this._evaluatedParentMeasure = new _measure__WEBPACK_IMPORTED_MODULE_3__["Measure"](0, 0, 0, 0);
4179
4285
  this._isEnabled = true;
4180
4286
  this._disabledColor = "#9a9a9a";
4181
4287
  this._disabledColorItem = "#6a6a6a";
@@ -4216,7 +4322,7 @@ var Control = /** @class */ (function () {
4216
4322
  this._shadowOffsetY = 0;
4217
4323
  this._shadowBlur = 0;
4218
4324
  this._previousShadowBlur = 0;
4219
- this._shadowColor = 'black';
4325
+ this._shadowColor = "black";
4220
4326
  /** Gets or sets the cursor to use when the control is hovered */
4221
4327
  this.hoverCursor = "";
4222
4328
  /** @hidden */
@@ -4224,36 +4330,36 @@ var Control = /** @class */ (function () {
4224
4330
  /** @hidden */
4225
4331
  this._linkOffsetY = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"](0);
4226
4332
  /**
4227
- * An event triggered when pointer wheel is scrolled
4228
- */
4333
+ * An event triggered when pointer wheel is scrolled
4334
+ */
4229
4335
  this.onWheelObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
4230
4336
  /**
4231
- * An event triggered when the pointer moves over the control.
4232
- */
4337
+ * An event triggered when the pointer moves over the control.
4338
+ */
4233
4339
  this.onPointerMoveObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
4234
4340
  /**
4235
- * An event triggered when the pointer moves out of the control.
4236
- */
4341
+ * An event triggered when the pointer moves out of the control.
4342
+ */
4237
4343
  this.onPointerOutObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
4238
4344
  /**
4239
- * An event triggered when the pointer taps the control
4240
- */
4345
+ * An event triggered when the pointer taps the control
4346
+ */
4241
4347
  this.onPointerDownObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
4242
4348
  /**
4243
- * An event triggered when pointer up
4244
- */
4349
+ * An event triggered when pointer up
4350
+ */
4245
4351
  this.onPointerUpObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
4246
4352
  /**
4247
- * An event triggered when a control is clicked on
4248
- */
4353
+ * An event triggered when a control is clicked on
4354
+ */
4249
4355
  this.onPointerClickObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
4250
4356
  /**
4251
- * An event triggered when pointer enters the control
4252
- */
4357
+ * An event triggered when pointer enters the control
4358
+ */
4253
4359
  this.onPointerEnterObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
4254
4360
  /**
4255
- * An event triggered when the control is marked as dirty
4256
- */
4361
+ * An event triggered when the control is marked as dirty
4362
+ */
4257
4363
  this.onDirtyObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
4258
4364
  /**
4259
4365
  * An event triggered before drawing the control
@@ -4264,8 +4370,8 @@ var Control = /** @class */ (function () {
4264
4370
  */
4265
4371
  this.onAfterDrawObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
4266
4372
  /**
4267
- * An event triggered when the control has been disposed
4268
- */
4373
+ * An event triggered when the control has been disposed
4374
+ */
4269
4375
  this.onDisposeObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
4270
4376
  /**
4271
4377
  * Gets or sets a fixed ratio for this control.
@@ -4291,6 +4397,16 @@ var Control = /** @class */ (function () {
4291
4397
  enumerable: false,
4292
4398
  configurable: true
4293
4399
  });
4400
+ Object.defineProperty(Control.prototype, "transformedMeasure", {
4401
+ /**
4402
+ * Gets the transformed measure, that is the bounding box of the control after applying all transformations
4403
+ */
4404
+ get: function () {
4405
+ return this._evaluatedMeasure;
4406
+ },
4407
+ enumerable: false,
4408
+ configurable: true
4409
+ });
4294
4410
  Object.defineProperty(Control.prototype, "shadowOffsetX", {
4295
4411
  /** Gets or sets a value indicating the offset to apply on X axis to render the shadow */
4296
4412
  get: function () {
@@ -4459,7 +4575,7 @@ var Control = /** @class */ (function () {
4459
4575
  Object.defineProperty(Control.prototype, "scaleX", {
4460
4576
  /** Gets or sets a value indicating the scale factor on X axis (1 by default)
4461
4577
  * @see https://doc.babylonjs.com/how_to/gui#rotation-and-scaling
4462
- */
4578
+ */
4463
4579
  get: function () {
4464
4580
  return this._scaleX;
4465
4581
  },
@@ -4477,7 +4593,7 @@ var Control = /** @class */ (function () {
4477
4593
  Object.defineProperty(Control.prototype, "scaleY", {
4478
4594
  /** Gets or sets a value indicating the scale factor on Y axis (1 by default)
4479
4595
  * @see https://doc.babylonjs.com/how_to/gui#rotation-and-scaling
4480
- */
4596
+ */
4481
4597
  get: function () {
4482
4598
  return this._scaleY;
4483
4599
  },
@@ -4495,7 +4611,7 @@ var Control = /** @class */ (function () {
4495
4611
  Object.defineProperty(Control.prototype, "rotation", {
4496
4612
  /** Gets or sets the rotation angle (0 by default)
4497
4613
  * @see https://doc.babylonjs.com/how_to/gui#rotation-and-scaling
4498
- */
4614
+ */
4499
4615
  get: function () {
4500
4616
  return this._rotation;
4501
4617
  },
@@ -4513,7 +4629,7 @@ var Control = /** @class */ (function () {
4513
4629
  Object.defineProperty(Control.prototype, "transformCenterY", {
4514
4630
  /** Gets or sets the transformation center on Y axis (0 by default)
4515
4631
  * @see https://doc.babylonjs.com/how_to/gui#rotation-and-scaling
4516
- */
4632
+ */
4517
4633
  get: function () {
4518
4634
  return this._transformCenterY;
4519
4635
  },
@@ -4531,7 +4647,7 @@ var Control = /** @class */ (function () {
4531
4647
  Object.defineProperty(Control.prototype, "transformCenterX", {
4532
4648
  /** Gets or sets the transformation center on X axis (0 by default)
4533
4649
  * @see https://doc.babylonjs.com/how_to/gui#rotation-and-scaling
4534
- */
4650
+ */
4535
4651
  get: function () {
4536
4652
  return this._transformCenterX;
4537
4653
  },
@@ -4853,6 +4969,24 @@ var Control = /** @class */ (function () {
4853
4969
  enumerable: false,
4854
4970
  configurable: true
4855
4971
  });
4972
+ Object.defineProperty(Control.prototype, "descendantsOnlyPadding", {
4973
+ /**
4974
+ * Gets or sets a value indicating the padding should work like in CSS.
4975
+ * Basically, it will add the padding amount on each side of the parent control for its children.
4976
+ */
4977
+ get: function () {
4978
+ return this._descendantsOnlyPadding;
4979
+ },
4980
+ set: function (value) {
4981
+ if (this._descendantsOnlyPadding === value) {
4982
+ return;
4983
+ }
4984
+ this._descendantsOnlyPadding = value;
4985
+ this._markAsDirty();
4986
+ },
4987
+ enumerable: false,
4988
+ configurable: true
4989
+ });
4856
4990
  Object.defineProperty(Control.prototype, "paddingLeft", {
4857
4991
  /**
4858
4992
  * Gets or sets a value indicating the padding to use on the left of the control
@@ -4886,6 +5020,17 @@ var Control = /** @class */ (function () {
4886
5020
  enumerable: false,
4887
5021
  configurable: true
4888
5022
  });
5023
+ Object.defineProperty(Control.prototype, "_paddingLeftInPixels", {
5024
+ /** @hidden */
5025
+ get: function () {
5026
+ if (this._descendantsOnlyPadding) {
5027
+ return 0;
5028
+ }
5029
+ return this.paddingLeftInPixels;
5030
+ },
5031
+ enumerable: false,
5032
+ configurable: true
5033
+ });
4889
5034
  Object.defineProperty(Control.prototype, "paddingRight", {
4890
5035
  /**
4891
5036
  * Gets or sets a value indicating the padding to use on the right of the control
@@ -4919,6 +5064,17 @@ var Control = /** @class */ (function () {
4919
5064
  enumerable: false,
4920
5065
  configurable: true
4921
5066
  });
5067
+ Object.defineProperty(Control.prototype, "_paddingRightInPixels", {
5068
+ /** @hidden */
5069
+ get: function () {
5070
+ if (this._descendantsOnlyPadding) {
5071
+ return 0;
5072
+ }
5073
+ return this.paddingRightInPixels;
5074
+ },
5075
+ enumerable: false,
5076
+ configurable: true
5077
+ });
4922
5078
  Object.defineProperty(Control.prototype, "paddingTop", {
4923
5079
  /**
4924
5080
  * Gets or sets a value indicating the padding to use on the top of the control
@@ -4952,6 +5108,17 @@ var Control = /** @class */ (function () {
4952
5108
  enumerable: false,
4953
5109
  configurable: true
4954
5110
  });
5111
+ Object.defineProperty(Control.prototype, "_paddingTopInPixels", {
5112
+ /** @hidden */
5113
+ get: function () {
5114
+ if (this._descendantsOnlyPadding) {
5115
+ return 0;
5116
+ }
5117
+ return this.paddingTopInPixels;
5118
+ },
5119
+ enumerable: false,
5120
+ configurable: true
5121
+ });
4955
5122
  Object.defineProperty(Control.prototype, "paddingBottom", {
4956
5123
  /**
4957
5124
  * Gets or sets a value indicating the padding to use on the bottom of the control
@@ -4985,6 +5152,17 @@ var Control = /** @class */ (function () {
4985
5152
  enumerable: false,
4986
5153
  configurable: true
4987
5154
  });
5155
+ Object.defineProperty(Control.prototype, "_paddingBottomInPixels", {
5156
+ /** @hidden */
5157
+ get: function () {
5158
+ if (this._descendantsOnlyPadding) {
5159
+ return 0;
5160
+ }
5161
+ return this.paddingBottomInPixels;
5162
+ },
5163
+ enumerable: false,
5164
+ configurable: true
5165
+ });
4988
5166
  Object.defineProperty(Control.prototype, "left", {
4989
5167
  /**
4990
5168
  * Gets or sets a value indicating the left coordinate of the control
@@ -5295,7 +5473,7 @@ var Control = /** @class */ (function () {
5295
5473
  * @see https://doc.babylonjs.com/how_to/gui#tracking-positions
5296
5474
  */
5297
5475
  Control.prototype.linkWithMesh = function (mesh) {
5298
- if (!this._host || this.parent && this.parent !== this._host._rootContainer) {
5476
+ if (!this._host || (this.parent && this.parent !== this._host._rootContainer)) {
5299
5477
  if (mesh) {
5300
5478
  babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Tools"].Error("Cannot link a control to a mesh if the control is not at root level");
5301
5479
  }
@@ -5318,13 +5496,13 @@ var Control = /** @class */ (function () {
5318
5496
  this._host._linkedControls.push(this);
5319
5497
  };
5320
5498
  /**
5321
- * Shorthand funtion to set the top, right, bottom, and left padding values on the control.
5322
- * @param { string | number} paddingTop - The value of the top padding.
5323
- * @param { string | number} paddingRight - The value of the right padding. If omitted, top is used.
5324
- * @param { string | number} paddingBottom - The value of the bottom padding. If omitted, top is used.
5325
- * @param { string | number} paddingLeft - The value of the left padding. If omitted, right is used.
5326
- * @see https://doc.babylonjs.com/how_to/gui#position-and-size
5327
- */
5499
+ * Shorthand funtion to set the top, right, bottom, and left padding values on the control.
5500
+ * @param { string | number} paddingTop - The value of the top padding.
5501
+ * @param { string | number} paddingRight - The value of the right padding. If omitted, top is used.
5502
+ * @param { string | number} paddingBottom - The value of the bottom padding. If omitted, top is used.
5503
+ * @param { string | number} paddingLeft - The value of the left padding. If omitted, right is used.
5504
+ * @see https://doc.babylonjs.com/how_to/gui#position-and-size
5505
+ */
5328
5506
  Control.prototype.setPadding = function (paddingTop, paddingRight, paddingBottom, paddingLeft) {
5329
5507
  var top = paddingTop;
5330
5508
  var right = paddingRight !== null && paddingRight !== void 0 ? paddingRight : top;
@@ -5364,8 +5542,8 @@ var Control = /** @class */ (function () {
5364
5542
  this._processMeasures(parentMeasure, this._host.getContext());
5365
5543
  }
5366
5544
  }
5367
- var newLeft = ((projectedPosition.x + this._linkOffsetX.getValue(this._host)) - this._currentMeasure.width / 2);
5368
- var newTop = ((projectedPosition.y + this._linkOffsetY.getValue(this._host)) - this._currentMeasure.height / 2);
5545
+ var newLeft = projectedPosition.x + this._linkOffsetX.getValue(this._host) - this._currentMeasure.width / 2;
5546
+ var newTop = projectedPosition.y + this._linkOffsetY.getValue(this._host) - this._currentMeasure.height / 2;
5369
5547
  if (this._left.ignoreAdaptiveScaling && this._top.ignoreAdaptiveScaling) {
5370
5548
  if (Math.abs(newLeft - oldLeft) < 0.5) {
5371
5549
  newLeft = oldLeft;
@@ -5520,6 +5698,9 @@ var Control = /** @class */ (function () {
5520
5698
  if (this._isFontSizeInPercentage) {
5521
5699
  this._fontSet = true;
5522
5700
  }
5701
+ if (this._host && this._host.useSmallestIdeal && !this._font) {
5702
+ this._fontSet = true;
5703
+ }
5523
5704
  if (this._fontSet) {
5524
5705
  this._prepareFont();
5525
5706
  this._fontSet = false;
@@ -5534,7 +5715,7 @@ var Control = /** @class */ (function () {
5534
5715
  context.globalAlpha *= this._alpha;
5535
5716
  }
5536
5717
  else if (this._alphaSet) {
5537
- context.globalAlpha = (this.parent && !this.parent.renderToIntermediateTexture) ? this.parent.alpha * this._alpha : this._alpha;
5718
+ context.globalAlpha = this.parent && !this.parent.renderToIntermediateTexture ? this.parent.alpha * this._alpha : this._alpha;
5538
5719
  }
5539
5720
  };
5540
5721
  /** @hidden */
@@ -5544,7 +5725,7 @@ var Control = /** @class */ (function () {
5544
5725
  }
5545
5726
  if (this._isDirty || !this._cachedParentMeasure.isEqualsTo(parentMeasure)) {
5546
5727
  this.host._numLayoutCalls++;
5547
- this._currentMeasure.addAndTransformToRef(this._transformMatrix, -this.paddingLeftInPixels | 0, -this.paddingTopInPixels | 0, this.paddingRightInPixels | 0, this.paddingBottomInPixels | 0, this._prevCurrentMeasureTransformedIntoGlobalSpace);
5728
+ this._currentMeasure.addAndTransformToRef(this._transformMatrix, -this._paddingLeftInPixels | 0, -this._paddingTopInPixels | 0, this._paddingRightInPixels | 0, this._paddingBottomInPixels | 0, this._prevCurrentMeasureTransformedIntoGlobalSpace);
5548
5729
  context.save();
5549
5730
  this._applyStates(context);
5550
5731
  var rebuildCount = 0;
@@ -5566,39 +5747,49 @@ var Control = /** @class */ (function () {
5566
5747
  };
5567
5748
  /** @hidden */
5568
5749
  Control.prototype._processMeasures = function (parentMeasure, context) {
5569
- this._currentMeasure.copyFrom(parentMeasure);
5750
+ this._tempPaddingMeasure.copyFrom(parentMeasure);
5751
+ // Apply padding if in correct mode
5752
+ if (this.parent && this.parent.descendantsOnlyPadding) {
5753
+ this._tempPaddingMeasure.left += this.parent.paddingLeftInPixels;
5754
+ this._tempPaddingMeasure.top += this.parent.paddingTopInPixels;
5755
+ this._tempPaddingMeasure.width -= this.parent.paddingLeftInPixels + this.parent.paddingRightInPixels;
5756
+ this._tempPaddingMeasure.height -= this.parent.paddingTopInPixels + this.parent.paddingBottomInPixels;
5757
+ }
5758
+ this._currentMeasure.copyFrom(this._tempPaddingMeasure);
5570
5759
  // Let children take some pre-measurement actions
5571
- this._preMeasure(parentMeasure, context);
5760
+ this._preMeasure(this._tempPaddingMeasure, context);
5572
5761
  this._measure();
5573
- this._computeAlignment(parentMeasure, context);
5762
+ this._computeAlignment(this._tempPaddingMeasure, context);
5574
5763
  // Convert to int values
5575
5764
  this._currentMeasure.left = this._currentMeasure.left | 0;
5576
5765
  this._currentMeasure.top = this._currentMeasure.top | 0;
5577
5766
  this._currentMeasure.width = this._currentMeasure.width | 0;
5578
5767
  this._currentMeasure.height = this._currentMeasure.height | 0;
5579
5768
  // Let children add more features
5580
- this._additionalProcessing(parentMeasure, context);
5581
- this._cachedParentMeasure.copyFrom(parentMeasure);
5769
+ this._additionalProcessing(this._tempPaddingMeasure, context);
5770
+ this._cachedParentMeasure.copyFrom(this._tempPaddingMeasure);
5771
+ this._currentMeasure.transformToRef(this._transformMatrix, this._evaluatedMeasure);
5582
5772
  if (this.onDirtyObservable.hasObservers()) {
5583
5773
  this.onDirtyObservable.notifyObservers(this);
5584
5774
  }
5585
5775
  };
5586
5776
  Control.prototype._evaluateClippingState = function (parentMeasure) {
5587
5777
  if (this.parent && this.parent.clipChildren) {
5778
+ parentMeasure.transformToRef(this.parent._transformMatrix, this._evaluatedParentMeasure);
5588
5779
  // Early clip
5589
- if (this._currentMeasure.left > parentMeasure.left + parentMeasure.width) {
5780
+ if (this._evaluatedMeasure.left > this._evaluatedParentMeasure.left + this._evaluatedParentMeasure.width) {
5590
5781
  this._isClipped = true;
5591
5782
  return;
5592
5783
  }
5593
- if (this._currentMeasure.left + this._currentMeasure.width < parentMeasure.left) {
5784
+ if (this._evaluatedMeasure.left + this._evaluatedMeasure.width < this._evaluatedParentMeasure.left) {
5594
5785
  this._isClipped = true;
5595
5786
  return;
5596
5787
  }
5597
- if (this._currentMeasure.top > parentMeasure.top + parentMeasure.height) {
5788
+ if (this._evaluatedMeasure.top > this._evaluatedParentMeasure.top + this._evaluatedParentMeasure.height) {
5598
5789
  this._isClipped = true;
5599
5790
  return;
5600
5791
  }
5601
- if (this._currentMeasure.top + this._currentMeasure.height < parentMeasure.top) {
5792
+ if (this._evaluatedMeasure.top + this._evaluatedMeasure.height < this._evaluatedParentMeasure.top) {
5602
5793
  this._isClipped = true;
5603
5794
  return;
5604
5795
  }
@@ -5660,33 +5851,35 @@ var Control = /** @class */ (function () {
5660
5851
  y = (parentHeight - height) / 2;
5661
5852
  break;
5662
5853
  }
5663
- if (this._paddingLeft.isPixel) {
5664
- this._currentMeasure.left += this._paddingLeft.getValue(this._host);
5665
- this._currentMeasure.width -= this._paddingLeft.getValue(this._host);
5666
- }
5667
- else {
5668
- this._currentMeasure.left += parentWidth * this._paddingLeft.getValue(this._host);
5669
- this._currentMeasure.width -= parentWidth * this._paddingLeft.getValue(this._host);
5670
- }
5671
- if (this._paddingRight.isPixel) {
5672
- this._currentMeasure.width -= this._paddingRight.getValue(this._host);
5673
- }
5674
- else {
5675
- this._currentMeasure.width -= parentWidth * this._paddingRight.getValue(this._host);
5676
- }
5677
- if (this._paddingTop.isPixel) {
5678
- this._currentMeasure.top += this._paddingTop.getValue(this._host);
5679
- this._currentMeasure.height -= this._paddingTop.getValue(this._host);
5680
- }
5681
- else {
5682
- this._currentMeasure.top += parentHeight * this._paddingTop.getValue(this._host);
5683
- this._currentMeasure.height -= parentHeight * this._paddingTop.getValue(this._host);
5684
- }
5685
- if (this._paddingBottom.isPixel) {
5686
- this._currentMeasure.height -= this._paddingBottom.getValue(this._host);
5687
- }
5688
- else {
5689
- this._currentMeasure.height -= parentHeight * this._paddingBottom.getValue(this._host);
5854
+ if (!this.descendantsOnlyPadding) {
5855
+ if (this._paddingLeft.isPixel) {
5856
+ this._currentMeasure.left += this._paddingLeft.getValue(this._host);
5857
+ this._currentMeasure.width -= this._paddingLeft.getValue(this._host);
5858
+ }
5859
+ else {
5860
+ this._currentMeasure.left += parentWidth * this._paddingLeft.getValue(this._host);
5861
+ this._currentMeasure.width -= parentWidth * this._paddingLeft.getValue(this._host);
5862
+ }
5863
+ if (this._paddingRight.isPixel) {
5864
+ this._currentMeasure.width -= this._paddingRight.getValue(this._host);
5865
+ }
5866
+ else {
5867
+ this._currentMeasure.width -= parentWidth * this._paddingRight.getValue(this._host);
5868
+ }
5869
+ if (this._paddingTop.isPixel) {
5870
+ this._currentMeasure.top += this._paddingTop.getValue(this._host);
5871
+ this._currentMeasure.height -= this._paddingTop.getValue(this._host);
5872
+ }
5873
+ else {
5874
+ this._currentMeasure.top += parentHeight * this._paddingTop.getValue(this._host);
5875
+ this._currentMeasure.height -= parentHeight * this._paddingTop.getValue(this._host);
5876
+ }
5877
+ if (this._paddingBottom.isPixel) {
5878
+ this._currentMeasure.height -= this._paddingBottom.getValue(this._host);
5879
+ }
5880
+ else {
5881
+ this._currentMeasure.height -= parentHeight * this._paddingBottom.getValue(this._host);
5882
+ }
5690
5883
  }
5691
5884
  if (this._left.isPixel) {
5692
5885
  this._currentMeasure.left += this._left.getValue(this._host);
@@ -5840,7 +6033,8 @@ var Control = /** @class */ (function () {
5840
6033
  if (this._enterCount > 0) {
5841
6034
  return false;
5842
6035
  }
5843
- if (this._enterCount === -1) { // -1 is for touch input, we are now sure we are with a mouse or pencil
6036
+ if (this._enterCount === -1) {
6037
+ // -1 is for touch input, we are now sure we are with a mouse or pencil
5844
6038
  this._enterCount = 0;
5845
6039
  }
5846
6040
  this._enterCount++;
@@ -5971,6 +6165,8 @@ var Control = /** @class */ (function () {
5971
6165
  this._font = this._fontStyle + " " + this._fontWeight + " " + this.fontSizeInPixels + "px " + this._fontFamily;
5972
6166
  }
5973
6167
  this._fontOffset = Control._GetFontOffset(this._font);
6168
+ //children need to be refreshed
6169
+ this.getDescendants().forEach(function (child) { return child._markAllAsDirty(); });
5974
6170
  };
5975
6171
  /**
5976
6172
  * Serializes the current control
@@ -6227,6 +6423,9 @@ var Control = /** @class */ (function () {
6227
6423
  Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"])([
6228
6424
  Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["serialize"])()
6229
6425
  ], Control.prototype, "isVisible", null);
6426
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"])([
6427
+ Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["serialize"])()
6428
+ ], Control.prototype, "descendantsOnlyPadding", null);
6230
6429
  Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"])([
6231
6430
  Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["serialize"])()
6232
6431
  ], Control.prototype, "paddingLeft", null);
@@ -6260,6 +6459,12 @@ var Control = /** @class */ (function () {
6260
6459
  Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"])([
6261
6460
  Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["serialize"])()
6262
6461
  ], Control.prototype, "disabledColorItem", null);
6462
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"])([
6463
+ Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["serialize"])()
6464
+ ], Control.prototype, "overlapGroup", void 0);
6465
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"])([
6466
+ Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["serialize"])()
6467
+ ], Control.prototype, "overlapDeltaMultiplier", void 0);
6263
6468
  return Control;
6264
6469
  }());
6265
6470
 
@@ -6280,7 +6485,7 @@ __webpack_require__.r(__webpack_exports__);
6280
6485
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DisplayGrid", function() { return DisplayGrid; });
6281
6486
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
6282
6487
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
6283
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
6488
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
6284
6489
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
6285
6490
 
6286
6491
 
@@ -6544,7 +6749,7 @@ __webpack_require__.r(__webpack_exports__);
6544
6749
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
6545
6750
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
6546
6751
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
6547
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
6752
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
6548
6753
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_3__);
6549
6754
 
6550
6755
 
@@ -6647,7 +6852,7 @@ __webpack_require__.r(__webpack_exports__);
6647
6852
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FocusableButton", function() { return FocusableButton; });
6648
6853
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
6649
6854
  /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./button */ "./2D/controls/button.ts");
6650
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
6855
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
6651
6856
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
6652
6857
 
6653
6858
 
@@ -6759,7 +6964,7 @@ __webpack_require__.r(__webpack_exports__);
6759
6964
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
6760
6965
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
6761
6966
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
6762
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Maths/math.vector");
6967
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
6763
6968
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__);
6764
6969
 
6765
6970
 
@@ -6780,7 +6985,9 @@ var Grid = /** @class */ (function (_super) {
6780
6985
  var _this = _super.call(this, name) || this;
6781
6986
  _this.name = name;
6782
6987
  _this._rowDefinitions = new Array();
6988
+ _this._rowDefinitionObservers = [];
6783
6989
  _this._columnDefinitions = new Array();
6990
+ _this._columnDefinitionObservers = [];
6784
6991
  _this._cells = {};
6785
6992
  _this._childControls = new Array();
6786
6993
  return _this;
@@ -6850,8 +7057,10 @@ var Grid = /** @class */ (function (_super) {
6850
7057
  * @returns the current grid
6851
7058
  */
6852
7059
  Grid.prototype.addRowDefinition = function (height, isPixel) {
7060
+ var _this = this;
6853
7061
  if (isPixel === void 0) { isPixel = false; }
6854
7062
  this._rowDefinitions.push(new _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"](height, isPixel ? _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"].UNITMODE_PIXEL : _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"].UNITMODE_PERCENTAGE));
7063
+ this._rowDefinitionObservers.push(this._rowDefinitions[this.rowCount - 1].onChangedObservable.add(function () { return _this._markAsDirty(); }));
6855
7064
  this._markAsDirty();
6856
7065
  return this;
6857
7066
  };
@@ -6862,8 +7071,10 @@ var Grid = /** @class */ (function (_super) {
6862
7071
  * @returns the current grid
6863
7072
  */
6864
7073
  Grid.prototype.addColumnDefinition = function (width, isPixel) {
7074
+ var _this = this;
6865
7075
  if (isPixel === void 0) { isPixel = false; }
6866
7076
  this._columnDefinitions.push(new _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"](width, isPixel ? _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"].UNITMODE_PIXEL : _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"].UNITMODE_PERCENTAGE));
7077
+ this._columnDefinitionObservers.push(this._columnDefinitions[this.columnCount - 1].onChangedObservable.add(function () { return _this._markAsDirty(); }));
6867
7078
  this._markAsDirty();
6868
7079
  return this;
6869
7080
  };
@@ -6875,15 +7086,18 @@ var Grid = /** @class */ (function (_super) {
6875
7086
  * @returns the current grid
6876
7087
  */
6877
7088
  Grid.prototype.setRowDefinition = function (index, height, isPixel) {
7089
+ var _this = this;
6878
7090
  if (isPixel === void 0) { isPixel = false; }
6879
7091
  if (index < 0 || index >= this._rowDefinitions.length) {
6880
7092
  return this;
6881
7093
  }
6882
7094
  var current = this._rowDefinitions[index];
6883
- if (current && current.isPixel === isPixel && current.internalValue === height) {
7095
+ if (current && current.isPixel === isPixel && current.value === height) {
6884
7096
  return this;
6885
7097
  }
7098
+ this._rowDefinitions[index].onChangedObservable.remove(this._rowDefinitionObservers[index]);
6886
7099
  this._rowDefinitions[index] = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"](height, isPixel ? _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"].UNITMODE_PIXEL : _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"].UNITMODE_PERCENTAGE);
7100
+ this._rowDefinitionObservers[index] = this._rowDefinitions[index].onChangedObservable.add(function () { return _this._markAsDirty(); });
6887
7101
  this._markAsDirty();
6888
7102
  return this;
6889
7103
  };
@@ -6895,15 +7109,18 @@ var Grid = /** @class */ (function (_super) {
6895
7109
  * @returns the current grid
6896
7110
  */
6897
7111
  Grid.prototype.setColumnDefinition = function (index, width, isPixel) {
7112
+ var _this = this;
6898
7113
  if (isPixel === void 0) { isPixel = false; }
6899
7114
  if (index < 0 || index >= this._columnDefinitions.length) {
6900
7115
  return this;
6901
7116
  }
6902
7117
  var current = this._columnDefinitions[index];
6903
- if (current && current.isPixel === isPixel && current.internalValue === width) {
7118
+ if (current && current.isPixel === isPixel && current.value === width) {
6904
7119
  return this;
6905
7120
  }
7121
+ this._columnDefinitions[index].onChangedObservable.remove(this._columnDefinitionObservers[index]);
6906
7122
  this._columnDefinitions[index] = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"](width, isPixel ? _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"].UNITMODE_PIXEL : _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"].UNITMODE_PERCENTAGE);
7123
+ this._columnDefinitionObservers[index] = this._columnDefinitions[index].onChangedObservable.add(function () { return _this._markAsDirty(); });
6907
7124
  this._markAsDirty();
6908
7125
  return this;
6909
7126
  };
@@ -6974,7 +7191,9 @@ var Grid = /** @class */ (function (_super) {
6974
7191
  this._offsetCell(previousKey, key);
6975
7192
  }
6976
7193
  }
7194
+ this._columnDefinitions[index].onChangedObservable.remove(this._columnDefinitionObservers[index]);
6977
7195
  this._columnDefinitions.splice(index, 1);
7196
+ this._columnDefinitionObservers.splice(index, 1);
6978
7197
  this._markAsDirty();
6979
7198
  return this;
6980
7199
  };
@@ -6999,7 +7218,9 @@ var Grid = /** @class */ (function (_super) {
6999
7218
  this._offsetCell(previousKey, key);
7000
7219
  }
7001
7220
  }
7221
+ this._rowDefinitions[index].onChangedObservable.remove(this._rowDefinitionObservers[index]);
7002
7222
  this._rowDefinitions.splice(index, 1);
7223
+ this._rowDefinitionObservers.splice(index, 1);
7003
7224
  this._markAsDirty();
7004
7225
  return this;
7005
7226
  };
@@ -7076,58 +7297,58 @@ var Grid = /** @class */ (function (_super) {
7076
7297
  // Heights
7077
7298
  var index = 0;
7078
7299
  for (var _i = 0, _a = this._rowDefinitions; _i < _a.length; _i++) {
7079
- var value = _a[_i];
7080
- if (value.isPixel) {
7081
- var height = value.getValue(this._host);
7300
+ var rowDefinition = _a[_i];
7301
+ if (rowDefinition.isPixel) {
7302
+ var height = rowDefinition.getValue(this._host);
7082
7303
  availableHeight -= height;
7083
7304
  heights[index] = height;
7084
7305
  }
7085
7306
  else {
7086
- globalHeightPercentage += value.internalValue;
7307
+ globalHeightPercentage += rowDefinition.value;
7087
7308
  }
7088
7309
  index++;
7089
7310
  }
7090
7311
  var top = 0;
7091
7312
  index = 0;
7092
7313
  for (var _b = 0, _c = this._rowDefinitions; _b < _c.length; _b++) {
7093
- var value = _c[_b];
7314
+ var rowDefinition = _c[_b];
7094
7315
  tops.push(top);
7095
- if (!value.isPixel) {
7096
- var height = (value.internalValue / globalHeightPercentage) * availableHeight;
7316
+ if (!rowDefinition.isPixel) {
7317
+ var height = (rowDefinition.value / globalHeightPercentage) * availableHeight;
7097
7318
  top += height;
7098
7319
  heights[index] = height;
7099
7320
  }
7100
7321
  else {
7101
- top += value.getValue(this._host);
7322
+ top += rowDefinition.getValue(this._host);
7102
7323
  }
7103
7324
  index++;
7104
7325
  }
7105
7326
  // Widths
7106
7327
  index = 0;
7107
7328
  for (var _d = 0, _e = this._columnDefinitions; _d < _e.length; _d++) {
7108
- var value = _e[_d];
7109
- if (value.isPixel) {
7110
- var width = value.getValue(this._host);
7329
+ var columnDefinition = _e[_d];
7330
+ if (columnDefinition.isPixel) {
7331
+ var width = columnDefinition.getValue(this._host);
7111
7332
  availableWidth -= width;
7112
7333
  widths[index] = width;
7113
7334
  }
7114
7335
  else {
7115
- globalWidthPercentage += value.internalValue;
7336
+ globalWidthPercentage += columnDefinition.value;
7116
7337
  }
7117
7338
  index++;
7118
7339
  }
7119
7340
  var left = 0;
7120
7341
  index = 0;
7121
7342
  for (var _f = 0, _g = this._columnDefinitions; _f < _g.length; _f++) {
7122
- var value = _g[_f];
7343
+ var columnDefinition = _g[_f];
7123
7344
  lefts.push(left);
7124
- if (!value.isPixel) {
7125
- var width = (value.internalValue / globalWidthPercentage) * availableWidth;
7345
+ if (!columnDefinition.isPixel) {
7346
+ var width = (columnDefinition.value / globalWidthPercentage) * availableWidth;
7126
7347
  left += width;
7127
7348
  widths[index] = width;
7128
7349
  }
7129
7350
  else {
7130
- left += value.getValue(this._host);
7351
+ left += columnDefinition.getValue(this._host);
7131
7352
  }
7132
7353
  index++;
7133
7354
  }
@@ -7196,12 +7417,23 @@ var Grid = /** @class */ (function (_super) {
7196
7417
  var control = _a[_i];
7197
7418
  control.dispose();
7198
7419
  }
7420
+ for (var index = 0; index < this._rowDefinitions.length; index++) {
7421
+ this._rowDefinitions[index].onChangedObservable.remove(this._rowDefinitionObservers[index]);
7422
+ }
7423
+ for (var index = 0; index < this._columnDefinitions.length; index++) {
7424
+ this._columnDefinitions[index].onChangedObservable.remove(this._columnDefinitionObservers[index]);
7425
+ }
7426
+ this._rowDefinitionObservers = [];
7427
+ this._rowDefinitions = [];
7428
+ this._columnDefinitionObservers = [];
7429
+ this._columnDefinitions = [];
7430
+ this._cells = {};
7199
7431
  this._childControls = [];
7200
7432
  };
7201
7433
  /**
7202
- * Serializes the current control
7203
- * @param serializationObject defined the JSON serialized object
7204
- */
7434
+ * Serializes the current control
7435
+ * @param serializationObject defined the JSON serialized object
7436
+ */
7205
7437
  Grid.prototype.serialize = function (serializationObject) {
7206
7438
  _super.prototype.serialize.call(this, serializationObject);
7207
7439
  serializationObject.columnCount = this.columnCount;
@@ -7274,7 +7506,7 @@ Object(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__["RegisterClass"])("BABY
7274
7506
  __webpack_require__.r(__webpack_exports__);
7275
7507
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Image", function() { return Image; });
7276
7508
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
7277
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
7509
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
7278
7510
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
7279
7511
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
7280
7512
 
@@ -8313,7 +8545,7 @@ __webpack_require__.r(__webpack_exports__);
8313
8545
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InputPassword", function() { return InputPassword; });
8314
8546
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
8315
8547
  /* harmony import */ var _inputText__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./inputText */ "./2D/controls/inputText.ts");
8316
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
8548
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
8317
8549
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
8318
8550
  /* harmony import */ var _textWrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./textWrapper */ "./2D/controls/textWrapper.ts");
8319
8551
 
@@ -8356,7 +8588,7 @@ Object(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__["RegisterClass"])("
8356
8588
  __webpack_require__.r(__webpack_exports__);
8357
8589
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InputText", function() { return InputText; });
8358
8590
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
8359
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
8591
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
8360
8592
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
8361
8593
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
8362
8594
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
@@ -9223,7 +9455,7 @@ var InputText = /** @class */ (function (_super) {
9223
9455
  context.shadowOffsetX = 0;
9224
9456
  context.shadowOffsetY = 0;
9225
9457
  }
9226
- if (!this._fontOffset) {
9458
+ if (!this._fontOffset || this._wasDirty) {
9227
9459
  this._fontOffset = _control__WEBPACK_IMPORTED_MODULE_2__["Control"]._GetFontOffset(context.font);
9228
9460
  }
9229
9461
  // Text
@@ -9471,7 +9703,7 @@ Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
9471
9703
  __webpack_require__.r(__webpack_exports__);
9472
9704
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Line", function() { return Line; });
9473
9705
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
9474
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
9706
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
9475
9707
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
9476
9708
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
9477
9709
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
@@ -9761,7 +9993,7 @@ Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"]
9761
9993
  __webpack_require__.r(__webpack_exports__);
9762
9994
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultiLine", function() { return MultiLine; });
9763
9995
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
9764
- /* harmony import */ var babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/abstractMesh */ "babylonjs/Maths/math.vector");
9996
+ /* harmony import */ var babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/abstractMesh */ "babylonjs/Misc/perfCounter");
9765
9997
  /* harmony import */ var babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__);
9766
9998
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
9767
9999
  /* harmony import */ var _multiLinePoint__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../multiLinePoint */ "./2D/multiLinePoint.ts");
@@ -10042,7 +10274,7 @@ Object(babylonjs_Meshes_abstractMesh__WEBPACK_IMPORTED_MODULE_1__["RegisterClass
10042
10274
  __webpack_require__.r(__webpack_exports__);
10043
10275
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RadioButton", function() { return RadioButton; });
10044
10276
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
10045
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
10277
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
10046
10278
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
10047
10279
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
10048
10280
  /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./stackPanel */ "./2D/controls/stackPanel.ts");
@@ -10268,7 +10500,7 @@ __webpack_require__.r(__webpack_exports__);
10268
10500
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Rectangle", function() { return Rectangle; });
10269
10501
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
10270
10502
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
10271
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
10503
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
10272
10504
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
10273
10505
 
10274
10506
 
@@ -10441,7 +10673,7 @@ __webpack_require__.r(__webpack_exports__);
10441
10673
  /* harmony import */ var _scrollViewerWindow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./scrollViewerWindow */ "./2D/controls/scrollViewers/scrollViewerWindow.ts");
10442
10674
  /* harmony import */ var _sliders_scrollBar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../sliders/scrollBar */ "./2D/controls/sliders/scrollBar.ts");
10443
10675
  /* harmony import */ var _sliders_imageScrollBar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../sliders/imageScrollBar */ "./2D/controls/sliders/imageScrollBar.ts");
10444
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
10676
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
10445
10677
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_7__);
10446
10678
 
10447
10679
 
@@ -12072,7 +12304,7 @@ var SelectionPanel = /** @class */ (function (_super) {
12072
12304
  __webpack_require__.r(__webpack_exports__);
12073
12305
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseSlider", function() { return BaseSlider; });
12074
12306
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
12075
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
12307
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
12076
12308
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
12077
12309
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../control */ "./2D/controls/control.ts");
12078
12310
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../valueAndUnit */ "./2D/valueAndUnit.ts");
@@ -12437,7 +12669,7 @@ __webpack_require__.r(__webpack_exports__);
12437
12669
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
12438
12670
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../measure */ "./2D/measure.ts");
12439
12671
  /* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../image */ "./2D/controls/image.ts");
12440
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
12672
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
12441
12673
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_4__);
12442
12674
 
12443
12675
 
@@ -12644,7 +12876,7 @@ __webpack_require__.r(__webpack_exports__);
12644
12876
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
12645
12877
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
12646
12878
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../measure */ "./2D/measure.ts");
12647
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Maths/math.vector");
12879
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
12648
12880
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__);
12649
12881
 
12650
12882
 
@@ -12919,7 +13151,7 @@ __webpack_require__.r(__webpack_exports__);
12919
13151
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
12920
13152
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
12921
13153
  /* harmony import */ var _measure__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../measure */ "./2D/measure.ts");
12922
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Maths/math.vector");
13154
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
12923
13155
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_3__);
12924
13156
 
12925
13157
 
@@ -13073,7 +13305,7 @@ __webpack_require__.r(__webpack_exports__);
13073
13305
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Slider", function() { return Slider; });
13074
13306
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
13075
13307
  /* harmony import */ var _baseSlider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./baseSlider */ "./2D/controls/sliders/baseSlider.ts");
13076
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
13308
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
13077
13309
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__);
13078
13310
 
13079
13311
 
@@ -13361,7 +13593,7 @@ Object(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_2__["RegisterClass"])("
13361
13593
  __webpack_require__.r(__webpack_exports__);
13362
13594
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StackPanel", function() { return StackPanel; });
13363
13595
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
13364
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Maths/math.vector");
13596
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
13365
13597
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
13366
13598
  /* harmony import */ var _container__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container */ "./2D/controls/container.ts");
13367
13599
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
@@ -13387,8 +13619,9 @@ var StackPanel = /** @class */ (function (_super) {
13387
13619
  _this._manualWidth = false;
13388
13620
  _this._manualHeight = false;
13389
13621
  _this._doNotTrackManualChanges = false;
13622
+ _this._spacing = 0;
13390
13623
  /**
13391
- * Gets or sets a boolean indicating that layou warnings should be ignored
13624
+ * Gets or sets a boolean indicating that layout warnings should be ignored
13392
13625
  */
13393
13626
  _this.ignoreLayoutWarnings = false;
13394
13627
  return _this;
@@ -13408,6 +13641,23 @@ var StackPanel = /** @class */ (function (_super) {
13408
13641
  enumerable: false,
13409
13642
  configurable: true
13410
13643
  });
13644
+ Object.defineProperty(StackPanel.prototype, "spacing", {
13645
+ /**
13646
+ * Gets or sets the spacing (in pixels) between each child.
13647
+ */
13648
+ get: function () {
13649
+ return this._spacing;
13650
+ },
13651
+ set: function (value) {
13652
+ if (this._spacing === value) {
13653
+ return;
13654
+ }
13655
+ this._spacing = value;
13656
+ this._markAsDirty();
13657
+ },
13658
+ enumerable: false,
13659
+ configurable: true
13660
+ });
13411
13661
  Object.defineProperty(StackPanel.prototype, "width", {
13412
13662
  get: function () {
13413
13663
  return this._width.toString(this._host);
@@ -13483,8 +13733,9 @@ var StackPanel = /** @class */ (function (_super) {
13483
13733
  StackPanel.prototype._postMeasure = function () {
13484
13734
  var stackWidth = 0;
13485
13735
  var stackHeight = 0;
13486
- for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
13487
- var child = _a[_i];
13736
+ var childrenCount = this._children.length;
13737
+ for (var index = 0; index < childrenCount; index++) {
13738
+ var child = this._children[index];
13488
13739
  if (!child.isVisible || child.notRenderable) {
13489
13740
  continue;
13490
13741
  }
@@ -13500,7 +13751,7 @@ var StackPanel = /** @class */ (function (_super) {
13500
13751
  }
13501
13752
  }
13502
13753
  else {
13503
- stackHeight += child._currentMeasure.height + child.paddingTopInPixels + child.paddingBottomInPixels;
13754
+ stackHeight += child._currentMeasure.height + child._paddingTopInPixels + child._paddingBottomInPixels + (index < childrenCount - 1 ? this._spacing : 0);
13504
13755
  }
13505
13756
  }
13506
13757
  else {
@@ -13515,12 +13766,12 @@ var StackPanel = /** @class */ (function (_super) {
13515
13766
  }
13516
13767
  }
13517
13768
  else {
13518
- stackWidth += child._currentMeasure.width + child.paddingLeftInPixels + child.paddingRightInPixels;
13769
+ stackWidth += child._currentMeasure.width + child._paddingLeftInPixels + child._paddingRightInPixels + (index < childrenCount - 1 ? this._spacing : 0);
13519
13770
  }
13520
13771
  }
13521
13772
  }
13522
- stackWidth += this.paddingLeftInPixels + this.paddingRightInPixels;
13523
- stackHeight += this.paddingTopInPixels + this.paddingBottomInPixels;
13773
+ stackWidth += this._paddingLeftInPixels + this._paddingRightInPixels;
13774
+ stackHeight += this._paddingTopInPixels + this._paddingBottomInPixels;
13524
13775
  this._doNotTrackManualChanges = true;
13525
13776
  // Let stack panel width or height default to stackHeight and stackWidth if dimensions are not specified.
13526
13777
  // User can now define their own height and width for stack panel.
@@ -13569,6 +13820,9 @@ var StackPanel = /** @class */ (function (_super) {
13569
13820
  Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"])([
13570
13821
  Object(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__["serialize"])()
13571
13822
  ], StackPanel.prototype, "isVertical", null);
13823
+ Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"])([
13824
+ Object(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__["serialize"])()
13825
+ ], StackPanel.prototype, "spacing", null);
13572
13826
  Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__decorate"])([
13573
13827
  Object(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__["serialize"])()
13574
13828
  ], StackPanel.prototype, "width", null);
@@ -13659,7 +13913,7 @@ __webpack_require__.r(__webpack_exports__);
13659
13913
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextWrapping", function() { return TextWrapping; });
13660
13914
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextBlock", function() { return TextBlock; });
13661
13915
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
13662
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
13916
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
13663
13917
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
13664
13918
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../valueAndUnit */ "./2D/valueAndUnit.ts");
13665
13919
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control */ "./2D/controls/control.ts");
@@ -13944,7 +14198,7 @@ var TextBlock = /** @class */ (function (_super) {
13944
14198
  return "TextBlock";
13945
14199
  };
13946
14200
  TextBlock.prototype._processMeasures = function (parentMeasure, context) {
13947
- if (!this._fontOffset) {
14201
+ if (!this._fontOffset || this.isDirty) {
13948
14202
  this._fontOffset = _control__WEBPACK_IMPORTED_MODULE_3__["Control"]._GetFontOffset(context.font);
13949
14203
  }
13950
14204
  _super.prototype._processMeasures.call(this, parentMeasure, context);
@@ -13960,13 +14214,13 @@ var TextBlock = /** @class */ (function (_super) {
13960
14214
  }
13961
14215
  if (this._resizeToFit) {
13962
14216
  if (this._textWrapping === TextWrapping.Clip) {
13963
- var newWidth = (this.paddingLeftInPixels + this.paddingRightInPixels + maxLineWidth) | 0;
14217
+ var newWidth = (this._paddingLeftInPixels + this._paddingRightInPixels + maxLineWidth) | 0;
13964
14218
  if (newWidth !== this._width.internalValue) {
13965
14219
  this._width.updateInPlace(newWidth, _valueAndUnit__WEBPACK_IMPORTED_MODULE_2__["ValueAndUnit"].UNITMODE_PIXEL);
13966
14220
  this._rebuildLayout = true;
13967
14221
  }
13968
14222
  }
13969
- var newHeight = (this.paddingTopInPixels + this.paddingBottomInPixels + this._fontOffset.height * this._lines.length) | 0;
14223
+ var newHeight = (this._paddingTopInPixels + this._paddingBottomInPixels + this._fontOffset.height * this._lines.length) | 0;
13970
14224
  if (this._lines.length > 0 && this._lineSpacing.internalValue !== 0) {
13971
14225
  var lineSpacing = 0;
13972
14226
  if (this._lineSpacing.isPixel) {
@@ -14165,8 +14419,8 @@ var TextBlock = /** @class */ (function (_super) {
14165
14419
  if (!this._fontOffset) {
14166
14420
  this._fontOffset = _control__WEBPACK_IMPORTED_MODULE_3__["Control"]._GetFontOffset(context_1.font);
14167
14421
  }
14168
- var lines = this._lines ? this._lines : this._breakLines(this.widthInPixels - this.paddingLeftInPixels - this.paddingRightInPixels, context_1);
14169
- var newHeight = this.paddingTopInPixels + this.paddingBottomInPixels + this._fontOffset.height * lines.length;
14422
+ var lines = this._lines ? this._lines : this._breakLines(this.widthInPixels - this._paddingLeftInPixels - this._paddingRightInPixels, context_1);
14423
+ var newHeight = this._paddingTopInPixels + this._paddingBottomInPixels + this._fontOffset.height * lines.length;
14170
14424
  if (lines.length > 0 && this._lineSpacing.internalValue !== 0) {
14171
14425
  var lineSpacing = 0;
14172
14426
  if (this._lineSpacing.isPixel) {
@@ -14351,7 +14605,7 @@ var TextWrapper = /** @class */ (function () {
14351
14605
  __webpack_require__.r(__webpack_exports__);
14352
14606
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ToggleButton", function() { return ToggleButton; });
14353
14607
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
14354
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
14608
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
14355
14609
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
14356
14610
  /* harmony import */ var _rectangle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rectangle */ "./2D/controls/rectangle.ts");
14357
14611
 
@@ -14604,7 +14858,7 @@ __webpack_require__.r(__webpack_exports__);
14604
14858
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyPropertySet", function() { return KeyPropertySet; });
14605
14859
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualKeyboard", function() { return VirtualKeyboard; });
14606
14860
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
14607
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
14861
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
14608
14862
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
14609
14863
  /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./stackPanel */ "./2D/controls/stackPanel.ts");
14610
14864
  /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./button */ "./2D/controls/button.ts");
@@ -14999,7 +15253,7 @@ __webpack_require__.r(__webpack_exports__);
14999
15253
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Vector2WithInfo", function() { return Vector2WithInfo; });
15000
15254
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Matrix2D", function() { return Matrix2D; });
15001
15255
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
15002
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
15256
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
15003
15257
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
15004
15258
 
15005
15259
 
@@ -15147,6 +15401,18 @@ var Matrix2D = /** @class */ (function () {
15147
15401
  Matrix2D.Identity = function () {
15148
15402
  return new Matrix2D(1, 0, 0, 1, 0, 0);
15149
15403
  };
15404
+ /**
15405
+ * Creates an identity matrix and stores it in a target matrix
15406
+ * @param result defines the target matrix
15407
+ */
15408
+ Matrix2D.IdentityToRef = function (result) {
15409
+ result.m[0] = 1;
15410
+ result.m[1] = 0;
15411
+ result.m[2] = 0;
15412
+ result.m[3] = 1;
15413
+ result.m[4] = 0;
15414
+ result.m[5] = 0;
15415
+ };
15150
15416
  /**
15151
15417
  * Creates a translation matrix and stores it in a target matrix
15152
15418
  * @param x defines the x coordinate of the translation
@@ -15224,7 +15490,7 @@ var Matrix2D = /** @class */ (function () {
15224
15490
  "use strict";
15225
15491
  __webpack_require__.r(__webpack_exports__);
15226
15492
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Measure", function() { return Measure; });
15227
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
15493
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
15228
15494
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__);
15229
15495
 
15230
15496
  var tmpRect = [
@@ -15389,7 +15655,7 @@ var Measure = /** @class */ (function () {
15389
15655
  "use strict";
15390
15656
  __webpack_require__.r(__webpack_exports__);
15391
15657
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MultiLinePoint", function() { return MultiLinePoint; });
15392
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
15658
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
15393
15659
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_0__);
15394
15660
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./valueAndUnit */ "./2D/valueAndUnit.ts");
15395
15661
 
@@ -15533,7 +15799,7 @@ var MultiLinePoint = /** @class */ (function () {
15533
15799
  "use strict";
15534
15800
  __webpack_require__.r(__webpack_exports__);
15535
15801
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Style", function() { return Style; });
15536
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
15802
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
15537
15803
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
15538
15804
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./valueAndUnit */ "./2D/valueAndUnit.ts");
15539
15805
 
@@ -15647,6 +15913,9 @@ var Style = /** @class */ (function () {
15647
15913
  "use strict";
15648
15914
  __webpack_require__.r(__webpack_exports__);
15649
15915
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ValueAndUnit", function() { return ValueAndUnit; });
15916
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
15917
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
15918
+
15650
15919
  /**
15651
15920
  * Class used to specific a value and its associated unit
15652
15921
  */
@@ -15654,7 +15923,7 @@ var ValueAndUnit = /** @class */ (function () {
15654
15923
  /**
15655
15924
  * Creates a new ValueAndUnit
15656
15925
  * @param value defines the value to store
15657
- * @param unit defines the unit to store
15926
+ * @param unit defines the unit to store - defaults to ValueAndUnit.UNITMODE_PIXEL
15658
15927
  * @param negativeValueAllowed defines a boolean indicating if the value can be negative
15659
15928
  */
15660
15929
  function ValueAndUnit(value,
@@ -15664,21 +15933,26 @@ var ValueAndUnit = /** @class */ (function () {
15664
15933
  negativeValueAllowed) {
15665
15934
  if (unit === void 0) { unit = ValueAndUnit.UNITMODE_PIXEL; }
15666
15935
  if (negativeValueAllowed === void 0) { negativeValueAllowed = true; }
15667
- this.unit = unit;
15668
15936
  this.negativeValueAllowed = negativeValueAllowed;
15669
15937
  this._value = 1;
15938
+ this._unit = ValueAndUnit.UNITMODE_PIXEL;
15670
15939
  /**
15671
15940
  * Gets or sets a value indicating that this value will not scale accordingly with adaptive scaling property
15672
15941
  * @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
15673
15942
  */
15674
15943
  this.ignoreAdaptiveScaling = false;
15944
+ /**
15945
+ * Observable event triggered each time the value or unit changes
15946
+ */
15947
+ this.onChangedObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__["Observable"]();
15675
15948
  this._value = value;
15949
+ this._unit = unit;
15676
15950
  this._originalUnit = unit;
15677
15951
  }
15678
15952
  Object.defineProperty(ValueAndUnit.prototype, "isPercentage", {
15679
15953
  /** Gets a boolean indicating if the value is a percentage */
15680
15954
  get: function () {
15681
- return this.unit === ValueAndUnit.UNITMODE_PERCENTAGE;
15955
+ return this._unit === ValueAndUnit.UNITMODE_PERCENTAGE;
15682
15956
  },
15683
15957
  enumerable: false,
15684
15958
  configurable: true
@@ -15686,16 +15960,49 @@ var ValueAndUnit = /** @class */ (function () {
15686
15960
  Object.defineProperty(ValueAndUnit.prototype, "isPixel", {
15687
15961
  /** Gets a boolean indicating if the value is store as pixel */
15688
15962
  get: function () {
15689
- return this.unit === ValueAndUnit.UNITMODE_PIXEL;
15963
+ return this._unit === ValueAndUnit.UNITMODE_PIXEL;
15690
15964
  },
15691
15965
  enumerable: false,
15692
15966
  configurable: true
15693
15967
  });
15694
15968
  Object.defineProperty(ValueAndUnit.prototype, "internalValue", {
15695
- /** Gets direct internal value */
15969
+ /**
15970
+ * Gets value (without units)
15971
+ * @deprecated use value property instead
15972
+ */
15973
+ get: function () {
15974
+ return this._value;
15975
+ },
15976
+ enumerable: false,
15977
+ configurable: true
15978
+ });
15979
+ Object.defineProperty(ValueAndUnit.prototype, "value", {
15980
+ /** Gets value (without units) */
15696
15981
  get: function () {
15697
15982
  return this._value;
15698
15983
  },
15984
+ /** Sets value (without units) */
15985
+ set: function (value) {
15986
+ if (value !== this._value) {
15987
+ this._value = value;
15988
+ this.onChangedObservable.notifyObservers();
15989
+ }
15990
+ },
15991
+ enumerable: false,
15992
+ configurable: true
15993
+ });
15994
+ Object.defineProperty(ValueAndUnit.prototype, "unit", {
15995
+ /** Gets units (without value) */
15996
+ get: function () {
15997
+ return this._unit;
15998
+ },
15999
+ /** Sets units (without value) */
16000
+ set: function (value) {
16001
+ if (value !== this._unit) {
16002
+ this._unit = value;
16003
+ this.onChangedObservable.notifyObservers();
16004
+ }
16005
+ },
15699
16006
  enumerable: false,
15700
16007
  configurable: true
15701
16008
  });
@@ -15712,15 +16019,19 @@ var ValueAndUnit = /** @class */ (function () {
15712
16019
  return this.getValue(host) * refValue;
15713
16020
  };
15714
16021
  /**
15715
- * Update the current value and unit. This should be done cautiously as the GUi won't be marked as dirty with this function.
16022
+ * Update the current value and unit.
15716
16023
  * @param value defines the value to store
15717
16024
  * @param unit defines the unit to store
15718
16025
  * @returns the current ValueAndUnit
15719
16026
  */
15720
16027
  ValueAndUnit.prototype.updateInPlace = function (value, unit) {
15721
16028
  if (unit === void 0) { unit = ValueAndUnit.UNITMODE_PIXEL; }
15722
- this._value = value;
15723
- this.unit = unit;
16029
+ if (this.value !== value || this.unit !== unit) {
16030
+ // set member variables to notify only once
16031
+ this._value = value;
16032
+ this._unit = unit;
16033
+ this.onChangedObservable.notifyObservers();
16034
+ }
15724
16035
  return this;
15725
16036
  };
15726
16037
  /**
@@ -15757,7 +16068,7 @@ var ValueAndUnit = /** @class */ (function () {
15757
16068
  * @returns a string
15758
16069
  */
15759
16070
  ValueAndUnit.prototype.toString = function (host, decimals) {
15760
- switch (this.unit) {
16071
+ switch (this._unit) {
15761
16072
  case ValueAndUnit.UNITMODE_PERCENTAGE:
15762
16073
  var percentage = this.getValue(host) * 100;
15763
16074
  return (decimals ? percentage.toFixed(decimals) : percentage) + "%";
@@ -15765,12 +16076,12 @@ var ValueAndUnit = /** @class */ (function () {
15765
16076
  var pixels = this.getValue(host);
15766
16077
  return (decimals ? pixels.toFixed(decimals) : pixels) + "px";
15767
16078
  }
15768
- return this.unit.toString();
16079
+ return this._unit.toString();
15769
16080
  };
15770
16081
  /**
15771
16082
  * Store a value parsed from a string
15772
16083
  * @param source defines the source string
15773
- * @returns true if the value was successfully parsed
16084
+ * @returns true if the value was successfully parsed and updated
15774
16085
  */
15775
16086
  ValueAndUnit.prototype.fromString = function (source) {
15776
16087
  var match = ValueAndUnit._Regex.exec(source.toString());
@@ -15795,11 +16106,12 @@ var ValueAndUnit = /** @class */ (function () {
15795
16106
  break;
15796
16107
  }
15797
16108
  }
15798
- if (sourceValue === this._value && sourceUnit === this.unit) {
16109
+ if (sourceValue === this._value && sourceUnit === this._unit) {
15799
16110
  return false;
15800
16111
  }
15801
16112
  this._value = sourceValue;
15802
- this.unit = sourceUnit;
16113
+ this._unit = sourceUnit;
16114
+ this.onChangedObservable.notifyObservers();
15803
16115
  return true;
15804
16116
  };
15805
16117
  Object.defineProperty(ValueAndUnit, "UNITMODE_PERCENTAGE", {
@@ -15840,7 +16152,7 @@ var ValueAndUnit = /** @class */ (function () {
15840
16152
  __webpack_require__.r(__webpack_exports__);
15841
16153
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "XmlLoader", function() { return XmlLoader; });
15842
16154
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
15843
- /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Maths/math.vector");
16155
+ /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/typeStore */ "babylonjs/Misc/perfCounter");
15844
16156
  /* harmony import */ var babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_typeStore__WEBPACK_IMPORTED_MODULE_1__);
15845
16157
 
15846
16158
 
@@ -16197,7 +16509,7 @@ var XmlLoader = /** @class */ (function () {
16197
16509
  "use strict";
16198
16510
  __webpack_require__.r(__webpack_exports__);
16199
16511
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultBehavior", function() { return DefaultBehavior; });
16200
- /* harmony import */ var babylonjs_Behaviors_Meshes_followBehavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/followBehavior */ "babylonjs/Maths/math.vector");
16512
+ /* harmony import */ var babylonjs_Behaviors_Meshes_followBehavior__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/followBehavior */ "babylonjs/Misc/perfCounter");
16201
16513
  /* harmony import */ var babylonjs_Behaviors_Meshes_followBehavior__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Behaviors_Meshes_followBehavior__WEBPACK_IMPORTED_MODULE_0__);
16202
16514
 
16203
16515
 
@@ -16335,7 +16647,7 @@ var DefaultBehavior = /** @class */ (function () {
16335
16647
  __webpack_require__.r(__webpack_exports__);
16336
16648
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AbstractButton3D", function() { return AbstractButton3D; });
16337
16649
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16338
- /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Maths/math.vector");
16650
+ /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/perfCounter");
16339
16651
  /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__);
16340
16652
  /* harmony import */ var _contentDisplay3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./contentDisplay3D */ "./3D/controls/contentDisplay3D.ts");
16341
16653
 
@@ -16378,7 +16690,7 @@ var AbstractButton3D = /** @class */ (function (_super) {
16378
16690
  __webpack_require__.r(__webpack_exports__);
16379
16691
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Button3D", function() { return Button3D; });
16380
16692
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16381
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
16693
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
16382
16694
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
16383
16695
  /* harmony import */ var _abstractButton3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./abstractButton3D */ "./3D/controls/abstractButton3D.ts");
16384
16696
 
@@ -16438,12 +16750,19 @@ var Button3D = /** @class */ (function (_super) {
16438
16750
  for (var i = 0; i < 6; i++) {
16439
16751
  faceUV[i] = new babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector4"](0, 0, 0, 0);
16440
16752
  }
16441
- faceUV[1] = new babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector4"](0, 0, 1, 1);
16753
+ if (scene.useRightHandedSystem) {
16754
+ // Flip the u on the texture
16755
+ faceUV[0].copyFromFloats(1, 0, 0, 1);
16756
+ }
16757
+ else {
16758
+ faceUV[1].copyFromFloats(0, 0, 1, 1);
16759
+ }
16442
16760
  var mesh = Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])(this.name + "_rootMesh", {
16443
16761
  width: 1.0,
16444
16762
  height: 1.0,
16445
16763
  depth: 0.08,
16446
16764
  faceUV: faceUV,
16765
+ wrap: true,
16447
16766
  }, scene);
16448
16767
  return mesh;
16449
16768
  };
@@ -16482,7 +16801,7 @@ var Button3D = /** @class */ (function (_super) {
16482
16801
  __webpack_require__.r(__webpack_exports__);
16483
16802
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Container3D", function() { return Container3D; });
16484
16803
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16485
- /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Maths/math.vector");
16804
+ /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/transformNode */ "babylonjs/Misc/perfCounter");
16486
16805
  /* harmony import */ var babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_transformNode__WEBPACK_IMPORTED_MODULE_1__);
16487
16806
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
16488
16807
 
@@ -16642,7 +16961,7 @@ __webpack_require__.r(__webpack_exports__);
16642
16961
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
16643
16962
  /* harmony import */ var _2D_advancedDynamicTexture__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../2D/advancedDynamicTexture */ "./2D/advancedDynamicTexture.ts");
16644
16963
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
16645
- /* harmony import */ var babylonjs_Materials_Textures_texture__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Materials/Textures/texture */ "babylonjs/Maths/math.vector");
16964
+ /* harmony import */ var babylonjs_Materials_Textures_texture__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! babylonjs/Materials/Textures/texture */ "babylonjs/Misc/perfCounter");
16646
16965
  /* harmony import */ var babylonjs_Materials_Textures_texture__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Materials_Textures_texture__WEBPACK_IMPORTED_MODULE_3__);
16647
16966
 
16648
16967
 
@@ -16736,7 +17055,7 @@ var ContentDisplay3D = /** @class */ (function (_super) {
16736
17055
  "use strict";
16737
17056
  __webpack_require__.r(__webpack_exports__);
16738
17057
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Control3D", function() { return Control3D; });
16739
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
17058
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
16740
17059
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
16741
17060
  /* harmony import */ var _vector3WithInfo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../vector3WithInfo */ "./3D/vector3WithInfo.ts");
16742
17061
 
@@ -16760,6 +17079,8 @@ var Control3D = /** @class */ (function () {
16760
17079
  this._enterCount = -1;
16761
17080
  this._downPointerIds = {}; // Store number of pointer downs per ID, from near and far interactions
16762
17081
  this._isVisible = true;
17082
+ /** @hidden */
17083
+ this._isScaledByManager = false;
16763
17084
  /**
16764
17085
  * An event triggered when the pointer moves over the control
16765
17086
  */
@@ -16816,6 +17137,7 @@ var Control3D = /** @class */ (function () {
16816
17137
  if (!this._node) {
16817
17138
  return;
16818
17139
  }
17140
+ this._isScaledByManager = false;
16819
17141
  this._node.scaling = value;
16820
17142
  },
16821
17143
  enumerable: false,
@@ -17159,7 +17481,7 @@ var Control3D = /** @class */ (function () {
17159
17481
  __webpack_require__.r(__webpack_exports__);
17160
17482
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CylinderPanel", function() { return CylinderPanel; });
17161
17483
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17162
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Maths/math.vector");
17484
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
17163
17485
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
17164
17486
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
17165
17487
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
@@ -17245,7 +17567,7 @@ __webpack_require__.r(__webpack_exports__);
17245
17567
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HandMenu", function() { return HandMenu; });
17246
17568
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17247
17569
  /* harmony import */ var _touchHolographicMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./touchHolographicMenu */ "./3D/controls/touchHolographicMenu.ts");
17248
- /* harmony import */ var babylonjs_Behaviors_Meshes_handConstraintBehavior__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/handConstraintBehavior */ "babylonjs/Maths/math.vector");
17570
+ /* harmony import */ var babylonjs_Behaviors_Meshes_handConstraintBehavior__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Behaviors/Meshes/handConstraintBehavior */ "babylonjs/Misc/perfCounter");
17249
17571
  /* harmony import */ var babylonjs_Behaviors_Meshes_handConstraintBehavior__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Behaviors_Meshes_handConstraintBehavior__WEBPACK_IMPORTED_MODULE_2__);
17250
17572
 
17251
17573
 
@@ -17309,7 +17631,7 @@ var HandMenu = /** @class */ (function (_super) {
17309
17631
  __webpack_require__.r(__webpack_exports__);
17310
17632
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HolographicBackplate", function() { return HolographicBackplate; });
17311
17633
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17312
- /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Maths/math.vector");
17634
+ /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/perfCounter");
17313
17635
  /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__);
17314
17636
  /* harmony import */ var _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/fluentBackplate/fluentBackplateMaterial */ "./3D/materials/fluentBackplate/fluentBackplateMaterial.ts");
17315
17637
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
@@ -17449,8 +17771,8 @@ __webpack_require__.r(__webpack_exports__);
17449
17771
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HolographicButton", function() { return HolographicButton; });
17450
17772
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17451
17773
  /* harmony import */ var _button3D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./button3D */ "./3D/controls/button3D.ts");
17452
- /* harmony import */ var babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Materials/standardMaterial */ "babylonjs/Maths/math.vector");
17453
- /* harmony import */ var babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__);
17774
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
17775
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__);
17454
17776
  /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
17455
17777
  /* harmony import */ var _2D_controls_stackPanel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../2D/controls/stackPanel */ "./2D/controls/stackPanel.ts");
17456
17778
  /* harmony import */ var _2D_controls_image__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../2D/controls/image */ "./2D/controls/image.ts");
@@ -17470,6 +17792,7 @@ __webpack_require__.r(__webpack_exports__);
17470
17792
 
17471
17793
 
17472
17794
 
17795
+
17473
17796
  /**
17474
17797
  * Class used to create a holographic button in 3D
17475
17798
  */
@@ -17548,18 +17871,18 @@ var HolographicButton = /** @class */ (function (_super) {
17548
17871
  return;
17549
17872
  }
17550
17873
  if (!this._tooltipFade) {
17874
+ var rightHandedScene = this._backPlate._scene.useRightHandedSystem;
17551
17875
  // Create tooltip with mesh and text
17552
- this._tooltipMesh = Object(babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__["CreatePlane"])("", { size: 1 }, this._backPlate._scene);
17553
- var tooltipBackground = Object(babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__["CreatePlane"])("", { size: 1, sideOrientation: babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__["Mesh"].DOUBLESIDE }, this._backPlate._scene);
17554
- var mat = new babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__["StandardMaterial"]("", this._backPlate._scene);
17555
- mat.diffuseColor = babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__["Color3"].FromHexString("#212121");
17876
+ this._tooltipMesh = Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["CreatePlane"])("", { size: 1 }, this._backPlate._scene);
17877
+ var tooltipBackground = Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["CreatePlane"])("", { size: 1, sideOrientation: babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["Mesh"].DOUBLESIDE }, this._backPlate._scene);
17878
+ var mat = new babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["StandardMaterial"]("", this._backPlate._scene);
17879
+ mat.diffuseColor = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["Color3"].FromHexString("#212121");
17556
17880
  tooltipBackground.material = mat;
17557
17881
  tooltipBackground.isPickable = false;
17558
17882
  this._tooltipMesh.addChild(tooltipBackground);
17559
- tooltipBackground.position.z = 0.05;
17883
+ tooltipBackground.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["Vector3"].Forward(rightHandedScene).scale(0.05);
17560
17884
  this._tooltipMesh.scaling.y = 1 / 3;
17561
- this._tooltipMesh.position.y = 0.7;
17562
- this._tooltipMesh.position.z = -0.15;
17885
+ this._tooltipMesh.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["Vector3"].Up().scale(0.7).add(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["Vector3"].Forward(rightHandedScene).scale(-0.15));
17563
17886
  this._tooltipMesh.isPickable = false;
17564
17887
  this._tooltipMesh.parent = this._backPlate;
17565
17888
  // Create text texture for the tooltip
@@ -17570,7 +17893,7 @@ var HolographicButton = /** @class */ (function (_super) {
17570
17893
  this._tooltipTextBlock.fontSize = 130;
17571
17894
  this._tooltipTexture.addControl(this._tooltipTextBlock);
17572
17895
  // Add hover action to tooltip
17573
- this._tooltipFade = new babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__["FadeInOutBehavior"]();
17896
+ this._tooltipFade = new babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["FadeInOutBehavior"]();
17574
17897
  this._tooltipFade.delay = 500;
17575
17898
  this._tooltipMesh.addBehavior(this._tooltipFade);
17576
17899
  this._tooltipHoverObserver = this.onPointerEnterObservable.add(function () {
@@ -17672,7 +17995,7 @@ var HolographicButton = /** @class */ (function (_super) {
17672
17995
  this._disposeFacadeTexture();
17673
17996
  var panel = new _2D_controls_stackPanel__WEBPACK_IMPORTED_MODULE_4__["StackPanel"]();
17674
17997
  panel.isVertical = true;
17675
- if (babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__["DomManagement"].IsDocumentAvailable() && !!document.createElement) {
17998
+ if (babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["DomManagement"].IsDocumentAvailable() && !!document.createElement) {
17676
17999
  if (this._imageUrl) {
17677
18000
  var image = new _2D_controls_image__WEBPACK_IMPORTED_MODULE_5__["Image"]();
17678
18001
  image.source = this._imageUrl;
@@ -17697,23 +18020,23 @@ var HolographicButton = /** @class */ (function (_super) {
17697
18020
  };
17698
18021
  // Mesh association
17699
18022
  HolographicButton.prototype._createNode = function (scene) {
17700
- this._backPlate = Object(babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__["CreateBox"])(this.name + "BackMesh", {
18023
+ this._backPlate = Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["CreateBox"])(this.name + "BackMesh", {
17701
18024
  width: 1.0,
17702
18025
  height: 1.0,
17703
- depth: 0.08
18026
+ depth: 0.08,
17704
18027
  }, scene);
17705
- this._frontPlate = Object(babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__["CreateBox"])(this.name + "FrontMesh", {
18028
+ this._frontPlate = Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["CreateBox"])(this.name + "FrontMesh", {
17706
18029
  width: 1.0,
17707
18030
  height: 1.0,
17708
- depth: 0.08
18031
+ depth: 0.08,
17709
18032
  }, scene);
17710
18033
  this._frontPlate.parent = this._backPlate;
17711
- this._frontPlate.position.z = -0.08;
18034
+ this._frontPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["Vector3"].Forward(scene.useRightHandedSystem).scale(-0.08);
17712
18035
  this._frontPlate.isPickable = false;
17713
18036
  this._frontPlate.setEnabled(false);
17714
18037
  this._textPlate = _super.prototype._createNode.call(this, scene);
17715
18038
  this._textPlate.parent = this._backPlate;
17716
- this._textPlate.position.z = -0.08;
18039
+ this._textPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["Vector3"].Forward(scene.useRightHandedSystem).scale(-0.08);
17717
18040
  this._textPlate.isPickable = false;
17718
18041
  return this._backPlate;
17719
18042
  };
@@ -17742,8 +18065,8 @@ var HolographicButton = /** @class */ (function (_super) {
17742
18065
  this._frontMaterial.renderBorders = true;
17743
18066
  };
17744
18067
  HolographicButton.prototype._createPlateMaterial = function (mesh) {
17745
- this._plateMaterial = new babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__["StandardMaterial"](this.name + "Plate Material", mesh.getScene());
17746
- this._plateMaterial.specularColor = babylonjs_Materials_standardMaterial__WEBPACK_IMPORTED_MODULE_2__["Color3"].Black();
18068
+ this._plateMaterial = new babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["StandardMaterial"](this.name + "Plate Material", mesh.getScene());
18069
+ this._plateMaterial.specularColor = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_2__["Color3"].Black();
17747
18070
  };
17748
18071
  HolographicButton.prototype._affectMaterial = function (mesh) {
17749
18072
  // Back
@@ -17808,7 +18131,7 @@ var HolographicButton = /** @class */ (function (_super) {
17808
18131
  __webpack_require__.r(__webpack_exports__);
17809
18132
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HolographicSlate", function() { return HolographicSlate; });
17810
18133
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
17811
- /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Maths/math.vector");
18134
+ /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/perfCounter");
17812
18135
  /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__);
17813
18136
  /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
17814
18137
  /* harmony import */ var _touchHolographicButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./touchHolographicButton */ "./3D/controls/touchHolographicButton.ts");
@@ -17832,6 +18155,7 @@ __webpack_require__.r(__webpack_exports__);
17832
18155
 
17833
18156
 
17834
18157
 
18158
+
17835
18159
  /**
17836
18160
  * Class used to create a holographic slate
17837
18161
  * @since 5.0.0
@@ -17847,11 +18171,11 @@ var HolographicSlate = /** @class */ (function (_super) {
17847
18171
  /**
17848
18172
  * Dimensions of the slate
17849
18173
  */
17850
- _this.dimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0.7, 0.4, 0.001);
18174
+ _this.dimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](21.875, 12.5, 0.001);
17851
18175
  /**
17852
18176
  * Minimum dimensions of the slate
17853
18177
  */
17854
- _this.minDimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0.5, 0.2, 0.001);
18178
+ _this.minDimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](15.625, 6.25, 0.001);
17855
18179
  /**
17856
18180
  * Default dimensions of the slate
17857
18181
  */
@@ -17859,7 +18183,7 @@ var HolographicSlate = /** @class */ (function (_super) {
17859
18183
  /**
17860
18184
  * Dimensions of the backplate
17861
18185
  */
17862
- _this.backplateDimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](0.7, 0.02, 0.001);
18186
+ _this.backplateDimensions = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector3"](21.875, 0.625, 0.001);
17863
18187
  /**
17864
18188
  * Margin between backplate and contentplate
17865
18189
  */
@@ -18020,7 +18344,11 @@ var HolographicSlate = /** @class */ (function (_super) {
18020
18344
  var _this = this;
18021
18345
  var node = new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Mesh"]("slate" + this.name, scene);
18022
18346
  this._backPlate = Object(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])("backPlate" + this.name, { size: 1 }, scene);
18023
- this._contentPlate = Object(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])("contentPlate" + this.name, { size: 1 }, scene);
18347
+ var faceUV = new Array(6).fill(new babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["Vector4"](0, 0, 1, 1));
18348
+ if (scene.useRightHandedSystem) {
18349
+ faceUV[0].copyFromFloats(0, 1, 1, 0);
18350
+ }
18351
+ this._contentPlate = Object(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])("contentPlate" + this.name, { size: 1, faceUV: faceUV }, scene);
18024
18352
  this._backPlate.parent = node;
18025
18353
  this._backPlate.isNearGrabbable = true;
18026
18354
  this._contentPlate.parent = node;
@@ -18034,8 +18362,8 @@ var HolographicSlate = /** @class */ (function (_super) {
18034
18362
  this._positionElements();
18035
18363
  this._followButton.imageUrl = HolographicSlate.ASSETS_BASE_URL + HolographicSlate.FOLLOW_ICON_FILENAME;
18036
18364
  this._closeButton.imageUrl = HolographicSlate.ASSETS_BASE_URL + HolographicSlate.CLOSE_ICON_FILENAME;
18037
- this._followButton.backMaterial.alpha = 0;
18038
- this._closeButton.backMaterial.alpha = 0;
18365
+ this._followButton.isBackplateVisible = false;
18366
+ this._closeButton.isBackplateVisible = false;
18039
18367
  this._followButton.onPointerClickObservable.add(function () {
18040
18368
  _this._defaultBehavior.followBehaviorEnabled = !_this._defaultBehavior.followBehaviorEnabled;
18041
18369
  if (_this._defaultBehavior.followBehaviorEnabled) {
@@ -18461,7 +18789,7 @@ var NearMenu = /** @class */ (function (_super) {
18461
18789
  };
18462
18790
  NearMenu.prototype._finalProcessing = function () {
18463
18791
  _super.prototype._finalProcessing.call(this);
18464
- this._pinButton.position.copyFromFloats(this._backPlate.scaling.x / 2 + 0.2, this._backPlate.scaling.y / 2, 0);
18792
+ this._pinButton.position.copyFromFloats((this._backPlate.scaling.x + _touchHolographicMenu__WEBPACK_IMPORTED_MODULE_3__["TouchHolographicMenu"].MENU_BUTTON_SCALE) / 2, this._backPlate.scaling.y / 2, 0);
18465
18793
  };
18466
18794
  /**
18467
18795
  * Disposes the near menu
@@ -18497,7 +18825,7 @@ var NearMenu = /** @class */ (function (_super) {
18497
18825
  __webpack_require__.r(__webpack_exports__);
18498
18826
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PlanePanel", function() { return PlanePanel; });
18499
18827
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
18500
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
18828
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
18501
18829
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
18502
18830
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
18503
18831
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
@@ -18552,7 +18880,7 @@ var PlanePanel = /** @class */ (function (_super) {
18552
18880
  __webpack_require__.r(__webpack_exports__);
18553
18881
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ScatterPanel", function() { return ScatterPanel; });
18554
18882
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
18555
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Maths/math.vector");
18883
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
18556
18884
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
18557
18885
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
18558
18886
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
@@ -18679,7 +19007,7 @@ var ScatterPanel = /** @class */ (function (_super) {
18679
19007
  __webpack_require__.r(__webpack_exports__);
18680
19008
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Slider3D", function() { return Slider3D; });
18681
19009
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
18682
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
19010
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
18683
19011
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
18684
19012
  /* harmony import */ var _control3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control3D */ "./3D/controls/control3D.ts");
18685
19013
  /* harmony import */ var _materials_mrdl_mrdlSliderBarMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/mrdl/mrdlSliderBarMaterial */ "./3D/materials/mrdl/mrdlSliderBarMaterial.ts");
@@ -18967,7 +19295,7 @@ var Slider3D = /** @class */ (function (_super) {
18967
19295
  __webpack_require__.r(__webpack_exports__);
18968
19296
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SpherePanel", function() { return SpherePanel; });
18969
19297
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
18970
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Maths/math.vector");
19298
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
18971
19299
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
18972
19300
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
18973
19301
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
@@ -19053,7 +19381,7 @@ var SpherePanel = /** @class */ (function (_super) {
19053
19381
  __webpack_require__.r(__webpack_exports__);
19054
19382
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StackPanel3D", function() { return StackPanel3D; });
19055
19383
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19056
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Maths/math.vector");
19384
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
19057
19385
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
19058
19386
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
19059
19387
 
@@ -19178,7 +19506,7 @@ var StackPanel3D = /** @class */ (function (_super) {
19178
19506
  __webpack_require__.r(__webpack_exports__);
19179
19507
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchButton3D", function() { return TouchButton3D; });
19180
19508
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19181
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
19509
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
19182
19510
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
19183
19511
  /* harmony import */ var _button3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./button3D */ "./3D/controls/button3D.ts");
19184
19512
  // Assumptions: absolute position of button mesh is inside the mesh
@@ -19328,7 +19656,7 @@ var TouchButton3D = /** @class */ (function (_super) {
19328
19656
  __webpack_require__.r(__webpack_exports__);
19329
19657
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchHolographicButton", function() { return TouchHolographicButton; });
19330
19658
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19331
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
19659
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
19332
19660
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
19333
19661
  /* harmony import */ var _materials_fluentButton_fluentButtonMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/fluentButton/fluentButtonMaterial */ "./3D/materials/fluentButton/fluentButtonMaterial.ts");
19334
19662
  /* harmony import */ var _2D_controls_stackPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../2D/controls/stackPanel */ "./2D/controls/stackPanel.ts");
@@ -19382,15 +19710,15 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19382
19710
  _this.pointerDownAnimation = function () {
19383
19711
  if (_this._frontPlate && !_this._isNearPressed) {
19384
19712
  _this._frontPlate.scaling.z = _this._frontPlateDepth * 0.2;
19385
- _this._frontPlate.position.z = (_this._frontPlateDepth - (0.2 * _this._frontPlateDepth)) / 2;
19386
- _this._textPlate.position.z = -(_this._backPlateDepth + (0.2 * _this._frontPlateDepth)) / 2;
19713
+ _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);
19714
+ _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);
19387
19715
  }
19388
19716
  };
19389
19717
  _this.pointerUpAnimation = function () {
19390
19718
  if (_this._frontPlate) {
19391
19719
  _this._frontPlate.scaling.z = _this._frontPlateDepth;
19392
- _this._frontPlate.position.z = (_this._frontPlateDepth - _this._frontPlateDepth) / 2;
19393
- _this._textPlate.position.z = -(_this._backPlateDepth + _this._frontPlateDepth) / 2;
19720
+ _this._frontPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(_this._frontPlate._scene.useRightHandedSystem).scale((_this._frontPlateDepth - _this._frontPlateDepth) / 2);
19721
+ _this._textPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(_this._textPlate._scene.useRightHandedSystem).scale(-(_this._backPlateDepth + _this._frontPlateDepth) / 2);
19394
19722
  }
19395
19723
  };
19396
19724
  _this.onPointerMoveObservable.add(function (position) {
@@ -19400,8 +19728,8 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19400
19728
  var interactionHeight = _this._getInteractionHeight(position, _this._backPlate.position) / scale.z;
19401
19729
  interactionHeight = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Scalar"].Clamp(interactionHeight - (_this._backPlateDepth / 2), 0.2 * _this._frontPlateDepth, _this._frontPlateDepth);
19402
19730
  _this._frontPlate.scaling.z = interactionHeight;
19403
- _this._frontPlate.position.z = (_this._frontPlateDepth - interactionHeight) / 2;
19404
- _this._textPlate.position.z = -(_this._backPlateDepth + interactionHeight) / 2;
19731
+ _this._frontPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(_this._frontPlate._scene.useRightHandedSystem).scale((_this._frontPlateDepth - interactionHeight) / 2);
19732
+ _this._textPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(_this._textPlate._scene.useRightHandedSystem).scale(-(_this._backPlateDepth + interactionHeight) / 2);
19405
19733
  }
19406
19734
  }
19407
19735
  });
@@ -19459,6 +19787,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19459
19787
  return;
19460
19788
  }
19461
19789
  if (!this._tooltipFade) {
19790
+ var rightHandedScene = this._backPlate._scene.useRightHandedSystem;
19462
19791
  // Create tooltip with mesh and text
19463
19792
  this._tooltipMesh = Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["CreatePlane"])("", { size: 1 }, this._backPlate._scene);
19464
19793
  var tooltipBackground = Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["CreatePlane"])("", { size: 1, sideOrientation: babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Mesh"].DOUBLESIDE }, this._backPlate._scene);
@@ -19467,10 +19796,9 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19467
19796
  tooltipBackground.material = mat;
19468
19797
  tooltipBackground.isPickable = false;
19469
19798
  this._tooltipMesh.addChild(tooltipBackground);
19470
- tooltipBackground.position.z = 0.05;
19799
+ tooltipBackground.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(rightHandedScene).scale(0.05);
19471
19800
  this._tooltipMesh.scaling.y = 1 / 3;
19472
- this._tooltipMesh.position.y = 0.7;
19473
- this._tooltipMesh.position.z = -0.15;
19801
+ this._tooltipMesh.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Up().scale(0.7).add(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(rightHandedScene).scale(-0.15));
19474
19802
  this._tooltipMesh.isPickable = false;
19475
19803
  this._tooltipMesh.parent = this._backPlate;
19476
19804
  // Create text texture for the tooltip
@@ -19635,7 +19963,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19635
19963
  collisionMesh.isPickable = true;
19636
19964
  collisionMesh.isNearPickable = true;
19637
19965
  collisionMesh.visibility = 0;
19638
- collisionMesh.position.z = -this._frontPlateDepth / 2;
19966
+ collisionMesh.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(scene.useRightHandedSystem).scale(-this._frontPlateDepth / 2);
19639
19967
  babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["SceneLoader"].ImportMeshAsync(undefined, TouchHolographicButton.MODEL_BASE_URL, TouchHolographicButton.MODEL_FILENAME, scene)
19640
19968
  .then(function (result) {
19641
19969
  var importedFrontPlate = result.meshes[1];
@@ -19653,12 +19981,12 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19653
19981
  height: 1.0,
19654
19982
  depth: this._backPlateDepth,
19655
19983
  }, scene);
19656
- this._backPlate.position.z = this._backPlateDepth / 2;
19984
+ this._backPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(scene.useRightHandedSystem).scale(-this._backPlateDepth / 2);
19657
19985
  this._backPlate.isPickable = false;
19658
19986
  this._textPlate = _super.prototype._createNode.call(this, scene);
19659
19987
  this._textPlate.name = this.name + "_textPlate";
19660
19988
  this._textPlate.isPickable = false;
19661
- this._textPlate.position.z = -this._frontPlateDepth / 2;
19989
+ this._textPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(scene.useRightHandedSystem).scale(-this._frontPlateDepth / 2);
19662
19990
  this._backPlate.addChild(collisionMesh);
19663
19991
  this._backPlate.addChild(this._textPlate);
19664
19992
  this.collisionMesh = collisionMesh;
@@ -19759,7 +20087,7 @@ __webpack_require__.r(__webpack_exports__);
19759
20087
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchHolographicMenu", function() { return TouchHolographicMenu; });
19760
20088
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19761
20089
  /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
19762
- /* harmony import */ var babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Meshes/mesh */ "babylonjs/Maths/math.vector");
20090
+ /* harmony import */ var babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! babylonjs/Meshes/mesh */ "babylonjs/Misc/perfCounter");
19763
20091
  /* harmony import */ var babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2__);
19764
20092
  /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
19765
20093
 
@@ -19848,16 +20176,18 @@ var TouchHolographicMenu = /** @class */ (function (_super) {
19848
20176
  this._currentMax.maximizeInPlace(nodePosition);
19849
20177
  };
19850
20178
  TouchHolographicMenu.prototype._updateMargins = function () {
19851
- this._currentMin.addInPlaceFromFloats(-this._cellWidth / 2, -this._cellHeight / 2, 0);
19852
- this._currentMax.addInPlaceFromFloats(this._cellWidth / 2, this._cellHeight / 2, 0);
19853
- var extendSize = this._currentMax.subtract(this._currentMin);
19854
- // Also add a % margin
19855
- this._backPlate.scaling.x = extendSize.x + this._cellWidth * this.backPlateMargin;
19856
- this._backPlate.scaling.y = extendSize.y + this._cellHeight * this.backPlateMargin;
19857
- this._backPlate.scaling.z = 0.001;
19858
- for (var i = 0; i < this._children.length; i++) {
19859
- this._children[i].position.subtractInPlace(this._currentMin).subtractInPlace(extendSize.scale(0.5));
19860
- this._children[i].position.z -= 0.01;
20179
+ if (this._children.length > 0) {
20180
+ this._currentMin.addInPlaceFromFloats(-this._cellWidth / 2, -this._cellHeight / 2, 0);
20181
+ this._currentMax.addInPlaceFromFloats(this._cellWidth / 2, this._cellHeight / 2, 0);
20182
+ var extendSize = this._currentMax.subtract(this._currentMin);
20183
+ // Also add a % margin
20184
+ this._backPlate.scaling.x = extendSize.x + this._cellWidth * this.backPlateMargin;
20185
+ this._backPlate.scaling.y = extendSize.y + this._cellHeight * this.backPlateMargin;
20186
+ this._backPlate.scaling.z = 0.001;
20187
+ for (var i = 0; i < this._children.length; i++) {
20188
+ this._children[i].position.subtractInPlace(this._currentMin).subtractInPlace(extendSize.scale(0.5));
20189
+ this._children[i].position.z -= 0.01;
20190
+ }
19861
20191
  }
19862
20192
  this._currentMin = null;
19863
20193
  this._currentMax = null;
@@ -19904,7 +20234,7 @@ var TouchHolographicMenu = /** @class */ (function (_super) {
19904
20234
  /**
19905
20235
  * Scale for the buttons added to the menu
19906
20236
  */
19907
- TouchHolographicMenu.MENU_BUTTON_SCALE = 0.32;
20237
+ TouchHolographicMenu.MENU_BUTTON_SCALE = 1;
19908
20238
  return TouchHolographicMenu;
19909
20239
  }(_volumeBasedPanel__WEBPACK_IMPORTED_MODULE_1__["VolumeBasedPanel"]));
19910
20240
 
@@ -20001,7 +20331,7 @@ var TouchMeshButton3D = /** @class */ (function (_super) {
20001
20331
  __webpack_require__.r(__webpack_exports__);
20002
20332
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchToggleButton3D", function() { return TouchToggleButton3D; });
20003
20333
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20004
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
20334
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
20005
20335
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
20006
20336
  /* harmony import */ var _touchButton3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./touchButton3D */ "./3D/controls/touchButton3D.ts");
20007
20337
 
@@ -20078,7 +20408,7 @@ var TouchToggleButton3D = /** @class */ (function (_super) {
20078
20408
  __webpack_require__.r(__webpack_exports__);
20079
20409
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VolumeBasedPanel", function() { return VolumeBasedPanel; });
20080
20410
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20081
- /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Maths/math.vector");
20411
+ /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/tools */ "babylonjs/Misc/perfCounter");
20082
20412
  /* harmony import */ var babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__);
20083
20413
  /* harmony import */ var _container3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./container3D */ "./3D/controls/container3D.ts");
20084
20414
 
@@ -20273,7 +20603,7 @@ __webpack_require__.r(__webpack_exports__);
20273
20603
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SideHandle", function() { return SideHandle; });
20274
20604
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CornerHandle", function() { return CornerHandle; });
20275
20605
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20276
- /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Maths/math.vector");
20606
+ /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Meshes/Builders/boxBuilder */ "babylonjs/Misc/perfCounter");
20277
20607
  /* harmony import */ var babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__);
20278
20608
  /* harmony import */ var _materials_handle_handleMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/handle/handleMaterial */ "./3D/materials/handle/handleMaterial.ts");
20279
20609
 
@@ -20527,7 +20857,7 @@ __webpack_require__.r(__webpack_exports__);
20527
20857
  __webpack_require__.r(__webpack_exports__);
20528
20858
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SlateGizmo", function() { return SlateGizmo; });
20529
20859
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20530
- /* harmony import */ var babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Gizmos/gizmo */ "babylonjs/Maths/math.vector");
20860
+ /* harmony import */ var babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Gizmos/gizmo */ "babylonjs/Misc/perfCounter");
20531
20861
  /* harmony import */ var babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Gizmos_gizmo__WEBPACK_IMPORTED_MODULE_1__);
20532
20862
  /* harmony import */ var _gizmoHandle__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./gizmoHandle */ "./3D/gizmos/gizmoHandle.ts");
20533
20863
 
@@ -20907,7 +21237,7 @@ var SlateGizmo = /** @class */ (function (_super) {
20907
21237
  "use strict";
20908
21238
  __webpack_require__.r(__webpack_exports__);
20909
21239
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GUI3DManager", function() { return GUI3DManager; });
20910
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Maths/math.vector");
21240
+ /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/perfCounter");
20911
21241
  /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_0__);
20912
21242
  /* harmony import */ var _controls_container3D__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./controls/container3D */ "./3D/controls/container3D.ts");
20913
21243
 
@@ -20928,6 +21258,7 @@ var GUI3DManager = /** @class */ (function () {
20928
21258
  */
20929
21259
  function GUI3DManager(scene) {
20930
21260
  var _this = this;
21261
+ this._customControlScaling = 1.0;
20931
21262
  /** @hidden */
20932
21263
  this._lastControlOver = {};
20933
21264
  /** @hidden */
@@ -20990,6 +21321,39 @@ var GUI3DManager = /** @class */ (function () {
20990
21321
  enumerable: false,
20991
21322
  configurable: true
20992
21323
  });
21324
+ Object.defineProperty(GUI3DManager.prototype, "controlScaling", {
21325
+ /** Gets the scaling for all UI elements owned by this manager */
21326
+ get: function () {
21327
+ return this._customControlScaling;
21328
+ },
21329
+ /** Sets the scaling adjustment for all UI elements owned by this manager */
21330
+ set: function (newScale) {
21331
+ if (this._customControlScaling !== newScale && newScale > 0) {
21332
+ var scaleRatio_1 = newScale / this._customControlScaling;
21333
+ this._customControlScaling = newScale;
21334
+ this._rootContainer.children.forEach(function (control) {
21335
+ control.scaling.scaleInPlace(scaleRatio_1);
21336
+ if (newScale !== 1) {
21337
+ control._isScaledByManager = true;
21338
+ }
21339
+ });
21340
+ }
21341
+ },
21342
+ enumerable: false,
21343
+ configurable: true
21344
+ });
21345
+ Object.defineProperty(GUI3DManager.prototype, "useRealisticScaling", {
21346
+ /** Gets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */
21347
+ get: function () {
21348
+ return this.controlScaling === GUI3DManager.MRTK_REALISTIC_SCALING;
21349
+ },
21350
+ /** Sets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */
21351
+ set: function (newValue) {
21352
+ this.controlScaling = newValue ? GUI3DManager.MRTK_REALISTIC_SCALING : 1;
21353
+ },
21354
+ enumerable: false,
21355
+ configurable: true
21356
+ });
20993
21357
  GUI3DManager.prototype._handlePointerOut = function (pointerId, isPointerUp) {
20994
21358
  var previousControlOver = this._lastControlOver[pointerId];
20995
21359
  if (previousControlOver) {
@@ -21068,6 +21432,10 @@ var GUI3DManager = /** @class */ (function () {
21068
21432
  */
21069
21433
  GUI3DManager.prototype.addControl = function (control) {
21070
21434
  this._rootContainer.addControl(control);
21435
+ if (this._customControlScaling !== 1) {
21436
+ control.scaling.scaleInPlace(this._customControlScaling);
21437
+ control._isScaledByManager = true;
21438
+ }
21071
21439
  return this;
21072
21440
  };
21073
21441
  /**
@@ -21077,6 +21445,10 @@ var GUI3DManager = /** @class */ (function () {
21077
21445
  */
21078
21446
  GUI3DManager.prototype.removeControl = function (control) {
21079
21447
  this._rootContainer.removeControl(control);
21448
+ if (control._isScaledByManager) {
21449
+ control.scaling.scaleInPlace(1 / this._customControlScaling);
21450
+ control._isScaledByManager = false;
21451
+ }
21080
21452
  return this;
21081
21453
  };
21082
21454
  /**
@@ -21121,6 +21493,7 @@ var GUI3DManager = /** @class */ (function () {
21121
21493
  this._utilityLayer.dispose();
21122
21494
  }
21123
21495
  };
21496
+ GUI3DManager.MRTK_REALISTIC_SCALING = 0.032;
21124
21497
  return GUI3DManager;
21125
21498
  }());
21126
21499
 
@@ -21237,7 +21610,7 @@ __webpack_require__.r(__webpack_exports__);
21237
21610
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentMaterialDefines", function() { return FluentMaterialDefines; });
21238
21611
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentMaterial", function() { return FluentMaterial; });
21239
21612
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
21240
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Maths/math.vector");
21613
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
21241
21614
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
21242
21615
  /* harmony import */ var _shaders_fluent_vertex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/fluent.vertex */ "./3D/materials/fluent/shaders/fluent.vertex.ts");
21243
21616
  /* harmony import */ var _shaders_fluent_fragment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/fluent.fragment */ "./3D/materials/fluent/shaders/fluent.fragment.ts");
@@ -21555,7 +21928,7 @@ __webpack_require__.r(__webpack_exports__);
21555
21928
  "use strict";
21556
21929
  __webpack_require__.r(__webpack_exports__);
21557
21930
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentPixelShader", function() { return fluentPixelShader; });
21558
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Maths/math.vector");
21931
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
21559
21932
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
21560
21933
 
21561
21934
  var name = 'fluentPixelShader';
@@ -21577,7 +21950,7 @@ var fluentPixelShader = { name: name, shader: shader };
21577
21950
  "use strict";
21578
21951
  __webpack_require__.r(__webpack_exports__);
21579
21952
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentVertexShader", function() { return fluentVertexShader; });
21580
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Maths/math.vector");
21953
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
21581
21954
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
21582
21955
 
21583
21956
  var name = 'fluentVertexShader';
@@ -21600,7 +21973,7 @@ var fluentVertexShader = { name: name, shader: shader };
21600
21973
  __webpack_require__.r(__webpack_exports__);
21601
21974
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentBackplateMaterial", function() { return FluentBackplateMaterial; });
21602
21975
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
21603
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Maths/math.vector");
21976
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
21604
21977
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
21605
21978
  /* harmony import */ var _shaders_fluentBackplate_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/fluentBackplate.fragment */ "./3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.ts");
21606
21979
  /* harmony import */ var _shaders_fluentBackplate_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/fluentBackplate.vertex */ "./3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.ts");
@@ -22069,7 +22442,7 @@ __webpack_require__.r(__webpack_exports__);
22069
22442
  "use strict";
22070
22443
  __webpack_require__.r(__webpack_exports__);
22071
22444
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentBackplatePixelShader", function() { return fluentBackplatePixelShader; });
22072
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Maths/math.vector");
22445
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22073
22446
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22074
22447
 
22075
22448
  var name = 'fluentBackplatePixelShader';
@@ -22091,7 +22464,7 @@ var fluentBackplatePixelShader = { name: name, shader: shader };
22091
22464
  "use strict";
22092
22465
  __webpack_require__.r(__webpack_exports__);
22093
22466
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentBackplateVertexShader", function() { return fluentBackplateVertexShader; });
22094
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Maths/math.vector");
22467
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22095
22468
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22096
22469
 
22097
22470
  var name = 'fluentBackplateVertexShader';
@@ -22114,7 +22487,7 @@ var fluentBackplateVertexShader = { name: name, shader: shader };
22114
22487
  __webpack_require__.r(__webpack_exports__);
22115
22488
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FluentButtonMaterial", function() { return FluentButtonMaterial; });
22116
22489
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
22117
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Maths/math.vector");
22490
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
22118
22491
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
22119
22492
  /* harmony import */ var _shaders_fluentButton_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/fluentButton.fragment */ "./3D/materials/fluentButton/shaders/fluentButton.fragment.ts");
22120
22493
  /* harmony import */ var _shaders_fluentButton_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/fluentButton.vertex */ "./3D/materials/fluentButton/shaders/fluentButton.vertex.ts");
@@ -22686,7 +23059,7 @@ __webpack_require__.r(__webpack_exports__);
22686
23059
  "use strict";
22687
23060
  __webpack_require__.r(__webpack_exports__);
22688
23061
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentButtonPixelShader", function() { return fluentButtonPixelShader; });
22689
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Maths/math.vector");
23062
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22690
23063
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22691
23064
 
22692
23065
  var name = 'fluentButtonPixelShader';
@@ -22708,7 +23081,7 @@ var fluentButtonPixelShader = { name: name, shader: shader };
22708
23081
  "use strict";
22709
23082
  __webpack_require__.r(__webpack_exports__);
22710
23083
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fluentButtonVertexShader", function() { return fluentButtonVertexShader; });
22711
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Maths/math.vector");
23084
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22712
23085
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22713
23086
 
22714
23087
  var name = 'fluentButtonVertexShader';
@@ -22731,7 +23104,7 @@ var fluentButtonVertexShader = { name: name, shader: shader };
22731
23104
  __webpack_require__.r(__webpack_exports__);
22732
23105
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HandleMaterial", function() { return HandleMaterial; });
22733
23106
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
22734
- /* harmony import */ var babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Materials/shaderMaterial */ "babylonjs/Maths/math.vector");
23107
+ /* harmony import */ var babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Materials/shaderMaterial */ "babylonjs/Misc/perfCounter");
22735
23108
  /* harmony import */ var babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Materials_shaderMaterial__WEBPACK_IMPORTED_MODULE_1__);
22736
23109
  /* harmony import */ var _shaders_handle_vertex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/handle.vertex */ "./3D/materials/handle/shaders/handle.vertex.ts");
22737
23110
  /* harmony import */ var _shaders_handle_fragment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/handle.fragment */ "./3D/materials/handle/shaders/handle.fragment.ts");
@@ -22892,7 +23265,7 @@ __webpack_require__.r(__webpack_exports__);
22892
23265
  "use strict";
22893
23266
  __webpack_require__.r(__webpack_exports__);
22894
23267
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "handlePixelShader", function() { return handlePixelShader; });
22895
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Maths/math.vector");
23268
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22896
23269
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22897
23270
 
22898
23271
  var name = 'handlePixelShader';
@@ -22914,7 +23287,7 @@ var handlePixelShader = { name: name, shader: shader };
22914
23287
  "use strict";
22915
23288
  __webpack_require__.r(__webpack_exports__);
22916
23289
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "handleVertexShader", function() { return handleVertexShader; });
22917
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Maths/math.vector");
23290
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
22918
23291
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
22919
23292
 
22920
23293
  var name = 'handleVertexShader';
@@ -23001,7 +23374,7 @@ __webpack_require__.r(__webpack_exports__);
23001
23374
  __webpack_require__.r(__webpack_exports__);
23002
23375
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MRDLBackplateMaterial", function() { return MRDLBackplateMaterial; });
23003
23376
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
23004
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Maths/math.vector");
23377
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
23005
23378
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
23006
23379
  /* harmony import */ var _shaders_mrdlBackplate_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/mrdlBackplate.fragment */ "./3D/materials/mrdl/shaders/mrdlBackplate.fragment.ts");
23007
23380
  /* harmony import */ var _shaders_mrdlBackplate_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/mrdlBackplate.vertex */ "./3D/materials/mrdl/shaders/mrdlBackplate.vertex.ts");
@@ -23429,7 +23802,7 @@ Object(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
23429
23802
  __webpack_require__.r(__webpack_exports__);
23430
23803
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MRDLSliderBarMaterial", function() { return MRDLSliderBarMaterial; });
23431
23804
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
23432
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Maths/math.vector");
23805
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
23433
23806
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
23434
23807
  /* harmony import */ var _shaders_mrdlSliderBar_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/mrdlSliderBar.fragment */ "./3D/materials/mrdl/shaders/mrdlSliderBar.fragment.ts");
23435
23808
  /* harmony import */ var _shaders_mrdlSliderBar_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/mrdlSliderBar.vertex */ "./3D/materials/mrdl/shaders/mrdlSliderBar.vertex.ts");
@@ -24234,7 +24607,7 @@ Object(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
24234
24607
  __webpack_require__.r(__webpack_exports__);
24235
24608
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MRDLSliderThumbMaterial", function() { return MRDLSliderThumbMaterial; });
24236
24609
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
24237
- /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Maths/math.vector");
24610
+ /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/decorators */ "babylonjs/Misc/perfCounter");
24238
24611
  /* harmony import */ var babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__);
24239
24612
  /* harmony import */ var _shaders_mrdlSliderThumb_fragment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shaders/mrdlSliderThumb.fragment */ "./3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.ts");
24240
24613
  /* harmony import */ var _shaders_mrdlSliderThumb_vertex__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./shaders/mrdlSliderThumb.vertex */ "./3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.ts");
@@ -25038,7 +25411,7 @@ Object(babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["RegisterClass"])(
25038
25411
  "use strict";
25039
25412
  __webpack_require__.r(__webpack_exports__);
25040
25413
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlBackplatePixelShader", function() { return mrdlBackplatePixelShader; });
25041
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Maths/math.vector");
25414
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25042
25415
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25043
25416
 
25044
25417
  var name = 'mrdlBackplatePixelShader';
@@ -25060,7 +25433,7 @@ var mrdlBackplatePixelShader = { name: name, shader: shader };
25060
25433
  "use strict";
25061
25434
  __webpack_require__.r(__webpack_exports__);
25062
25435
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlBackplateVertexShader", function() { return mrdlBackplateVertexShader; });
25063
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Maths/math.vector");
25436
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25064
25437
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25065
25438
 
25066
25439
  var name = 'mrdlBackplateVertexShader';
@@ -25082,7 +25455,7 @@ var mrdlBackplateVertexShader = { name: name, shader: shader };
25082
25455
  "use strict";
25083
25456
  __webpack_require__.r(__webpack_exports__);
25084
25457
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderBarPixelShader", function() { return mrdlSliderBarPixelShader; });
25085
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Maths/math.vector");
25458
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25086
25459
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25087
25460
 
25088
25461
  var name = 'mrdlSliderBarPixelShader';
@@ -25104,7 +25477,7 @@ var mrdlSliderBarPixelShader = { name: name, shader: shader };
25104
25477
  "use strict";
25105
25478
  __webpack_require__.r(__webpack_exports__);
25106
25479
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderBarVertexShader", function() { return mrdlSliderBarVertexShader; });
25107
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Maths/math.vector");
25480
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25108
25481
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25109
25482
 
25110
25483
  var name = 'mrdlSliderBarVertexShader';
@@ -25126,7 +25499,7 @@ var mrdlSliderBarVertexShader = { name: name, shader: shader };
25126
25499
  "use strict";
25127
25500
  __webpack_require__.r(__webpack_exports__);
25128
25501
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderThumbPixelShader", function() { return mrdlSliderThumbPixelShader; });
25129
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Maths/math.vector");
25502
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25130
25503
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25131
25504
 
25132
25505
  var name = 'mrdlSliderThumbPixelShader';
@@ -25148,7 +25521,7 @@ var mrdlSliderThumbPixelShader = { name: name, shader: shader };
25148
25521
  "use strict";
25149
25522
  __webpack_require__.r(__webpack_exports__);
25150
25523
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mrdlSliderThumbVertexShader", function() { return mrdlSliderThumbVertexShader; });
25151
- /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Maths/math.vector");
25524
+ /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babylonjs/Engines/shaderStore */ "babylonjs/Misc/perfCounter");
25152
25525
  /* harmony import */ var babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Engines_shaderStore__WEBPACK_IMPORTED_MODULE_0__);
25153
25526
 
25154
25527
  var name = 'mrdlSliderThumbVertexShader';
@@ -25171,7 +25544,7 @@ var mrdlSliderThumbVertexShader = { name: name, shader: shader };
25171
25544
  __webpack_require__.r(__webpack_exports__);
25172
25545
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Vector3WithInfo", function() { return Vector3WithInfo; });
25173
25546
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
25174
- /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Maths/math.vector");
25547
+ /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/perfCounter");
25175
25548
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
25176
25549
 
25177
25550
 
@@ -25569,14 +25942,14 @@ if (typeof globalObject !== "undefined") {
25569
25942
 
25570
25943
  /***/ }),
25571
25944
 
25572
- /***/ "babylonjs/Maths/math.vector":
25945
+ /***/ "babylonjs/Misc/perfCounter":
25573
25946
  /*!****************************************************************************************************!*\
25574
25947
  !*** external {"root":"BABYLON","commonjs":"babylonjs","commonjs2":"babylonjs","amd":"babylonjs"} ***!
25575
25948
  \****************************************************************************************************/
25576
25949
  /*! no static exports found */
25577
25950
  /***/ (function(module, exports) {
25578
25951
 
25579
- module.exports = __WEBPACK_EXTERNAL_MODULE_babylonjs_Maths_math_vector__;
25952
+ module.exports = __WEBPACK_EXTERNAL_MODULE_babylonjs_Misc_perfCounter__;
25580
25953
 
25581
25954
  /***/ })
25582
25955