@galacean/engine-loader 1.1.0-beta.0 → 1.1.0-beta.10
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 +286 -213
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +286 -213
- package/dist/module.js +287 -214
- package/dist/module.js.map +1 -1
- package/package.json +5 -5
- package/types/gltf/GLTFUtil.d.ts +3 -3
- package/types/gltf/parser/GLTFJSONParser.d.ts +7 -0
- 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/types/ktx2/BinomialLLCTranscoder/BinomialLLCTranscoder.d.ts +0 -13
- package/types/ktx2/BinomialLLCTranscoder/TranscodeWorkerCode.d.ts +0 -33
- package/types/ktx2/KhronosTranscoder/KhronosTranscoder.d.ts +0 -17
- package/types/ktx2/KhronosTranscoder/TranscoderWorkerCode.d.ts +0 -34
- package/types/ktx2/TranscodeResult.d.ts +0 -10
- package/types/ktx2/constants.d.ts +0 -7
- package/types/ktx2/zstddec.d.ts +0 -62
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
|
}
|
|
@@ -2429,20 +2439,56 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
|
|
|
2429
2439
|
}();
|
|
2430
2440
|
|
|
2431
2441
|
/** @internal */ function TranscodeWorkerCode$1() {
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2442
|
+
self.onmessage = function onmessage(event) {
|
|
2443
|
+
var message = event.data;
|
|
2444
|
+
switch(message.type){
|
|
2445
|
+
case "init":
|
|
2446
|
+
init(message.transcoderWasm).then(function() {
|
|
2447
|
+
self.postMessage("init-completed");
|
|
2448
|
+
}).catch(function(e) {
|
|
2449
|
+
return self.postMessage({
|
|
2450
|
+
error: e
|
|
2451
|
+
});
|
|
2452
|
+
});
|
|
2453
|
+
break;
|
|
2454
|
+
case "transcode":
|
|
2455
|
+
init().then(function(KTX2File) {
|
|
2456
|
+
var result = transcode(message.buffer, message.format, KTX2File);
|
|
2457
|
+
// @ts-ignore
|
|
2458
|
+
result.type = "transcoded";
|
|
2459
|
+
self.postMessage(result);
|
|
2460
|
+
}).catch(function(e) {
|
|
2461
|
+
return self.postMessage({
|
|
2462
|
+
error: e
|
|
2463
|
+
});
|
|
2464
|
+
});
|
|
2465
|
+
break;
|
|
2437
2466
|
}
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2467
|
+
};
|
|
2468
|
+
}
|
|
2469
|
+
var _init = function init() {
|
|
2470
|
+
var initPromise;
|
|
2471
|
+
return function init(wasmBinary) {
|
|
2472
|
+
if (!initPromise) {
|
|
2473
|
+
initPromise = new Promise(function(resolve, reject) {
|
|
2474
|
+
var BasisModule = {
|
|
2475
|
+
wasmBinary: wasmBinary,
|
|
2476
|
+
onRuntimeInitialized: function() {
|
|
2477
|
+
return resolve(BasisModule);
|
|
2478
|
+
},
|
|
2479
|
+
onAbort: reject
|
|
2480
|
+
};
|
|
2481
|
+
self["BASIS"](BasisModule);
|
|
2482
|
+
}).then(function(BasisModule) {
|
|
2483
|
+
BasisModule.initializeBasis();
|
|
2484
|
+
return BasisModule.KTX2File;
|
|
2485
|
+
});
|
|
2443
2486
|
}
|
|
2444
|
-
return
|
|
2487
|
+
return initPromise;
|
|
2445
2488
|
};
|
|
2489
|
+
};
|
|
2490
|
+
var init = _init();
|
|
2491
|
+
function transcode(buffer, targetFormat, KTX2File) {
|
|
2446
2492
|
var getTranscodeFormatFromTarget = function getTranscodeFormatFromTarget(target, hasAlpha) {
|
|
2447
2493
|
switch(target){
|
|
2448
2494
|
case 2:
|
|
@@ -2459,76 +2505,24 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
|
|
|
2459
2505
|
return 7;
|
|
2460
2506
|
}
|
|
2461
2507
|
};
|
|
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;
|
|
2508
|
+
var concat = function concat(arrays) {
|
|
2509
|
+
if (arrays.length === 1) return arrays[0];
|
|
2510
|
+
var totalByteLength = 0;
|
|
2511
|
+
for(var i = 0; i < arrays.length; i++){
|
|
2512
|
+
totalByteLength += arrays[i].byteLength;
|
|
2520
2513
|
}
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2514
|
+
var result = new Uint8Array(totalByteLength);
|
|
2515
|
+
var byteOffset = 0;
|
|
2516
|
+
for(var i1 = 0; i1 < arrays.length; i1++){
|
|
2517
|
+
result.set(arrays[i1], byteOffset);
|
|
2518
|
+
byteOffset += arrays[i1].byteLength;
|
|
2519
|
+
}
|
|
2520
|
+
return result;
|
|
2521
|
+
};
|
|
2522
|
+
var cleanup = function cleanup() {
|
|
2523
|
+
ktx2File.close();
|
|
2524
|
+
ktx2File.delete();
|
|
2530
2525
|
};
|
|
2531
|
-
var transcodePromise;
|
|
2532
2526
|
var BasisFormat;
|
|
2533
2527
|
(function(BasisFormat) {
|
|
2534
2528
|
BasisFormat[BasisFormat["ETC1"] = 0] = "ETC1";
|
|
@@ -2554,31 +2548,56 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
|
|
|
2554
2548
|
TargetFormat[TargetFormat["RG8"] = 6] = "RG8";
|
|
2555
2549
|
TargetFormat[TargetFormat["RGBA8"] = 7] = "RGBA8";
|
|
2556
2550
|
})(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
|
-
|
|
2551
|
+
var ktx2File = new KTX2File(new Uint8Array(buffer));
|
|
2552
|
+
if (!ktx2File.isValid()) {
|
|
2553
|
+
cleanup();
|
|
2554
|
+
throw new Error("Invalid or unsupported .ktx2 file");
|
|
2555
|
+
}
|
|
2556
|
+
if (!ktx2File.startTranscoding()) {
|
|
2557
|
+
cleanup();
|
|
2558
|
+
throw new Error("KTX2 startTranscoding failed");
|
|
2559
|
+
}
|
|
2560
|
+
var width = ktx2File.getWidth();
|
|
2561
|
+
var height = ktx2File.getHeight();
|
|
2562
|
+
var layerCount = ktx2File.getLayers() || 1;
|
|
2563
|
+
var levelCount = ktx2File.getLevels();
|
|
2564
|
+
var hasAlpha = ktx2File.getHasAlpha();
|
|
2565
|
+
var faceCount = ktx2File.getFaces();
|
|
2566
|
+
var format = getTranscodeFormatFromTarget(targetFormat, hasAlpha);
|
|
2567
|
+
var faces = new Array(faceCount);
|
|
2568
|
+
for(var face = 0; face < faceCount; face++){
|
|
2569
|
+
var mipmaps = new Array(levelCount);
|
|
2570
|
+
for(var mip = 0; mip < levelCount; mip++){
|
|
2571
|
+
var layerMips = new Array(layerCount);
|
|
2572
|
+
var mipWidth = void 0, mipHeight = void 0;
|
|
2573
|
+
for(var layer = 0; layer < layerCount; layer++){
|
|
2574
|
+
var levelInfo = ktx2File.getImageLevelInfo(mip, layer, face);
|
|
2575
|
+
mipWidth = levelInfo.origWidth;
|
|
2576
|
+
mipHeight = levelInfo.origHeight;
|
|
2577
|
+
var dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, format));
|
|
2578
|
+
var status = ktx2File.transcodeImage(dst, mip, layer, face, format, 0, -1, -1);
|
|
2579
|
+
if (!status) {
|
|
2580
|
+
cleanup();
|
|
2581
|
+
throw new Error("transcodeImage failed.");
|
|
2582
|
+
}
|
|
2583
|
+
layerMips[layer] = dst;
|
|
2584
|
+
}
|
|
2585
|
+
mipmaps[mip] = {
|
|
2586
|
+
data: concat(layerMips),
|
|
2587
|
+
width: mipWidth,
|
|
2588
|
+
height: mipHeight
|
|
2589
|
+
};
|
|
2581
2590
|
}
|
|
2591
|
+
faces[face] = mipmaps;
|
|
2592
|
+
}
|
|
2593
|
+
cleanup();
|
|
2594
|
+
return {
|
|
2595
|
+
faces: faces,
|
|
2596
|
+
width: width,
|
|
2597
|
+
height: height,
|
|
2598
|
+
hasAlpha: hasAlpha,
|
|
2599
|
+
faceCount: faceCount,
|
|
2600
|
+
format: format
|
|
2582
2601
|
};
|
|
2583
2602
|
}
|
|
2584
2603
|
|
|
@@ -2599,23 +2618,49 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
|
|
|
2599
2618
|
})
|
|
2600
2619
|
]).then(function(param) {
|
|
2601
2620
|
var jsCode = param[0], wasmBuffer = param[1];
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2621
|
+
if (_this.workerLimitCount === 0) {
|
|
2622
|
+
return new Promise(function(resolve, reject) {
|
|
2623
|
+
var scriptDom = document.createElement("script");
|
|
2624
|
+
scriptDom.src = URL.createObjectURL(new Blob([
|
|
2625
|
+
jsCode
|
|
2626
|
+
], {
|
|
2627
|
+
type: "application/javascript"
|
|
2628
|
+
}));
|
|
2629
|
+
document.body.appendChild(scriptDom);
|
|
2630
|
+
scriptDom.onload = function() {
|
|
2631
|
+
init(wasmBuffer).then(function() {
|
|
2632
|
+
resolve(null);
|
|
2633
|
+
});
|
|
2634
|
+
};
|
|
2635
|
+
scriptDom.onerror = function() {
|
|
2636
|
+
reject();
|
|
2637
|
+
};
|
|
2638
|
+
});
|
|
2639
|
+
} else {
|
|
2640
|
+
var funcCode = TranscodeWorkerCode$1.toString();
|
|
2641
|
+
var transcodeString = funcCode.substring(funcCode.indexOf("{"), funcCode.lastIndexOf("}") + 1);
|
|
2642
|
+
var workerCode = "\n " + jsCode + "\n var init = (" + _init.toString() + ")();\n " + transcode.toString() + "\n " + transcodeString + "\n ";
|
|
2643
|
+
var workerURL = URL.createObjectURL(new Blob([
|
|
2644
|
+
workerCode
|
|
2645
|
+
], {
|
|
2646
|
+
type: "application/javascript"
|
|
2647
|
+
}));
|
|
2648
|
+
return _this._createTranscodePool(workerURL, wasmBuffer);
|
|
2649
|
+
}
|
|
2611
2650
|
});
|
|
2612
2651
|
};
|
|
2613
|
-
_proto.transcode = function
|
|
2614
|
-
|
|
2615
|
-
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
}
|
|
2652
|
+
_proto.transcode = function transcode1(buffer, format) {
|
|
2653
|
+
if (this.workerLimitCount === 0) {
|
|
2654
|
+
return init().then(function(KTX2File) {
|
|
2655
|
+
return transcode(buffer, format, KTX2File);
|
|
2656
|
+
});
|
|
2657
|
+
} else {
|
|
2658
|
+
return this._transcodeWorkerPool.postMessage({
|
|
2659
|
+
buffer: buffer,
|
|
2660
|
+
format: format,
|
|
2661
|
+
type: "transcode"
|
|
2662
|
+
});
|
|
2663
|
+
}
|
|
2619
2664
|
};
|
|
2620
2665
|
return BinomialLLCTranscoder;
|
|
2621
2666
|
}(AbstractTranscoder);
|
|
@@ -2843,7 +2888,7 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
|
|
|
2843
2888
|
_proto.initialize = function initialize(engine, configuration) {
|
|
2844
2889
|
if (configuration.ktx2Loader) {
|
|
2845
2890
|
var options = configuration.ktx2Loader;
|
|
2846
|
-
if (this._isKhronosSupported(options.priorityFormats, engine)) {
|
|
2891
|
+
if (this._isKhronosSupported(options.priorityFormats, engine) && options.workerCount !== 0) {
|
|
2847
2892
|
return exports.KTX2Loader._getKhronosTranscoder(options.workerCount).init();
|
|
2848
2893
|
} else {
|
|
2849
2894
|
return exports.KTX2Loader._getBinomialLLCTranscoder(options.workerCount).init();
|
|
@@ -3564,12 +3609,12 @@ exports.GLTFAnimationParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
3564
3609
|
if (curve2.interpolation === engineCore.InterpolationType.CubicSpine) {
|
|
3565
3610
|
keyframe2.inTangent = Array.from(output.subarray(offset2, offset2 + outputSize));
|
|
3566
3611
|
offset2 += outputSize;
|
|
3567
|
-
keyframe2.value = output.
|
|
3612
|
+
keyframe2.value = output.slice(offset2, offset2 + outputSize);
|
|
3568
3613
|
offset2 += outputSize;
|
|
3569
3614
|
keyframe2.outTangent = Array.from(output.subarray(offset2, offset2 + outputSize));
|
|
3570
3615
|
offset2 += outputSize;
|
|
3571
3616
|
} else {
|
|
3572
|
-
keyframe2.value = output.
|
|
3617
|
+
keyframe2.value = output.slice(offset2, offset2 + outputSize);
|
|
3573
3618
|
offset2 += outputSize;
|
|
3574
3619
|
}
|
|
3575
3620
|
curve2.addKey(keyframe2);
|
|
@@ -4320,8 +4365,7 @@ exports.GLTFTextureParser = (_GLTFTextureParser = /*#__PURE__*/ function(GLTFPar
|
|
|
4320
4365
|
mipmap: (_samplerInfo = samplerInfo) == null ? void 0 : _samplerInfo.mipmap
|
|
4321
4366
|
}
|
|
4322
4367
|
}).then(function(texture) {
|
|
4323
|
-
|
|
4324
|
-
(_texture = texture).name || (_texture.name = textureName || imageName || "texture_" + index);
|
|
4368
|
+
texture.name = textureName || imageName || texture.name || "texture_" + index;
|
|
4325
4369
|
useSampler && GLTFUtils.parseSampler(texture, samplerInfo);
|
|
4326
4370
|
return texture;
|
|
4327
4371
|
});
|
|
@@ -5428,6 +5472,39 @@ TextureCubeLoader = __decorate([
|
|
|
5428
5472
|
])
|
|
5429
5473
|
], TextureCubeLoader);
|
|
5430
5474
|
|
|
5475
|
+
var ProjectLoader = /*#__PURE__*/ function(Loader1) {
|
|
5476
|
+
_inherits(ProjectLoader, Loader1);
|
|
5477
|
+
function ProjectLoader() {
|
|
5478
|
+
return Loader1.apply(this, arguments);
|
|
5479
|
+
}
|
|
5480
|
+
var _proto = ProjectLoader.prototype;
|
|
5481
|
+
_proto.load = function load(item, resourceManager) {
|
|
5482
|
+
var _this = this;
|
|
5483
|
+
var engine = resourceManager.engine;
|
|
5484
|
+
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
5485
|
+
_this.request(item.url, {
|
|
5486
|
+
type: "json"
|
|
5487
|
+
}).then(function(data) {
|
|
5488
|
+
// @ts-ignore
|
|
5489
|
+
engine.resourceManager.initVirtualResources(data.files);
|
|
5490
|
+
return resourceManager.load({
|
|
5491
|
+
type: engineCore.AssetType.Scene,
|
|
5492
|
+
url: data.scene
|
|
5493
|
+
}).then(function(scene) {
|
|
5494
|
+
engine.sceneManager.activeScene = scene;
|
|
5495
|
+
resolve();
|
|
5496
|
+
});
|
|
5497
|
+
}).catch(reject);
|
|
5498
|
+
});
|
|
5499
|
+
};
|
|
5500
|
+
return ProjectLoader;
|
|
5501
|
+
}(engineCore.Loader);
|
|
5502
|
+
ProjectLoader = __decorate([
|
|
5503
|
+
engineCore.resourceLoader(engineCore.AssetType.Project, [
|
|
5504
|
+
"proj"
|
|
5505
|
+
], false)
|
|
5506
|
+
], ProjectLoader);
|
|
5507
|
+
|
|
5431
5508
|
var SceneLoader = /*#__PURE__*/ function(Loader1) {
|
|
5432
5509
|
_inherits(SceneLoader, Loader1);
|
|
5433
5510
|
function SceneLoader() {
|
|
@@ -5446,32 +5523,28 @@ var SceneLoader = /*#__PURE__*/ function(Loader1) {
|
|
|
5446
5523
|
// parse ambient light
|
|
5447
5524
|
var ambient = data.scene.ambient;
|
|
5448
5525
|
var useCustomAmbient = ambient.specularMode === "Custom";
|
|
5526
|
+
var useSH = ambient.diffuseMode === engineCore.DiffuseMode.SphericalHarmonics;
|
|
5527
|
+
scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
|
|
5528
|
+
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
5529
|
+
scene.ambientLight.diffuseMode = ambient.diffuseMode;
|
|
5530
|
+
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
5531
|
+
scene.ambientLight.specularTextureDecodeRGBM = true;
|
|
5449
5532
|
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);
|
|
5533
|
+
promises.push(// @ts-ignore
|
|
5534
|
+
resourceManager.getResourceByRef(ambient.customAmbientLight).then(function(ambientLight) {
|
|
5535
|
+
scene.ambientLight.specularTexture = ambientLight.specularTexture;
|
|
5536
|
+
}));
|
|
5537
|
+
}
|
|
5538
|
+
if (ambient.ambientLight && (!useCustomAmbient || useSH)) {
|
|
5539
|
+
promises.push(// @ts-ignore
|
|
5540
|
+
resourceManager.getResourceByRef(ambient.ambientLight).then(function(ambientLight) {
|
|
5541
|
+
if (!useCustomAmbient) {
|
|
5542
|
+
scene.ambientLight.specularTexture = ambientLight.specularTexture;
|
|
5543
|
+
}
|
|
5544
|
+
if (useSH) {
|
|
5545
|
+
scene.ambientLight.diffuseSphericalHarmonics = ambientLight.diffuseSphericalHarmonics;
|
|
5546
|
+
}
|
|
5547
|
+
}));
|
|
5475
5548
|
}
|
|
5476
5549
|
var background = data.scene.background;
|
|
5477
5550
|
scene.background.mode = background.mode;
|