@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/main.js CHANGED
@@ -677,43 +677,16 @@ var ParserType = /*#__PURE__*/ function(ParserType) {
677
677
  this.entityMap = new Map();
678
678
  this.entityConfigMap = new Map();
679
679
  this.components = new Map();
680
+ this.componentConfigMap = new Map();
680
681
  this.rootIds = [];
681
682
  this.strippedIds = [];
682
- this.componentWaitingMap = new Map();
683
683
  this.resourceManager = engine.resourceManager;
684
684
  }
685
685
  var _proto = ParserContext.prototype;
686
- _proto.addComponent = function addComponent(id, component) {
687
- this.components.set(id, component);
688
- var waitingList = this.componentWaitingMap.get(id);
689
- if (waitingList == null ? void 0 : waitingList.length) {
690
- waitingList.forEach(function(resolve) {
691
- return resolve(component);
692
- });
693
- this.componentWaitingMap.delete(id);
694
- }
695
- };
696
- _proto.getComponentByRef = function getComponentByRef(ref) {
697
- var _this = this;
698
- return new Promise(function(resolve, reject) {
699
- var component = _this.components.get(ref.componentId);
700
- if (component) {
701
- resolve(component);
702
- } else {
703
- var resolves = _this.componentWaitingMap.get(ref.componentId);
704
- if (resolves) {
705
- resolves.push(resolve);
706
- } else {
707
- _this.componentWaitingMap.set(ref.componentId, [
708
- resolve
709
- ]);
710
- }
711
- }
712
- });
713
- };
714
686
  _proto.clear = function clear() {
715
687
  this.entityMap.clear();
716
688
  this.components.clear();
689
+ this.componentConfigMap.clear();
717
690
  this.entityConfigMap.clear();
718
691
  this.rootIds.length = 0;
719
692
  this.strippedIds.length = 0;
@@ -827,7 +800,8 @@ var ReflectionParser = /*#__PURE__*/ function() {
827
800
  return resource;
828
801
  });
829
802
  } else if (ReflectionParser._isComponentRef(value)) {
830
- return this._context.getComponentByRef(value);
803
+ var _this__context_components_get;
804
+ return Promise.resolve((_this__context_components_get = this._context.components.get(value.componentId)) != null ? _this__context_components_get : null);
831
805
  } else if (ReflectionParser._isEntityRef(value)) {
832
806
  // entity reference
833
807
  return Promise.resolve(this._context.entityMap.get(value.entityId));
@@ -1134,6 +1108,7 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
1134
1108
  this._parseComponents = this._parseComponents.bind(this);
1135
1109
  this._parsePrefabModification = this._parsePrefabModification.bind(this);
1136
1110
  this._parseAddedComponents = this._parseAddedComponents.bind(this);
1111
+ this._parseComponentsPropsAndMethods = this._parseComponentsPropsAndMethods.bind(this);
1137
1112
  this._parsePrefabRemovedEntities = this._parsePrefabRemovedEntities.bind(this);
1138
1113
  this._parsePrefabRemovedComponents = this._parsePrefabRemovedComponents.bind(this);
1139
1114
  this._clearAndResolve = this._clearAndResolve.bind(this);
@@ -1145,7 +1120,7 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
1145
1120
  }
1146
1121
  var _proto = HierarchyParser.prototype;
1147
1122
  /** start parse the scene or prefab or others */ _proto.start = function start() {
1148
- 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);
1123
+ 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);
1149
1124
  };
