@galacean/engine-loader 1.5.7 → 1.5.9
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/main.js +51 -78
- package/dist/main.js.map +1 -1
- package/dist/module.js +51 -78
- package/dist/module.js.map +1 -1
- package/package.json +4 -4
- package/types/resource-deserialize/resources/parser/HierarchyParser.d.ts +1 -0
- package/types/resource-deserialize/resources/parser/ParserContext.d.ts +2 -4
package/dist/module.js
CHANGED
|
@@ -673,43 +673,16 @@ var ParserType = /*#__PURE__*/ function(ParserType) {
|
|
|
673
673
|
this.entityMap = new Map();
|
|
674
674
|
this.entityConfigMap = new Map();
|
|
675
675
|
this.components = new Map();
|
|
676
|
+
this.componentConfigMap = new Map();
|
|
676
677
|
this.rootIds = [];
|
|
677
678
|
this.strippedIds = [];
|
|
678
|
-
this.componentWaitingMap = new Map();
|
|
679
679
|
this.resourceManager = engine.resourceManager;
|
|
680
680
|
}
|
|
681
681
|
var _proto = ParserContext.prototype;
|
|
682
|
-
_proto.addComponent = function addComponent(id, component) {
|
|
683
|
-
this.components.set(id, component);
|
|
684
|
-
var waitingList = this.componentWaitingMap.get(id);
|
|
685
|
-
if (waitingList == null ? void 0 : waitingList.length) {
|
|
686
|
-
waitingList.forEach(function(resolve) {
|
|
687
|
-
return resolve(component);
|
|
688
|
-
});
|
|
689
|
-
this.componentWaitingMap.delete(id);
|
|
690
|
-
}
|
|
691
|
-
};
|
|
692
|
-
_proto.getComponentByRef = function getComponentByRef(ref) {
|
|
693
|
-
var _this = this;
|
|
694
|
-
return new Promise(function(resolve, reject) {
|
|
695
|
-
var component = _this.components.get(ref.componentId);
|
|
696
|
-
if (component) {
|
|
697
|
-
resolve(component);
|
|
698
|
-
} else {
|
|
699
|
-
var resolves = _this.componentWaitingMap.get(ref.componentId);
|
|
700
|
-
if (resolves) {
|
|
701
|
-
resolves.push(resolve);
|
|
702
|
-
} else {
|
|
703
|
-
_this.componentWaitingMap.set(ref.componentId, [
|
|
704
|
-
resolve
|
|
705
|
-
]);
|
|
706
|
-
}
|
|
707
|
-
}
|
|
708
|
-
});
|
|
709
|
-
};
|
|
710
682
|
_proto.clear = function clear() {
|
|
711
683
|
this.entityMap.clear();
|
|
712
684
|
this.components.clear();
|
|
685
|
+
this.componentConfigMap.clear();
|
|
713
686
|
this.entityConfigMap.clear();
|
|
714
687
|
this.rootIds.length = 0;
|
|
715
688
|
this.strippedIds.length = 0;
|
|
@@ -823,7 +796,8 @@ var ReflectionParser = /*#__PURE__*/ function() {
|
|
|
823
796
|
return resource;
|
|
824
797
|
});
|
|
825
798
|
} else if (ReflectionParser._isComponentRef(value)) {
|
|
826
|
-
|
|
799
|
+
var _this__context_components_get;
|
|
800
|
+
return Promise.resolve((_this__context_components_get = this._context.components.get(value.componentId)) != null ? _this__context_components_get : null);
|
|
827
801
|
} else if (ReflectionParser._isEntityRef(value)) {
|
|
828
802
|
// entity reference
|
|
829
803
|
return Promise.resolve(this._context.entityMap.get(value.entityId));
|
|
@@ -1130,6 +1104,7 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
1130
1104
|
this._parseComponents = this._parseComponents.bind(this);
|
|
1131
1105
|
this._parsePrefabModification = this._parsePrefabModification.bind(this);
|
|
1132
1106
|
this._parseAddedComponents = this._parseAddedComponents.bind(this);
|
|
1107
|
+
this._parseComponentsPropsAndMethods = this._parseComponentsPropsAndMethods.bind(this);
|
|
1133
1108
|
this._parsePrefabRemovedEntities = this._parsePrefabRemovedEntities.bind(this);
|
|
1134
1109
|
this._parsePrefabRemovedComponents = this._parsePrefabRemovedComponents.bind(this);
|
|
1135
1110
|
this._clearAndResolve = this._clearAndResolve.bind(this);
|
|
@@ -1141,7 +1116,7 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
1141
1116
|
}
|
|
1142
1117
|
var _proto = HierarchyParser.prototype;
|
|
1143
1118
|
/** start parse the scene or prefab or others */ _proto.start = function start() {
|
|
1144
|
-
this._parseEntities().then(this._organizeEntities).then(this._parseComponents).then(this.
|
|
1119
|
+
this._parseEntities().then(this._organizeEntities).then(this._parseComponents).then(this._parseAddedComponents).then(this._parseComponentsPropsAndMethods).then(this._parsePrefabModification).then(this._parsePrefabRemovedEntities).then(this._parsePrefabRemovedComponents).then(this._clearAndResolve).then(this._resolve).catch(this._reject);
|
|
1145
1120
|
};
|
|
1146
1121
|
_proto._parseEntities = function _parseEntities() {
|
|
1147
1122
|
var _this = this;
|
|
@@ -1166,16 +1141,14 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
1166
1141
|
_proto._parseComponents = function _parseComponents() {
|
|
1167
1142
|
var entitiesConfig = this.data.entities;
|
|
1168
1143
|
var entityMap = this.context.entityMap;
|
|
1169
|
-
var promises = [];
|
|
1170
1144
|
for(var i = 0, l = entitiesConfig.length; i < l; i++){
|
|
1171
1145
|
var entityConfig = entitiesConfig[i];
|
|
1172
1146
|
if (entityConfig.strippedId) {
|
|
1173
1147
|
continue;
|
|
1174
1148
|
}
|
|
1175
1149
|
var entity = entityMap.get(entityConfig.id);
|
|
1176
|
-
this._addComponents(entity, entityConfig.components
|
|
1150
|
+
this._addComponents(entity, entityConfig.components);
|
|
1177
1151
|
}
|
|
1178
|
-
return Promise.all(promises);
|
|
1179
1152
|
};
|
|
1180
1153
|
_proto._parsePrefabModification = function _parsePrefabModification() {
|
|
1181
1154
|
var _loop = function(i, l) {
|
|
@@ -1212,78 +1185,62 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
1212
1185
|
var entityMap = this.context.entityMap;
|
|
1213
1186
|
var entityConfigMap = this.context.entityConfigMap;
|
|
1214
1187
|
var strippedIds = this.context.strippedIds;
|
|
1215
|
-
var promises = [];
|
|
1216
1188
|
for(var i = 0, n = strippedIds.length; i < n; i++){
|
|
1217
1189
|
var entityConfig = entityConfigMap.get(strippedIds[i]);
|
|
1218
1190
|
var prefabContext = this._prefabContextMap.get(entityMap.get(entityConfig.prefabInstanceId));
|
|
1219
1191
|
var entity = prefabContext.entityMap.get(entityConfig.prefabSource.entityId);
|
|
1220
|
-
this._addComponents(entity, entityConfig.components
|
|
1192
|
+
this._addComponents(entity, entityConfig.components);
|
|
1221
1193
|
}
|
|
1222
|
-
for(var _iterator = _create_for_of_iterator_helper_loose(this.context.componentWaitingMap.values()), _step; !(_step = _iterator()).done;){
|
|
1223
|
-
var waitingList = _step.value;
|
|
1224
|
-
waitingList.forEach(function(resolve) {
|
|
1225
|
-
return resolve(null);
|
|
1226
|
-
});
|
|
1227
|
-
}
|
|
1228
|
-
return Promise.all(promises);
|
|
1229
1194
|
};
|
|
1230
1195
|
_proto._parsePrefabRemovedEntities = function _parsePrefabRemovedEntities() {
|
|
1231
|
-
var
|
|
1196
|
+
var entitiesConfig = this.data.entities;
|
|
1197
|
+
var entityMap = this.context.entityMap;
|
|
1198
|
+
for(var i = 0, l = entitiesConfig.length; i < l; i++){
|
|
1232
1199
|
var entityConfig = entitiesConfig[i];
|
|
1233
1200
|
var id = entityConfig.id, removedEntities = entityConfig.removedEntities;
|
|
1234
1201
|
if (removedEntities == null ? void 0 : removedEntities.length) {
|
|
1235
|
-
var _promises;
|
|
1236
1202
|
var rootEntity = entityMap.get(id);
|
|
1237
|
-
(
|
|
1203
|
+
for(var j = 0, m = removedEntities.length; j < m; j++){
|
|
1204
|
+
var target = removedEntities[j];
|
|
1238
1205
|
var entityId = target.entityId;
|
|
1239
|
-
var context =
|
|
1206
|
+
var context = this._prefabContextMap.get(rootEntity);
|
|
1240
1207
|
var targetEntity = context.entityMap.get(entityId);
|
|
1241
1208
|
if (targetEntity) {
|
|
1242
1209
|
targetEntity.destroy();
|
|
1243
1210
|
}
|
|
1244
|
-
}
|
|
1211
|
+
}
|
|
1245
1212
|
}
|
|
1246
|
-
}
|
|
1247
|
-
var _this = this;
|
|
1248
|
-
var entitiesConfig = this.data.entities;
|
|
1249
|
-
var entityMap = this.context.entityMap;
|
|
1250
|
-
var promises = [];
|
|
1251
|
-
for(var i = 0, l = entitiesConfig.length; i < l; i++)_loop(i);
|
|
1252
|
-
return Promise.all(promises);
|
|
1213
|
+
}
|
|
1253
1214
|
};
|
|
1254
1215
|
_proto._parsePrefabRemovedComponents = function _parsePrefabRemovedComponents() {
|
|
1255
|
-
var
|
|
1216
|
+
var entitiesConfig = this.data.entities;
|
|
1217
|
+
var entityMap = this.context.entityMap;
|
|
1218
|
+
var prefabContextMap = this._prefabContextMap;
|
|
1219
|
+
for(var i = 0, l = entitiesConfig.length; i < l; i++){
|
|
1256
1220
|
var entityConfig = entitiesConfig[i];
|
|
1257
1221
|
var id = entityConfig.id, removedComponents = entityConfig.removedComponents;
|
|
1258
1222
|
if (removedComponents == null ? void 0 : removedComponents.length) {
|
|
1259
|
-
var _promises;
|
|
1260
1223
|
var rootEntity = entityMap.get(id);
|
|
1261
|
-
(
|
|
1224
|
+
for(var j = 0, m = removedComponents.length; j < m; j++){
|
|
1225
|
+
var target = removedComponents[j];
|
|
1262
1226
|
var componentId = target.componentId;
|
|
1263
|
-
var context =
|
|
1227
|
+
var context = prefabContextMap.get(rootEntity);
|
|
1264
1228
|
var targetComponent = context.components.get(componentId);
|
|
1265
1229
|
if (targetComponent) {
|
|
1266
1230
|
targetComponent.destroy();
|
|
1267
1231
|
}
|
|
1268
|
-
}
|
|
1232
|
+
}
|
|
1269
1233
|
}
|
|
1270
|
-
}
|
|
1271
|
-
var _this = this;
|
|
1272
|
-
var entitiesConfig = this.data.entities;
|
|
1273
|
-
var entityMap = this.context.entityMap;
|
|
1274
|
-
var promises = [];
|
|
1275
|
-
for(var i = 0, l = entitiesConfig.length; i < l; i++)_loop(i);
|
|
1276
|
-
return Promise.all(promises);
|
|
1234
|
+
}
|
|
1277
1235
|
};
|
|
1278
1236
|
_proto._organizeEntities = function _organizeEntities() {
|
|
1279
1237
|
var _this_context = this.context, rootIds = _this_context.rootIds, strippedIds = _this_context.strippedIds;
|
|
1280
1238
|
var parentIds = rootIds.concat(strippedIds);
|
|
1281
|
-
for(var
|
|
1282
|
-
|
|
1283
|
-
this._parseChildren(parentId);
|
|
1239
|
+
for(var i = 0, l = parentIds.length; i < l; i++){
|
|
1240
|
+
this._parseChildren(parentIds[i]);
|
|
1284
1241
|
}
|
|
1285
|
-
for(var
|
|
1286
|
-
this._handleRootEntity(rootIds[
|
|
1242
|
+
for(var i1 = 0; i1 < rootIds.length; i1++){
|
|
1243
|
+
this._handleRootEntity(rootIds[i1]);
|
|
1287
1244
|
}
|
|
1288
1245
|
};
|
|
1289
1246
|
_proto._getEntityByConfig = function _getEntityByConfig(entityConfig, engine) {
|
|
@@ -1356,16 +1313,18 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
1356
1313
|
}
|
|
1357
1314
|
}
|
|
1358
1315
|
};
|
|
1359
|
-
_proto._addComponents = function _addComponents(entity, components
|
|
1316
|
+
_proto._addComponents = function _addComponents(entity, components) {
|
|
1317
|
+
var context = this.context;
|
|
1318
|
+
var componentMap = context.components;
|
|
1319
|
+
var componentConfigMap = context.componentConfigMap;
|
|
1360
1320
|
for(var i = 0, n = components.length; i < n; i++){
|
|
1361
1321
|
var componentConfig = components[i];
|
|
1362
1322
|
var key = !componentConfig.refId ? componentConfig.class : componentConfig.refId;
|
|
1323
|
+
var componentId = componentConfig.id;
|
|
1363
1324
|
var component = entity.addComponent(Loader.getClass(key));
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
promises.push(promise);
|
|
1325
|
+
componentMap.set(componentId, component);
|
|
1326
|
+
componentConfigMap.set(componentId, componentConfig);
|
|
1367
1327
|
}
|
|
1368
|
-
return promises;
|
|
1369
1328
|
};
|
|
1370
1329
|
_proto._applyEntityData = function _applyEntityData(entity, entityConfig) {
|
|
1371
1330
|
if (entityConfig === void 0) entityConfig = {};
|
|
@@ -1407,6 +1366,20 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
|
|
|
1407
1366
|
this._generateInstanceContext(child, context, childPath);
|
|
1408
1367
|
}
|
|
1409
1368
|
};
|
|
1369
|
+
_proto._parseComponentsPropsAndMethods = function _parseComponentsPropsAndMethods() {
|
|
1370
|
+
var context = this.context;
|
|
1371
|
+
var componentConfigMap = context.componentConfigMap;
|
|
1372
|
+
var reflectionParser = this._reflectionParser;
|
|
1373
|
+
var promises = [];
|
|
1374
|
+
for(var _iterator = _create_for_of_iterator_helper_loose(context.components), _step; !(_step = _iterator()).done;){
|
|
1375
|
+
var _step_value = _step.value, componentId = _step_value[0], component = _step_value[1];
|
|
1376
|
+
var componentConfig = componentConfigMap.get(componentId);
|
|
1377
|
+
if (componentConfig) {
|
|
1378
|
+
promises.push(reflectionParser.parsePropsAndMethods(component, componentConfig));
|
|
1379
|
+
}
|
|
1380
|
+
}
|
|
1381
|
+
return Promise.all(promises);
|
|
1382
|
+
};
|
|
1410
1383
|
return HierarchyParser;
|
|
1411
1384
|
}();
|
|
1412
1385
|
|
|
@@ -5442,7 +5415,7 @@ var PrefabLoader = /*#__PURE__*/ function(Loader) {
|
|
|
5442
5415
|
type: "json"
|
|
5443
5416
|
})).then(function(data) {
|
|
5444
5417
|
PrefabParser.parse(engine, item.url, data).then(resolve).catch(reject);
|
|
5445
|
-
});
|
|
5418
|
+
}, reject);
|
|
5446
5419
|
});
|
|
5447
5420
|
};
|
|
5448
5421
|
return PrefabLoader;
|