@galacean/engine-loader 1.1.0-beta.4 → 1.1.0-beta.6

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
@@ -527,12 +527,12 @@ function _construct(Parent, args, Class) {
527
527
  }
528
528
 
529
529
  var ReflectionParser = /*#__PURE__*/ function() {
530
- function ReflectionParser() {}
531
- ReflectionParser.registerCustomParseComponent = function registerCustomParseComponent(componentType, handle) {
532
- this.customParseComponentHandles[componentType] = handle;
533
- };
534
- ReflectionParser.parseEntity = function parseEntity(entityConfig, engine) {
535
- return ReflectionParser.getEntityByConfig(entityConfig, engine).then(function(entity) {
530
+ function ReflectionParser(_context) {
531
+ this._context = _context;
532
+ }
533
+ var _proto = ReflectionParser.prototype;
534
+ _proto.parseEntity = function parseEntity(entityConfig) {
535
+ return this._getEntityByConfig(entityConfig).then(function(entity) {
536
536
  var _entityConfig_isActive;
537
537
  entity.isActive = (_entityConfig_isActive = entityConfig.isActive) != null ? _entityConfig_isActive : true;
538
538
  var position = entityConfig.position, rotation = entityConfig.rotation, scale = entityConfig.scale;
@@ -542,72 +542,29 @@ var ReflectionParser = /*#__PURE__*/ function() {
542
542
  return entity;
543
543
  });
544
544
  };
545
- ReflectionParser.getEntityByConfig = function getEntityByConfig(entityConfig, engine) {
546
- // @ts-ignore
547
- var assetRefId = entityConfig.assetRefId;
548
- if (assetRefId) {
549
- return engine.resourceManager// @ts-ignore
550
- .getResourceByRef({
551
- refId: assetRefId,
552
- key: entityConfig.key,
553
- isClone: entityConfig.isClone
554
- }).then(function(entity) {
555
- entity.name = entityConfig.name;
556
- return entity;
557
- });
558
- } else {
559
- var entity = new engineCore.Entity(engine, entityConfig.name);
560
- return Promise.resolve(entity);
561
- }
562
- };
563
- ReflectionParser.parseClassObject = function parseClassObject(item, engine, resourceManager) {
564
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
545
+ _proto.parseClassObject = function parseClassObject(item) {
565
546
  var Class = engineCore.Loader.getClass(item.class);
566
547
  var _item_constructParams;
567
548
  var params = (_item_constructParams = item.constructParams) != null ? _item_constructParams : [];
568
549
  var instance = _construct(Class, [].concat(params));
569
- return this.parsePropsAndMethods(instance, item, engine, resourceManager);
570
- };
571
- ReflectionParser.parseBasicType = function parseBasicType(value, engine, resourceManager) {
572
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
573
- var _this = this;
574
- if (Array.isArray(value)) {
575
- return Promise.all(value.map(function(item) {
576
- return _this.parseBasicType(item, engine, resourceManager);
577
- }));
578
- } else if (typeof value === "object" && value != null) {
579
- if (this._isClass(value)) {
580
- // class object
581
- return this.parseClassObject(value, engine, resourceManager);
582
- } else if (this._isRef(value)) {
583
- // reference object
584
- return resourceManager.getResourceByRef(value);
585
- } else {
586
- // basic type
587
- return Promise.resolve(value);
588
- }
589
- } else {
590
- return Promise.resolve(value);
591
- }
550
+ return this.parsePropsAndMethods(instance, item);
592
551
  };
593
- ReflectionParser.parsePropsAndMethods = function parsePropsAndMethods(instance, item, engine, resourceManager) {
594
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
595
- var _this = this;
552
+ _proto.parsePropsAndMethods = function parsePropsAndMethods(instance, item) {
596
553
  var promises = [];
597
554
  if (item.methods) {
598
555
  for(var methodName in item.methods){
599
556
  var methodParams = item.methods[methodName];
600
557
  for(var i = 0, count = methodParams.length; i < count; i++){
601
558
  var params = methodParams[i];
602
- var promise = this.parseMethod(instance, methodName, params, engine, resourceManager);
559
+ var promise = this.parseMethod(instance, methodName, params);
603
560
  promises.push(promise);
604
561
  }
605
562
  }
606
563
  }
607
564
  if (item.props) {
608
- var _this1 = this, _loop = function(key) {
565
+ var _this = this, _loop = function(key) {
609
566
  var value = item.props[key];
610
- var promise = _this1.parseBasicType(value, engine).then(function(v) {
567
+ var promise = _this.parseBasicType(value).then(function(v) {
611
568
  return instance[key] = v;
612
569
  });
613
570
  promises.push(promise);
@@ -615,27 +572,76 @@ var ReflectionParser = /*#__PURE__*/ function() {
615
572
  for(var key in item.props)_loop(key);
616
573
  }
617
574
  return Promise.all(promises).then(function() {
618
- var handle = _this.customParseComponentHandles[instance.constructor.name];
619
- if (handle) return handle(instance, item, engine);
575
+ var handle = ReflectionParser.customParseComponentHandles[instance.constructor.name];
576
+ if (handle) return handle(instance, item);
620
577
  else return instance;
621
578
  });
622
579
  };
623
- ReflectionParser.parseMethod = function parseMethod(instance, methodName, methodParams, engine, resourceManager) {
624
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
580
+ _proto.parseMethod = function parseMethod(instance, methodName, methodParams) {
625
581
  var _this = this;
626
582
  return Promise.all(methodParams.map(function(param) {
627
- return _this.parseBasicType(param, engine, resourceManager);
583
+ return _this.parseBasicType(param);
628
584
  })).then(function(result) {
629
585
  var _instance;
630
586
  return (_instance = instance)[methodName].apply(_instance, [].concat(result));
631
587
  });
632
588
  };
589
+ _proto.parseBasicType = function parseBasicType(value) {
590
+ var _this = this;
591
+ if (Array.isArray(value)) {
592
+ return Promise.all(value.map(function(item) {
593
+ return _this.parseBasicType(item);
594
+ }));
595
+ } else if (typeof value === "object" && value != null) {
596
+ if (ReflectionParser._isClass(value)) {
597
+ // class object
598
+ return this.parseClassObject(value);
599
+ } else if (ReflectionParser._isAssetRef(value)) {
600
+ // reference object
601
+ // @ts-ignore
602
+ return this._context.resourceManager.getResourceByRef(value);
603
+ } else if (ReflectionParser._isEntityRef(value)) {
604
+ // entity reference
605
+ return Promise.resolve(this._context.entityMap.get(value.entityId));
606
+ } else {
607
+ // basic type
608
+ return Promise.resolve(value);
609
+ }
610
+ } else {
611
+ return Promise.resolve(value);
612
+ }
613
+ };
614
+ _proto._getEntityByConfig = function _getEntityByConfig(entityConfig) {
615
+ // @ts-ignore
616
+ var assetRefId = entityConfig.assetRefId;
617
+ var engine = this._context.engine;
618
+ if (assetRefId) {
619
+ return engine.resourceManager// @ts-ignore
620
+ .getResourceByRef({
621
+ refId: assetRefId,
622
+ key: entityConfig.key,
623
+ isClone: entityConfig.isClone
624
+ }).then(function(entity) {
625
+ entity.name = entityConfig.name;
626
+ return entity;
627
+ });
628
+ } else {
629
+ var entity = new engineCore.Entity(engine, entityConfig.name);
630
+ return Promise.resolve(entity);
631
+ }
632
+ };
633
+ ReflectionParser.registerCustomParseComponent = function registerCustomParseComponent(componentType, handle) {
634
+ this.customParseComponentHandles[componentType] = handle;
635
+ };
633
636
  ReflectionParser._isClass = function _isClass(value) {
634
637
  return value["class"] != undefined;
635
638
  };
636
- ReflectionParser._isRef = function _isRef(value) {
639
+ ReflectionParser._isAssetRef = function _isAssetRef(value) {
637
640
  return value["refId"] != undefined;
638
641
  };
642
+ ReflectionParser._isEntityRef = function _isEntityRef(value) {
643
+ return value["entityId"] != undefined;
644
+ };
639
645
  return ReflectionParser;
640
646
  }();
641
647
  (function() {
@@ -903,6 +909,8 @@ var SceneParserContext = /*#__PURE__*/ function() {
903
909
  this.assets = new Map();
904
910
  this.entityConfigMap = new Map();
905
911
  this.rootIds = [];
912
+ this.engine = scene.engine;
913
+ this.resourceManager = scene.engine.resourceManager;
906
914
  }
907
915
  var _proto = SceneParserContext.prototype;
908
916
  _proto.destroy = function destroy() {
@@ -919,7 +927,7 @@ var SceneParserContext = /*#__PURE__*/ function() {
919
927
  function SceneParser(context) {
920
928
  var _this = this;
921
929
  this.context = context;
922
- this._engine = this.context.scene.engine;
930
+ this._engine = context.scene.engine;
923
931
  this._organizeEntities = this._organizeEntities.bind(this);
924
932
  this._parseComponents = this._parseComponents.bind(this);
925
933
  this._clearAndResolveScene = this._clearAndResolveScene.bind(this);
@@ -927,22 +935,24 @@ var SceneParserContext = /*#__PURE__*/ function() {
927
935
  _this._reject = reject;
928
936
  _this._resolve = resolve;
929
937
  });
938
+ this._reflectionParser = new ReflectionParser(context);
930
939
  }
931
940
  var _proto = SceneParser.prototype;
932
941
  /** start parse the scene */ _proto.start = function start() {
933
942
  this._parseEntities().then(this._organizeEntities).then(this._parseComponents).then(this._clearAndResolveScene).then(this._resolve).catch(this._reject);
934
943
  };
935
944
  _proto._parseEntities = function _parseEntities() {
945
+ var _this = this;
936
946
  var entitiesConfig = this.context.originalData.entities;
937
947
  var entityConfigMap = this.context.entityConfigMap;
938
948
  var entitiesMap = this.context.entityMap;
939
949
  var rootIds = this.context.rootIds;
940
- var engine = this._engine;
950
+ this._engine;
941
951
  var promises = entitiesConfig.map(function(entityConfig) {
942
952
  entityConfigMap.set(entityConfig.id, entityConfig);
943
953
  // record root entities
944
954
  if (!entityConfig.parent) rootIds.push(entityConfig.id);
945
- return ReflectionParser.parseEntity(entityConfig, engine);
955
+ return _this._reflectionParser.parseEntity(entityConfig);
946
956
  });
947
957
  return Promise.all(promises).then(function(entities) {
948
958
  for(var i = 0, l = entities.length; i < l; i++){
@@ -980,7 +990,7 @@ var SceneParserContext = /*#__PURE__*/ function() {
980
990
  component = entity.getComponent(engineCore.Loader.getClass(key));
981
991
  }
982
992
  component = component || entity.addComponent(engineCore.Loader.getClass(key));
983
- var promise = ReflectionParser.parsePropsAndMethods(component, componentConfig, entity.engine);
993
+ var promise = this._reflectionParser.parsePropsAndMethods(component, componentConfig);
984
994
  promises.push(promise);
985
995
  }
986
996
  }
@@ -4351,8 +4361,7 @@ exports.GLTFTextureParser = (_GLTFTextureParser = /*#__PURE__*/ function(GLTFPar
4351
4361
  mipmap: (_samplerInfo = samplerInfo) == null ? void 0 : _samplerInfo.mipmap
4352
4362
  }
4353
4363
  }).then(function(texture) {
4354
- var _texture;
4355
- (_texture = texture).name || (_texture.name = textureName || imageName || "texture_" + index);
4364
+ texture.name = textureName || imageName || texture.name || "texture_" + index;
4356
4365
  useSampler && GLTFUtils.parseSampler(texture, samplerInfo);
4357
4366
  return texture;
4358
4367
  });
@@ -5459,6 +5468,39 @@ TextureCubeLoader = __decorate([
5459
5468
  ])
5460
5469
  ], TextureCubeLoader);
5461
5470
 
5471
+ var ProjectLoader = /*#__PURE__*/ function(Loader1) {
5472
+ _inherits(ProjectLoader, Loader1);
5473
+ function ProjectLoader() {
5474
+ return Loader1.apply(this, arguments);
5475
+ }
5476
+ var _proto = ProjectLoader.prototype;
5477
+ _proto.load = function load(item, resourceManager) {
5478
+ var _this = this;
5479
+ var engine = resourceManager.engine;
5480
+ return new engineCore.AssetPromise(function(resolve, reject) {
5481
+ _this.request(item.url, {
5482
+ type: "json"
5483
+ }).then(function(data) {
5484
+ // @ts-ignore
5485
+ engine.resourceManager.initVirtualResources(data.files);
5486
+ return resourceManager.load({
5487
+ type: engineCore.AssetType.Scene,
5488
+ url: data.scene
5489
+ }).then(function(scene) {
5490
+ engine.sceneManager.activeScene = scene;
5491
+ resolve();
5492
+ });
5493
+ }).catch(reject);
5494
+ });
5495
+ };
5496
+ return ProjectLoader;
5497
+ }(engineCore.Loader);
5498
+ ProjectLoader = __decorate([
5499
+ engineCore.resourceLoader(engineCore.AssetType.Project, [
5500
+ "proj"
5501
+ ], true)
5502
+ ], ProjectLoader);
5503
+
5462
5504
  var SceneLoader = /*#__PURE__*/ function(Loader1) {
5463
5505
  _inherits(SceneLoader, Loader1);
5464
5506
  function SceneLoader() {