1150
1125
  _proto._parseEntities = function _parseEntities() {
1151
1126
  var _this = this;
@@ -1170,16 +1145,14 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
1170
1145
  _proto._parseComponents = function _parseComponents() {
1171
1146
  var entitiesConfig = this.data.entities;
1172
1147
  var entityMap = this.context.entityMap;
1173
- var promises = [];
1174
1148
  for(var i = 0, l = entitiesConfig.length; i < l; i++){
1175
1149
  var entityConfig = entitiesConfig[i];
1176
1150
  if (entityConfig.strippedId) {
1177
1151
  continue;
1178
1152
  }
1179
1153
  var entity = entityMap.get(entityConfig.id);
1180
- this._addComponents(entity, entityConfig.components, promises);
1154
+ this._addComponents(entity, entityConfig.components);
1181
1155
  }
1182
- return Promise.all(promises);
1183
1156
  };
1184
1157
  _proto._parsePrefabModification = function _parsePrefabModification() {
1185
1158
  var _loop = function(i, l) {
@@ -1216,78 +1189,62 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
1216
1189
  var entityMap = this.context.entityMap;
1217
1190
  var entityConfigMap = this.context.entityConfigMap;
1218
1191
  var strippedIds = this.context.strippedIds;
1219
- var promises = [];
1220
1192
  for(var i = 0, n = strippedIds.length; i < n; i++){
1221
1193
  var entityConfig = entityConfigMap.get(strippedIds[i]);
1222
1194
  var prefabContext = this._prefabContextMap.get(entityMap.get(entityConfig.prefabInstanceId));
1223
1195
  var entity = prefabContext.entityMap.get(entityConfig.prefabSource.entityId);
1224
- this._addComponents(entity, entityConfig.components, promises);
1196
+ this._addComponents(entity, entityConfig.components);
1225
1197
  }
1226
- for(var _iterator = _create_for_of_iterator_helper_loose(this.context.componentWaitingMap.values()), _step; !(_step = _iterator()).done;){
1227
- var waitingList = _step.value;
1228
- waitingList.forEach(function(resolve) {
1229
- return resolve(null);
1230
- });
1231
- }
1232
- return Promise.all(promises);
1233
1198
  };
1234
1199
  _proto._parsePrefabRemovedEntities = function _parsePrefabRemovedEntities() {
1235
- var _loop = function(i, l) {
1200
+ var entitiesConfig = this.data.entities;
1201
+ var entityMap = this.context.entityMap;
1202
+ for(var i = 0, l = entitiesConfig.length; i < l; i++){
1236
1203
  var entityConfig = entitiesConfig[i];
1237
1204
  var id = entityConfig.id, removedEntities = entityConfig.removedEntities;
1238
1205
  if (removedEntities == null ? void 0 : removedEntities.length) {
1239
- var _promises;
1240
1206
  var rootEntity = entityMap.get(id);
1241
- (_promises = promises).push.apply(_promises, [].concat(removedEntities.map(function(target) {
1207
+ for(var j = 0, m = removedEntities.length; j < m; j++){
1208
+ var target = removedEntities[j];
1242
1209
  var entityId = target.entityId;
1243
- var context = _this._prefabContextMap.get(rootEntity);
1210
+ var context = this._prefabContextMap.get(rootEntity);
1244
1211
  var targetEntity = context.entityMap.get(entityId);
1245
1212
  if (targetEntity) {
1246
1213
  targetEntity.destroy();
1247
1214
  }
1248
- })));
1215
+ }
1249
1216
  }
1250
- };
1251
- var _this = this;
1252
- var entitiesConfig = this.data.entities;
1253
- var entityMap = this.context.entityMap;
1254
- var promises = [];
1255
- for(var i = 0, l = entitiesConfig.length; i < l; i++)_loop(i);
1256
- return Promise.all(promises);
1217
+ }
1257
1218
  };
1258
1219
  _proto._parsePrefabRemovedComponents = function _parsePrefabRemovedComponents() {
1259
- var _loop = function(i, l) {
1220
+ var entitiesConfig = this.data.entities;
1221
+ var entityMap = this.context.entityMap;
1222
+ var prefabContextMap = this._prefabContextMap;
1223
+ for(var i = 0, l = entitiesConfig.length; i < l; i++){
1260
1224
  var entityConfig = entitiesConfig[i];
1261
1225
  var id = entityConfig.id, removedComponents = entityConfig.removedComponents;
1262
1226
  if (removedComponents == null ? void 0 : removedComponents.length) {
1263
- var _promises;
1264
1227
  var rootEntity = entityMap.get(id);
1265
- (_promises = promises).concat.apply(_promises, [].concat(removedComponents.map(function(target) {
1228
+ for(var j = 0, m = removedComponents.length; j < m; j++){
1229
+ var target = removedComponents[j];
1266
1230
  var componentId = target.componentId;
1267
- var context = _this._prefabContextMap.get(rootEntity);
1231
+ var context = prefabContextMap.get(rootEntity);
1268
1232
  var targetComponent = context.components.get(componentId);
1269
1233
  if (targetComponent) {
1270
1234
  targetComponent.destroy();
1271
1235
  }
1272
- })));
1236
+ }
1273
1237
  }
1274
- };
1275
- var _this = this;
1276
- var entitiesConfig = this.data.entities;
1277
- var entityMap = this.context.entityMap;
1278
- var promises = [];
1279
- for(var i = 0, l = entitiesConfig.length; i < l; i++)_loop(i);
1280
- return Promise.all(promises);
1238
+ }
1281
1239
  };
1282
1240
  _proto._organizeEntities = function _organizeEntities() {
1283
1241
  var _this_context = this.context, rootIds = _this_context.rootIds, strippedIds = _this_context.strippedIds;
1284
1242
  var parentIds = rootIds.concat(strippedIds);
1285
- for(var _iterator = _create_for_of_iterator_helper_loose(parentIds), _step; !(_step = _iterator()).done;){
1286
- var parentId = _step.value;
1287
- this._parseChildren(parentId);
1243
+ for(var i = 0, l = parentIds.length; i < l; i++){
1244
+ this._parseChildren(parentIds[i]);
1288
1245
  }
1289
- for(var i = 0; i < rootIds.length; i++){
1290
- this._handleRootEntity(rootIds[i]);
1246
+ for(var i1 = 0; i1 < rootIds.length; i1++){
1247
+ this._handleRootEntity(rootIds[i1]);
1291
1248
  }
1292
1249
  };
1293
1250
  _proto._getEntityByConfig = function _getEntityByConfig(entityConfig, engine) {
@@ -1360,16 +1317,18 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
1360
1317
  }
1361
1318
  }
1362
1319
  };
1363
- _proto._addComponents = function _addComponents(entity, components, promises) {
1320
+ _proto._addComponents = function _addComponents(entity, components) {
1321
+ var context = this.context;
1322
+ var componentMap = context.components;
1323
+ var componentConfigMap = context.componentConfigMap;
1364
1324
  for(var i = 0, n = components.length; i < n; i++){
1365
1325
  var componentConfig = components[i];
1366
1326
  var key = !componentConfig.refId ? componentConfig.class : componentConfig.refId;
1327
+ var componentId = componentConfig.id;
1367
1328
  var component = entity.addComponent(engineCore.Loader.getClass(key));
1368
- this.context.addComponent(componentConfig.id, component);
1369
- var promise = this._reflectionParser.parsePropsAndMethods(component, componentConfig);
1370
- promises.push(promise);
1329
+ componentMap.set(componentId, component);
1330
+ componentConfigMap.set(componentId, componentConfig);
1371
1331
  }
1372
- return promises;
1373
1332
  };
1374
1333
  _proto._applyEntityData = function _applyEntityData(entity, entityConfig) {
1375
1334
  if (entityConfig === void 0) entityConfig = {};
@@ -1411,6 +1370,20 @@ function _create_for_of_iterator_helper_loose(o, allowArrayLike) {
1411
1370
  this._generateInstanceContext(child, context, childPath);
1412
1371
  }
1413
1372
  };
1373
+ _proto._parseComponentsPropsAndMethods = function _parseComponentsPropsAndMethods() {
1374
+ var context = this.context;
1375
+ var componentConfigMap = context.componentConfigMap;
1376
+ var reflectionParser = this._reflectionParser;
1377
+ var promises = [];
1378
+ for(var _iterator = _create_for_of_iterator_helper_loose(context.components), _step; !(_step = _iterator()).done;){
1379
+ var _step_value = _step.value, componentId = _step_value[0], component = _step_value[1];
1380
+ var componentConfig = componentConfigMap.get(componentId);
1381
+ if (componentConfig) {
1382
+ promises.push(reflectionParser.parsePropsAndMethods(component, componentConfig));
1383
+ }
1384
+ }
1385
+ return Promise.all(promises);
1386
+ };
1414
1387
  return HierarchyParser;
1415
1388
  }();
1416
1389
 
@@ -5446,7 +5419,7 @@ var PrefabLoader = /*#__PURE__*/ function(Loader) {
5446
5419
  type: "json"
5447
5420
  })).then(function(data) {
5448
5421
  PrefabParser.parse(engine, item.url, data).then(resolve).catch(reject);
5449
- });
5422
+ }, reject);
5450
5423
  });
5451
5424
  };
5452
5425
  return PrefabLoader;