babylonjs-gui 5.0.0-beta.1 → 5.0.0-beta.5

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
@@ -97,9 +97,9 @@ return /******/ (function(modules) { // webpackBootstrap
97
97
  /******/ ({
98
98
 
99
99
  /***/ "../../node_modules/tslib/tslib.es6.js":
100
- /*!*************************************************************!*\
101
- !*** E:/Babylon/Babylon.js/node_modules/tslib/tslib.es6.js ***!
102
- \*************************************************************/
100
+ /*!************************************************************************************!*\
101
+ !*** C:/Users/raweber/Documents/GitHub/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
 
@@ -581,6 +581,7 @@ __webpack_require__.r(__webpack_exports__);
581
581
 
582
582
 
583
583
 
584
+
584
585
  /**
585
586
  * Class used to create texture to support 2D GUI elements
586
587
  * @see https://doc.babylonjs.com/how_to/gui
@@ -1701,8 +1702,10 @@ var AdvancedDynamicTexture = /** @class */ (function (_super) {
1701
1702
  if (height === void 0) { height = 1024; }
1702
1703
  if (supportPointerMove === void 0) { supportPointerMove = true; }
1703
1704
  if (onlyAlphaTesting === void 0) { onlyAlphaTesting = false; }
1704
- var result = new AdvancedDynamicTexture(mesh.name + " AdvancedDynamicTexture", width, height, mesh.getScene(), true, babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Texture"].TRILINEAR_SAMPLINGMODE, invertY);
1705
- var material = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["StandardMaterial"]("AdvancedDynamicTextureMaterial", mesh.getScene());
1705
+ // use a unique ID in name so serialization will work even if you create two ADTs for a single mesh
1706
+ var uniqueId = Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["RandomGUID"])();
1707
+ var result = new AdvancedDynamicTexture("AdvancedDynamicTexture for ".concat(mesh.name, " [").concat(uniqueId, "]"), width, height, mesh.getScene(), true, babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Texture"].TRILINEAR_SAMPLINGMODE, invertY);
1708
+ var material = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["StandardMaterial"]("AdvancedDynamicTextureMaterial for ".concat(mesh.name, " [").concat(uniqueId, "]"), mesh.getScene());
1706
1709
  material.backFaceCulling = false;
1707
1710
  material.diffuseColor = babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Color3"].Black();
1708
1711
  material.specularColor = babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Color3"].Black();
@@ -4045,7 +4048,7 @@ var Container = /** @class */ (function (_super) {
4045
4048
  rebuildCount++;
4046
4049
  } while (this._rebuildLayout && rebuildCount < this.maxLayoutCycle);
4047
4050
  if (rebuildCount >= 3 && this.logLayoutCycleErrors) {
4048
- babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__["Logger"].Error("Layout cycle detected in GUI (Container name=" + this.name + ", uniqueId=" + this.uniqueId + ")");
4051
+ babylonjs_Misc_logger__WEBPACK_IMPORTED_MODULE_1__["Logger"].Error("Layout cycle detected in GUI (Container name=".concat(this.name, ", uniqueId=").concat(this.uniqueId, ")"));
4049
4052
  }
4050
4053
  context.restore();
4051
4054
  if (this._isDirty) {
@@ -5340,11 +5343,25 @@ var Control = /** @class */ (function () {
5340
5343
  return this._isEnabled;
5341
5344
  },
5342
5345
  set: function (value) {
5346
+ var _this = this;
5343
5347
  if (this._isEnabled === value) {
5344
5348
  return;
5345
5349
  }
5346
5350
  this._isEnabled = value;
5347
5351
  this._markAsDirty();
5352
+ // if this control or any of it's descendants are under a pointer, we need to fire a pointerOut event
5353
+ var recursivelyFirePointerOut = function (control) {
5354
+ for (var pointer in control.host._lastControlOver) {
5355
+ if (control === _this.host._lastControlOver[pointer]) {
5356
+ control._onPointerOut(control, null, true);
5357
+ delete control.host._lastControlOver[pointer];
5358
+ }
5359
+ }
5360
+ if (control.children !== undefined) {
5361
+ control.children.forEach(recursivelyFirePointerOut);
5362
+ }
5363
+ };
5364
+ recursivelyFirePointerOut(this);
5348
5365
  },
5349
5366
  enumerable: false,
5350
5367
  configurable: true
@@ -5397,6 +5414,19 @@ var Control = /** @class */ (function () {
5397
5414
  }
5398
5415
  return this.parent.getAscendantOfClass(className);
5399
5416
  };
5417
+ /**
5418
+ * Mark control element as dirty
5419
+ * @param force force non visible elements to be marked too
5420
+ */
5421
+ Control.prototype.markAsDirty = function (force) {
5422
+ this._markAsDirty(force);
5423
+ };
5424
+ /**
5425
+ * Mark the element and its children as dirty
5426
+ */
5427
+ Control.prototype.markAllAsDirty = function () {
5428
+ this._markAllAsDirty();
5429
+ };
5400
5430
  /** @hidden */
5401
5431
  Control.prototype._resetFontCache = function () {
5402
5432
  this._fontSet = true;
@@ -5758,7 +5788,7 @@ var Control = /** @class */ (function () {
5758
5788
  rebuildCount++;
5759
5789
  } while (this._rebuildLayout && rebuildCount < 3);
5760
5790
  if (rebuildCount >= 3) {
5761
- babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Logger"].Error("Layout cycle detected in GUI (Control name=" + this.name + ", uniqueId=" + this.uniqueId + ")");
5791
+ babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Logger"].Error("Layout cycle detected in GUI (Control name=".concat(this.name, ", uniqueId=").concat(this.uniqueId, ")"));
5762
5792
  }
5763
5793
  context.restore();
5764
5794
  this.invalidateRect();
@@ -7155,7 +7185,7 @@ var Grid = /** @class */ (function (_super) {
7155
7185
  * @returns the list of controls
7156
7186
  */
7157
7187
  Grid.prototype.getChildrenAt = function (row, column) {
7158
- var cell = this._cells[row + ":" + column];
7188
+ var cell = this._cells["".concat(row, ":").concat(column)];
7159
7189
  if (!cell) {
7160
7190
  return null;
7161
7191
  }
@@ -7204,14 +7234,14 @@ var Grid = /** @class */ (function (_super) {
7204
7234
  return this;
7205
7235
  }
7206
7236
  for (var x = 0; x < this._rowDefinitions.length; x++) {
7207
- var key = x + ":" + index;
7237
+ var key = "".concat(x, ":").concat(index);
7208
7238
  var cell = this._cells[key];
7209
7239
  this._removeCell(cell, key);
7210
7240
  }
7211
7241
  for (var x = 0; x < this._rowDefinitions.length; x++) {
7212
7242
  for (var y = index + 1; y < this._columnDefinitions.length; y++) {
7213
- var previousKey = x + ":" + (y - 1);
7214
- var key = x + ":" + y;
7243
+ var previousKey = "".concat(x, ":").concat(y - 1);
7244
+ var key = "".concat(x, ":").concat(y);
7215
7245
  this._offsetCell(previousKey, key);
7216
7246
  }
7217
7247
  }
@@ -7231,14 +7261,14 @@ var Grid = /** @class */ (function (_super) {
7231
7261
  return this;
7232
7262
  }
7233
7263
  for (var y = 0; y < this._columnDefinitions.length; y++) {
7234
- var key = index + ":" + y;
7264
+ var key = "".concat(index, ":").concat(y);
7235
7265
  var cell = this._cells[key];
7236
7266
  this._removeCell(cell, key);
7237
7267
  }
7238
7268
  for (var y = 0; y < this._columnDefinitions.length; y++) {
7239
7269
  for (var x = index + 1; x < this._rowDefinitions.length; x++) {
7240
- var previousKey = x - 1 + ":" + y;
7241
- var key = x + ":" + y;
7270
+ var previousKey = "".concat(x - 1, ":").concat(y);
7271
+ var key = "".concat(x, ":").concat(y);
7242
7272
  this._offsetCell(previousKey, key);
7243
7273
  }
7244
7274
  }
@@ -7267,12 +7297,12 @@ var Grid = /** @class */ (function (_super) {
7267
7297
  this.addColumnDefinition(1, false);
7268
7298
  }
7269
7299
  if (this._childControls.indexOf(control) !== -1) {
7270
- babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__["Tools"].Warn("Control (Name:" + control.name + ", UniqueId:" + control.uniqueId + ") is already associated with this grid. You must remove it before reattaching it");
7300
+ babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_4__["Tools"].Warn("Control (Name:".concat(control.name, ", UniqueId:").concat(control.uniqueId, ") is already associated with this grid. You must remove it before reattaching it"));
7271
7301
  return this;
7272
7302
  }
7273
7303
  var x = Math.min(row, this._rowDefinitions.length - 1);
7274
7304
  var y = Math.min(column, this._columnDefinitions.length - 1);
7275
- var key = x + ":" + y;
7305
+ var key = "".concat(x, ":").concat(y);
7276
7306
  var goodContainer = this._cells[key];
7277
7307
  if (!goodContainer) {
7278
7308
  goodContainer = new _container__WEBPACK_IMPORTED_MODULE_1__["Container"](key);
@@ -13771,7 +13801,7 @@ var StackPanel = /** @class */ (function (_super) {
13771
13801
  }
13772
13802
  if (child._height.isPercentage && !child._automaticSize) {
13773
13803
  if (!this.ignoreLayoutWarnings) {
13774
- babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__["Tools"].Warn("Control (Name:" + child.name + ", UniqueId:" + child.uniqueId + ") is using height in percentage mode inside a vertical StackPanel");
13804
+ babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__["Tools"].Warn("Control (Name:".concat(child.name, ", UniqueId:").concat(child.uniqueId, ") is using height in percentage mode inside a vertical StackPanel"));
13775
13805
  }
13776
13806
  }
13777
13807
  else {
@@ -13786,7 +13816,7 @@ var StackPanel = /** @class */ (function (_super) {
13786
13816
  }
13787
13817
  if (child._width.isPercentage && !child._automaticSize) {
13788
13818
  if (!this.ignoreLayoutWarnings) {
13789
- babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__["Tools"].Warn("Control (Name:" + child.name + ", UniqueId:" + child.uniqueId + ") is using width in percentage mode inside a horizontal StackPanel");
13819
+ babylonjs_Misc_tools__WEBPACK_IMPORTED_MODULE_1__["Tools"].Warn("Control (Name:".concat(child.name, ", UniqueId:").concat(child.uniqueId, ") is using width in percentage mode inside a horizontal StackPanel"));
13790
13820
  }
13791
13821
  }
13792
13822
  else {
@@ -14379,7 +14409,7 @@ var TextBlock = /** @class */ (function (_super) {
14379
14409
  else {
14380
14410
  while (characters.length && lineWidth > width) {
14381
14411
  characters.pop();
14382
- line = characters.join("") + "...";
14412
+ line = "".concat(characters.join(""), "...");
14383
14413
  textMetrics = context.measureText(line);
14384
14414
  lineWidth = Math.abs(textMetrics.actualBoundingBoxLeft) + Math.abs(textMetrics.actualBoundingBoxRight);
14385
14415
  }
@@ -14418,7 +14448,7 @@ var TextBlock = /** @class */ (function (_super) {
14418
14448
  if (currentHeight > height && n > 1) {
14419
14449
  var lastLine = lines[n - 2];
14420
14450
  var currentLine = lines[n - 1];
14421
- lines[n - 2] = this._parseLineEllipsis("" + (lastLine.text + currentLine.text), width, context);
14451
+ lines[n - 2] = this._parseLineEllipsis("".concat(lastLine.text + currentLine.text), width, context);
14422
14452
  var linesToRemove = lines.length - n + 1;
14423
14453
  for (var i = 0; i < linesToRemove; i++) {
14424
14454
  lines.pop();
@@ -17761,7 +17791,7 @@ var HolographicBackplate = /** @class */ (function (_super) {
17761
17791
  babylonjs_Meshes_Builders_boxBuilder__WEBPACK_IMPORTED_MODULE_1__["SceneLoader"].ImportMeshAsync(undefined, HolographicBackplate.MODEL_BASE_URL, HolographicBackplate.MODEL_FILENAME, scene)
17762
17792
  .then(function (result) {
17763
17793
  var importedModel = result.meshes[1];
17764
- importedModel.name = _this.name + "_frontPlate";
17794
+ importedModel.name = "".concat(_this.name, "_frontPlate");
17765
17795
  importedModel.isPickable = false;
17766
17796
  importedModel.parent = collisionMesh;
17767
17797
  if (!!_this._material) {
@@ -18361,7 +18391,8 @@ var HolographicSlate = /** @class */ (function (_super) {
18361
18391
  }
18362
18392
  };
18363
18393
  HolographicSlate.prototype._applyContentViewport = function () {
18364
- if (this._contentPlate.material && this._contentPlate.material.albedoTexture) {
18394
+ var _a;
18395
+ if (((_a = this._contentPlate) === null || _a === void 0 ? void 0 : _a.material) && this._contentPlate.material.albedoTexture) {
18365
18396
  var tex = this._contentPlate.material.albedoTexture;
18366
18397
  tex.uScale = this._contentScaleRatio;
18367
18398
  tex.vScale = (this._contentScaleRatio / this._contentViewport.width) * this._contentViewport.height;
@@ -18477,7 +18508,7 @@ var HolographicSlate = /** @class */ (function (_super) {
18477
18508
  };
18478
18509
  HolographicSlate.prototype._affectMaterial = function (mesh) {
18479
18510
  // TODO share materials
18480
- this._backPlateMaterial = new _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_8__["FluentBackplateMaterial"](this.name + " plateMaterial", mesh.getScene());
18511
+ this._backPlateMaterial = new _materials_fluentBackplate_fluentBackplateMaterial__WEBPACK_IMPORTED_MODULE_8__["FluentBackplateMaterial"]("".concat(this.name, " plateMaterial"), mesh.getScene());
18481
18512
  this._pickedPointObserver = this._host.onPickedPointChangedObservable.add(function (pickedPoint) {
18482
18513
  // if (pickedPoint) {
18483
18514
  // this._backPlateMaterial. = pickedPoint;
@@ -18567,7 +18598,7 @@ var HolographicSlate = /** @class */ (function (_super) {
18567
18598
  /*!******************************!*\
18568
18599
  !*** ./3D/controls/index.ts ***!
18569
18600
  \******************************/
18570
- /*! exports provided: AbstractButton3D, Button3D, Container3D, Control3D, CylinderPanel, HolographicButton, HolographicSlate, HandMenu, MeshButton3D, NearMenu, PlanePanel, ScatterPanel, Slider3D, SpherePanel, StackPanel3D, TouchButton3D, TouchMeshButton3D, TouchHolographicButton, TouchHolographicMenu, TouchToggleButton3D, VolumeBasedPanel, HolographicBackplate */
18601
+ /*! exports provided: AbstractButton3D, Button3D, Container3D, Control3D, CylinderPanel, HolographicButton, HolographicSlate, HandMenu, MeshButton3D, NearMenu, PlanePanel, ScatterPanel, Slider3D, SpherePanel, StackPanel3D, TouchButton3D, TouchMeshButton3D, TouchHolographicButton, TouchHolographicMenu, VolumeBasedPanel, HolographicBackplate */
18571
18602
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
18572
18603
 
18573
18604
  "use strict";
@@ -18629,14 +18660,11 @@ __webpack_require__.r(__webpack_exports__);
18629
18660
  /* harmony import */ var _touchHolographicMenu__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./touchHolographicMenu */ "./3D/controls/touchHolographicMenu.ts");
18630
18661
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TouchHolographicMenu", function() { return _touchHolographicMenu__WEBPACK_IMPORTED_MODULE_18__["TouchHolographicMenu"]; });
18631
18662
 
18632
- /* harmony import */ var _touchToggleButton3D__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./touchToggleButton3D */ "./3D/controls/touchToggleButton3D.ts");
18633
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TouchToggleButton3D", function() { return _touchToggleButton3D__WEBPACK_IMPORTED_MODULE_19__["TouchToggleButton3D"]; });
18634
-
18635
- /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
18636
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VolumeBasedPanel", function() { return _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_20__["VolumeBasedPanel"]; });
18663
+ /* harmony import */ var _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./volumeBasedPanel */ "./3D/controls/volumeBasedPanel.ts");
18664
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VolumeBasedPanel", function() { return _volumeBasedPanel__WEBPACK_IMPORTED_MODULE_19__["VolumeBasedPanel"]; });
18637
18665
 
18638
- /* harmony import */ var _holographicBackplate__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./holographicBackplate */ "./3D/controls/holographicBackplate.ts");
18639
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HolographicBackplate", function() { return _holographicBackplate__WEBPACK_IMPORTED_MODULE_21__["HolographicBackplate"]; });
18666
+ /* harmony import */ var _holographicBackplate__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./holographicBackplate */ "./3D/controls/holographicBackplate.ts");
18667
+ /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HolographicBackplate", function() { return _holographicBackplate__WEBPACK_IMPORTED_MODULE_20__["HolographicBackplate"]; });
18640
18668
 
18641
18669
 
18642
18670
 
@@ -18657,7 +18685,6 @@ __webpack_require__.r(__webpack_exports__);
18657
18685
 
18658
18686
 
18659
18687
 
18660
-
18661
18688
 
18662
18689
 
18663
18690
 
@@ -18797,13 +18824,16 @@ var NearMenu = /** @class */ (function (_super) {
18797
18824
  return this._isPinned;
18798
18825
  },
18799
18826
  set: function (value) {
18827
+ // Tell the pin button to toggle if this was called manually, for clean state control
18828
+ if (this._pinButton.isToggled !== value) {
18829
+ this._pinButton.isToggled = value;
18830
+ return;
18831
+ }
18800
18832
  this._isPinned = value;
18801
- if (this._isPinned) {
18802
- this._pinMaterial.emissiveColor.copyFromFloats(0.25, 0.4, 0.95);
18833
+ if (value) {
18803
18834
  this._defaultBehavior.followBehaviorEnabled = false;
18804
18835
  }
18805
18836
  else {
18806
- this._pinMaterial.emissiveColor.copyFromFloats(0.08, 0.15, 0.55);
18807
18837
  this._defaultBehavior.followBehaviorEnabled = true;
18808
18838
  }
18809
18839
  },
@@ -18816,12 +18846,11 @@ var NearMenu = /** @class */ (function (_super) {
18816
18846
  control.imageUrl = NearMenu.ASSETS_BASE_URL + NearMenu.PIN_ICON_FILENAME;
18817
18847
  control.parent = this;
18818
18848
  control._host = this._host;
18819
- control.onPointerClickObservable.add(function () { return (_this.isPinned = !_this.isPinned); });
18849
+ control.isToggleButton = true;
18850
+ control.onToggleObservable.add(function (newState) { _this.isPinned = newState; });
18820
18851
  if (this._host.utilityLayer) {
18821
18852
  control._prepareNode(this._host.utilityLayer.utilityLayerScene);
18822
18853
  control.scaling.scaleInPlace(_touchHolographicMenu__WEBPACK_IMPORTED_MODULE_3__["TouchHolographicMenu"].MENU_BUTTON_SCALE);
18823
- this._pinMaterial = control.backMaterial;
18824
- this._pinMaterial.diffuseColor.copyFromFloats(0, 0, 0);
18825
18854
  if (control.node) {
18826
18855
  control.node.parent = parent;
18827
18856
  }
@@ -19230,7 +19259,7 @@ var Slider3D = /** @class */ (function (_super) {
19230
19259
  // Mesh association
19231
19260
  Slider3D.prototype._createNode = function (scene) {
19232
19261
  var _this = this;
19233
- var sliderBackplate = Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])(this.name + "_sliderbackplate", {
19262
+ var sliderBackplate = Object(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])("".concat(this.name, "_sliderbackplate"), {
19234
19263
  width: 1.0,
19235
19264
  height: 1.0,
19236
19265
  depth: 1.0,
@@ -19241,12 +19270,12 @@ var Slider3D = /** @class */ (function (_super) {
19241
19270
  babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["SceneLoader"].ImportMeshAsync(undefined, Slider3D.MODEL_BASE_URL, Slider3D.MODEL_FILENAME, scene)
19242
19271
  .then(function (result) {
19243
19272
  var sliderBackplateModel = result.meshes[1];
19244
- var sliderBarModel = result.meshes[1].clone(_this.name + "_sliderbar", sliderBackplate);
19245
- var sliderThumbModel = result.meshes[1].clone(_this.name + "_sliderthumb", sliderBackplate);
19273
+ var sliderBarModel = result.meshes[1].clone("".concat(_this.name, "_sliderbar"), sliderBackplate);
19274
+ var sliderThumbModel = result.meshes[1].clone("".concat(_this.name, "_sliderthumb"), sliderBackplate);
19246
19275
  sliderBackplateModel.visibility = 0;
19247
19276
  if (_this._sliderBackplateVisible) {
19248
19277
  sliderBackplateModel.visibility = 1;
19249
- sliderBackplateModel.name = _this.name + "_sliderbackplate";
19278
+ sliderBackplateModel.name = "".concat(_this.name, "_sliderbackplate");
19250
19279
  sliderBackplateModel.isPickable = false;
19251
19280
  sliderBackplateModel.scaling.x = 1;
19252
19281
  sliderBackplateModel.scaling.z = 0.2;
@@ -19284,9 +19313,9 @@ var Slider3D = /** @class */ (function (_super) {
19284
19313
  };
19285
19314
  Slider3D.prototype._affectMaterial = function (mesh) {
19286
19315
  var _a, _b, _c;
19287
- this._sliderBackplateMaterial = (_a = this._sliderBackplateMaterial) !== null && _a !== void 0 ? _a : new _materials_mrdl_mrdlBackplateMaterial__WEBPACK_IMPORTED_MODULE_5__["MRDLBackplateMaterial"](this.name + "_sliderbackplate_material", mesh.getScene());
19288
- this._sliderBarMaterial = (_b = this._sliderBarMaterial) !== null && _b !== void 0 ? _b : new _materials_mrdl_mrdlSliderBarMaterial__WEBPACK_IMPORTED_MODULE_3__["MRDLSliderBarMaterial"](this.name + "_sliderbar_material", mesh.getScene());
19289
- this._sliderThumbMaterial = (_c = this._sliderThumbMaterial) !== null && _c !== void 0 ? _c : new _materials_mrdl_mrdlSliderThumbMaterial__WEBPACK_IMPORTED_MODULE_4__["MRDLSliderThumbMaterial"](this.name + "_sliderthumb_material", mesh.getScene());
19316
+ this._sliderBackplateMaterial = (_a = this._sliderBackplateMaterial) !== null && _a !== void 0 ? _a : new _materials_mrdl_mrdlBackplateMaterial__WEBPACK_IMPORTED_MODULE_5__["MRDLBackplateMaterial"]("".concat(this.name, "_sliderbackplate_material"), mesh.getScene());
19317
+ this._sliderBarMaterial = (_b = this._sliderBarMaterial) !== null && _b !== void 0 ? _b : new _materials_mrdl_mrdlSliderBarMaterial__WEBPACK_IMPORTED_MODULE_3__["MRDLSliderBarMaterial"]("".concat(this.name, "_sliderbar_material"), mesh.getScene());
19318
+ this._sliderThumbMaterial = (_c = this._sliderThumbMaterial) !== null && _c !== void 0 ? _c : new _materials_mrdl_mrdlSliderThumbMaterial__WEBPACK_IMPORTED_MODULE_4__["MRDLSliderThumbMaterial"]("".concat(this.name, "_sliderthumb_material"), mesh.getScene());
19290
19319
  };
19291
19320
  Slider3D.prototype._createBehavior = function () {
19292
19321
  var _this = this;
@@ -19570,6 +19599,7 @@ __webpack_require__.r(__webpack_exports__);
19570
19599
 
19571
19600
 
19572
19601
 
19602
+
19573
19603
  /**
19574
19604
  * Class used to create a touchable button in 3D
19575
19605
  */
@@ -19583,6 +19613,13 @@ var TouchButton3D = /** @class */ (function (_super) {
19583
19613
  function TouchButton3D(name, collisionMesh) {
19584
19614
  var _this = _super.call(this, name) || this;
19585
19615
  _this._isNearPressed = false;
19616
+ _this._isToggleButton = false;
19617
+ _this._toggleState = false;
19618
+ _this._toggleButtonCallback = function () { _this._onToggle(!_this._toggleState); };
19619
+ /**
19620
+ * An event triggered when the button is toggled. Only fired if 'isToggleButton' is true
19621
+ */
19622
+ _this.onToggleObservable = new babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
19586
19623
  _this.collidableFrontDirection = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Zero();
19587
19624
  if (collisionMesh) {
19588
19625
  _this.collisionMesh = collisionMesh;
@@ -19625,12 +19662,10 @@ var TouchButton3D = /** @class */ (function (_super) {
19625
19662
  * @param collisionMesh the new collision mesh for the button
19626
19663
  */
19627
19664
  set: function (collisionMesh) {
19628
- if (this._collisionMesh) {
19629
- this._collisionMesh.dispose();
19630
- }
19631
- // parent the mesh to sync transforms
19632
- if (!collisionMesh.parent && this.mesh) {
19633
- collisionMesh.setParent(this.mesh);
19665
+ var _a, _b;
19666
+ // Remove the GUI3DManager's data from the previous collision mesh's reserved data store
19667
+ if ((_b = (_a = this._collisionMesh) === null || _a === void 0 ? void 0 : _a.reservedDataStore) === null || _b === void 0 ? void 0 : _b.GUI3D) {
19668
+ this._collisionMesh.reservedDataStore.GUI3D = {};
19634
19669
  }
19635
19670
  this._collisionMesh = collisionMesh;
19636
19671
  this._injectGUI3DReservedDataStore(this._collisionMesh).control = this;
@@ -19640,6 +19675,53 @@ var TouchButton3D = /** @class */ (function (_super) {
19640
19675
  enumerable: false,
19641
19676
  configurable: true
19642
19677
  });
19678
+ Object.defineProperty(TouchButton3D.prototype, "isToggleButton", {
19679
+ get: function () {
19680
+ return this._isToggleButton;
19681
+ },
19682
+ /**
19683
+ * Setter for if this TouchButton3D should be treated as a toggle button
19684
+ * @param value If this TouchHolographicButton should act like a toggle button
19685
+ */
19686
+ set: function (value) {
19687
+ if (value === this._isToggleButton) {
19688
+ return;
19689
+ }
19690
+ this._isToggleButton = value;
19691
+ if (value) {
19692
+ this.onPointerUpObservable.add(this._toggleButtonCallback);
19693
+ }
19694
+ else {
19695
+ this.onPointerUpObservable.removeCallback(this._toggleButtonCallback);
19696
+ // Safety check, reset the button if it's toggled on but no longer a toggle button
19697
+ if (this._toggleState) {
19698
+ this._onToggle(false);
19699
+ }
19700
+ }
19701
+ },
19702
+ enumerable: false,
19703
+ configurable: true
19704
+ });
19705
+ Object.defineProperty(TouchButton3D.prototype, "isToggled", {
19706
+ get: function () {
19707
+ return this._toggleState;
19708
+ },
19709
+ /**
19710
+ * A public entrypoint to set the toggle state of the TouchHolographicButton. Only works if 'isToggleButton' is true
19711
+ * @param newState The new state to set the TouchHolographicButton's toggle state to
19712
+ */
19713
+ set: function (newState) {
19714
+ if (this._isToggleButton && this._toggleState !== newState) {
19715
+ this._onToggle(newState);
19716
+ }
19717
+ },
19718
+ enumerable: false,
19719
+ configurable: true
19720
+ });
19721
+ TouchButton3D.prototype._onToggle = function (newState) {
19722
+ this._toggleState = newState;
19723
+ this.onToggleObservable.notifyObservers(newState);
19724
+ };
19643
19725
  // Returns true if the collidable is in front of the button, or if the button has no front direction
19644
19726
  TouchButton3D.prototype._isInteractionInFrontOfButton = function (collidablePos) {
19645
19727
  return this._getInteractionHeight(collidablePos, this._collisionMesh.getAbsolutePosition()) > 0;
@@ -19689,6 +19771,9 @@ var TouchButton3D = /** @class */ (function (_super) {
19689
19771
  */
19690
19772
  TouchButton3D.prototype.dispose = function () {
19691
19773
  _super.prototype.dispose.call(this);
19774
+ // Clean up toggle observables
19775
+ this.onPointerUpObservable.removeCallback(this._toggleButtonCallback);
19776
+ this.onToggleObservable.clear();
19692
19777
  if (this._collisionMesh) {
19693
19778
  this._collisionMesh.dispose();
19694
19779
  }
@@ -19713,12 +19798,14 @@ __webpack_require__.r(__webpack_exports__);
19713
19798
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
19714
19799
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Maths/math.vector */ "babylonjs/Misc/observable");
19715
19800
  /* harmony import */ var babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
19716
- /* harmony import */ var _materials_fluentButton_fluentButtonMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/fluentButton/fluentButtonMaterial */ "./3D/materials/fluentButton/fluentButtonMaterial.ts");
19717
- /* harmony import */ var _2D_controls_stackPanel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../2D/controls/stackPanel */ "./2D/controls/stackPanel.ts");
19718
- /* harmony import */ var _2D_controls_image__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../2D/controls/image */ "./2D/controls/image.ts");
19719
- /* harmony import */ var _2D_controls_textBlock__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../2D/controls/textBlock */ "./2D/controls/textBlock.ts");
19720
- /* harmony import */ var _2D_advancedDynamicTexture__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../2D/advancedDynamicTexture */ "./2D/advancedDynamicTexture.ts");
19721
- /* harmony import */ var _touchButton3D__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./touchButton3D */ "./3D/controls/touchButton3D.ts");
19801
+ /* harmony import */ var _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../materials/fluent/fluentMaterial */ "./3D/materials/fluent/fluentMaterial.ts");
19802
+ /* harmony import */ var _materials_fluentButton_fluentButtonMaterial__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../materials/fluentButton/fluentButtonMaterial */ "./3D/materials/fluentButton/fluentButtonMaterial.ts");
19803
+ /* harmony import */ var _2D_controls_stackPanel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../2D/controls/stackPanel */ "./2D/controls/stackPanel.ts");
19804
+ /* harmony import */ var _2D_controls_image__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../2D/controls/image */ "./2D/controls/image.ts");
19805
+ /* harmony import */ var _2D_controls_textBlock__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../2D/controls/textBlock */ "./2D/controls/textBlock.ts");
19806
+ /* harmony import */ var _2D_advancedDynamicTexture__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../2D/advancedDynamicTexture */ "./2D/advancedDynamicTexture.ts");
19807
+ /* harmony import */ var _touchButton3D__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./touchButton3D */ "./3D/controls/touchButton3D.ts");
19808
+
19722
19809
 
19723
19810
 
19724
19811
 
@@ -19753,6 +19840,8 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19753
19840
  _this._isBackplateVisible = true;
19754
19841
  _this._frontPlateDepth = 0.5;
19755
19842
  _this._backPlateDepth = 0.04;
19843
+ _this._backplateColor = new babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Color3"](0.08, 0.15, 0.55);
19844
+ _this._backplateToggledColor = new babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Color3"](0.25, 0.4, 0.95);
19756
19845
  _this._shareMaterials = shareMaterials;
19757
19846
  _this.pointerEnterAnimation = function () {
19758
19847
  _this._frontMaterial.leftBlobEnable = true;
@@ -19780,7 +19869,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19780
19869
  if (_this._frontPlate && _this._isNearPressed) {
19781
19870
  var scale = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Zero();
19782
19871
  if (_this._backPlate.getWorldMatrix().decompose(scale, undefined, undefined)) {
19783
- var interactionHeight = _this._getInteractionHeight(position, _this._backPlate.position) / scale.z;
19872
+ var interactionHeight = _this._getInteractionHeight(position, _this._backPlate.getAbsolutePosition()) / scale.z;
19784
19873
  interactionHeight = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Scalar"].Clamp(interactionHeight - (_this._backPlateDepth / 2), 0.2 * _this._frontPlateDepth, _this._frontPlateDepth);
19785
19874
  _this._frontPlate.scaling.z = interactionHeight;
19786
19875
  _this._frontPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(_this._frontPlate._scene.useRightHandedSystem).scale((_this._frontPlateDepth - interactionHeight) / 2);
@@ -19857,8 +19946,8 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19857
19946
  this._tooltipMesh.isPickable = false;
19858
19947
  this._tooltipMesh.parent = this._backPlate;
19859
19948
  // Create text texture for the tooltip
19860
- this._tooltipTexture = _2D_advancedDynamicTexture__WEBPACK_IMPORTED_MODULE_6__["AdvancedDynamicTexture"].CreateForMesh(this._tooltipMesh);
19861
- this._tooltipTextBlock = new _2D_controls_textBlock__WEBPACK_IMPORTED_MODULE_5__["TextBlock"]();
19949
+ this._tooltipTexture = _2D_advancedDynamicTexture__WEBPACK_IMPORTED_MODULE_7__["AdvancedDynamicTexture"].CreateForMesh(this._tooltipMesh);
19950
+ this._tooltipTextBlock = new _2D_controls_textBlock__WEBPACK_IMPORTED_MODULE_6__["TextBlock"]();
19862
19951
  this._tooltipTextBlock.scaleY = 3;
19863
19952
  this._tooltipTextBlock.color = "white";
19864
19953
  this._tooltipTextBlock.fontSize = 130;
@@ -19982,11 +20071,11 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19982
20071
  };
19983
20072
  TouchHolographicButton.prototype._rebuildContent = function () {
19984
20073
  this._disposeFacadeTexture();
19985
- var panel = new _2D_controls_stackPanel__WEBPACK_IMPORTED_MODULE_3__["StackPanel"]();
20074
+ var panel = new _2D_controls_stackPanel__WEBPACK_IMPORTED_MODULE_4__["StackPanel"]();
19986
20075
  panel.isVertical = true;
19987
20076
  if (babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["DomManagement"].IsDocumentAvailable() && !!document.createElement) {
19988
20077
  if (this._imageUrl) {
19989
- var image = new _2D_controls_image__WEBPACK_IMPORTED_MODULE_4__["Image"]();
20078
+ var image = new _2D_controls_image__WEBPACK_IMPORTED_MODULE_5__["Image"]();
19990
20079
  image.source = this._imageUrl;
19991
20080
  image.paddingTop = "40px";
19992
20081
  image.height = "180px";
@@ -19996,7 +20085,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
19996
20085
  }
19997
20086
  }
19998
20087
  if (this._text) {
19999
- var text = new _2D_controls_textBlock__WEBPACK_IMPORTED_MODULE_5__["TextBlock"]();
20088
+ var text = new _2D_controls_textBlock__WEBPACK_IMPORTED_MODULE_6__["TextBlock"]();
20000
20089
  text.text = this._text;
20001
20090
  text.color = "white";
20002
20091
  text.height = "30px";
@@ -20010,7 +20099,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
20010
20099
  var _this = this;
20011
20100
  var _a;
20012
20101
  this.name = (_a = this.name) !== null && _a !== void 0 ? _a : "TouchHolographicButton";
20013
- var collisionMesh = Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])(this.name + "_collisionMesh", {
20102
+ var collisionMesh = Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])("".concat(this.name, "_collisionMesh"), {
20014
20103
  width: 1.0,
20015
20104
  height: 1.0,
20016
20105
  depth: this._frontPlateDepth,
@@ -20021,17 +20110,26 @@ var TouchHolographicButton = /** @class */ (function (_super) {
20021
20110
  collisionMesh.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(scene.useRightHandedSystem).scale(-this._frontPlateDepth / 2);
20022
20111
  babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["SceneLoader"].ImportMeshAsync(undefined, TouchHolographicButton.MODEL_BASE_URL, TouchHolographicButton.MODEL_FILENAME, scene)
20023
20112
  .then(function (result) {
20113
+ var alphaMesh = Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])("${this.name}_alphaMesh", {
20114
+ width: 1.0,
20115
+ height: 1.0,
20116
+ depth: 1.0,
20117
+ }, scene);
20118
+ alphaMesh.isPickable = false;
20119
+ alphaMesh.material = new babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["StandardMaterial"]("${this.name}_alphaMesh_material", scene);
20120
+ alphaMesh.material.alpha = 0.15;
20024
20121
  var importedFrontPlate = result.meshes[1];
20025
- importedFrontPlate.name = _this.name + "_frontPlate";
20122
+ importedFrontPlate.name = "".concat(_this.name, "_frontPlate");
20026
20123
  importedFrontPlate.isPickable = false;
20027
20124
  importedFrontPlate.scaling.z = _this._frontPlateDepth;
20125
+ alphaMesh.parent = importedFrontPlate;
20028
20126
  importedFrontPlate.parent = collisionMesh;
20029
20127
  if (!!_this._frontMaterial) {
20030
20128
  importedFrontPlate.material = _this._frontMaterial;
20031
20129
  }
20032
20130
  _this._frontPlate = importedFrontPlate;
20033
20131
  });
20034
- this._backPlate = Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])(this.name + "_backPlate", {
20132
+ this._backPlate = Object(babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["CreateBox"])("".concat(this.name, "_backPlate"), {
20035
20133
  width: 1.0,
20036
20134
  height: 1.0,
20037
20135
  depth: this._backPlateDepth,
@@ -20039,7 +20137,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
20039
20137
  this._backPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(scene.useRightHandedSystem).scale(-this._backPlateDepth / 2);
20040
20138
  this._backPlate.isPickable = false;
20041
20139
  this._textPlate = _super.prototype._createNode.call(this, scene);
20042
- this._textPlate.name = this.name + "_textPlate";
20140
+ this._textPlate.name = "".concat(this.name, "_textPlate");
20043
20141
  this._textPlate.isPickable = false;
20044
20142
  this._textPlate.position = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Vector3"].Forward(scene.useRightHandedSystem).scale(-this._frontPlateDepth / 2);
20045
20143
  this._backPlate.addChild(collisionMesh);
@@ -20054,16 +20152,29 @@ var TouchHolographicButton = /** @class */ (function (_super) {
20054
20152
  this._plateMaterial.diffuseColor = new babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Color3"](0.4, 0.4, 0.4);
20055
20153
  };
20056
20154
  TouchHolographicButton.prototype._createBackMaterial = function (mesh) {
20057
- this._backMaterial = new babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["StandardMaterial"](this.name + "Back Material", mesh.getScene());
20058
- this._backMaterial.diffuseColor = new babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Color3"](0.5, 0.5, 0.5);
20155
+ this._backMaterial = new _materials_fluent_fluentMaterial__WEBPACK_IMPORTED_MODULE_2__["FluentMaterial"](this.name + "backPlateMaterial", mesh.getScene());
20156
+ this._backMaterial.albedoColor = this._backplateColor;
20157
+ this._backMaterial.renderBorders = true;
20158
+ this._backMaterial.renderHoverLight = false;
20059
20159
  };
20060
20160
  TouchHolographicButton.prototype._createFrontMaterial = function (mesh) {
20061
- this._frontMaterial = new _materials_fluentButton_fluentButtonMaterial__WEBPACK_IMPORTED_MODULE_2__["FluentButtonMaterial"](this.name + "Front Material", mesh.getScene());
20161
+ this._frontMaterial = new _materials_fluentButton_fluentButtonMaterial__WEBPACK_IMPORTED_MODULE_3__["FluentButtonMaterial"](this.name + "Front Material", mesh.getScene());
20062
20162
  };
20063
20163
  TouchHolographicButton.prototype._createPlateMaterial = function (mesh) {
20064
20164
  this._plateMaterial = new babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["StandardMaterial"](this.name + "Plate Material", mesh.getScene());
20065
20165
  this._plateMaterial.specularColor = babylonjs_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__["Color3"].Black();
20066
20166
  };
20167
+ TouchHolographicButton.prototype._onToggle = function (newState) {
20168
+ if (this._backMaterial) {
20169
+ if (newState) {
20170
+ this._backMaterial.albedoColor = this._backplateToggledColor;
20171
+ }
20172
+ else {
20173
+ this._backMaterial.albedoColor = this._backplateColor;
20174
+ }
20175
+ }
20176
+ _super.prototype._onToggle.call(this, newState);
20177
+ };
20067
20178
  TouchHolographicButton.prototype._affectMaterial = function (mesh) {
20068
20179
  if (this._shareMaterials) {
20069
20180
  // Back
@@ -20124,7 +20235,7 @@ var TouchHolographicButton = /** @class */ (function (_super) {
20124
20235
  */
20125
20236
  TouchHolographicButton.MODEL_FILENAME = "mrtk-fluent-button.glb";
20126
20237
  return TouchHolographicButton;
20127
- }(_touchButton3D__WEBPACK_IMPORTED_MODULE_7__["TouchButton3D"]));
20238
+ }(_touchButton3D__WEBPACK_IMPORTED_MODULE_8__["TouchButton3D"]));
20128
20239
 
20129
20240
 
20130
20241
 
@@ -20188,7 +20299,7 @@ var TouchHolographicMenu = /** @class */ (function (_super) {
20188
20299
  configurable: true
20189
20300
  });
20190
20301
  TouchHolographicMenu.prototype._createNode = function (scene) {
20191
- var node = new babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2__["Mesh"]("menu_" + this.name, scene);
20302
+ var node = new babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2__["Mesh"]("menu_".concat(this.name), scene);
20192
20303
  this._backPlate = Object(babylonjs_Meshes_mesh__WEBPACK_IMPORTED_MODULE_2__["CreateBox"])("backPlate" + this.name, { size: 1 }, scene);
20193
20304
  this._backPlate.parent = node;
20194
20305
  return node;
@@ -20373,83 +20484,6 @@ var TouchMeshButton3D = /** @class */ (function (_super) {
20373
20484
 
20374
20485
 
20375
20486
 
20376
- /***/ }),
20377
-
20378
- /***/ "./3D/controls/touchToggleButton3D.ts":
20379
- /*!********************************************!*\
20380
- !*** ./3D/controls/touchToggleButton3D.ts ***!
20381
- \********************************************/
20382
- /*! exports provided: TouchToggleButton3D */
20383
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
20384
-
20385
- "use strict";
20386
- __webpack_require__.r(__webpack_exports__);
20387
- /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchToggleButton3D", function() { return TouchToggleButton3D; });
20388
- /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../node_modules/tslib/tslib.es6.js");
20389
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! babylonjs/Misc/observable */ "babylonjs/Misc/observable");
20390
- /* harmony import */ var babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
20391
- /* harmony import */ var _touchButton3D__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./touchButton3D */ "./3D/controls/touchButton3D.ts");
20392
-
20393
-
20394
-
20395
- /**
20396
- * Class used as base class for touch-enabled toggleable buttons
20397
- */
20398
- var TouchToggleButton3D = /** @class */ (function (_super) {
20399
- Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"])(TouchToggleButton3D, _super);
20400
- /**
20401
- * Creates a new button
20402
- * @param name defines the control name
20403
- * @param collisionMesh defines the mesh to track near interactions with
20404
- */
20405
- function TouchToggleButton3D(name, collisionMesh) {
20406
- var _this = _super.call(this, name, collisionMesh) || this;
20407
- _this._isPressed = false;
20408
- /**
20409
- * An event triggered when the button is toggled on
20410
- */
20411
- _this.onToggleOnObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
20412
- /**
20413
- * An event triggered when the button is toggled off
20414
- */
20415
- _this.onToggleOffObservable = new babylonjs_Misc_observable__WEBPACK_IMPORTED_MODULE_1__["Observable"]();
20416
- _this.onPointerUpObservable.add(function (posVecWithInfo) {
20417
- _this._onToggle(posVecWithInfo);
20418
- });
20419
- return _this;
20420
- }
20421
- TouchToggleButton3D.prototype._onToggle = function (position) {
20422
- this._isPressed = !this._isPressed;
20423
- if (this._isPressed) {
20424
- this.onToggleOnObservable.notifyObservers(position);
20425
- }
20426
- else {
20427
- this.onToggleOffObservable.notifyObservers(position);
20428
- }
20429
- };
20430
- TouchToggleButton3D.prototype._getTypeName = function () {
20431
- return "TouchToggleButton3D";
20432
- };
20433
- // Mesh association
20434
- TouchToggleButton3D.prototype._createNode = function (scene) {
20435
- return _super.prototype._createNode.call(this, scene);
20436
- };
20437
- TouchToggleButton3D.prototype._affectMaterial = function (mesh) {
20438
- _super.prototype._affectMaterial.call(this, mesh);
20439
- };
20440
- /**
20441
- * Releases all associated resources
20442
- */
20443
- TouchToggleButton3D.prototype.dispose = function () {
20444
- this.onToggleOnObservable.clear();
20445
- this.onToggleOffObservable.clear();
20446
- _super.prototype.dispose.call(this);
20447
- };
20448
- return TouchToggleButton3D;
20449
- }(_touchButton3D__WEBPACK_IMPORTED_MODULE_2__["TouchButton3D"]));
20450
-
20451
-
20452
-
20453
20487
  /***/ }),
20454
20488
 
20455
20489
  /***/ "./3D/controls/volumeBasedPanel.ts":
@@ -21560,7 +21594,7 @@ var GUI3DManager = /** @class */ (function () {
21560
21594
  /*!*********************!*\
21561
21595
  !*** ./3D/index.ts ***!
21562
21596
  \*********************/
21563
- /*! exports provided: AbstractButton3D, Button3D, Container3D, Control3D, CylinderPanel, HolographicButton, HolographicSlate, HandMenu, MeshButton3D, NearMenu, PlanePanel, ScatterPanel, Slider3D, SpherePanel, StackPanel3D, TouchButton3D, TouchMeshButton3D, TouchHolographicButton, TouchHolographicMenu, TouchToggleButton3D, VolumeBasedPanel, HolographicBackplate, FluentMaterialDefines, FluentMaterial, FluentButtonMaterial, FluentBackplateMaterial, HandleMaterial, MRDLSliderBarMaterial, MRDLSliderThumbMaterial, MRDLBackplateMaterial, SlateGizmo, HandleState, GizmoHandle, SideHandle, CornerHandle, GUI3DManager, Vector3WithInfo */
21597
+ /*! exports provided: AbstractButton3D, Button3D, Container3D, Control3D, CylinderPanel, HolographicButton, HolographicSlate, HandMenu, MeshButton3D, NearMenu, PlanePanel, ScatterPanel, Slider3D, SpherePanel, StackPanel3D, TouchButton3D, TouchMeshButton3D, TouchHolographicButton, TouchHolographicMenu, VolumeBasedPanel, HolographicBackplate, FluentMaterialDefines, FluentMaterial, FluentButtonMaterial, FluentBackplateMaterial, HandleMaterial, MRDLSliderBarMaterial, MRDLSliderThumbMaterial, MRDLBackplateMaterial, SlateGizmo, HandleState, GizmoHandle, SideHandle, CornerHandle, GUI3DManager, Vector3WithInfo */
21564
21598
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
21565
21599
 
21566
21600
  "use strict";
@@ -21604,8 +21638,6 @@ __webpack_require__.r(__webpack_exports__);
21604
21638
 
21605
21639
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TouchHolographicMenu", function() { return _controls_index__WEBPACK_IMPORTED_MODULE_0__["TouchHolographicMenu"]; });
21606
21640
 
21607
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TouchToggleButton3D", function() { return _controls_index__WEBPACK_IMPORTED_MODULE_0__["TouchToggleButton3D"]; });
21608
-
21609
21641
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VolumeBasedPanel", function() { return _controls_index__WEBPACK_IMPORTED_MODULE_0__["VolumeBasedPanel"]; });
21610
21642
 
21611
21643
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HolographicBackplate", function() { return _controls_index__WEBPACK_IMPORTED_MODULE_0__["HolographicBackplate"]; });
@@ -21893,7 +21925,7 @@ var FluentMaterial = /** @class */ (function (_super) {
21893
21925
  return babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["SerializationHelper"].Clone(function () { return new FluentMaterial(name, _this.getScene()); }, this);
21894
21926
  };
21895
21927
  FluentMaterial.prototype.serialize = function () {
21896
- var serializationObject = babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["SerializationHelper"].Serialize(this);
21928
+ var serializationObject = _super.prototype.serialize.call(this);
21897
21929
  serializationObject.customType = "BABYLON.GUI.FluentMaterial";
21898
21930
  return serializationObject;
21899
21931
  };
@@ -22374,7 +22406,7 @@ var FluentBackplateMaterial = /** @class */ (function (_super) {
22374
22406
  return babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["SerializationHelper"].Clone(function () { return new FluentBackplateMaterial(name, _this.getScene()); }, this);
22375
22407
  };
22376
22408
  FluentBackplateMaterial.prototype.serialize = function () {
22377
- var serializationObject = babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["SerializationHelper"].Serialize(this);
22409
+ var serializationObject = _super.prototype.serialize.call(this);
22378
22410
  serializationObject.customType = "BABYLON.FluentBackplateMaterial";
22379
22411
  return serializationObject;
22380
22412
  };
@@ -22956,7 +22988,7 @@ var FluentButtonMaterial = /** @class */ (function (_super) {
22956
22988
  return babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["SerializationHelper"].Clone(function () { return new FluentButtonMaterial(name, _this.getScene()); }, this);
22957
22989
  };
22958
22990
  FluentButtonMaterial.prototype.serialize = function () {
22959
- var serializationObject = babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["SerializationHelper"].Serialize(this);
22991
+ var serializationObject = _super.prototype.serialize.call(this);
22960
22992
  serializationObject.customType = "BABYLON.FluentButtonMaterial";
22961
22993
  return serializationObject;
22962
22994
  };
@@ -23754,7 +23786,7 @@ var MRDLBackplateMaterial = /** @class */ (function (_super) {
23754
23786
  return babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["SerializationHelper"].Clone(function () { return new MRDLBackplateMaterial(name, _this.getScene()); }, this);
23755
23787
  };
23756
23788
  MRDLBackplateMaterial.prototype.serialize = function () {
23757
- var serializationObject = babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["SerializationHelper"].Serialize(this);
23789
+ var serializationObject = _super.prototype.serialize.call(this);
23758
23790
  serializationObject.customType = "BABYLON.MRDLBackplateMaterial";
23759
23791
  return serializationObject;
23760
23792
  };
@@ -24439,7 +24471,7 @@ var MRDLSliderBarMaterial = /** @class */ (function (_super) {
24439
24471
  return babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["SerializationHelper"].Clone(function () { return new MRDLSliderBarMaterial(name, _this.getScene()); }, this);
24440
24472
  };
24441
24473
  MRDLSliderBarMaterial.prototype.serialize = function () {
24442
- var serializationObject = babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["SerializationHelper"].Serialize(this);
24474
+ var serializationObject = _super.prototype.serialize.call(this);
24443
24475
  serializationObject.customType = "BABYLON.MRDLSliderBarMaterial";
24444
24476
  return serializationObject;
24445
24477
  };
@@ -25244,7 +25276,7 @@ var MRDLSliderThumbMaterial = /** @class */ (function (_super) {
25244
25276
  return babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["SerializationHelper"].Clone(function () { return new MRDLSliderThumbMaterial(name, _this.getScene()); }, this);
25245
25277
  };
25246
25278
  MRDLSliderThumbMaterial.prototype.serialize = function () {
25247
- var serializationObject = babylonjs_Misc_decorators__WEBPACK_IMPORTED_MODULE_1__["SerializationHelper"].Serialize(this);
25279
+ var serializationObject = _super.prototype.serialize.call(this);
25248
25280
  serializationObject.customType = "BABYLON.MRDLSliderThumbMaterial";
25249
25281
  return serializationObject;
25250
25282
  };
@@ -25632,7 +25664,7 @@ var Vector3WithInfo = /** @class */ (function (_super) {
25632
25664
  /*!******************!*\
25633
25665
  !*** ./index.ts ***!
25634
25666
  \******************/
25635
- /*! exports provided: Button, Checkbox, ColorPicker, Container, Control, Ellipse, FocusableButton, Grid, Image, InputText, InputPassword, Line, MultiLine, RadioButton, StackPanel, SelectorGroup, CheckboxGroup, RadioGroup, SliderGroup, SelectionPanel, ScrollViewer, TextWrapping, TextBlock, TextWrapper, ToggleButton, KeyPropertySet, VirtualKeyboard, Rectangle, DisplayGrid, BaseSlider, Slider, ImageBasedSlider, ScrollBar, ImageScrollBar, name, AdvancedDynamicTexture, AdvancedDynamicTextureInstrumentation, Vector2WithInfo, Matrix2D, Measure, MultiLinePoint, Style, ValueAndUnit, XmlLoader, AbstractButton3D, Button3D, Container3D, Control3D, CylinderPanel, HolographicButton, HolographicSlate, HandMenu, MeshButton3D, NearMenu, PlanePanel, ScatterPanel, Slider3D, SpherePanel, StackPanel3D, TouchButton3D, TouchMeshButton3D, TouchHolographicButton, TouchHolographicMenu, TouchToggleButton3D, VolumeBasedPanel, HolographicBackplate, FluentMaterialDefines, FluentMaterial, FluentButtonMaterial, FluentBackplateMaterial, HandleMaterial, MRDLSliderBarMaterial, MRDLSliderThumbMaterial, MRDLBackplateMaterial, SlateGizmo, HandleState, GizmoHandle, SideHandle, CornerHandle, GUI3DManager, Vector3WithInfo */
25667
+ /*! exports provided: Button, Checkbox, ColorPicker, Container, Control, Ellipse, FocusableButton, Grid, Image, InputText, InputPassword, Line, MultiLine, RadioButton, StackPanel, SelectorGroup, CheckboxGroup, RadioGroup, SliderGroup, SelectionPanel, ScrollViewer, TextWrapping, TextBlock, TextWrapper, ToggleButton, KeyPropertySet, VirtualKeyboard, Rectangle, DisplayGrid, BaseSlider, Slider, ImageBasedSlider, ScrollBar, ImageScrollBar, name, AdvancedDynamicTexture, AdvancedDynamicTextureInstrumentation, Vector2WithInfo, Matrix2D, Measure, MultiLinePoint, Style, ValueAndUnit, XmlLoader, AbstractButton3D, Button3D, Container3D, Control3D, CylinderPanel, HolographicButton, HolographicSlate, HandMenu, MeshButton3D, NearMenu, PlanePanel, ScatterPanel, Slider3D, SpherePanel, StackPanel3D, TouchButton3D, TouchMeshButton3D, TouchHolographicButton, TouchHolographicMenu, VolumeBasedPanel, HolographicBackplate, FluentMaterialDefines, FluentMaterial, FluentButtonMaterial, FluentBackplateMaterial, HandleMaterial, MRDLSliderBarMaterial, MRDLSliderThumbMaterial, MRDLBackplateMaterial, SlateGizmo, HandleState, GizmoHandle, SideHandle, CornerHandle, GUI3DManager, Vector3WithInfo */
25636
25668
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
25637
25669
 
25638
25670
  "use strict";
@@ -25765,8 +25797,6 @@ __webpack_require__.r(__webpack_exports__);
25765
25797
 
25766
25798
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TouchHolographicMenu", function() { return _3D_index__WEBPACK_IMPORTED_MODULE_1__["TouchHolographicMenu"]; });
25767
25799
 
25768
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TouchToggleButton3D", function() { return _3D_index__WEBPACK_IMPORTED_MODULE_1__["TouchToggleButton3D"]; });
25769
-
25770
25800
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VolumeBasedPanel", function() { return _3D_index__WEBPACK_IMPORTED_MODULE_1__["VolumeBasedPanel"]; });
25771
25801
 
25772
25802
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HolographicBackplate", function() { return _3D_index__WEBPACK_IMPORTED_MODULE_1__["HolographicBackplate"]; });
@@ -25811,7 +25841,7 @@ __webpack_require__.r(__webpack_exports__);
25811
25841
  /*!**************************!*\
25812
25842
  !*** ./legacy/legacy.ts ***!
25813
25843
  \**************************/
25814
- /*! exports provided: Button, Checkbox, ColorPicker, Container, Control, Ellipse, FocusableButton, Grid, Image, InputText, InputPassword, Line, MultiLine, RadioButton, StackPanel, SelectorGroup, CheckboxGroup, RadioGroup, SliderGroup, SelectionPanel, ScrollViewer, TextWrapping, TextBlock, TextWrapper, ToggleButton, KeyPropertySet, VirtualKeyboard, Rectangle, DisplayGrid, BaseSlider, Slider, ImageBasedSlider, ScrollBar, ImageScrollBar, name, AdvancedDynamicTexture, AdvancedDynamicTextureInstrumentation, Vector2WithInfo, Matrix2D, Measure, MultiLinePoint, Style, ValueAndUnit, XmlLoader, AbstractButton3D, Button3D, Container3D, Control3D, CylinderPanel, HolographicButton, HolographicSlate, HandMenu, MeshButton3D, NearMenu, PlanePanel, ScatterPanel, Slider3D, SpherePanel, StackPanel3D, TouchButton3D, TouchMeshButton3D, TouchHolographicButton, TouchHolographicMenu, TouchToggleButton3D, VolumeBasedPanel, HolographicBackplate, FluentMaterialDefines, FluentMaterial, FluentButtonMaterial, FluentBackplateMaterial, HandleMaterial, MRDLSliderBarMaterial, MRDLSliderThumbMaterial, MRDLBackplateMaterial, SlateGizmo, HandleState, GizmoHandle, SideHandle, CornerHandle, GUI3DManager, Vector3WithInfo */
25844
+ /*! exports provided: Button, Checkbox, ColorPicker, Container, Control, Ellipse, FocusableButton, Grid, Image, InputText, InputPassword, Line, MultiLine, RadioButton, StackPanel, SelectorGroup, CheckboxGroup, RadioGroup, SliderGroup, SelectionPanel, ScrollViewer, TextWrapping, TextBlock, TextWrapper, ToggleButton, KeyPropertySet, VirtualKeyboard, Rectangle, DisplayGrid, BaseSlider, Slider, ImageBasedSlider, ScrollBar, ImageScrollBar, name, AdvancedDynamicTexture, AdvancedDynamicTextureInstrumentation, Vector2WithInfo, Matrix2D, Measure, MultiLinePoint, Style, ValueAndUnit, XmlLoader, AbstractButton3D, Button3D, Container3D, Control3D, CylinderPanel, HolographicButton, HolographicSlate, HandMenu, MeshButton3D, NearMenu, PlanePanel, ScatterPanel, Slider3D, SpherePanel, StackPanel3D, TouchButton3D, TouchMeshButton3D, TouchHolographicButton, TouchHolographicMenu, VolumeBasedPanel, HolographicBackplate, FluentMaterialDefines, FluentMaterial, FluentButtonMaterial, FluentBackplateMaterial, HandleMaterial, MRDLSliderBarMaterial, MRDLSliderThumbMaterial, MRDLBackplateMaterial, SlateGizmo, HandleState, GizmoHandle, SideHandle, CornerHandle, GUI3DManager, Vector3WithInfo */
25815
25845
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
25816
25846
 
25817
25847
  "use strict";
@@ -25943,8 +25973,6 @@ __webpack_require__.r(__webpack_exports__);
25943
25973
 
25944
25974
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TouchHolographicMenu", function() { return _index__WEBPACK_IMPORTED_MODULE_0__["TouchHolographicMenu"]; });
25945
25975
 
25946
- /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TouchToggleButton3D", function() { return _index__WEBPACK_IMPORTED_MODULE_0__["TouchToggleButton3D"]; });
25947
-
25948
25976
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VolumeBasedPanel", function() { return _index__WEBPACK_IMPORTED_MODULE_0__["VolumeBasedPanel"]; });
25949
25977
 
25950
25978
  /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HolographicBackplate", function() { return _index__WEBPACK_IMPORTED_MODULE_0__["HolographicBackplate"]; });