@galacean/engine-loader 1.1.0-beta.1 → 1.1.0-beta.11
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 +307 -215
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +307 -215
- package/dist/module.js +308 -216
- package/dist/module.js.map +1 -1
- package/package.json +5 -5
- package/types/gltf/GLTFUtil.d.ts +3 -3
- package/types/index.d.ts +1 -0
- package/types/ktx2/transcoder/AbstractTranscoder.d.ts +1 -1
- package/types/ktx2/transcoder/BinomialLLCTranscoder.d.ts +2 -2
- package/types/ktx2/transcoder/BinomialLLCWorkerCode.d.ts +4 -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
|
|
550
|
+
return this.parsePropsAndMethods(instance, item);
|
|
570
551
|
};
|
|
571
|
-
|
|
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
|
-
}
|
|
592
|
-
};
|
|
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
|
|
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
|
}
|
|
@@ -2429,20 +2439,75 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
|
|
|
2429
2439
|
}();
|
|
2430
2440
|
|
|
2431
2441
|
/** @internal */ function TranscodeWorkerCode$1() {
|
|
2432
|
-
var
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2442
|
+
var initPromise;
|
|
2443
|
+
var init = function init(wasmBinary) {
|
|
2444
|
+
if (!initPromise) {
|
|
2445
|
+
initPromise = new Promise(function(resolve, reject) {
|
|
2446
|
+
var BasisModule = {
|
|
2447
|
+
wasmBinary: wasmBinary,
|
|
2448
|
+
onRuntimeInitialized: function() {
|
|
2449
|
+
return resolve(BasisModule);
|
|
2450
|
+
},
|
|
2451
|
+
onAbort: reject
|
|
2452
|
+
};
|
|
2453
|
+
self["BASIS"](BasisModule);
|
|
2454
|
+
}).then(function(BasisModule) {
|
|
2455
|
+
BasisModule.initializeBasis();
|
|
2456
|
+
return BasisModule.KTX2File;
|
|
2457
|
+
});
|
|
2437
2458
|
}
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2459
|
+
return initPromise;
|
|
2460
|
+
};
|
|
2461
|
+
self.onmessage = function onmessage(event) {
|
|
2462
|
+
var message = event.data;
|
|
2463
|
+
switch(message.type){
|
|
2464
|
+
case "init":
|
|
2465
|
+
init(message.transcoderWasm).then(function() {
|
|
2466
|
+
self.postMessage("init-completed");
|
|
2467
|
+
}).catch(function(e) {
|
|
2468
|
+
return self.postMessage({
|
|
2469
|
+
error: e
|
|
2470
|
+
});
|
|
2471
|
+
});
|
|
2472
|
+
break;
|
|
2473
|
+
case "transcode":
|
|
2474
|
+
init().then(function(KTX2File) {
|
|
2475
|
+
var result = transcode(message.buffer, message.format, KTX2File);
|
|
2476
|
+
// @ts-ignore
|
|
2477
|
+
result.type = "transcoded";
|
|
2478
|
+
self.postMessage(result);
|
|
2479
|
+
}).catch(function(e) {
|
|
2480
|
+
return self.postMessage({
|
|
2481
|
+
error: e
|
|
2482
|
+
});
|
|
2483
|
+
});
|
|
2484
|
+
break;
|
|
2443
2485
|
}
|
|
2444
|
-
return result;
|
|
2445
2486
|
};
|
|
2487
|
+
}
|
|
2488
|
+
var _init = function init() {
|
|
2489
|
+
var initPromise;
|
|
2490
|
+
return function init(wasmBinary) {
|
|
2491
|
+
if (!initPromise) {
|
|
2492
|
+
initPromise = new Promise(function(resolve, reject) {
|
|
2493
|
+
var BasisModule = {
|
|
2494
|
+
wasmBinary: wasmBinary,
|
|
2495
|
+
onRuntimeInitialized: function() {
|
|
2496
|
+
return resolve(BasisModule);
|
|
2497
|
+
},
|
|
2498
|
+
onAbort: reject
|
|
2499
|
+
};
|
|
2500
|
+
self["BASIS"](BasisModule);
|
|
2501
|
+
}).then(function(BasisModule) {
|
|
2502
|
+
BasisModule.initializeBasis();
|
|
2503
|
+
return BasisModule.KTX2File;
|
|
2504
|
+
});
|
|
2505
|
+
}
|
|
2506
|
+
return initPromise;
|
|
2507
|
+
};
|
|
2508
|
+
};
|
|
2509
|
+
var init = _init();
|
|
2510
|
+
function transcode(buffer, targetFormat, KTX2File) {
|
|
2446
2511
|
var getTranscodeFormatFromTarget = function getTranscodeFormatFromTarget(target, hasAlpha) {
|
|
2447
2512
|
switch(target){
|
|
2448
2513
|
case 2:
|
|
@@ -2459,76 +2524,24 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
|
|
|
2459
2524
|
return 7;
|
|
2460
2525
|
}
|
|
2461
2526
|
};
|
|
2462
|
-
var
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
2467
|
-
return resolve(BasisModule);
|
|
2468
|
-
},
|
|
2469
|
-
onAbort: reject
|
|
2470
|
-
};
|
|
2471
|
-
self["BASIS"](BasisModule);
|
|
2472
|
-
}).then(function(BasisModule) {
|
|
2473
|
-
BasisModule.initializeBasis();
|
|
2474
|
-
return BasisModule.KTX2File;
|
|
2475
|
-
});
|
|
2476
|
-
return transcodePromise;
|
|
2477
|
-
};
|
|
2478
|
-
var transcode = function transcode(buffer, targetFormat, KTX2File) {
|
|
2479
|
-
var ktx2File = new KTX2File(new Uint8Array(buffer));
|
|
2480
|
-
function cleanup() {
|
|
2481
|
-
ktx2File.close();
|
|
2482
|
-
ktx2File.delete();
|
|
2483
|
-
}
|
|
2484
|
-
if (!ktx2File.isValid()) {
|
|
2485
|
-
cleanup();
|
|
2486
|
-
throw new Error("Invalid or unsupported .ktx2 file");
|
|
2487
|
-
}
|
|
2488
|
-
var width = ktx2File.getWidth();
|
|
2489
|
-
var height = ktx2File.getHeight();
|
|
2490
|
-
var layerCount = ktx2File.getLayers() || 1;
|
|
2491
|
-
var levelCount = ktx2File.getLevels();
|
|
2492
|
-
var hasAlpha = ktx2File.getHasAlpha();
|
|
2493
|
-
var faceCount = ktx2File.getFaces();
|
|
2494
|
-
var format = getTranscodeFormatFromTarget(targetFormat, hasAlpha);
|
|
2495
|
-
var faces = new Array(faceCount);
|
|
2496
|
-
for(var face = 0; face < faceCount; face++){
|
|
2497
|
-
var mipmaps = new Array(levelCount);
|
|
2498
|
-
for(var mip = 0; mip < levelCount; mip++){
|
|
2499
|
-
var layerMips = new Array(layerCount);
|
|
2500
|
-
var mipWidth = void 0, mipHeight = void 0;
|
|
2501
|
-
for(var layer = 0; layer < layerCount; layer++){
|
|
2502
|
-
var levelInfo = ktx2File.getImageLevelInfo(mip, layer, face);
|
|
2503
|
-
mipWidth = levelInfo.origWidth;
|
|
2504
|
-
mipHeight = levelInfo.origHeight;
|
|
2505
|
-
var dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, format));
|
|
2506
|
-
var status = ktx2File.transcodeImage(dst, mip, layer, face, format, 0, -1, -1);
|
|
2507
|
-
if (!status) {
|
|
2508
|
-
cleanup();
|
|
2509
|
-
throw new Error("transcodeImage failed.");
|
|
2510
|
-
}
|
|
2511
|
-
layerMips[layer] = dst;
|
|
2512
|
-
}
|
|
2513
|
-
mipmaps[mip] = {
|
|
2514
|
-
data: concat(layerMips),
|
|
2515
|
-
width: mipWidth,
|
|
2516
|
-
height: mipHeight
|
|
2517
|
-
};
|
|
2518
|
-
}
|
|
2519
|
-
faces[face] = mipmaps;
|
|
2527
|
+
var concat = function concat(arrays) {
|
|
2528
|
+
if (arrays.length === 1) return arrays[0];
|
|
2529
|
+
var totalByteLength = 0;
|
|
2530
|
+
for(var i = 0; i < arrays.length; i++){
|
|
2531
|
+
totalByteLength += arrays[i].byteLength;
|
|
2520
2532
|
}
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2533
|
+
var result = new Uint8Array(totalByteLength);
|
|
2534
|
+
var byteOffset = 0;
|
|
2535
|
+
for(var i1 = 0; i1 < arrays.length; i1++){
|
|
2536
|
+
result.set(arrays[i1], byteOffset);
|
|
2537
|
+
byteOffset += arrays[i1].byteLength;
|
|
2538
|
+
}
|
|
2539
|
+
return result;
|
|
2540
|
+
};
|
|
2541
|
+
var cleanup = function cleanup() {
|
|
2542
|
+
ktx2File.close();
|
|
2543
|
+
ktx2File.delete();
|
|
2530
2544
|
};
|
|
2531
|
-
var transcodePromise;
|
|
2532
2545
|
var BasisFormat;
|
|
2533
2546
|
(function(BasisFormat) {
|
|
2534
2547
|
BasisFormat[BasisFormat["ETC1"] = 0] = "ETC1";
|
|
@@ -2554,31 +2567,56 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
|
|
|
2554
2567
|
TargetFormat[TargetFormat["RG8"] = 6] = "RG8";
|
|
2555
2568
|
TargetFormat[TargetFormat["RGBA8"] = 7] = "RGBA8";
|
|
2556
2569
|
})(TargetFormat || (TargetFormat = {}));
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2570
|
+
var ktx2File = new KTX2File(new Uint8Array(buffer));
|
|
2571
|
+
if (!ktx2File.isValid()) {
|
|
2572
|
+
cleanup();
|
|
2573
|
+
throw new Error("Invalid or unsupported .ktx2 file");
|
|
2574
|
+
}
|
|
2575
|
+
if (!ktx2File.startTranscoding()) {
|
|
2576
|
+
cleanup();
|
|
2577
|
+
throw new Error("KTX2 startTranscoding failed");
|
|
2578
|
+
}
|
|
2579
|
+
var width = ktx2File.getWidth();
|
|
2580
|
+
var height = ktx2File.getHeight();
|
|
2581
|
+
var layerCount = ktx2File.getLayers() || 1;
|
|
2582
|
+
var levelCount = ktx2File.getLevels();
|
|
2583
|
+
var hasAlpha = ktx2File.getHasAlpha();
|
|
2584
|
+
var faceCount = ktx2File.getFaces();
|
|
2585
|
+
var format = getTranscodeFormatFromTarget(targetFormat, hasAlpha);
|
|
2586
|
+
var faces = new Array(faceCount);
|
|
2587
|
+
for(var face = 0; face < faceCount; face++){
|
|
2588
|
+
var mipmaps = new Array(levelCount);
|
|
2589
|
+
for(var mip = 0; mip < levelCount; mip++){
|
|
2590
|
+
var layerMips = new Array(layerCount);
|
|
2591
|
+
var mipWidth = void 0, mipHeight = void 0;
|
|
2592
|
+
for(var layer = 0; layer < layerCount; layer++){
|
|
2593
|
+
var levelInfo = ktx2File.getImageLevelInfo(mip, layer, face);
|
|
2594
|
+
mipWidth = levelInfo.origWidth;
|
|
2595
|
+
mipHeight = levelInfo.origHeight;
|
|
2596
|
+
var dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, format));
|
|
2597
|
+
var status = ktx2File.transcodeImage(dst, mip, layer, face, format, 0, -1, -1);
|
|
2598
|
+
if (!status) {
|
|
2599
|
+
cleanup();
|
|
2600
|
+
throw new Error("transcodeImage failed.");
|
|
2601
|
+
}
|
|
2602
|
+
layerMips[layer] = dst;
|
|
2603
|
+
}
|
|
2604
|
+
mipmaps[mip] = {
|
|
2605
|
+
data: concat(layerMips),
|
|
2606
|
+
width: mipWidth,
|
|
2607
|
+
height: mipHeight
|
|
2608
|
+
};
|
|
2581
2609
|
}
|
|
2610
|
+
faces[face] = mipmaps;
|
|
2611
|
+
}
|
|
2612
|
+
cleanup();
|
|
2613
|
+
return {
|
|
2614
|
+
faces: faces,
|
|
2615
|
+
width: width,
|
|
2616
|
+
height: height,
|
|
2617
|
+
hasAlpha: hasAlpha,
|
|
2618
|
+
faceCount: faceCount,
|
|
2619
|
+
format: format
|
|
2582
2620
|
};
|
|
2583
2621
|
}
|
|
2584
2622
|
|
|
@@ -2599,23 +2637,49 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
|
|
|
2599
2637
|
})
|
|
2600
2638
|
]).then(function(param) {
|
|
2601
2639
|
var jsCode = param[0], wasmBuffer = param[1];
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2640
|
+
if (_this.workerLimitCount === 0) {
|
|
2641
|
+
return new Promise(function(resolve, reject) {
|
|
2642
|
+
var scriptDom = document.createElement("script");
|
|
2643
|
+
scriptDom.src = URL.createObjectURL(new Blob([
|
|
2644
|
+
jsCode
|
|
2645
|
+
], {
|
|
2646
|
+
type: "application/javascript"
|
|
2647
|
+
}));
|
|
2648
|
+
document.body.appendChild(scriptDom);
|
|
2649
|
+
scriptDom.onload = function() {
|
|
2650
|
+
init(wasmBuffer).then(function() {
|
|
2651
|
+
resolve(null);
|
|
2652
|
+
});
|
|
2653
|
+
};
|
|
2654
|
+
scriptDom.onerror = function() {
|
|
2655
|
+
reject();
|
|
2656
|
+
};
|
|
2657
|
+
});
|
|
2658
|
+
} else {
|
|
2659
|
+
var funcCode = TranscodeWorkerCode$1.toString();
|
|
2660
|
+
var transcodeString = funcCode.substring(funcCode.indexOf("{"), funcCode.lastIndexOf("}") + 1);
|
|
2661
|
+
var workerCode = "\n " + jsCode + "\n " + transcode.toString() + "\n " + transcodeString + "\n ";
|
|
2662
|
+
var workerURL = URL.createObjectURL(new Blob([
|
|
2663
|
+
workerCode
|
|
2664
|
+
], {
|
|
2665
|
+
type: "application/javascript"
|
|
2666
|
+
}));
|
|
2667
|
+
return _this._createTranscodePool(workerURL, wasmBuffer);
|
|
2668
|
+
}
|
|
2611
2669
|
});
|
|
2612
2670
|
};
|
|
2613
|
-
_proto.transcode = function
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
}
|
|
2671
|
+
_proto.transcode = function transcode1(buffer, format) {
|
|
2672
|
+
if (this.workerLimitCount === 0) {
|
|
2673
|
+
return init().then(function(KTX2File) {
|
|
2674
|
+
return transcode(buffer, format, KTX2File);
|
|
2675
|
+
});
|
|
2676
|
+
} else {
|
|
2677
|
+
return this._transcodeWorkerPool.postMessage({
|
|
2678
|
+
buffer: buffer,
|
|
2679
|
+
format: format,
|
|
2680
|
+
type: "transcode"
|
|
2681
|
+
});
|
|
2682
|
+
}
|
|
2619
2683
|
};
|
|
2620
2684
|
return BinomialLLCTranscoder;
|
|
2621
2685
|
}(AbstractTranscoder);
|
|
@@ -2843,7 +2907,7 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
|
|
|
2843
2907
|
_proto.initialize = function initialize(engine, configuration) {
|
|
2844
2908
|
if (configuration.ktx2Loader) {
|
|
2845
2909
|
var options = configuration.ktx2Loader;
|
|
2846
|
-
if (this._isKhronosSupported(options.priorityFormats, engine)) {
|
|
2910
|
+
if (this._isKhronosSupported(options.priorityFormats, engine) && options.workerCount !== 0) {
|
|
2847
2911
|
return exports.KTX2Loader._getKhronosTranscoder(options.workerCount).init();
|
|
2848
2912
|
} else {
|
|
2849
2913
|
return exports.KTX2Loader._getBinomialLLCTranscoder(options.workerCount).init();
|
|
@@ -3564,12 +3628,12 @@ exports.GLTFAnimationParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
3564
3628
|
if (curve2.interpolation === engineCore.InterpolationType.CubicSpine) {
|
|
3565
3629
|
keyframe2.inTangent = Array.from(output.subarray(offset2, offset2 + outputSize));
|
|
3566
3630
|
offset2 += outputSize;
|
|
3567
|
-
keyframe2.value = output.
|
|
3631
|
+
keyframe2.value = output.slice(offset2, offset2 + outputSize);
|
|
3568
3632
|
offset2 += outputSize;
|
|
3569
3633
|
keyframe2.outTangent = Array.from(output.subarray(offset2, offset2 + outputSize));
|
|
3570
3634
|
offset2 += outputSize;
|
|
3571
3635
|
} else {
|
|
3572
|
-
keyframe2.value = output.
|
|
3636
|
+
keyframe2.value = output.slice(offset2, offset2 + outputSize);
|
|
3573
3637
|
offset2 += outputSize;
|
|
3574
3638
|
}
|
|
3575
3639
|
curve2.addKey(keyframe2);
|
|
@@ -4320,8 +4384,7 @@ exports.GLTFTextureParser = (_GLTFTextureParser = /*#__PURE__*/ function(GLTFPar
|
|
|
4320
4384
|
mipmap: (_samplerInfo = samplerInfo) == null ? void 0 : _samplerInfo.mipmap
|
|
4321
4385
|
}
|
|
4322
4386
|
}).then(function(texture) {
|
|
4323
|
-
|
|
4324
|
-
(_texture = texture).name || (_texture.name = textureName || imageName || "texture_" + index);
|
|
4387
|
+
texture.name = textureName || imageName || texture.name || "texture_" + index;
|
|
4325
4388
|
useSampler && GLTFUtils.parseSampler(texture, samplerInfo);
|
|
4326
4389
|
return texture;
|
|
4327
4390
|
});
|
|
@@ -5428,6 +5491,39 @@ TextureCubeLoader = __decorate([
|
|
|
5428
5491
|
])
|
|
5429
5492
|
], TextureCubeLoader);
|
|
5430
5493
|
|
|
5494
|
+
var ProjectLoader = /*#__PURE__*/ function(Loader1) {
|
|
5495
|
+
_inherits(ProjectLoader, Loader1);
|
|
5496
|
+
function ProjectLoader() {
|
|
5497
|
+
return Loader1.apply(this, arguments);
|
|
5498
|
+
}
|
|
5499
|
+
var _proto = ProjectLoader.prototype;
|
|
5500
|
+
_proto.load = function load(item, resourceManager) {
|
|
5501
|
+
var _this = this;
|
|
5502
|
+
var engine = resourceManager.engine;
|
|
5503
|
+
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
5504
|
+
_this.request(item.url, {
|
|
5505
|
+
type: "json"
|
|
5506
|
+
}).then(function(data) {
|
|
5507
|
+
// @ts-ignore
|
|
5508
|
+
engine.resourceManager.initVirtualResources(data.files);
|
|
5509
|
+
return resourceManager.load({
|
|
5510
|
+
type: engineCore.AssetType.Scene,
|
|
5511
|
+
url: data.scene
|
|
5512
|
+
}).then(function(scene) {
|
|
5513
|
+
engine.sceneManager.activeScene = scene;
|
|
5514
|
+
resolve();
|
|
5515
|
+
});
|
|
5516
|
+
}).catch(reject);
|
|
5517
|
+
});
|
|
5518
|
+
};
|
|
5519
|
+
return ProjectLoader;
|
|
5520
|
+
}(engineCore.Loader);
|
|
5521
|
+
ProjectLoader = __decorate([
|
|
5522
|
+
engineCore.resourceLoader(engineCore.AssetType.Project, [
|
|
5523
|
+
"proj"
|
|
5524
|
+
], false)
|
|
5525
|
+
], ProjectLoader);
|
|
5526
|
+
|
|
5431
5527
|
var SceneLoader = /*#__PURE__*/ function(Loader1) {
|
|
5432
5528
|
_inherits(SceneLoader, Loader1);
|
|
5433
5529
|
function SceneLoader() {
|
|
@@ -5446,32 +5542,28 @@ var SceneLoader = /*#__PURE__*/ function(Loader1) {
|
|
|
5446
5542
|
// parse ambient light
|
|
5447
5543
|
var ambient = data.scene.ambient;
|
|
5448
5544
|
var useCustomAmbient = ambient.specularMode === "Custom";
|
|
5545
|
+
var useSH = ambient.diffuseMode === engineCore.DiffuseMode.SphericalHarmonics;
|
|
5546
|
+
scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
|
|
5547
|
+
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
5548
|
+
scene.ambientLight.diffuseMode = ambient.diffuseMode;
|
|
5549
|
+
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
5550
|
+
scene.ambientLight.specularTextureDecodeRGBM = true;
|
|
5449
5551
|
if (useCustomAmbient && ambient.customAmbientLight) {
|
|
5450
|
-
// @ts-ignore
|
|
5451
|
-
|
|
5452
|
-
|
|
5453
|
-
|
|
5454
|
-
|
|
5455
|
-
|
|
5456
|
-
|
|
5457
|
-
|
|
5458
|
-
|
|
5459
|
-
|
|
5460
|
-
|
|
5461
|
-
|
|
5462
|
-
|
|
5463
|
-
|
|
5464
|
-
|
|
5465
|
-
scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
|
|
5466
|
-
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
5467
|
-
scene.ambientLight.diffuseMode = ambient.diffuseMode;
|
|
5468
|
-
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
5469
|
-
});
|
|
5470
|
-
promises.push(ambientLightPromise);
|
|
5471
|
-
} else {
|
|
5472
|
-
scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
|
|
5473
|
-
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
5474
|
-
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
5552
|
+
promises.push(// @ts-ignore
|
|
5553
|
+
resourceManager.getResourceByRef(ambient.customAmbientLight).then(function(ambientLight) {
|
|
5554
|
+
scene.ambientLight.specularTexture = ambientLight.specularTexture;
|
|
5555
|
+
}));
|
|
5556
|
+
}
|
|
5557
|
+
if (ambient.ambientLight && (!useCustomAmbient || useSH)) {
|
|
5558
|
+
promises.push(// @ts-ignore
|
|
5559
|
+
resourceManager.getResourceByRef(ambient.ambientLight).then(function(ambientLight) {
|
|
5560
|
+
if (!useCustomAmbient) {
|
|
5561
|
+
scene.ambientLight.specularTexture = ambientLight.specularTexture;
|
|
5562
|
+
}
|
|
5563
|
+
if (useSH) {
|
|
5564
|
+
scene.ambientLight.diffuseSphericalHarmonics = ambientLight.diffuseSphericalHarmonics;
|
|
5565
|
+
}
|
|
5566
|
+
}));
|
|
5475
5567
|
}
|
|
5476
5568
|
var background = data.scene.background;
|
|
5477
5569
|
scene.background.mode = background.mode;
|
|
@@ -5528,13 +5620,13 @@ SceneLoader = __decorate([
|
|
|
5528
5620
|
"scene"
|
|
5529
5621
|
], true)
|
|
5530
5622
|
], SceneLoader);
|
|
5531
|
-
ReflectionParser.registerCustomParseComponent("TextRenderer", /*#__PURE__*/ _async_to_generator(function(instance, item
|
|
5623
|
+
ReflectionParser.registerCustomParseComponent("TextRenderer", /*#__PURE__*/ _async_to_generator(function(instance, item) {
|
|
5532
5624
|
var props;
|
|
5533
5625
|
return __generator(this, function(_state) {
|
|
5534
5626
|
props = item.props;
|
|
5535
5627
|
if (!props.font) {
|
|
5536
5628
|
// @ts-ignore
|
|
5537
|
-
instance.font = engineCore.Font.createFromOS(engine, props.fontFamily || "Arial");
|
|
5629
|
+
instance.font = engineCore.Font.createFromOS(instance.engine, props.fontFamily || "Arial");
|
|
5538
5630
|
}
|
|
5539
5631
|
return [
|
|
5540
5632
|
2,
|