@galacean/engine-loader 1.5.8 → 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/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
- return this._context.getComponentByRef(value);
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._parsePrefabModification).then(this._parseAddedComponents).then(this._parsePrefabRemovedEntities).then(this._parsePrefabRemovedComponents).then(this._clearAndResolve).then(this._resolve).catch(this._reject);
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, promises);
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, promises);
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 _loop = function(i, l) {
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
- (_promises = promises).push.apply(_promises, [].concat(removedEntities.map(function(target) {
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 = _this._prefabContextMap.get(rootEntity);
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 _loop = function(i, l) {
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
- (_promises = promises).concat.apply(_promises, [].concat(removedComponents.map(function(target) {
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 = _this._prefabContextMap.get(rootEntity);
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 _iterator = _create_for_of_iterator_helper_loose(parentIds), _step; !(_step = _iterator()).done;){
1282
- var parentId = _step.value;
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 i = 0; i < rootIds.length; i++){
1286
- this._handleRootEntity(rootIds[i]);
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, promises) {
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
- this.context.addComponent(componentConfig.id, component);
1365
- var promise = this._reflectionParser.parsePropsAndMethods(component, componentConfig);
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;