@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 +109 -67
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +109 -67
- package/dist/module.js +110 -68
- package/dist/module.js.map +1 -1
- package/package.json +5 -5
- package/types/index.d.ts +1 -0
- package/types/resource-deserialize/resources/parser/ReflectionParser.d.ts +12 -8
- package/types/resource-deserialize/resources/scene/SceneParser.d.ts +1 -0
- package/types/resource-deserialize/resources/scene/SceneParserContext.d.ts +3 -1
- package/types/resource-deserialize/resources/schema/BasicSchema.d.ts +18 -15
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
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
return
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
565
|
+
var _this = this, _loop = function(key) {
|
|
609
566
|
var value = item.props[key];
|
|
610
|
-
var promise =
|
|
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 =
|
|
619
|
-
if (handle) return handle(instance, item
|
|
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
|
-
|
|
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
|
|
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.
|
|
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 =
|
|
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
|
-
|
|
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
|
|
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 =
|
|
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
|
-
|
|
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() {
|