@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 +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/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
|
-
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
-
(
|
|
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 =
|
|
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
|
|
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
|
-
(
|
|
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 =
|
|
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
|
|
1286
|
-
|
|
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
|
|
1290
|
-
this._handleRootEntity(rootIds[
|
|
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
|
|
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
|
-
|
|
1369
|
-
|
|
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;
|