@xeokit/xeokit-sdk 2.4.0-alpha-41 → 2.4.0-alpha-43

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.
@@ -16550,9 +16550,18 @@ class RenderBuffer {
16550
16550
  const canvas = imageDataCache.canvas;
16551
16551
  const imageData = imageDataCache.imageData;
16552
16552
  const context = imageDataCache.context;
16553
- gl.readPixels(0, 0, this.buffer.width, this.buffer.height, gl.RGBA, gl.UNSIGNED_BYTE, pixelData);
16553
+ const { width, height } = this.buffer;
16554
+ gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixelData);
16554
16555
  imageData.data.set(pixelData);
16555
16556
  context.putImageData(imageData, 0, 0);
16557
+
16558
+ // flip Y
16559
+ context.save();
16560
+ context.globalCompositeOperation = 'copy';
16561
+ context.scale(1, -1);
16562
+ context.drawImage(canvas, 0, -height, width, height);
16563
+ context.restore();
16564
+
16556
16565
  let format = params.format || "png";
16557
16566
  if (format !== "jpeg" && format !== "png" && format !== "bmp") {
16558
16567
  console.error("Unsupported image format: '" + format + "' - supported types are 'jpeg', 'bmp' and 'png' - defaulting to 'png'");
@@ -103482,21 +103491,23 @@ class MetaScene {
103482
103491
 
103483
103492
  // Create global Property Sets
103484
103493
 
103485
- for (let i = 0, len = metaModelData.propertySets.length; i < len; i++) {
103486
- const propertySetData = metaModelData.propertySets[i];
103487
- let propertySet = this.propertySets[propertySetData.id];
103488
- if (!propertySet) {
103489
- propertySet = new PropertySet({
103490
- id: propertySetData.id,
103491
- originalSystemId: propertySetData.originalSystemId,
103492
- type: propertySetData.type,
103493
- name: propertySetData.name,
103494
- properties: propertySetData.properties
103495
- });
103496
- this.propertySets[propertySet.id] = propertySet;
103494
+ if (metaModelData.propertySets) {
103495
+ for (let i = 0, len = metaModelData.propertySets.length; i < len; i++) {
103496
+ const propertySetData = metaModelData.propertySets[i];
103497
+ let propertySet = this.propertySets[propertySetData.id];
103498
+ if (!propertySet) {
103499
+ propertySet = new PropertySet({
103500
+ id: propertySetData.id,
103501
+ originalSystemId: propertySetData.originalSystemId,
103502
+ type: propertySetData.type,
103503
+ name: propertySetData.name,
103504
+ properties: propertySetData.properties
103505
+ });
103506
+ this.propertySets[propertySet.id] = propertySet;
103507
+ }
103508
+ propertySet.metaModels.push(metaModel);
103509
+ metaModel.propertySets.push(propertySet);
103497
103510
  }
103498
- propertySet.metaModels.push(metaModel);
103499
- metaModel.propertySets.push(propertySet);
103500
103511
  }
103501
103512
 
103502
103513
  // Create MetaObjects
@@ -103504,27 +103515,29 @@ class MetaScene {
103504
103515
  // Save root MetaObjects on MetaModel
103505
103516
  // Save root MetaObjects on MetaScene
103506
103517
 
103507
- for (let i = 0, len = metaModelData.metaObjects.length; i < len; i++) {
103508
- const metaObjectData = metaModelData.metaObjects[i];
103509
- const type = metaObjectData.type;
103510
- const id = metaObjectData.id;
103511
- let metaObject = this.metaObjects[id];
103512
- if (!metaObject) {
103513
- metaObject = new MetaObject({
103514
- id,
103515
- parentId: metaObjectData.parent,
103516
- type,
103517
- name: metaObjectData.name,
103518
- propertySetIds: metaObjectData.propertySetIds
103519
- });
103520
- this.metaObjects[id] = metaObject;
103521
- }
103522
- metaObject.metaModels.push(metaModel);
103523
- if (!metaObjectData.parent) {
103524
- metaModel.rootMetaObjects.push(metaObject);
103525
- this.rootMetaObjects[id] = metaObject;
103518
+ if (metaModelData.metaObjects) {
103519
+ for (let i = 0, len = metaModelData.metaObjects.length; i < len; i++) {
103520
+ const metaObjectData = metaModelData.metaObjects[i];
103521
+ const type = metaObjectData.type;
103522
+ const id = metaObjectData.id;
103523
+ let metaObject = this.metaObjects[id];
103524
+ if (!metaObject) {
103525
+ metaObject = new MetaObject({
103526
+ id,
103527
+ parentId: metaObjectData.parent,
103528
+ type,
103529
+ name: metaObjectData.name,
103530
+ propertySetIds: metaObjectData.propertySetIds
103531
+ });
103532
+ this.metaObjects[id] = metaObject;
103533
+ }
103534
+ metaObject.metaModels.push(metaModel);
103535
+ if (!metaObjectData.parent) {
103536
+ metaModel.rootMetaObjects.push(metaObject);
103537
+ this.rootMetaObjects[id] = metaObject;
103538
+ }
103539
+ metaModel.metaObjects.push(metaObject);
103526
103540
  }
103527
- metaModel.metaObjects.push(metaObject);
103528
103541
  }
103529
103542
 
103530
103543
  // Re-link entire MetaObject parent/child hierarchy
@@ -103621,41 +103634,45 @@ class MetaScene {
103621
103634
 
103622
103635
  // Remove global PropertySets
103623
103636
 
103624
- for (let i = 0, len = metaModel.propertySets.length; i < len; i++) {
103625
- const propertySet = metaModel.propertySets[i];
103626
- if (propertySet.metaModels.length === 1) { // Property set owned by one model, delete
103627
- delete this.propertySets[propertySet.id];
103628
- } else {
103629
- const newMetaModels = [];
103630
- for (let j = 0, lenj = propertySet.metaModels.length; j < lenj; j++) {
103631
- if (propertySet.metaModels[i].id !== id) {
103632
- newMetaModels.push(propertySet.metaModels[i]);
103637
+ if (metaModel.propertySets) {
103638
+ for (let i = 0, len = metaModel.propertySets.length; i < len; i++) {
103639
+ const propertySet = metaModel.propertySets[i];
103640
+ if (propertySet.metaModels.length === 1) { // Property set owned by one model, delete
103641
+ delete this.propertySets[propertySet.id];
103642
+ } else {
103643
+ const newMetaModels = [];
103644
+ for (let j = 0, lenj = propertySet.metaModels.length; j < lenj; j++) {
103645
+ if (propertySet.metaModels[i].id !== id) {
103646
+ newMetaModels.push(propertySet.metaModels[i]);
103647
+ }
103633
103648
  }
103649
+ propertySet.metaModels = newMetaModels;
103634
103650
  }
103635
- propertySet.metaModels = newMetaModels;
103636
103651
  }
103637
103652
  }
103638
103653
 
103639
103654
  // Remove MetaObjects
103640
103655
 
103641
- for (let i = 0, len = metaModel.metaObjects.length; i < len; i++) {
103642
- const metaObject = metaModel.metaObjects[i];
103643
- metaObject.type;
103644
- const id = metaObject.id;
103645
- if (metaObject.metaModels.length === 1) { // MetaObject owned by one model, delete
103646
- delete this.metaObjects[id];
103647
- if (!metaObject.parent) {
103648
- delete this.rootMetaObjects[id];
103649
- }
103650
- } else {
103651
- const newMetaModels = [];
103652
- const metaModelId = metaModel.id;
103653
- for (let i = 0, len = metaObject.metaModels.length; i < len; i++) {
103654
- if (metaObject.metaModels[i].id !== metaModelId) {
103655
- newMetaModels.push(metaObject.metaModels[i]);
103656
+ if (metaModel.metaObjects) {
103657
+ for (let i = 0, len = metaModel.metaObjects.length; i < len; i++) {
103658
+ const metaObject = metaModel.metaObjects[i];
103659
+ metaObject.type;
103660
+ const id = metaObject.id;
103661
+ if (metaObject.metaModels.length === 1) { // MetaObject owned by one model, delete
103662
+ delete this.metaObjects[id];
103663
+ if (!metaObject.parent) {
103664
+ delete this.rootMetaObjects[id];
103665
+ }
103666
+ } else {
103667
+ const newMetaModels = [];
103668
+ const metaModelId = metaModel.id;
103669
+ for (let i = 0, len = metaObject.metaModels.length; i < len; i++) {
103670
+ if (metaObject.metaModels[i].id !== metaModelId) {
103671
+ newMetaModels.push(metaObject.metaModels[i]);
103672
+ }
103656
103673
  }
103674
+ metaObject.metaModels = newMetaModels;
103657
103675
  }
103658
- metaObject.metaModels = newMetaModels;
103659
103676
  }
103660
103677
  }
103661
103678
 
@@ -16546,9 +16546,18 @@ class RenderBuffer {
16546
16546
  const canvas = imageDataCache.canvas;
16547
16547
  const imageData = imageDataCache.imageData;
16548
16548
  const context = imageDataCache.context;
16549
- gl.readPixels(0, 0, this.buffer.width, this.buffer.height, gl.RGBA, gl.UNSIGNED_BYTE, pixelData);
16549
+ const { width, height } = this.buffer;
16550
+ gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, pixelData);
16550
16551
  imageData.data.set(pixelData);
16551
16552
  context.putImageData(imageData, 0, 0);
16553
+
16554
+ // flip Y
16555
+ context.save();
16556
+ context.globalCompositeOperation = 'copy';
16557
+ context.scale(1, -1);
16558
+ context.drawImage(canvas, 0, -height, width, height);
16559
+ context.restore();
16560
+
16552
16561
  let format = params.format || "png";
16553
16562
  if (format !== "jpeg" && format !== "png" && format !== "bmp") {
16554
16563
  console.error("Unsupported image format: '" + format + "' - supported types are 'jpeg', 'bmp' and 'png' - defaulting to 'png'");
@@ -103478,21 +103487,23 @@ class MetaScene {
103478
103487
 
103479
103488
  // Create global Property Sets
103480
103489
 
103481
- for (let i = 0, len = metaModelData.propertySets.length; i < len; i++) {
103482
- const propertySetData = metaModelData.propertySets[i];
103483
- let propertySet = this.propertySets[propertySetData.id];
103484
- if (!propertySet) {
103485
- propertySet = new PropertySet({
103486
- id: propertySetData.id,
103487
- originalSystemId: propertySetData.originalSystemId,
103488
- type: propertySetData.type,
103489
- name: propertySetData.name,
103490
- properties: propertySetData.properties
103491
- });
103492
- this.propertySets[propertySet.id] = propertySet;
103490
+ if (metaModelData.propertySets) {
103491
+ for (let i = 0, len = metaModelData.propertySets.length; i < len; i++) {
103492
+ const propertySetData = metaModelData.propertySets[i];
103493
+ let propertySet = this.propertySets[propertySetData.id];
103494
+ if (!propertySet) {
103495
+ propertySet = new PropertySet({
103496
+ id: propertySetData.id,
103497
+ originalSystemId: propertySetData.originalSystemId,
103498
+ type: propertySetData.type,
103499
+ name: propertySetData.name,
103500
+ properties: propertySetData.properties
103501
+ });
103502
+ this.propertySets[propertySet.id] = propertySet;
103503
+ }
103504
+ propertySet.metaModels.push(metaModel);
103505
+ metaModel.propertySets.push(propertySet);
103493
103506
  }
103494
- propertySet.metaModels.push(metaModel);
103495
- metaModel.propertySets.push(propertySet);
103496
103507
  }
103497
103508
 
103498
103509
  // Create MetaObjects
@@ -103500,27 +103511,29 @@ class MetaScene {
103500
103511
  // Save root MetaObjects on MetaModel
103501
103512
  // Save root MetaObjects on MetaScene
103502
103513
 
103503
- for (let i = 0, len = metaModelData.metaObjects.length; i < len; i++) {
103504
- const metaObjectData = metaModelData.metaObjects[i];
103505
- const type = metaObjectData.type;
103506
- const id = metaObjectData.id;
103507
- let metaObject = this.metaObjects[id];
103508
- if (!metaObject) {
103509
- metaObject = new MetaObject({
103510
- id,
103511
- parentId: metaObjectData.parent,
103512
- type,
103513
- name: metaObjectData.name,
103514
- propertySetIds: metaObjectData.propertySetIds
103515
- });
103516
- this.metaObjects[id] = metaObject;
103517
- }
103518
- metaObject.metaModels.push(metaModel);
103519
- if (!metaObjectData.parent) {
103520
- metaModel.rootMetaObjects.push(metaObject);
103521
- this.rootMetaObjects[id] = metaObject;
103514
+ if (metaModelData.metaObjects) {
103515
+ for (let i = 0, len = metaModelData.metaObjects.length; i < len; i++) {
103516
+ const metaObjectData = metaModelData.metaObjects[i];
103517
+ const type = metaObjectData.type;
103518
+ const id = metaObjectData.id;
103519
+ let metaObject = this.metaObjects[id];
103520
+ if (!metaObject) {
103521
+ metaObject = new MetaObject({
103522
+ id,
103523
+ parentId: metaObjectData.parent,
103524
+ type,
103525
+ name: metaObjectData.name,
103526
+ propertySetIds: metaObjectData.propertySetIds
103527
+ });
103528
+ this.metaObjects[id] = metaObject;
103529
+ }
103530
+ metaObject.metaModels.push(metaModel);
103531
+ if (!metaObjectData.parent) {
103532
+ metaModel.rootMetaObjects.push(metaObject);
103533
+ this.rootMetaObjects[id] = metaObject;
103534
+ }
103535
+ metaModel.metaObjects.push(metaObject);
103522
103536
  }
103523
- metaModel.metaObjects.push(metaObject);
103524
103537
  }
103525
103538
 
103526
103539
  // Re-link entire MetaObject parent/child hierarchy
@@ -103617,41 +103630,45 @@ class MetaScene {
103617
103630
 
103618
103631
  // Remove global PropertySets
103619
103632
 
103620
- for (let i = 0, len = metaModel.propertySets.length; i < len; i++) {
103621
- const propertySet = metaModel.propertySets[i];
103622
- if (propertySet.metaModels.length === 1) { // Property set owned by one model, delete
103623
- delete this.propertySets[propertySet.id];
103624
- } else {
103625
- const newMetaModels = [];
103626
- for (let j = 0, lenj = propertySet.metaModels.length; j < lenj; j++) {
103627
- if (propertySet.metaModels[i].id !== id) {
103628
- newMetaModels.push(propertySet.metaModels[i]);
103633
+ if (metaModel.propertySets) {
103634
+ for (let i = 0, len = metaModel.propertySets.length; i < len; i++) {
103635
+ const propertySet = metaModel.propertySets[i];
103636
+ if (propertySet.metaModels.length === 1) { // Property set owned by one model, delete
103637
+ delete this.propertySets[propertySet.id];
103638
+ } else {
103639
+ const newMetaModels = [];
103640
+ for (let j = 0, lenj = propertySet.metaModels.length; j < lenj; j++) {
103641
+ if (propertySet.metaModels[i].id !== id) {
103642
+ newMetaModels.push(propertySet.metaModels[i]);
103643
+ }
103629
103644
  }
103645
+ propertySet.metaModels = newMetaModels;
103630
103646
  }
103631
- propertySet.metaModels = newMetaModels;
103632
103647
  }
103633
103648
  }
103634
103649
 
103635
103650
  // Remove MetaObjects
103636
103651
 
103637
- for (let i = 0, len = metaModel.metaObjects.length; i < len; i++) {
103638
- const metaObject = metaModel.metaObjects[i];
103639
- metaObject.type;
103640
- const id = metaObject.id;
103641
- if (metaObject.metaModels.length === 1) { // MetaObject owned by one model, delete
103642
- delete this.metaObjects[id];
103643
- if (!metaObject.parent) {
103644
- delete this.rootMetaObjects[id];
103645
- }
103646
- } else {
103647
- const newMetaModels = [];
103648
- const metaModelId = metaModel.id;
103649
- for (let i = 0, len = metaObject.metaModels.length; i < len; i++) {
103650
- if (metaObject.metaModels[i].id !== metaModelId) {
103651
- newMetaModels.push(metaObject.metaModels[i]);
103652
+ if (metaModel.metaObjects) {
103653
+ for (let i = 0, len = metaModel.metaObjects.length; i < len; i++) {
103654
+ const metaObject = metaModel.metaObjects[i];
103655
+ metaObject.type;
103656
+ const id = metaObject.id;
103657
+ if (metaObject.metaModels.length === 1) { // MetaObject owned by one model, delete
103658
+ delete this.metaObjects[id];
103659
+ if (!metaObject.parent) {
103660
+ delete this.rootMetaObjects[id];
103661
+ }
103662
+ } else {
103663
+ const newMetaModels = [];
103664
+ const metaModelId = metaModel.id;
103665
+ for (let i = 0, len = metaObject.metaModels.length; i < len; i++) {
103666
+ if (metaObject.metaModels[i].id !== metaModelId) {
103667
+ newMetaModels.push(metaObject.metaModels[i]);
103668
+ }
103652
103669
  }
103670
+ metaObject.metaModels = newMetaModels;
103653
103671
  }
103654
- metaObject.metaModels = newMetaModels;
103655
103672
  }
103656
103673
  }
103657
103674
 
@@ -4383,7 +4383,8 @@ gl.bindFramebuffer(gl.FRAMEBUFFER,framebuf);if(!gl.isFramebuffer(framebuf)){thro
4383
4383
  *
4384
4384
  * @returns {HTMLCanvasElement}
4385
4385
  */},{key:"readImageAsCanvas",value:function readImageAsCanvas(){var gl=this.gl;var imageDataCache=this._getImageDataCache();var pixelData=imageDataCache.pixelData;var canvas=imageDataCache.canvas;var imageData=imageDataCache.imageData;var context=imageDataCache.context;gl.readPixels(0,0,this.buffer.width,this.buffer.height,gl.RGBA,gl.UNSIGNED_BYTE,pixelData);var width=this.buffer.width;var height=this.buffer.height;var halfHeight=height/2|0;// the | 0 keeps the result an int
4386
- var bytesPerRow=width*4;var temp=new Uint8Array(width*4);for(var y=0;y<halfHeight;++y){var topOffset=y*bytesPerRow;var bottomOffset=(height-y-1)*bytesPerRow;temp.set(pixelData.subarray(topOffset,topOffset+bytesPerRow));pixelData.copyWithin(topOffset,bottomOffset,bottomOffset+bytesPerRow);pixelData.set(temp,bottomOffset);}imageData.data.set(pixelData);context.putImageData(imageData,0,0);return canvas;}},{key:"readImage",value:function readImage(params){var gl=this.gl;var imageDataCache=this._getImageDataCache();var pixelData=imageDataCache.pixelData;var canvas=imageDataCache.canvas;var imageData=imageDataCache.imageData;var context=imageDataCache.context;gl.readPixels(0,0,this.buffer.width,this.buffer.height,gl.RGBA,gl.UNSIGNED_BYTE,pixelData);imageData.data.set(pixelData);context.putImageData(imageData,0,0);var format=params.format||"png";if(format!=="jpeg"&&format!=="png"&&format!=="bmp"){console.error("Unsupported image format: '"+format+"' - supported types are 'jpeg', 'bmp' and 'png' - defaulting to 'png'");format="png";}return canvas.toDataURL("image/".concat(format));}},{key:"_getImageDataCache",value:function _getImageDataCache(){var type=arguments.length>0&&arguments[0]!==undefined?arguments[0]:Uint8Array;var multiplier=arguments.length>1&&arguments[1]!==undefined?arguments[1]:4;var bufferWidth=this.buffer.width;var bufferHeight=this.buffer.height;var imageDataCache=this._imageDataCache;if(imageDataCache){if(imageDataCache.width!==bufferWidth||imageDataCache.height!==bufferHeight){this._imageDataCache=null;imageDataCache=null;}}if(!imageDataCache){var _canvas=document.createElement('canvas');var context=_canvas.getContext('2d');_canvas.width=bufferWidth;_canvas.height=bufferHeight;imageDataCache={pixelData:new type(bufferWidth*bufferHeight*multiplier),canvas:_canvas,context:context,imageData:context.createImageData(bufferWidth,bufferHeight),width:bufferWidth,height:bufferHeight};this._imageDataCache=imageDataCache;}imageDataCache.context.resetTransform();// Prevents strange scale-accumulation effect with html2canvas
4386
+ var bytesPerRow=width*4;var temp=new Uint8Array(width*4);for(var y=0;y<halfHeight;++y){var topOffset=y*bytesPerRow;var bottomOffset=(height-y-1)*bytesPerRow;temp.set(pixelData.subarray(topOffset,topOffset+bytesPerRow));pixelData.copyWithin(topOffset,bottomOffset,bottomOffset+bytesPerRow);pixelData.set(temp,bottomOffset);}imageData.data.set(pixelData);context.putImageData(imageData,0,0);return canvas;}},{key:"readImage",value:function readImage(params){var gl=this.gl;var imageDataCache=this._getImageDataCache();var pixelData=imageDataCache.pixelData;var canvas=imageDataCache.canvas;var imageData=imageDataCache.imageData;var context=imageDataCache.context;var _this$buffer=this.buffer,width=_this$buffer.width,height=_this$buffer.height;gl.readPixels(0,0,width,height,gl.RGBA,gl.UNSIGNED_BYTE,pixelData);imageData.data.set(pixelData);context.putImageData(imageData,0,0);// flip Y
4387
+ context.save();context.globalCompositeOperation='copy';context.scale(1,-1);context.drawImage(canvas,0,-height,width,height);context.restore();var format=params.format||"png";if(format!=="jpeg"&&format!=="png"&&format!=="bmp"){console.error("Unsupported image format: '"+format+"' - supported types are 'jpeg', 'bmp' and 'png' - defaulting to 'png'");format="png";}return canvas.toDataURL("image/".concat(format));}},{key:"_getImageDataCache",value:function _getImageDataCache(){var type=arguments.length>0&&arguments[0]!==undefined?arguments[0]:Uint8Array;var multiplier=arguments.length>1&&arguments[1]!==undefined?arguments[1]:4;var bufferWidth=this.buffer.width;var bufferHeight=this.buffer.height;var imageDataCache=this._imageDataCache;if(imageDataCache){if(imageDataCache.width!==bufferWidth||imageDataCache.height!==bufferHeight){this._imageDataCache=null;imageDataCache=null;}}if(!imageDataCache){var _canvas=document.createElement('canvas');var context=_canvas.getContext('2d');_canvas.width=bufferWidth;_canvas.height=bufferHeight;imageDataCache={pixelData:new type(bufferWidth*bufferHeight*multiplier),canvas:_canvas,context:context,imageData:context.createImageData(bufferWidth,bufferHeight),width:bufferWidth,height:bufferHeight};this._imageDataCache=imageDataCache;}imageDataCache.context.resetTransform();// Prevents strange scale-accumulation effect with html2canvas
4387
4388
  return imageDataCache;}},{key:"unbind",value:function unbind(){var gl=this.gl;gl.bindFramebuffer(gl.FRAMEBUFFER,null);this.bound=false;}},{key:"getTexture",value:function getTexture(){var self=this;return this._texture||(this._texture={renderBuffer:this,bind:function bind(unit){if(self.buffer&&self.buffer.texture){self.gl.activeTexture(self.gl["TEXTURE"+unit]);self.gl.bindTexture(self.gl.TEXTURE_2D,self.buffer.texture);return true;}return false;},unbind:function unbind(unit){if(self.buffer&&self.buffer.texture){self.gl.activeTexture(self.gl["TEXTURE"+unit]);self.gl.bindTexture(self.gl.TEXTURE_2D,null);}}});}},{key:"hasDepthTexture",value:function hasDepthTexture(){return this._hasDepthTexture;}},{key:"getDepthTexture",value:function getDepthTexture(){if(!this._hasDepthTexture){return null;}var self=this;return this._depthTexture||(this._dethTexture={renderBuffer:this,bind:function bind(unit){if(self.buffer&&self.buffer.depthTexture){self.gl.activeTexture(self.gl["TEXTURE"+unit]);self.gl.bindTexture(self.gl.TEXTURE_2D,self.buffer.depthTexture);return true;}return false;},unbind:function unbind(unit){if(self.buffer&&self.buffer.depthTexture){self.gl.activeTexture(self.gl["TEXTURE"+unit]);self.gl.bindTexture(self.gl.TEXTURE_2D,null);}}});}},{key:"destroy",value:function destroy(){if(this.allocated){var _gl2=this.gl;_gl2.deleteTexture(this.buffer.texture);_gl2.deleteTexture(this.buffer.depthTexture);_gl2.deleteFramebuffer(this.buffer.framebuf);_gl2.deleteRenderbuffer(this.buffer.renderbuf);this.allocated=false;this.buffer=null;this.bound=false;}this._imageDataCache=null;this._texture=null;this._depthTexture=null;}}]);return RenderBuffer;}();/**
4388
4389
  * @private
4389
4390
  */var RenderBufferManager=/*#__PURE__*/function(){function RenderBufferManager(scene){_classCallCheck(this,RenderBufferManager);this.scene=scene;this._renderBuffersBasic={};this._renderBuffersScaled={};}_createClass(RenderBufferManager,[{key:"getRenderBuffer",value:function getRenderBuffer(id,options){var renderBuffers=this.scene.canvas.resolutionScale===1.0?this._renderBuffersBasic:this._renderBuffersScaled;var renderBuffer=renderBuffers[id];if(!renderBuffer){renderBuffer=new RenderBuffer(this.scene.canvas.canvas,this.scene.canvas.gl,options);renderBuffers[id]=renderBuffer;}return renderBuffer;}},{key:"destroy",value:function destroy(){for(var id in this._renderBuffersBasic){this._renderBuffersBasic[id].destroy();}for(var _id in this._renderBuffersScaled){this._renderBuffersScaled[_id].destroy();}}}]);return RenderBufferManager;}();/**
@@ -23448,11 +23449,11 @@ value=value||"qwerty";if(value!=="qwerty"&&value!=="azerty"){this.error("Unsuppo
23448
23449
  * @returns {MetaModel} The new MetaModel.
23449
23450
  */},{key:"createMetaModel",value:function createMetaModel(modelId,metaModelData){var options=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};this._globalizeIDs(modelId,metaModelData,options);// Create MetaModel
23450
23451
  var metaModel=new MetaModel({metaScene:this,id:modelId,projectId:metaModelData.projectId||"none",revisionId:metaModelData.revisionId||"none",author:metaModelData.author||"none",createdAt:metaModelData.createdAt||"none",creatingApplication:metaModelData.creatingApplication||"none",schema:metaModelData.schema||"none",propertySets:[]});this.metaModels[modelId]=metaModel;// Create global Property Sets
23451
- for(var _i542=0,len=metaModelData.propertySets.length;_i542<len;_i542++){var propertySetData=metaModelData.propertySets[_i542];var propertySet=this.propertySets[propertySetData.id];if(!propertySet){propertySet=new PropertySet({id:propertySetData.id,originalSystemId:propertySetData.originalSystemId,type:propertySetData.type,name:propertySetData.name,properties:propertySetData.properties});this.propertySets[propertySet.id]=propertySet;}propertySet.metaModels.push(metaModel);metaModel.propertySets.push(propertySet);}// Create MetaObjects
23452
+ if(metaModelData.propertySets){for(var _i542=0,len=metaModelData.propertySets.length;_i542<len;_i542++){var propertySetData=metaModelData.propertySets[_i542];var propertySet=this.propertySets[propertySetData.id];if(!propertySet){propertySet=new PropertySet({id:propertySetData.id,originalSystemId:propertySetData.originalSystemId,type:propertySetData.type,name:propertySetData.name,properties:propertySetData.properties});this.propertySets[propertySet.id]=propertySet;}propertySet.metaModels.push(metaModel);metaModel.propertySets.push(propertySet);}}// Create MetaObjects
23452
23453
  // Don't re-create reused MetaObjects
23453
23454
  // Save root MetaObjects on MetaModel
23454
23455
  // Save root MetaObjects on MetaScene
23455
- for(var _i543=0,_len116=metaModelData.metaObjects.length;_i543<_len116;_i543++){var metaObjectData=metaModelData.metaObjects[_i543];var type=metaObjectData.type;var id=metaObjectData.id;var _metaObject4=this.metaObjects[id];if(!_metaObject4){_metaObject4=new MetaObject({id:id,parentId:metaObjectData.parent,type:type,name:metaObjectData.name,propertySetIds:metaObjectData.propertySetIds});this.metaObjects[id]=_metaObject4;}_metaObject4.metaModels.push(metaModel);if(!metaObjectData.parent){metaModel.rootMetaObjects.push(_metaObject4);this.rootMetaObjects[id]=_metaObject4;}metaModel.metaObjects.push(_metaObject4);}// Re-link entire MetaObject parent/child hierarchy
23456
+ if(metaModelData.metaObjects){for(var _i543=0,_len116=metaModelData.metaObjects.length;_i543<_len116;_i543++){var metaObjectData=metaModelData.metaObjects[_i543];var type=metaObjectData.type;var id=metaObjectData.id;var _metaObject4=this.metaObjects[id];if(!_metaObject4){_metaObject4=new MetaObject({id:id,parentId:metaObjectData.parent,type:type,name:metaObjectData.name,propertySetIds:metaObjectData.propertySetIds});this.metaObjects[id]=_metaObject4;}_metaObject4.metaModels.push(metaModel);if(!metaObjectData.parent){metaModel.rootMetaObjects.push(_metaObject4);this.rootMetaObjects[id]=_metaObject4;}metaModel.metaObjects.push(_metaObject4);}}// Re-link entire MetaObject parent/child hierarchy
23456
23457
  for(var objectId in this.metaObjects){var _metaObject5=this.metaObjects[objectId];if(_metaObject5.children){_metaObject5.children=[];}}for(var _objectId in this.metaObjects){var _metaObject6=this.metaObjects[_objectId];if(_metaObject6.parentId){var parentMetaObject=this.metaObjects[_metaObject6.parentId];if(parentMetaObject){_metaObject6.parent=parentMetaObject;(parentMetaObject.children||(parentMetaObject.children=[])).push(_metaObject6);}}}// Create MetaObjects-by-type lookup
23457
23458
  this.metaObjectsByType={};for(var _objectId2 in this.metaObjects){var _metaObject7=this.metaObjects[_objectId2];var _type=_metaObject7.type;(this.metaObjectsByType[_type]||(this.metaObjectsByType[_type]={}))[_objectId2]=_metaObject7;}this.fire("metaModelCreated",modelId);return metaModel;}},{key:"_globalizeIDs",value:function _globalizeIDs(modelId,metaModelData,options){var globalize=!!options.globalizeObjectIds;if(metaModelData.metaObjects){for(var _i544=0,len=metaModelData.metaObjects.length;_i544<len;_i544++){var metaObjectData=metaModelData.metaObjects[_i544];// Globalize MetaObject IDs and parent IDs
23458
23459
  metaObjectData.originalSystemId=metaObjectData.id;metaObjectData.originalParentSystemId=metaObjectData.parent;if(globalize){metaObjectData.id=math.globalizeObjectId(modelId,metaObject.id);metaObjectData.parent=math.globalizeObjectId(modelId,metaObject.parent);}// Globalize MetaObject property set IDs
@@ -23464,10 +23465,10 @@ if(metaModelData.propertySets){for(var _i545=0,_len117=metaModelData.propertySet
23464
23465
  *
23465
23466
  * @param {String} id ID of the target {@link MetaModel}.
23466
23467
  */},{key:"destroyMetaModel",value:function destroyMetaModel(id){var metaModel=this.metaModels[id];if(!metaModel){return;}// Remove global PropertySets
23467
- for(var _i546=0,len=metaModel.propertySets.length;_i546<len;_i546++){var propertySet=metaModel.propertySets[_i546];if(propertySet.metaModels.length===1){// Property set owned by one model, delete
23468
- delete this.propertySets[propertySet.id];}else{var newMetaModels=[];for(var _j6=0,lenj=propertySet.metaModels.length;_j6<lenj;_j6++){if(propertySet.metaModels[_i546].id!==id){newMetaModels.push(propertySet.metaModels[_i546]);}}propertySet.metaModels=newMetaModels;}}// Remove MetaObjects
23469
- for(var _i547=0,_len118=metaModel.metaObjects.length;_i547<_len118;_i547++){var _metaObject8=metaModel.metaObjects[_i547];_metaObject8.type;var _id4=_metaObject8.id;if(_metaObject8.metaModels.length===1){// MetaObject owned by one model, delete
23470
- delete this.metaObjects[_id4];if(!_metaObject8.parent){delete this.rootMetaObjects[_id4];}}else{var _newMetaModels=[];var metaModelId=metaModel.id;for(var _i548=0,_len119=_metaObject8.metaModels.length;_i548<_len119;_i548++){if(_metaObject8.metaModels[_i548].id!==metaModelId){_newMetaModels.push(_metaObject8.metaModels[_i548]);}}_metaObject8.metaModels=_newMetaModels;}}// Re-link entire MetaObject parent/child hierarchy
23468
+ if(metaModel.propertySets){for(var _i546=0,len=metaModel.propertySets.length;_i546<len;_i546++){var propertySet=metaModel.propertySets[_i546];if(propertySet.metaModels.length===1){// Property set owned by one model, delete
23469
+ delete this.propertySets[propertySet.id];}else{var newMetaModels=[];for(var _j6=0,lenj=propertySet.metaModels.length;_j6<lenj;_j6++){if(propertySet.metaModels[_i546].id!==id){newMetaModels.push(propertySet.metaModels[_i546]);}}propertySet.metaModels=newMetaModels;}}}// Remove MetaObjects
23470
+ if(metaModel.metaObjects){for(var _i547=0,_len118=metaModel.metaObjects.length;_i547<_len118;_i547++){var _metaObject8=metaModel.metaObjects[_i547];_metaObject8.type;var _id4=_metaObject8.id;if(_metaObject8.metaModels.length===1){// MetaObject owned by one model, delete
23471
+ delete this.metaObjects[_id4];if(!_metaObject8.parent){delete this.rootMetaObjects[_id4];}}else{var _newMetaModels=[];var metaModelId=metaModel.id;for(var _i548=0,_len119=_metaObject8.metaModels.length;_i548<_len119;_i548++){if(_metaObject8.metaModels[_i548].id!==metaModelId){_newMetaModels.push(_metaObject8.metaModels[_i548]);}}_metaObject8.metaModels=_newMetaModels;}}}// Re-link entire MetaObject parent/child hierarchy
23471
23472
  for(var objectId in this.metaObjects){var _metaObject9=this.metaObjects[objectId];if(_metaObject9.children){_metaObject9.children=[];}}this.metaObjectsByType={};for(var _objectId3 in this.metaObjects){var _metaObject10=this.metaObjects[_objectId3];var type=_metaObject10.type;if(_metaObject10.children){_metaObject10.children=null;}(this.metaObjectsByType[type]||(this.metaObjectsByType[type]={}))[_objectId3]=_metaObject10;}for(var _objectId4 in this.metaObjects){var _metaObject11=this.metaObjects[_objectId4];if(_metaObject11.parentId){var parentMetaObject=this.metaObjects[_metaObject11.parentId];if(parentMetaObject){_metaObject11.parent=parentMetaObject;(parentMetaObject.children||(parentMetaObject.children=[])).push(_metaObject11);}}}delete this.metaModels[id];this.fire("metaModelDestroyed",id);}/**
23472
23473
  * Gets the {@link MetaObject#id}s of the {@link MetaObject}s that have the given {@link MetaObject#type}.
23473
23474
  *