@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.
@@ -528,12 +528,12 @@ function _construct(Parent, args, Class) {
528
528
  }
529
529
 
530
530
  var ReflectionParser = /*#__PURE__*/ function() {
531
- function ReflectionParser() {}
532
- ReflectionParser.registerCustomParseComponent = function registerCustomParseComponent(componentType, handle) {
533
- this.customParseComponentHandles[componentType] = handle;
534
- };
535
- ReflectionParser.parseEntity = function parseEntity(entityConfig, engine) {
536
- return ReflectionParser.getEntityByConfig(entityConfig, engine).then(function(entity) {
531
+ function ReflectionParser(_context) {
532
+ this._context = _context;
533
+ }
534
+ var _proto = ReflectionParser.prototype;
535
+ _proto.parseEntity = function parseEntity(entityConfig) {
536
+ return this._getEntityByConfig(entityConfig).then(function(entity) {
537
537
  var _entityConfig_isActive;
538
538
  entity.isActive = (_entityConfig_isActive = entityConfig.isActive) != null ? _entityConfig_isActive : true;
539
539
  var position = entityConfig.position, rotation = entityConfig.rotation, scale = entityConfig.scale;
@@ -543,72 +543,29 @@ var ReflectionParser = /*#__PURE__*/ function() {
543
543
  return entity;
544
544
  });
545
545
  };
546
- ReflectionParser.getEntityByConfig = function getEntityByConfig(entityConfig, engine) {
547
- // @ts-ignore
548
- var assetRefId = entityConfig.assetRefId;
549
- if (assetRefId) {
550
- return engine.resourceManager// @ts-ignore
551
- .getResourceByRef({
552
- refId: assetRefId,
553
- key: entityConfig.key,
554
- isClone: entityConfig.isClone
555
- }).then(function(entity) {
556
- entity.name = entityConfig.name;
557
- return entity;
558
- });
559
- } else {
560
- var entity = new miniprogram.Entity(engine, entityConfig.name);
561
- return Promise.resolve(entity);
562
- }
563
- };
564
- ReflectionParser.parseClassObject = function parseClassObject(item, engine, resourceManager) {
565
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
546
+ _proto.parseClassObject = function parseClassObject(item) {
566
547
  var Class = miniprogram.Loader.getClass(item.class);
567
548
  var _item_constructParams;
568
549
  var params = (_item_constructParams = item.constructParams) != null ? _item_constructParams : [];
569
550
  var instance = _construct(Class, [].concat(params));
570
- return this.parsePropsAndMethods(instance, item, engine, resourceManager);
571
- };
572
- ReflectionParser.parseBasicType = function parseBasicType(value, engine, resourceManager) {
573
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
574
- var _this = this;
575
- if (Array.isArray(value)) {
576
- return Promise.all(value.map(function(item) {
577
- return _this.parseBasicType(item, engine, resourceManager);
578
- }));
579
- } else if (typeof value === "object" && value != null) {
580
- if (this._isClass(value)) {
581
- // class object
582
- return this.parseClassObject(value, engine, resourceManager);
583
- } else if (this._isRef(value)) {
584
- // reference object
585
- return resourceManager.getResourceByRef(value);
586
- } else {
587
- // basic type
588
- return Promise.resolve(value);
589
- }
590
- } else {
591
- return Promise.resolve(value);
592
- }
551
+ return this.parsePropsAndMethods(instance, item);
593
552
  };
594
- ReflectionParser.parsePropsAndMethods = function parsePropsAndMethods(instance, item, engine, resourceManager) {
595
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
596
- var _this = this;
553
+ _proto.parsePropsAndMethods = function parsePropsAndMethods(instance, item) {
597
554
  var promises = [];
598
555
  if (item.methods) {
599
556
  for(var methodName in item.methods){
600
557
  var methodParams = item.methods[methodName];
601
558
  for(var i = 0, count = methodParams.length; i < count; i++){
602
559
  var params = methodParams[i];
603
- var promise = this.parseMethod(instance, methodName, params, engine, resourceManager);
560
+ var promise = this.parseMethod(instance, methodName, params);
604
561
  promises.push(promise);
605
562
  }
606
563
  }
607
564
  }
608
565
  if (item.props) {
609
- var _this1 = this, _loop = function(key) {
566
+ var _this = this, _loop = function(key) {
610
567
  var value = item.props[key];
611
- var promise = _this1.parseBasicType(value, engine).then(function(v) {
568
+ var promise = _this.parseBasicType(value).then(function(v) {
612
569
  return instance[key] = v;
613
570
  });
614
571
  promises.push(promise);
@@ -616,27 +573,76 @@ var ReflectionParser = /*#__PURE__*/ function() {
616
573
  for(var key in item.props)_loop(key);
617
574
  }
618
575
  return Promise.all(promises).then(function() {
619
- var handle = _this.customParseComponentHandles[instance.constructor.name];
620
- if (handle) return handle(instance, item, engine);
576
+ var handle = ReflectionParser.customParseComponentHandles[instance.constructor.name];
577
+ if (handle) return handle(instance, item);
621
578
  else return instance;
622
579
  });
623
580
  };
624
- ReflectionParser.parseMethod = function parseMethod(instance, methodName, methodParams, engine, resourceManager) {
625
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
581
+ _proto.parseMethod = function parseMethod(instance, methodName, methodParams) {
626
582
  var _this = this;
627
583
  return Promise.all(methodParams.map(function(param) {
628
- return _this.parseBasicType(param, engine, resourceManager);
584
+ return _this.parseBasicType(param);
629
585
  })).then(function(result) {
630
586
  var _instance;
631
587
  return (_instance = instance)[methodName].apply(_instance, [].concat(result));
632
588
  });
633
589
  };
590
+ _proto.parseBasicType = function parseBasicType(value) {
591
+ var _this = this;
592
+ if (Array.isArray(value)) {
593
+ return Promise.all(value.map(function(item) {
594
+ return _this.parseBasicType(item);
595
+ }));
596
+ } else if (typeof value === "object" && value != null) {
597
+ if (ReflectionParser._isClass(value)) {
598
+ // class object
599
+ return this.parseClassObject(value);
600
+ } else if (ReflectionParser._isAssetRef(value)) {
601
+ // reference object
602
+ // @ts-ignore
603
+ return this._context.resourceManager.getResourceByRef(value);
604
+ } else if (ReflectionParser._isEntityRef(value)) {
605
+ // entity reference
606
+ return Promise.resolve(this._context.entityMap.get(value.entityId));
607
+ } else {
608
+ // basic type
609
+ return Promise.resolve(value);
610
+ }
611
+ } else {
612
+ return Promise.resolve(value);
613
+ }
614
+ };
615
+ _proto._getEntityByConfig = function _getEntityByConfig(entityConfig) {
616
+ // @ts-ignore
617
+ var assetRefId = entityConfig.assetRefId;
618
+ var engine = this._context.engine;
619
+ if (assetRefId) {
620
+ return engine.resourceManager// @ts-ignore
621
+ .getResourceByRef({
622
+ refId: assetRefId,
623
+ key: entityConfig.key,
624
+ isClone: entityConfig.isClone
625
+ }).then(function(entity) {
626
+ entity.name = entityConfig.name;
627
+ return entity;
628
+ });
629
+ } else {
630
+ var entity = new miniprogram.Entity(engine, entityConfig.name);
631
+ return Promise.resolve(entity);
632
+ }
633
+ };
634
+ ReflectionParser.registerCustomParseComponent = function registerCustomParseComponent(componentType, handle) {
635
+ this.customParseComponentHandles[componentType] = handle;
636
+ };
634
637
  ReflectionParser._isClass = function _isClass(value) {
635
638
  return value["class"] != undefined;
636
639
  };
637
- ReflectionParser._isRef = function _isRef(value) {
640
+ ReflectionParser._isAssetRef = function _isAssetRef(value) {
638
641
  return value["refId"] != undefined;
639
642
  };
643
+ ReflectionParser._isEntityRef = function _isEntityRef(value) {
644
+ return value["entityId"] != undefined;
645
+ };
640
646
  return ReflectionParser;
641
647
  }();
642
648
  (function() {
@@ -904,6 +910,8 @@ var SceneParserContext = /*#__PURE__*/ function() {
904
910
  this.assets = new Map();
905
911
  this.entityConfigMap = new Map();
906
912
  this.rootIds = [];
913
+ this.engine = scene.engine;
914
+ this.resourceManager = scene.engine.resourceManager;
907
915
  }
908
916
  var _proto = SceneParserContext.prototype;
909
917
  _proto.destroy = function destroy() {
@@ -920,7 +928,7 @@ var SceneParserContext = /*#__PURE__*/ function() {
920
928
  function SceneParser(context) {
921
929
  var _this = this;
922
930
  this.context = context;
923
- this._engine = this.context.scene.engine;
931
+ this._engine = context.scene.engine;
924
932
  this._organizeEntities = this._organizeEntities.bind(this);
925
933
  this._parseComponents = this._parseComponents.bind(this);
926
934
  this._clearAndResolveScene = this._clearAndResolveScene.bind(this);
@@ -928,22 +936,24 @@ var SceneParserContext = /*#__PURE__*/ function() {
928
936
  _this._reject = reject;
929
937
  _this._resolve = resolve;
930
938
  });
939
+ this._reflectionParser = new ReflectionParser(context);
931
940
  }
932
941
  var _proto = SceneParser.prototype;
933
942
  /** start parse the scene */ _proto.start = function start() {
934
943
  this._parseEntities().then(this._organizeEntities).then(this._parseComponents).then(this._clearAndResolveScene).then(this._resolve).catch(this._reject);
935
944
  };
936
945
  _proto._parseEntities = function _parseEntities() {
946
+ var _this = this;
937
947
  var entitiesConfig = this.context.originalData.entities;
938
948
  var entityConfigMap = this.context.entityConfigMap;
939
949
  var entitiesMap = this.context.entityMap;
940
950
  var rootIds = this.context.rootIds;
941
- var engine = this._engine;
951
+ this._engine;
942
952
  var promises = entitiesConfig.map(function(entityConfig) {
943
953
  entityConfigMap.set(entityConfig.id, entityConfig);
944
954
  // record root entities
945
955
  if (!entityConfig.parent) rootIds.push(entityConfig.id);
946
- return ReflectionParser.parseEntity(entityConfig, engine);
956
+ return _this._reflectionParser.parseEntity(entityConfig);
947
957
  });
948
958
  return Promise.all(promises).then(function(entities) {
949
959
  for(var i = 0, l = entities.length; i < l; i++){
@@ -981,7 +991,7 @@ var SceneParserContext = /*#__PURE__*/ function() {
981
991
  component = entity.getComponent(miniprogram.Loader.getClass(key));
982
992
  }
983
993
  component = component || entity.addComponent(miniprogram.Loader.getClass(key));
984
- var promise = ReflectionParser.parsePropsAndMethods(component, componentConfig, entity.engine);
994
+ var promise = this._reflectionParser.parsePropsAndMethods(component, componentConfig);
985
995
  promises.push(promise);
986
996
  }
987
997
  }
@@ -4352,8 +4362,7 @@ exports.GLTFTextureParser = (_GLTFTextureParser = /*#__PURE__*/ function(GLTFPar
4352
4362
  mipmap: (_samplerInfo = samplerInfo) == null ? void 0 : _samplerInfo.mipmap
4353
4363
  }
4354
4364
  }).then(function(texture) {
4355
- var _texture;
4356
- (_texture = texture).name || (_texture.name = textureName || imageName || "texture_" + index);
4365
+ texture.name = textureName || imageName || texture.name || "texture_" + index;
4357
4366
  useSampler && GLTFUtils.parseSampler(texture, samplerInfo);
4358
4367
  return texture;
4359
4368
  });
@@ -5460,6 +5469,39 @@ TextureCubeLoader = __decorate([
5460
5469
  ])
5461
5470
  ], TextureCubeLoader);
5462
5471
 
5472
+ var ProjectLoader = /*#__PURE__*/ function(Loader1) {
5473
+ _inherits(ProjectLoader, Loader1);
5474
+ function ProjectLoader() {
5475
+ return Loader1.apply(this, arguments);
5476
+ }
5477
+ var _proto = ProjectLoader.prototype;
5478
+ _proto.load = function load(item, resourceManager) {
5479
+ var _this = this;
5480
+ var engine = resourceManager.engine;
5481
+ return new miniprogram.AssetPromise(function(resolve, reject) {
5482
+ _this.request(item.url, {
5483
+ type: "json"
5484
+ }).then(function(data) {
5485
+ // @ts-ignore
5486
+ engine.resourceManager.initVirtualResources(data.files);
5487
+ return resourceManager.load({
5488
+ type: miniprogram.AssetType.Scene,
5489
+ url: data.scene
5490
+ }).then(function(scene) {
5491
+ engine.sceneManager.activeScene = scene;
5492
+ resolve();
5493
+ });
5494
+ }).catch(reject);
5495
+ });
5496
+ };
5497
+ return ProjectLoader;
5498
+ }(miniprogram.Loader);
5499
+ ProjectLoader = __decorate([
5500
+ miniprogram.resourceLoader(miniprogram.AssetType.Project, [
5501
+ "proj"
5502
+ ], true)
5503
+ ], ProjectLoader);
5504
+
5463
5505
  var SceneLoader = /*#__PURE__*/ function(Loader1) {
5464
5506
  _inherits(SceneLoader, Loader1);
5465
5507
  function SceneLoader() {
package/dist/module.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Utils, ModelMesh, BlendShape, Texture2D, Entity, Loader, Transform, Animator, DirectLight, Camera, MeshRenderer, ParticleRenderer, PointLight, SpotLight, Script, SpriteMask, SpriteRenderer, TextRenderer, AnimationClip, AnimationEvent, AnimationRefCurve, Keyframe, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, Scene, resourceLoader, AssetPromise, AssetType, AnimatorController, AnimatorControllerLayer, AnimatorStateMachine, AnimatorStateTransition, TextureCube, TextureFilterMode, TextureCubeFace, AmbientLight, DiffuseMode, Font, ReferResource, IndexFormat, VertexElementFormat, GLCapabilityType, Logger, TextureFormat, request, ContentRestorer, InterpolationType, SkinnedMeshRenderer, PBRMaterial, BlinnPhongMaterial, PBRSpecularMaterial, TextureCoordinate, RenderFace, VertexElement, Buffer, BufferBindFlag, BufferUsage, Skin, TextureWrapMode as TextureWrapMode$1, Material, Shader, SpriteAtlas, Sprite, BackgroundMode, UnlitMaterial } from '@galacean/engine-core';
1
+ import { Utils, ModelMesh, BlendShape, Texture2D, Loader, Entity, Transform, Animator, DirectLight, Camera, MeshRenderer, ParticleRenderer, PointLight, SpotLight, Script, SpriteMask, SpriteRenderer, TextRenderer, AnimationClip, AnimationEvent, AnimationRefCurve, Keyframe, AnimationQuaternionCurve, AnimationColorCurve, AnimationVector4Curve, AnimationVector3Curve, AnimationVector2Curve, AnimationFloatArrayCurve, AnimationArrayCurve, AnimationFloatCurve, Scene, resourceLoader, AssetPromise, AssetType, AnimatorController, AnimatorControllerLayer, AnimatorStateMachine, AnimatorStateTransition, TextureCube, TextureFilterMode, TextureCubeFace, AmbientLight, DiffuseMode, Font, ReferResource, IndexFormat, VertexElementFormat, GLCapabilityType, Logger, TextureFormat, request, ContentRestorer, InterpolationType, SkinnedMeshRenderer, PBRMaterial, BlinnPhongMaterial, PBRSpecularMaterial, TextureCoordinate, RenderFace, VertexElement, Buffer, BufferBindFlag, BufferUsage, Skin, TextureWrapMode as TextureWrapMode$1, Material, Shader, SpriteAtlas, Sprite, BackgroundMode, UnlitMaterial } from '@galacean/engine-core';
2
2
  import { Color, Vector4, Vector3, Vector2, Quaternion, SphericalHarmonics3, MathUtil, BoundingBox, Matrix, Rect } from '@galacean/engine-math';
3
3
  import { GLCompressedTextureInternalFormat } from '@galacean/engine-rhi-webgl';
4
4
  import { DRACODecoder } from '@galacean/engine-draco';
@@ -523,12 +523,12 @@ function _construct(Parent, args, Class) {
523
523
  }
524
524
 
525
525
  var ReflectionParser = /*#__PURE__*/ function() {
526
- function ReflectionParser() {}
527
- ReflectionParser.registerCustomParseComponent = function registerCustomParseComponent(componentType, handle) {
528
- this.customParseComponentHandles[componentType] = handle;
529
- };
530
- ReflectionParser.parseEntity = function parseEntity(entityConfig, engine) {
531
- return ReflectionParser.getEntityByConfig(entityConfig, engine).then(function(entity) {
526
+ function ReflectionParser(_context) {
527
+ this._context = _context;
528
+ }
529
+ var _proto = ReflectionParser.prototype;
530
+ _proto.parseEntity = function parseEntity(entityConfig) {
531
+ return this._getEntityByConfig(entityConfig).then(function(entity) {
532
532
  var _entityConfig_isActive;
533
533
  entity.isActive = (_entityConfig_isActive = entityConfig.isActive) != null ? _entityConfig_isActive : true;
534
534
  var position = entityConfig.position, rotation = entityConfig.rotation, scale = entityConfig.scale;
@@ -538,72 +538,29 @@ var ReflectionParser = /*#__PURE__*/ function() {
538
538
  return entity;
539
539
  });
540
540
  };
541
- ReflectionParser.getEntityByConfig = function getEntityByConfig(entityConfig, engine) {
542
- // @ts-ignore
543
- var assetRefId = entityConfig.assetRefId;
544
- if (assetRefId) {
545
- return engine.resourceManager// @ts-ignore
546
- .getResourceByRef({
547
- refId: assetRefId,
548
- key: entityConfig.key,
549
- isClone: entityConfig.isClone
550
- }).then(function(entity) {
551
- entity.name = entityConfig.name;
552
- return entity;
553
- });
554
- } else {
555
- var entity = new Entity(engine, entityConfig.name);
556
- return Promise.resolve(entity);
557
- }
558
- };
559
- ReflectionParser.parseClassObject = function parseClassObject(item, engine, resourceManager) {
560
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
541
+ _proto.parseClassObject = function parseClassObject(item) {
561
542
  var Class = Loader.getClass(item.class);
562
543
  var _item_constructParams;
563
544
  var params = (_item_constructParams = item.constructParams) != null ? _item_constructParams : [];
564
545
  var instance = _construct(Class, [].concat(params));
565
- return this.parsePropsAndMethods(instance, item, engine, resourceManager);
566
- };
567
- ReflectionParser.parseBasicType = function parseBasicType(value, engine, resourceManager) {
568
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
569
- var _this = this;
570
- if (Array.isArray(value)) {
571
- return Promise.all(value.map(function(item) {
572
- return _this.parseBasicType(item, engine, resourceManager);
573
- }));
574
- } else if (typeof value === "object" && value != null) {
575
- if (this._isClass(value)) {
576
- // class object
577
- return this.parseClassObject(value, engine, resourceManager);
578
- } else if (this._isRef(value)) {
579
- // reference object
580
- return resourceManager.getResourceByRef(value);
581
- } else {
582
- // basic type
583
- return Promise.resolve(value);
584
- }
585
- } else {
586
- return Promise.resolve(value);
587
- }
546
+ return this.parsePropsAndMethods(instance, item);
588
547
  };
589
- ReflectionParser.parsePropsAndMethods = function parsePropsAndMethods(instance, item, engine, resourceManager) {
590
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
591
- var _this = this;
548
+ _proto.parsePropsAndMethods = function parsePropsAndMethods(instance, item) {
592
549
  var promises = [];
593
550
  if (item.methods) {
594
551
  for(var methodName in item.methods){
595
552
  var methodParams = item.methods[methodName];
596
553
  for(var i = 0, count = methodParams.length; i < count; i++){
597
554
  var params = methodParams[i];
598
- var promise = this.parseMethod(instance, methodName, params, engine, resourceManager);
555
+ var promise = this.parseMethod(instance, methodName, params);
599
556
  promises.push(promise);
600
557
  }
601
558
  }
602
559
  }
603
560
  if (item.props) {
604
- var _this1 = this, _loop = function(key) {
561
+ var _this = this, _loop = function(key) {
605
562
  var value = item.props[key];
606
- var promise = _this1.parseBasicType(value, engine).then(function(v) {
563
+ var promise = _this.parseBasicType(value).then(function(v) {
607
564
  return instance[key] = v;
608
565
  });
609
566
  promises.push(promise);
@@ -611,27 +568,76 @@ var ReflectionParser = /*#__PURE__*/ function() {
611
568
  for(var key in item.props)_loop(key);
612
569
  }
613
570
  return Promise.all(promises).then(function() {
614
- var handle = _this.customParseComponentHandles[instance.constructor.name];
615
- if (handle) return handle(instance, item, engine);
571
+ var handle = ReflectionParser.customParseComponentHandles[instance.constructor.name];
572
+ if (handle) return handle(instance, item);
616
573
  else return instance;
617
574
  });
618
575
  };
619
- ReflectionParser.parseMethod = function parseMethod(instance, methodName, methodParams, engine, resourceManager) {
620
- if (resourceManager === void 0) resourceManager = engine.resourceManager;
576
+ _proto.parseMethod = function parseMethod(instance, methodName, methodParams) {
621
577
  var _this = this;
622
578
  return Promise.all(methodParams.map(function(param) {
623
- return _this.parseBasicType(param, engine, resourceManager);
579
+ return _this.parseBasicType(param);
624
580
  })).then(function(result) {
625
581
  var _instance;
626
582
  return (_instance = instance)[methodName].apply(_instance, [].concat(result));
627
583
  });
628
584
  };
585
+ _proto.parseBasicType = function parseBasicType(value) {
586
+ var _this = this;
587
+ if (Array.isArray(value)) {
588
+ return Promise.all(value.map(function(item) {
589
+ return _this.parseBasicType(item);
590
+ }));
591
+ } else if (typeof value === "object" && value != null) {
592
+ if (ReflectionParser._isClass(value)) {
593
+ // class object
594
+ return this.parseClassObject(value);
595
+ } else if (ReflectionParser._isAssetRef(value)) {
596
+ // reference object
597
+ // @ts-ignore
598
+ return this._context.resourceManager.getResourceByRef(value);
599
+ } else if (ReflectionParser._isEntityRef(value)) {
600
+ // entity reference
601
+ return Promise.resolve(this._context.entityMap.get(value.entityId));
602
+ } else {
603
+ // basic type
604
+ return Promise.resolve(value);
605
+ }
606
+ } else {
607
+ return Promise.resolve(value);
608
+ }
609
+ };
610
+ _proto._getEntityByConfig = function _getEntityByConfig(entityConfig) {
611
+ // @ts-ignore
612
+ var assetRefId = entityConfig.assetRefId;
613
+ var engine = this._context.engine;
614
+ if (assetRefId) {
615
+ return engine.resourceManager// @ts-ignore
616
+ .getResourceByRef({
617
+ refId: assetRefId,
618
+ key: entityConfig.key,
619
+ isClone: entityConfig.isClone
620
+ }).then(function(entity) {
621
+ entity.name = entityConfig.name;
622
+ return entity;
623
+ });
624
+ } else {
625
+ var entity = new Entity(engine, entityConfig.name);
626
+ return Promise.resolve(entity);
627
+ }
628
+ };
629
+ ReflectionParser.registerCustomParseComponent = function registerCustomParseComponent(componentType, handle) {
630
+ this.customParseComponentHandles[componentType] = handle;
631
+ };
629
632
  ReflectionParser._isClass = function _isClass(value) {
630
633
  return value["class"] != undefined;
631
634
  };
632
- ReflectionParser._isRef = function _isRef(value) {
635
+ ReflectionParser._isAssetRef = function _isAssetRef(value) {
633
636
  return value["refId"] != undefined;
634
637
  };
638
+ ReflectionParser._isEntityRef = function _isEntityRef(value) {
639
+ return value["entityId"] != undefined;
640
+ };
635
641
  return ReflectionParser;
636
642
  }();
637
643
  (function() {
@@ -899,6 +905,8 @@ var SceneParserContext = /*#__PURE__*/ function() {
899
905
  this.assets = new Map();
900
906
  this.entityConfigMap = new Map();
901
907
  this.rootIds = [];
908
+ this.engine = scene.engine;
909
+ this.resourceManager = scene.engine.resourceManager;
902
910
  }
903
911
  var _proto = SceneParserContext.prototype;
904
912
  _proto.destroy = function destroy() {
@@ -915,7 +923,7 @@ var SceneParserContext = /*#__PURE__*/ function() {
915
923
  function SceneParser(context) {
916
924
  var _this = this;
917
925
  this.context = context;
918
- this._engine = this.context.scene.engine;
926
+ this._engine = context.scene.engine;
919
927
  this._organizeEntities = this._organizeEntities.bind(this);
920
928
  this._parseComponents = this._parseComponents.bind(this);
921
929
  this._clearAndResolveScene = this._clearAndResolveScene.bind(this);
@@ -923,22 +931,24 @@ var SceneParserContext = /*#__PURE__*/ function() {
923
931
  _this._reject = reject;
924
932
  _this._resolve = resolve;
925
933
  });
934
+ this._reflectionParser = new ReflectionParser(context);
926
935
  }
927
936
  var _proto = SceneParser.prototype;
928
937
  /** start parse the scene */ _proto.start = function start() {
929
938
  this._parseEntities().then(this._organizeEntities).then(this._parseComponents).then(this._clearAndResolveScene).then(this._resolve).catch(this._reject);
930
939
  };
931
940
  _proto._parseEntities = function _parseEntities() {
941
+ var _this = this;
932
942
  var entitiesConfig = this.context.originalData.entities;
933
943
  var entityConfigMap = this.context.entityConfigMap;
934
944
  var entitiesMap = this.context.entityMap;
935
945
  var rootIds = this.context.rootIds;
936
- var engine = this._engine;
946
+ this._engine;
937
947
  var promises = entitiesConfig.map(function(entityConfig) {
938
948
  entityConfigMap.set(entityConfig.id, entityConfig);
939
949
  // record root entities
940
950
  if (!entityConfig.parent) rootIds.push(entityConfig.id);
941
- return ReflectionParser.parseEntity(entityConfig, engine);
951
+ return _this._reflectionParser.parseEntity(entityConfig);
942
952
  });
943
953
  return Promise.all(promises).then(function(entities) {
944
954
  for(var i = 0, l = entities.length; i < l; i++){
@@ -976,7 +986,7 @@ var SceneParserContext = /*#__PURE__*/ function() {
976
986
  component = entity.getComponent(Loader.getClass(key));
977
987
  }
978
988
  component = component || entity.addComponent(Loader.getClass(key));
979
- var promise = ReflectionParser.parsePropsAndMethods(component, componentConfig, entity.engine);
989
+ var promise = this._reflectionParser.parsePropsAndMethods(component, componentConfig);
980
990
  promises.push(promise);
981
991
  }
982
992
  }
@@ -4347,8 +4357,7 @@ var GLTFTextureParser = (_GLTFTextureParser = /*#__PURE__*/ function(GLTFParser1
4347
4357
  mipmap: (_samplerInfo = samplerInfo) == null ? void 0 : _samplerInfo.mipmap
4348
4358
  }
4349
4359
  }).then(function(texture) {
4350
- var _texture;
4351
- (_texture = texture).name || (_texture.name = textureName || imageName || "texture_" + index);
4360
+ texture.name = textureName || imageName || texture.name || "texture_" + index;
4352
4361
  useSampler && GLTFUtils.parseSampler(texture, samplerInfo);
4353
4362
  return texture;
4354
4363
  });
@@ -5455,6 +5464,39 @@ TextureCubeLoader = __decorate([
5455
5464
  ])
5456
5465
  ], TextureCubeLoader);
5457
5466
 
5467
+ var ProjectLoader = /*#__PURE__*/ function(Loader1) {
5468
+ _inherits(ProjectLoader, Loader1);
5469
+ function ProjectLoader() {
5470
+ return Loader1.apply(this, arguments);
5471
+ }
5472
+ var _proto = ProjectLoader.prototype;
5473
+ _proto.load = function load(item, resourceManager) {
5474
+ var _this = this;
5475
+ var engine = resourceManager.engine;
5476
+ return new AssetPromise(function(resolve, reject) {
5477
+ _this.request(item.url, {
5478
+ type: "json"
5479
+ }).then(function(data) {
5480
+ // @ts-ignore
5481
+ engine.resourceManager.initVirtualResources(data.files);
5482
+ return resourceManager.load({
5483
+ type: AssetType.Scene,
5484
+ url: data.scene
5485
+ }).then(function(scene) {
5486
+ engine.sceneManager.activeScene = scene;
5487
+ resolve();
5488
+ });
5489
+ }).catch(reject);
5490
+ });
5491
+ };
5492
+ return ProjectLoader;
5493
+ }(Loader);
5494
+ ProjectLoader = __decorate([
5495
+ resourceLoader(AssetType.Project, [
5496
+ "proj"
5497
+ ], true)
5498
+ ], ProjectLoader);
5499
+
5458
5500
  var SceneLoader = /*#__PURE__*/ function(Loader1) {
5459
5501
  _inherits(SceneLoader, Loader1);
5460
5502
  function SceneLoader() {