@xeokit/xeokit-sdk 2.4.0-alpha-39 → 2.4.0-alpha-41
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/dist/xeokit-sdk.cjs.js +280 -186
- package/dist/xeokit-sdk.es.js +280 -186
- package/dist/xeokit-sdk.es.zip +0 -0
- package/dist/xeokit-sdk.es5.js +248 -236
- package/dist/xeokit-sdk.min.cjs.js +1 -1
- package/dist/xeokit-sdk.min.es.js +1 -1
- package/dist/xeokit-sdk.min.es5.js +4 -4
- package/package.json +1 -1
package/dist/xeokit-sdk.es.js
CHANGED
|
@@ -33262,6 +33262,12 @@ class DataTextureSceneModel extends Component {
|
|
|
33262
33262
|
|
|
33263
33263
|
this._edgeThreshold = cfg.edgeThreshold || 10;
|
|
33264
33264
|
|
|
33265
|
+
/**
|
|
33266
|
+
* True when this model has been finalized after a successful call to finalize().
|
|
33267
|
+
* @type {boolean}
|
|
33268
|
+
*/
|
|
33269
|
+
this.finalized = false;
|
|
33270
|
+
|
|
33265
33271
|
this.visible = cfg.visible;
|
|
33266
33272
|
this.culled = cfg.culled;
|
|
33267
33273
|
this.pickable = cfg.pickable;
|
|
@@ -34568,6 +34574,8 @@ class DataTextureSceneModel extends Component {
|
|
|
34568
34574
|
const layer = this._layerList[i];
|
|
34569
34575
|
layer.attachToRenderingEvent();
|
|
34570
34576
|
}
|
|
34577
|
+
|
|
34578
|
+
this.finalized = true;
|
|
34571
34579
|
}
|
|
34572
34580
|
|
|
34573
34581
|
_rebuildAABB() {
|
|
@@ -96340,6 +96348,12 @@ class VBOSceneModel extends Component {
|
|
|
96340
96348
|
/** @private **/
|
|
96341
96349
|
this.renderFlags = new RenderFlags();
|
|
96342
96350
|
|
|
96351
|
+
/**
|
|
96352
|
+
* True when this model has been finalized after a successful call to finalize().
|
|
96353
|
+
* @type {boolean}
|
|
96354
|
+
*/
|
|
96355
|
+
this.finalized = false;
|
|
96356
|
+
|
|
96343
96357
|
/**
|
|
96344
96358
|
* @private
|
|
96345
96359
|
*/
|
|
@@ -98157,6 +98171,8 @@ ${cfg.uv && cfg.uv.length > 0 ? 1 : 0}-${cfg.uvCompressed && cfg.uvCompressed.le
|
|
|
98157
98171
|
this.glRedraw();
|
|
98158
98172
|
|
|
98159
98173
|
this.scene._aabbDirty = true;
|
|
98174
|
+
|
|
98175
|
+
this.finalized = true;
|
|
98160
98176
|
}
|
|
98161
98177
|
|
|
98162
98178
|
_rebuildAABB() {
|
|
@@ -99335,13 +99351,17 @@ const getCanvasPosFromEvent$4 = function (event, canvasPos) {
|
|
|
99335
99351
|
let element = event.target;
|
|
99336
99352
|
let totalOffsetLeft = 0;
|
|
99337
99353
|
let totalOffsetTop = 0;
|
|
99354
|
+
let totalScrollX = 0;
|
|
99355
|
+
let totalScrollY = 0;
|
|
99338
99356
|
while (element.offsetParent) {
|
|
99339
|
-
|
|
99340
|
-
|
|
99341
|
-
|
|
99357
|
+
totalOffsetLeft += element.offsetLeft;
|
|
99358
|
+
totalOffsetTop += element.offsetTop;
|
|
99359
|
+
totalScrollX += element.scrollLeft;
|
|
99360
|
+
totalScrollY += element.scrollTop;
|
|
99361
|
+
element = element.offsetParent;
|
|
99342
99362
|
}
|
|
99343
|
-
canvasPos[0] = event.pageX - totalOffsetLeft;
|
|
99344
|
-
canvasPos[1] = event.pageY - totalOffsetTop;
|
|
99363
|
+
canvasPos[0] = event.pageX + totalScrollX - totalOffsetLeft;
|
|
99364
|
+
canvasPos[1] = event.pageY + totalScrollY - totalOffsetTop;
|
|
99345
99365
|
}
|
|
99346
99366
|
return canvasPos;
|
|
99347
99367
|
};
|
|
@@ -102822,7 +102842,7 @@ class MetaModel {
|
|
|
102822
102842
|
/**
|
|
102823
102843
|
* @private
|
|
102824
102844
|
*/
|
|
102825
|
-
constructor(
|
|
102845
|
+
constructor(params) {
|
|
102826
102846
|
|
|
102827
102847
|
/**
|
|
102828
102848
|
* Globally-unique ID.
|
|
@@ -102834,14 +102854,14 @@ class MetaModel {
|
|
|
102834
102854
|
* @property id
|
|
102835
102855
|
* @type {String|Number}
|
|
102836
102856
|
*/
|
|
102837
|
-
this.id = id;
|
|
102857
|
+
this.id = params.id;
|
|
102838
102858
|
|
|
102839
102859
|
/**
|
|
102840
102860
|
* The project ID
|
|
102841
102861
|
* @property projectId
|
|
102842
102862
|
* @type {String|Number}
|
|
102843
102863
|
*/
|
|
102844
|
-
this.projectId = projectId;
|
|
102864
|
+
this.projectId = params.projectId;
|
|
102845
102865
|
|
|
102846
102866
|
/**
|
|
102847
102867
|
* The revision ID, if available.
|
|
@@ -102851,7 +102871,7 @@ class MetaModel {
|
|
|
102851
102871
|
* @property revisionId
|
|
102852
102872
|
* @type {String|Number}
|
|
102853
102873
|
*/
|
|
102854
|
-
this.revisionId = revisionId;
|
|
102874
|
+
this.revisionId = params.revisionId;
|
|
102855
102875
|
|
|
102856
102876
|
/**
|
|
102857
102877
|
* The model author, if available.
|
|
@@ -102861,7 +102881,7 @@ class MetaModel {
|
|
|
102861
102881
|
* @property author
|
|
102862
102882
|
* @type {String}
|
|
102863
102883
|
*/
|
|
102864
|
-
this.author = author;
|
|
102884
|
+
this.author = params.author;
|
|
102865
102885
|
|
|
102866
102886
|
/**
|
|
102867
102887
|
* The date the model was created, if available.
|
|
@@ -102871,7 +102891,7 @@ class MetaModel {
|
|
|
102871
102891
|
* @property createdAt
|
|
102872
102892
|
* @type {String}
|
|
102873
102893
|
*/
|
|
102874
|
-
this.createdAt = createdAt;
|
|
102894
|
+
this.createdAt = params.createdAt;
|
|
102875
102895
|
|
|
102876
102896
|
/**
|
|
102877
102897
|
* The application that created the model, if available.
|
|
@@ -102881,7 +102901,7 @@ class MetaModel {
|
|
|
102881
102901
|
* @property creatingApplication
|
|
102882
102902
|
* @type {String}
|
|
102883
102903
|
*/
|
|
102884
|
-
this.creatingApplication = creatingApplication;
|
|
102904
|
+
this.creatingApplication = params.creatingApplication;
|
|
102885
102905
|
|
|
102886
102906
|
/**
|
|
102887
102907
|
* The model schema version, if available.
|
|
@@ -102891,7 +102911,7 @@ class MetaModel {
|
|
|
102891
102911
|
* @property schema
|
|
102892
102912
|
* @type {String}
|
|
102893
102913
|
*/
|
|
102894
|
-
this.schema = schema;
|
|
102914
|
+
this.schema = params.schema;
|
|
102895
102915
|
|
|
102896
102916
|
/**
|
|
102897
102917
|
* Metadata on the {@link Scene}.
|
|
@@ -102899,15 +102919,15 @@ class MetaModel {
|
|
|
102899
102919
|
* @property metaScene
|
|
102900
102920
|
* @type {MetaScene}
|
|
102901
102921
|
*/
|
|
102902
|
-
this.metaScene = metaScene;
|
|
102922
|
+
this.metaScene = params.metaScene;
|
|
102903
102923
|
|
|
102904
102924
|
/**
|
|
102905
102925
|
* The {@link PropertySet}s in this MetaModel.
|
|
102906
102926
|
*
|
|
102907
102927
|
* @property propertySets
|
|
102908
|
-
* @type
|
|
102928
|
+
* @type {PropertySet[]}
|
|
102909
102929
|
*/
|
|
102910
|
-
this.propertySets =
|
|
102930
|
+
this.propertySets = [];
|
|
102911
102931
|
|
|
102912
102932
|
/**
|
|
102913
102933
|
* The root {@link MetaObject} in this MetaModel's composition structure hierarchy.
|
|
@@ -102925,6 +102945,20 @@ class MetaModel {
|
|
|
102925
102945
|
* @type {MetaObject[]}
|
|
102926
102946
|
*/
|
|
102927
102947
|
this.rootMetaObjects = [];
|
|
102948
|
+
|
|
102949
|
+
/**
|
|
102950
|
+
* The {@link MetaObject}s in this MetaModel, each mapped to its ID.
|
|
102951
|
+
*
|
|
102952
|
+
* @property metaObjects
|
|
102953
|
+
* @type {MetaObject[]}
|
|
102954
|
+
*/
|
|
102955
|
+
this.metaObjects=[];
|
|
102956
|
+
|
|
102957
|
+
/**
|
|
102958
|
+
* Connectivity graph.
|
|
102959
|
+
* @type {{}}
|
|
102960
|
+
*/
|
|
102961
|
+
this.graph = params.graph || {};
|
|
102928
102962
|
}
|
|
102929
102963
|
|
|
102930
102964
|
getJSON() {
|
|
@@ -102983,7 +103017,7 @@ class MetaObject {
|
|
|
102983
103017
|
/**
|
|
102984
103018
|
* @private
|
|
102985
103019
|
*/
|
|
102986
|
-
constructor(
|
|
103020
|
+
constructor(params) {
|
|
102987
103021
|
|
|
102988
103022
|
/**
|
|
102989
103023
|
* Model metadata.
|
|
@@ -102992,13 +103026,13 @@ class MetaObject {
|
|
|
102992
103026
|
* @type {MetaModel}
|
|
102993
103027
|
* @deprecated
|
|
102994
103028
|
*/
|
|
102995
|
-
this.metaModel =
|
|
103029
|
+
this.metaModel = null;
|
|
102996
103030
|
|
|
102997
103031
|
/**
|
|
102998
103032
|
* The MetaModels that share this MetaObject.
|
|
102999
103033
|
* @type {MetaModel[]}
|
|
103000
103034
|
*/
|
|
103001
|
-
this.metaModels = [
|
|
103035
|
+
this.metaModels = [];
|
|
103002
103036
|
|
|
103003
103037
|
/**
|
|
103004
103038
|
* Globally-unique ID.
|
|
@@ -103008,7 +103042,19 @@ class MetaObject {
|
|
|
103008
103042
|
* @property id
|
|
103009
103043
|
* @type {String|Number}
|
|
103010
103044
|
*/
|
|
103011
|
-
this.id = id;
|
|
103045
|
+
this.id = params.id;
|
|
103046
|
+
|
|
103047
|
+
/**
|
|
103048
|
+
* ID of the parent MetaObject.
|
|
103049
|
+
* @type {String|Number}
|
|
103050
|
+
*/
|
|
103051
|
+
this.parentId = params.parentId;
|
|
103052
|
+
|
|
103053
|
+
/**
|
|
103054
|
+
* The parent MetaObject.
|
|
103055
|
+
* @type {MetaObject | null}
|
|
103056
|
+
*/
|
|
103057
|
+
this.parent = null;
|
|
103012
103058
|
|
|
103013
103059
|
/**
|
|
103014
103060
|
* ID of the corresponding object within the originating system, if any.
|
|
@@ -103016,7 +103062,7 @@ class MetaObject {
|
|
|
103016
103062
|
* @type {String}
|
|
103017
103063
|
* @abstract
|
|
103018
103064
|
*/
|
|
103019
|
-
this.originalSystemId = originalSystemId;
|
|
103065
|
+
this.originalSystemId = params.originalSystemId;
|
|
103020
103066
|
|
|
103021
103067
|
/**
|
|
103022
103068
|
* Human-readable name.
|
|
@@ -103024,7 +103070,7 @@ class MetaObject {
|
|
|
103024
103070
|
* @property name
|
|
103025
103071
|
* @type {String}
|
|
103026
103072
|
*/
|
|
103027
|
-
this.name = name;
|
|
103073
|
+
this.name = params.name;
|
|
103028
103074
|
|
|
103029
103075
|
/**
|
|
103030
103076
|
* Type - often an IFC product type.
|
|
@@ -103032,7 +103078,7 @@ class MetaObject {
|
|
|
103032
103078
|
* @property type
|
|
103033
103079
|
* @type {String}
|
|
103034
103080
|
*/
|
|
103035
|
-
this.type = type;
|
|
103081
|
+
this.type = params.type;
|
|
103036
103082
|
|
|
103037
103083
|
/**
|
|
103038
103084
|
* Optional {@link PropertySet}s used by this MetaObject.
|
|
@@ -103040,46 +103086,20 @@ class MetaObject {
|
|
|
103040
103086
|
* @property propertySets
|
|
103041
103087
|
* @type {PropertySet[]}
|
|
103042
103088
|
*/
|
|
103043
|
-
this.propertySets =
|
|
103044
|
-
|
|
103045
|
-
if (parent !== undefined && parent !== null) {
|
|
103046
|
-
|
|
103047
|
-
/**
|
|
103048
|
-
* The parent MetaObject within the structure hierarchy.
|
|
103049
|
-
*
|
|
103050
|
-
* Undefined when this is the root of its structure.
|
|
103051
|
-
*
|
|
103052
|
-
* @property parent
|
|
103053
|
-
* @type {MetaObject}
|
|
103054
|
-
*/
|
|
103055
|
-
this.parent = parent;
|
|
103056
|
-
}
|
|
103057
|
-
|
|
103058
|
-
if (children !== undefined && children !== null) {
|
|
103089
|
+
this.propertySets = [];
|
|
103059
103090
|
|
|
103060
|
-
|
|
103061
|
-
|
|
103062
|
-
|
|
103063
|
-
|
|
103064
|
-
|
|
103065
|
-
|
|
103066
|
-
|
|
103067
|
-
|
|
103068
|
-
|
|
103069
|
-
|
|
103070
|
-
|
|
103071
|
-
|
|
103072
|
-
|
|
103073
|
-
/**
|
|
103074
|
-
* External application-specific metadata
|
|
103075
|
-
*
|
|
103076
|
-
* Undefined when there are is no external application-specific metadata.
|
|
103077
|
-
*
|
|
103078
|
-
* @property external
|
|
103079
|
-
* @type {*}
|
|
103080
|
-
*/
|
|
103081
|
-
this.external = external;
|
|
103082
|
-
}
|
|
103091
|
+
// if (external !== undefined && external !== null) {
|
|
103092
|
+
//
|
|
103093
|
+
// /**
|
|
103094
|
+
// * External application-specific metadata
|
|
103095
|
+
// *
|
|
103096
|
+
// * Undefined when there are is no external application-specific metadata.
|
|
103097
|
+
// *
|
|
103098
|
+
// * @property external
|
|
103099
|
+
// * @type {*}
|
|
103100
|
+
// */
|
|
103101
|
+
// this.external = external;
|
|
103102
|
+
// }
|
|
103083
103103
|
}
|
|
103084
103104
|
|
|
103085
103105
|
/**
|
|
@@ -103269,6 +103289,12 @@ class PropertySet {
|
|
|
103269
103289
|
*/
|
|
103270
103290
|
this.originalSystemId = originalSystemId;
|
|
103271
103291
|
|
|
103292
|
+
/**
|
|
103293
|
+
* The MetaModels that share this PropertySet.
|
|
103294
|
+
* @type {MetaModel[]}
|
|
103295
|
+
*/
|
|
103296
|
+
this.metaModels = [];
|
|
103297
|
+
|
|
103272
103298
|
/**
|
|
103273
103299
|
* Human-readable name of this PropertySet.
|
|
103274
103300
|
*
|
|
@@ -103365,12 +103391,6 @@ class MetaScene {
|
|
|
103365
103391
|
*/
|
|
103366
103392
|
this.rootMetaObjects = {};
|
|
103367
103393
|
|
|
103368
|
-
/**
|
|
103369
|
-
* Tracks number of MetaObjects of each type.
|
|
103370
|
-
* @private
|
|
103371
|
-
*/
|
|
103372
|
-
this._typeCounts = {};
|
|
103373
|
-
|
|
103374
103394
|
/**
|
|
103375
103395
|
* Subscriptions to events sent with {@link fire}.
|
|
103376
103396
|
* @private
|
|
@@ -103438,117 +103458,147 @@ class MetaScene {
|
|
|
103438
103458
|
*/
|
|
103439
103459
|
createMetaModel(modelId, metaModelData, options = {}) {
|
|
103440
103460
|
|
|
103441
|
-
|
|
103442
|
-
|
|
103443
|
-
|
|
103444
|
-
const newObjects = metaModelData.metaObjects || [];
|
|
103445
|
-
const author = metaModelData.author;
|
|
103446
|
-
const createdAt = metaModelData.createdAt;
|
|
103447
|
-
const creatingApplication = metaModelData.creatingApplication;
|
|
103448
|
-
const schema = metaModelData.schema;
|
|
103449
|
-
// if (options.excludeTypes) {
|
|
103450
|
-
// excludeTypes = {};
|
|
103451
|
-
// for (let i = 0, len = options.excludeTypes.length; i < len; i++) {
|
|
103452
|
-
// includeTypes[options.excludeTypes[i]] = true;
|
|
103453
|
-
// }
|
|
103454
|
-
// }
|
|
103461
|
+
this._globalizeIDs(modelId, metaModelData, options);
|
|
103462
|
+
|
|
103463
|
+
// Create MetaModel
|
|
103455
103464
|
|
|
103456
|
-
const metaModel = new MetaModel(
|
|
103465
|
+
const metaModel = new MetaModel({
|
|
103466
|
+
metaScene: this,
|
|
103467
|
+
id: modelId,
|
|
103468
|
+
projectId: metaModelData.projectId || "none",
|
|
103469
|
+
revisionId: metaModelData.revisionId || "none",
|
|
103470
|
+
author: metaModelData.author || "none",
|
|
103471
|
+
createdAt: metaModelData.createdAt || "none",
|
|
103472
|
+
creatingApplication: metaModelData.creatingApplication || "none",
|
|
103473
|
+
schema: metaModelData.schema || "none",
|
|
103474
|
+
propertySets: []
|
|
103475
|
+
});
|
|
103457
103476
|
|
|
103458
103477
|
this.metaModels[modelId] = metaModel;
|
|
103459
103478
|
|
|
103460
|
-
|
|
103461
|
-
|
|
103462
|
-
|
|
103463
|
-
const
|
|
103464
|
-
|
|
103465
|
-
|
|
103479
|
+
// Create global Property Sets
|
|
103480
|
+
|
|
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;
|
|
103493
|
+
}
|
|
103494
|
+
propertySet.metaModels.push(metaModel);
|
|
103495
|
+
metaModel.propertySets.push(propertySet);
|
|
103466
103496
|
}
|
|
103467
103497
|
|
|
103468
|
-
|
|
103469
|
-
|
|
103470
|
-
|
|
103498
|
+
// Create MetaObjects
|
|
103499
|
+
// Don't re-create reused MetaObjects
|
|
103500
|
+
// Save root MetaObjects on MetaModel
|
|
103501
|
+
// Save root MetaObjects on MetaScene
|
|
103471
103502
|
|
|
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;
|
|
103522
|
+
}
|
|
103523
|
+
metaModel.metaObjects.push(metaObject);
|
|
103524
|
+
}
|
|
103472
103525
|
|
|
103473
|
-
//
|
|
103526
|
+
// Re-link entire MetaObject parent/child hierarchy
|
|
103474
103527
|
|
|
103475
|
-
for (let
|
|
103476
|
-
const
|
|
103477
|
-
|
|
103478
|
-
|
|
103528
|
+
for (let objectId in this.metaObjects) {
|
|
103529
|
+
const metaObject = this.metaObjects[objectId];
|
|
103530
|
+
if (metaObject.children) {
|
|
103531
|
+
metaObject.children = [];
|
|
103532
|
+
}
|
|
103479
103533
|
}
|
|
103480
103534
|
|
|
103481
|
-
|
|
103482
|
-
|
|
103483
|
-
|
|
103484
|
-
|
|
103485
|
-
|
|
103486
|
-
|
|
103487
|
-
|
|
103488
|
-
|
|
103489
|
-
continue;
|
|
103535
|
+
for (let objectId in this.metaObjects) {
|
|
103536
|
+
const metaObject = this.metaObjects[objectId];
|
|
103537
|
+
if (metaObject.parentId) {
|
|
103538
|
+
const parentMetaObject = this.metaObjects[metaObject.parentId];
|
|
103539
|
+
if (parentMetaObject) {
|
|
103540
|
+
metaObject.parent = parentMetaObject;
|
|
103541
|
+
(parentMetaObject.children || (parentMetaObject.children = [])).push(metaObject);
|
|
103542
|
+
}
|
|
103490
103543
|
}
|
|
103491
|
-
createObjectsParams.push(filteredObject);
|
|
103492
103544
|
}
|
|
103493
103545
|
|
|
103494
|
-
// Create
|
|
103546
|
+
// Create MetaObjects-by-type lookup
|
|
103495
103547
|
|
|
103496
|
-
|
|
103497
|
-
|
|
103498
|
-
const
|
|
103499
|
-
const
|
|
103500
|
-
|
|
103501
|
-
|
|
103502
|
-
|
|
103503
|
-
|
|
103504
|
-
|
|
103505
|
-
|
|
103506
|
-
|
|
103507
|
-
|
|
103508
|
-
|
|
103548
|
+
this.metaObjectsByType = {};
|
|
103549
|
+
for (let objectId in this.metaObjects) {
|
|
103550
|
+
const metaObject = this.metaObjects[objectId];
|
|
103551
|
+
const type = metaObject.type;
|
|
103552
|
+
(this.metaObjectsByType[type] || (this.metaObjectsByType[type] = {}))[objectId] = metaObject;
|
|
103553
|
+
}
|
|
103554
|
+
|
|
103555
|
+
this.fire("metaModelCreated", modelId);
|
|
103556
|
+
|
|
103557
|
+
return metaModel;
|
|
103558
|
+
}
|
|
103559
|
+
|
|
103560
|
+
_globalizeIDs(modelId, metaModelData, options) {
|
|
103561
|
+
|
|
103562
|
+
const globalize = !!options.globalizeObjectIds;
|
|
103563
|
+
|
|
103564
|
+
if (metaModelData.metaObjects) {
|
|
103565
|
+
for (let i = 0, len = metaModelData.metaObjects.length; i < len; i++) {
|
|
103566
|
+
const metaObjectData = metaModelData.metaObjects[i];
|
|
103567
|
+
|
|
103568
|
+
// Globalize MetaObject IDs and parent IDs
|
|
103569
|
+
|
|
103570
|
+
metaObjectData.originalSystemId = metaObjectData.id;
|
|
103571
|
+
metaObjectData.originalParentSystemId = metaObjectData.parent;
|
|
103572
|
+
if (globalize) {
|
|
103573
|
+
metaObjectData.id = math.globalizeObjectId(modelId, metaObject.id);
|
|
103574
|
+
metaObjectData.parent = math.globalizeObjectId(modelId, metaObject.parent);
|
|
103575
|
+
}
|
|
103576
|
+
|
|
103577
|
+
// Globalize MetaObject property set IDs
|
|
103578
|
+
|
|
103579
|
+
const propertySetIds = metaObjectData.propertySetIds;
|
|
103580
|
+
if (propertySetIds) {
|
|
103581
|
+
const propertySetGlobalIds = [];
|
|
103582
|
+
for (let j = 0, lenj = propertySetIds.length; j < lenj; j++) {
|
|
103583
|
+
propertySetGlobalIds.push(math.globalizeObjectId(modelId, propertySetIds[j]));
|
|
103509
103584
|
}
|
|
103585
|
+
metaObjectData.propertySetIds = propertySetGlobalIds;
|
|
103586
|
+
metaObjectData.originalSystemPropertySetIds = propertySetIds;
|
|
103510
103587
|
}
|
|
103511
103588
|
}
|
|
103512
|
-
|
|
103513
|
-
|
|
103514
|
-
|
|
103515
|
-
|
|
103516
|
-
|
|
103517
|
-
|
|
103518
|
-
|
|
103519
|
-
|
|
103520
|
-
|
|
103521
|
-
|
|
103522
|
-
this._typeCounts[type]++;
|
|
103523
|
-
}
|
|
103524
|
-
existingObjects.push(metaObject);
|
|
103525
|
-
if (createObject.parent === undefined || createObject.parent === null) ;
|
|
103526
|
-
}
|
|
103527
|
-
|
|
103528
|
-
// Ensure that metaobjects in the existing metaobject list are all attached to their parents,
|
|
103529
|
-
// or registered as root metaobjects
|
|
103530
|
-
|
|
103531
|
-
for (let i = 0, len = existingObjects.length; i < len; i++) {
|
|
103532
|
-
const existingObject = existingObjects[i];
|
|
103533
|
-
const objectId = options.globalizeObjectIds ? math.globalizeObjectId(modelId, existingObject.id) : existingObject.id;
|
|
103534
|
-
if ((existingObject._parentId === undefined || existingObject._parentId === null) && !existingObject.parent) {
|
|
103535
|
-
metaModel.rootMetaObject = existingObject; // Deprecated, and won't work for federated models
|
|
103536
|
-
metaModel.rootMetaObjects[objectId] = existingObject;
|
|
103537
|
-
this.rootMetaObjects[objectId] = existingObject;
|
|
103538
|
-
} else if (existingObject._parentId) {
|
|
103539
|
-
const parentId = options.globalizeObjectIds ? math.globalizeObjectId(modelId, existingObject._parentId) : existingObject._parentId;
|
|
103540
|
-
existingObject._parentId = null;
|
|
103541
|
-
let parentMetaObject = this.metaObjects[parentId];
|
|
103542
|
-
if (parentMetaObject) {
|
|
103543
|
-
existingObject.parent = parentMetaObject;
|
|
103544
|
-
parentMetaObject.children = parentMetaObject.children || [];
|
|
103545
|
-
parentMetaObject.children.push(existingObject);
|
|
103589
|
+
}
|
|
103590
|
+
|
|
103591
|
+
// Globalize global PropertySet IDs
|
|
103592
|
+
|
|
103593
|
+
if (metaModelData.propertySets) {
|
|
103594
|
+
for (let i = 0, len = metaModelData.propertySets.length; i < len; i++) {
|
|
103595
|
+
const propertySet = metaModelData.propertySets[i];
|
|
103596
|
+
propertySet.originalSystemId = propertySet.id;
|
|
103597
|
+
if (globalize) {
|
|
103598
|
+
propertySet.id = math.globalizeObjectId(modelId, propertySet.id);
|
|
103546
103599
|
}
|
|
103547
103600
|
}
|
|
103548
103601
|
}
|
|
103549
|
-
|
|
103550
|
-
this.fire("metaModelCreated", modelId);
|
|
103551
|
-
return metaModel;
|
|
103552
103602
|
}
|
|
103553
103603
|
|
|
103554
103604
|
/**
|
|
@@ -103559,43 +103609,86 @@ class MetaScene {
|
|
|
103559
103609
|
* @param {String} id ID of the target {@link MetaModel}.
|
|
103560
103610
|
*/
|
|
103561
103611
|
destroyMetaModel(id) {
|
|
103612
|
+
|
|
103562
103613
|
const metaModel = this.metaModels[id];
|
|
103563
103614
|
if (!metaModel) {
|
|
103564
103615
|
return;
|
|
103565
103616
|
}
|
|
103566
|
-
this._removeMetaModel(metaModel);
|
|
103567
|
-
this.fire("metaModelDestroyed", id);
|
|
103568
|
-
}
|
|
103569
103617
|
|
|
103570
|
-
|
|
103571
|
-
|
|
103572
|
-
|
|
103573
|
-
|
|
103574
|
-
|
|
103575
|
-
|
|
103576
|
-
|
|
103577
|
-
|
|
103578
|
-
|
|
103579
|
-
|
|
103580
|
-
|
|
103618
|
+
// Remove global PropertySets
|
|
103619
|
+
|
|
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]);
|
|
103629
|
+
}
|
|
103581
103630
|
}
|
|
103631
|
+
propertySet.metaModels = newMetaModels;
|
|
103582
103632
|
}
|
|
103583
|
-
|
|
103584
|
-
|
|
103585
|
-
|
|
103586
|
-
|
|
103587
|
-
|
|
103633
|
+
}
|
|
103634
|
+
|
|
103635
|
+
// Remove MetaObjects
|
|
103636
|
+
|
|
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
|
+
}
|
|
103588
103653
|
}
|
|
103654
|
+
metaObject.metaModels = newMetaModels;
|
|
103589
103655
|
}
|
|
103590
|
-
}
|
|
103591
|
-
|
|
103592
|
-
|
|
103593
|
-
|
|
103594
|
-
|
|
103656
|
+
}
|
|
103657
|
+
|
|
103658
|
+
// Re-link entire MetaObject parent/child hierarchy
|
|
103659
|
+
|
|
103660
|
+
for (let objectId in this.metaObjects) {
|
|
103661
|
+
const metaObject = this.metaObjects[objectId];
|
|
103662
|
+
if (metaObject.children) {
|
|
103663
|
+
metaObject.children = [];
|
|
103595
103664
|
}
|
|
103596
103665
|
}
|
|
103597
|
-
|
|
103598
|
-
|
|
103666
|
+
|
|
103667
|
+
this.metaObjectsByType = {};
|
|
103668
|
+
|
|
103669
|
+
for (let objectId in this.metaObjects) {
|
|
103670
|
+
const metaObject = this.metaObjects[objectId];
|
|
103671
|
+
const type = metaObject.type;
|
|
103672
|
+
if (metaObject.children) {
|
|
103673
|
+
metaObject.children = null;
|
|
103674
|
+
}
|
|
103675
|
+
(this.metaObjectsByType[type] || (this.metaObjectsByType[type] = {}))[objectId] = metaObject;
|
|
103676
|
+
}
|
|
103677
|
+
|
|
103678
|
+
for (let objectId in this.metaObjects) {
|
|
103679
|
+
const metaObject = this.metaObjects[objectId];
|
|
103680
|
+
if (metaObject.parentId) {
|
|
103681
|
+
const parentMetaObject = this.metaObjects[metaObject.parentId];
|
|
103682
|
+
if (parentMetaObject) {
|
|
103683
|
+
metaObject.parent = parentMetaObject;
|
|
103684
|
+
(parentMetaObject.children || (parentMetaObject.children = [])).push(metaObject);
|
|
103685
|
+
}
|
|
103686
|
+
}
|
|
103687
|
+
}
|
|
103688
|
+
|
|
103689
|
+
delete this.metaModels[id];
|
|
103690
|
+
|
|
103691
|
+
this.fire("metaModelDestroyed", id);
|
|
103599
103692
|
}
|
|
103600
103693
|
|
|
103601
103694
|
/**
|
|
@@ -103618,12 +103711,13 @@ class MetaScene {
|
|
|
103618
103711
|
* @returns {String[]} Array of {@link MetaObject#id}s.
|
|
103619
103712
|
*/
|
|
103620
103713
|
getObjectIDsInSubtree(id, includeTypes, excludeTypes) {
|
|
103714
|
+
|
|
103621
103715
|
const list = [];
|
|
103622
103716
|
const metaObject = this.metaObjects[id];
|
|
103623
103717
|
const includeMask = (includeTypes && includeTypes.length > 0) ? arrayToMap(includeTypes) : null;
|
|
103624
103718
|
const excludeMask = (excludeTypes && excludeTypes.length > 0) ? arrayToMap(excludeTypes) : null;
|
|
103625
103719
|
|
|
103626
|
-
|
|
103720
|
+
const visit = (metaObject) => {
|
|
103627
103721
|
if (!metaObject) {
|
|
103628
103722
|
return;
|
|
103629
103723
|
}
|
|
@@ -103642,7 +103736,7 @@ class MetaScene {
|
|
|
103642
103736
|
visit(children[i]);
|
|
103643
103737
|
}
|
|
103644
103738
|
}
|
|
103645
|
-
}
|
|
103739
|
+
};
|
|
103646
103740
|
|
|
103647
103741
|
visit(metaObject);
|
|
103648
103742
|
return list;
|