@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/module.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Utils, ModelMesh, BlendShape, Texture2D,
|
|
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
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
return
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
561
|
+
var _this = this, _loop = function(key) {
|
|
605
562
|
var value = item.props[key];
|
|
606
|
-
var promise =
|
|
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 =
|
|
615
|
-
if (handle) return handle(instance, item
|
|
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
|
-
|
|
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
|
|
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.
|
|
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 =
|
|
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
|
-
|
|
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
|
|
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 =
|
|
989
|
+
var promise = this._reflectionParser.parsePropsAndMethods(component, componentConfig);
|
|
980
990
|
promises.push(promise);
|
|
981
991
|
}
|
|
982
992
|
}
|
|
@@ -2425,20 +2435,56 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
|
|
|
2425
2435
|
}();
|
|
2426
2436
|
|
|
2427
2437
|
/** @internal */ function TranscodeWorkerCode$1() {
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2438
|
+
self.onmessage = function onmessage(event) {
|
|
2439
|
+
var message = event.data;
|
|
2440
|
+
switch(message.type){
|
|
2441
|
+
case "init":
|
|
2442
|
+
init(message.transcoderWasm).then(function() {
|
|
2443
|
+
self.postMessage("init-completed");
|
|
2444
|
+
}).catch(function(e) {
|
|
2445
|
+
return self.postMessage({
|
|
2446
|
+
error: e
|
|
2447
|
+
});
|
|
2448
|
+
});
|
|
2449
|
+
break;
|
|
2450
|
+
case "transcode":
|
|
2451
|
+
init().then(function(KTX2File) {
|
|
2452
|
+
var result = transcode(message.buffer, message.format, KTX2File);
|
|
2453
|
+
// @ts-ignore
|
|
2454
|
+
result.type = "transcoded";
|
|
2455
|
+
self.postMessage(result);
|
|
2456
|
+
}).catch(function(e) {
|
|
2457
|
+
return self.postMessage({
|
|
2458
|
+
error: e
|
|
2459
|
+
});
|
|
2460
|
+
});
|
|
2461
|
+
break;
|
|
2433
2462
|
}
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2463
|
+
};
|
|
2464
|
+
}
|
|
2465
|
+
var _init = function init() {
|
|
2466
|
+
var initPromise;
|
|
2467
|
+
return function init(wasmBinary) {
|
|
2468
|
+
if (!initPromise) {
|
|
2469
|
+
initPromise = new Promise(function(resolve, reject) {
|
|
2470
|
+
var BasisModule = {
|
|
2471
|
+
wasmBinary: wasmBinary,
|
|
2472
|
+
onRuntimeInitialized: function() {
|
|
2473
|
+
return resolve(BasisModule);
|
|
2474
|
+
},
|
|
2475
|
+
onAbort: reject
|
|
2476
|
+
};
|
|
2477
|
+
self["BASIS"](BasisModule);
|
|
2478
|
+
}).then(function(BasisModule) {
|
|
2479
|
+
BasisModule.initializeBasis();
|
|
2480
|
+
return BasisModule.KTX2File;
|
|
2481
|
+
});
|
|
2439
2482
|
}
|
|
2440
|
-
return
|
|
2483
|
+
return initPromise;
|
|
2441
2484
|
};
|
|
2485
|
+
};
|
|
2486
|
+
var init = _init();
|
|
2487
|
+
function transcode(buffer, targetFormat, KTX2File) {
|
|
2442
2488
|
var getTranscodeFormatFromTarget = function getTranscodeFormatFromTarget(target, hasAlpha) {
|
|
2443
2489
|
switch(target){
|
|
2444
2490
|
case 2:
|
|
@@ -2455,76 +2501,24 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
|
|
|
2455
2501
|
return 7;
|
|
2456
2502
|
}
|
|
2457
2503
|
};
|
|
2458
|
-
var
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
return resolve(BasisModule);
|
|
2464
|
-
},
|
|
2465
|
-
onAbort: reject
|
|
2466
|
-
};
|
|
2467
|
-
self["BASIS"](BasisModule);
|
|
2468
|
-
}).then(function(BasisModule) {
|
|
2469
|
-
BasisModule.initializeBasis();
|
|
2470
|
-
return BasisModule.KTX2File;
|
|
2471
|
-
});
|
|
2472
|
-
return transcodePromise;
|
|
2473
|
-
};
|
|
2474
|
-
var transcode = function transcode(buffer, targetFormat, KTX2File) {
|
|
2475
|
-
var ktx2File = new KTX2File(new Uint8Array(buffer));
|
|
2476
|
-
function cleanup() {
|
|
2477
|
-
ktx2File.close();
|
|
2478
|
-
ktx2File.delete();
|
|
2479
|
-
}
|
|
2480
|
-
if (!ktx2File.isValid()) {
|
|
2481
|
-
cleanup();
|
|
2482
|
-
throw new Error("Invalid or unsupported .ktx2 file");
|
|
2483
|
-
}
|
|
2484
|
-
var width = ktx2File.getWidth();
|
|
2485
|
-
var height = ktx2File.getHeight();
|
|
2486
|
-
var layerCount = ktx2File.getLayers() || 1;
|
|
2487
|
-
var levelCount = ktx2File.getLevels();
|
|
2488
|
-
var hasAlpha = ktx2File.getHasAlpha();
|
|
2489
|
-
var faceCount = ktx2File.getFaces();
|
|
2490
|
-
var format = getTranscodeFormatFromTarget(targetFormat, hasAlpha);
|
|
2491
|
-
var faces = new Array(faceCount);
|
|
2492
|
-
for(var face = 0; face < faceCount; face++){
|
|
2493
|
-
var mipmaps = new Array(levelCount);
|
|
2494
|
-
for(var mip = 0; mip < levelCount; mip++){
|
|
2495
|
-
var layerMips = new Array(layerCount);
|
|
2496
|
-
var mipWidth = void 0, mipHeight = void 0;
|
|
2497
|
-
for(var layer = 0; layer < layerCount; layer++){
|
|
2498
|
-
var levelInfo = ktx2File.getImageLevelInfo(mip, layer, face);
|
|
2499
|
-
mipWidth = levelInfo.origWidth;
|
|
2500
|
-
mipHeight = levelInfo.origHeight;
|
|
2501
|
-
var dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, format));
|
|
2502
|
-
var status = ktx2File.transcodeImage(dst, mip, layer, face, format, 0, -1, -1);
|
|
2503
|
-
if (!status) {
|
|
2504
|
-
cleanup();
|
|
2505
|
-
throw new Error("transcodeImage failed.");
|
|
2506
|
-
}
|
|
2507
|
-
layerMips[layer] = dst;
|
|
2508
|
-
}
|
|
2509
|
-
mipmaps[mip] = {
|
|
2510
|
-
data: concat(layerMips),
|
|
2511
|
-
width: mipWidth,
|
|
2512
|
-
height: mipHeight
|
|
2513
|
-
};
|
|
2514
|
-
}
|
|
2515
|
-
faces[face] = mipmaps;
|
|
2504
|
+
var concat = function concat(arrays) {
|
|
2505
|
+
if (arrays.length === 1) return arrays[0];
|
|
2506
|
+
var totalByteLength = 0;
|
|
2507
|
+
for(var i = 0; i < arrays.length; i++){
|
|
2508
|
+
totalByteLength += arrays[i].byteLength;
|
|
2516
2509
|
}
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2510
|
+
var result = new Uint8Array(totalByteLength);
|
|
2511
|
+
var byteOffset = 0;
|
|
2512
|
+
for(var i1 = 0; i1 < arrays.length; i1++){
|
|
2513
|
+
result.set(arrays[i1], byteOffset);
|
|
2514
|
+
byteOffset += arrays[i1].byteLength;
|
|
2515
|
+
}
|
|
2516
|
+
return result;
|
|
2517
|
+
};
|
|
2518
|
+
var cleanup = function cleanup() {
|
|
2519
|
+
ktx2File.close();
|
|
2520
|
+
ktx2File.delete();
|
|
2526
2521
|
};
|
|
2527
|
-
var transcodePromise;
|
|
2528
2522
|
var BasisFormat;
|
|
2529
2523
|
(function(BasisFormat) {
|
|
2530
2524
|
BasisFormat[BasisFormat["ETC1"] = 0] = "ETC1";
|
|
@@ -2550,31 +2544,56 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
|
|
|
2550
2544
|
TargetFormat[TargetFormat["RG8"] = 6] = "RG8";
|
|
2551
2545
|
TargetFormat[TargetFormat["RGBA8"] = 7] = "RGBA8";
|
|
2552
2546
|
})(TargetFormat || (TargetFormat = {}));
|
|
2553
|
-
|
|
2554
|
-
|
|
2555
|
-
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2547
|
+
var ktx2File = new KTX2File(new Uint8Array(buffer));
|
|
2548
|
+
if (!ktx2File.isValid()) {
|
|
2549
|
+
cleanup();
|
|
2550
|
+
throw new Error("Invalid or unsupported .ktx2 file");
|
|
2551
|
+
}
|
|
2552
|
+
if (!ktx2File.startTranscoding()) {
|
|
2553
|
+
cleanup();
|
|
2554
|
+
throw new Error("KTX2 startTranscoding failed");
|
|
2555
|
+
}
|
|
2556
|
+
var width = ktx2File.getWidth();
|
|
2557
|
+
var height = ktx2File.getHeight();
|
|
2558
|
+
var layerCount = ktx2File.getLayers() || 1;
|
|
2559
|
+
var levelCount = ktx2File.getLevels();
|
|
2560
|
+
var hasAlpha = ktx2File.getHasAlpha();
|
|
2561
|
+
var faceCount = ktx2File.getFaces();
|
|
2562
|
+
var format = getTranscodeFormatFromTarget(targetFormat, hasAlpha);
|
|
2563
|
+
var faces = new Array(faceCount);
|
|
2564
|
+
for(var face = 0; face < faceCount; face++){
|
|
2565
|
+
var mipmaps = new Array(levelCount);
|
|
2566
|
+
for(var mip = 0; mip < levelCount; mip++){
|
|
2567
|
+
var layerMips = new Array(layerCount);
|
|
2568
|
+
var mipWidth = void 0, mipHeight = void 0;
|
|
2569
|
+
for(var layer = 0; layer < layerCount; layer++){
|
|
2570
|
+
var levelInfo = ktx2File.getImageLevelInfo(mip, layer, face);
|
|
2571
|
+
mipWidth = levelInfo.origWidth;
|
|
2572
|
+
mipHeight = levelInfo.origHeight;
|
|
2573
|
+
var dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, format));
|
|
2574
|
+
var status = ktx2File.transcodeImage(dst, mip, layer, face, format, 0, -1, -1);
|
|
2575
|
+
if (!status) {
|
|
2576
|
+
cleanup();
|
|
2577
|
+
throw new Error("transcodeImage failed.");
|
|
2578
|
+
}
|
|
2579
|
+
layerMips[layer] = dst;
|
|
2580
|
+
}
|
|
2581
|
+
mipmaps[mip] = {
|
|
2582
|
+
data: concat(layerMips),
|
|
2583
|
+
width: mipWidth,
|
|
2584
|
+
height: mipHeight
|
|
2585
|
+
};
|
|
2577
2586
|
}
|
|
2587
|
+
faces[face] = mipmaps;
|
|
2588
|
+
}
|
|
2589
|
+
cleanup();
|
|
2590
|
+
return {
|
|
2591
|
+
faces: faces,
|
|
2592
|
+
width: width,
|
|
2593
|
+
height: height,
|
|
2594
|
+
hasAlpha: hasAlpha,
|
|
2595
|
+
faceCount: faceCount,
|
|
2596
|
+
format: format
|
|
2578
2597
|
};
|
|
2579
2598
|
}
|
|
2580
2599
|
|
|
@@ -2595,23 +2614,49 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
|
|
|
2595
2614
|
})
|
|
2596
2615
|
]).then(function(param) {
|
|
2597
2616
|
var jsCode = param[0], wasmBuffer = param[1];
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
|
|
2606
|
-
|
|
2617
|
+
if (_this.workerLimitCount === 0) {
|
|
2618
|
+
return new Promise(function(resolve, reject) {
|
|
2619
|
+
var scriptDom = document.createElement("script");
|
|
2620
|
+
scriptDom.src = URL.createObjectURL(new Blob([
|
|
2621
|
+
jsCode
|
|
2622
|
+
], {
|
|
2623
|
+
type: "application/javascript"
|
|
2624
|
+
}));
|
|
2625
|
+
document.body.appendChild(scriptDom);
|
|
2626
|
+
scriptDom.onload = function() {
|
|
2627
|
+
init(wasmBuffer).then(function() {
|
|
2628
|
+
resolve(null);
|
|
2629
|
+
});
|
|
2630
|
+
};
|
|
2631
|
+
scriptDom.onerror = function() {
|
|
2632
|
+
reject();
|
|
2633
|
+
};
|
|
2634
|
+
});
|
|
2635
|
+
} else {
|
|
2636
|
+
var funcCode = TranscodeWorkerCode$1.toString();
|
|
2637
|
+
var transcodeString = funcCode.substring(funcCode.indexOf("{"), funcCode.lastIndexOf("}") + 1);
|
|
2638
|
+
var workerCode = "\n " + jsCode + "\n var init = (" + _init.toString() + ")();\n " + transcode.toString() + "\n " + transcodeString + "\n ";
|
|
2639
|
+
var workerURL = URL.createObjectURL(new Blob([
|
|
2640
|
+
workerCode
|
|
2641
|
+
], {
|
|
2642
|
+
type: "application/javascript"
|
|
2643
|
+
}));
|
|
2644
|
+
return _this._createTranscodePool(workerURL, wasmBuffer);
|
|
2645
|
+
}
|
|
2607
2646
|
});
|
|
2608
2647
|
};
|
|
2609
|
-
_proto.transcode = function
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
}
|
|
2648
|
+
_proto.transcode = function transcode1(buffer, format) {
|
|
2649
|
+
if (this.workerLimitCount === 0) {
|
|
2650
|
+
return init().then(function(KTX2File) {
|
|
2651
|
+
return transcode(buffer, format, KTX2File);
|
|
2652
|
+
});
|
|
2653
|
+
} else {
|
|
2654
|
+
return this._transcodeWorkerPool.postMessage({
|
|
2655
|
+
buffer: buffer,
|
|
2656
|
+
format: format,
|
|
2657
|
+
type: "transcode"
|
|
2658
|
+
});
|
|
2659
|
+
}
|
|
2615
2660
|
};
|
|
2616
2661
|
return BinomialLLCTranscoder;
|
|
2617
2662
|
}(AbstractTranscoder);
|
|
@@ -2839,7 +2884,7 @@ var KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
|
|
|
2839
2884
|
_proto.initialize = function initialize(engine, configuration) {
|
|
2840
2885
|
if (configuration.ktx2Loader) {
|
|
2841
2886
|
var options = configuration.ktx2Loader;
|
|
2842
|
-
if (this._isKhronosSupported(options.priorityFormats, engine)) {
|
|
2887
|
+
if (this._isKhronosSupported(options.priorityFormats, engine) && options.workerCount !== 0) {
|
|
2843
2888
|
return KTX2Loader._getKhronosTranscoder(options.workerCount).init();
|
|
2844
2889
|
} else {
|
|
2845
2890
|
return KTX2Loader._getBinomialLLCTranscoder(options.workerCount).init();
|
|
@@ -3560,12 +3605,12 @@ var GLTFAnimationParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
3560
3605
|
if (curve2.interpolation === InterpolationType.CubicSpine) {
|
|
3561
3606
|
keyframe2.inTangent = Array.from(output.subarray(offset2, offset2 + outputSize));
|
|
3562
3607
|
offset2 += outputSize;
|
|
3563
|
-
keyframe2.value = output.
|
|
3608
|
+
keyframe2.value = output.slice(offset2, offset2 + outputSize);
|
|
3564
3609
|
offset2 += outputSize;
|
|
3565
3610
|
keyframe2.outTangent = Array.from(output.subarray(offset2, offset2 + outputSize));
|
|
3566
3611
|
offset2 += outputSize;
|
|
3567
3612
|
} else {
|
|
3568
|
-
keyframe2.value = output.
|
|
3613
|
+
keyframe2.value = output.slice(offset2, offset2 + outputSize);
|
|
3569
3614
|
offset2 += outputSize;
|
|
3570
3615
|
}
|
|
3571
3616
|
curve2.addKey(keyframe2);
|
|
@@ -4316,8 +4361,7 @@ var GLTFTextureParser = (_GLTFTextureParser = /*#__PURE__*/ function(GLTFParser1
|
|
|
4316
4361
|
mipmap: (_samplerInfo = samplerInfo) == null ? void 0 : _samplerInfo.mipmap
|
|
4317
4362
|
}
|
|
4318
4363
|
}).then(function(texture) {
|
|
4319
|
-
|
|
4320
|
-
(_texture = texture).name || (_texture.name = textureName || imageName || "texture_" + index);
|
|
4364
|
+
texture.name = textureName || imageName || texture.name || "texture_" + index;
|
|
4321
4365
|
useSampler && GLTFUtils.parseSampler(texture, samplerInfo);
|
|
4322
4366
|
return texture;
|
|
4323
4367
|
});
|
|
@@ -5424,6 +5468,39 @@ TextureCubeLoader = __decorate([
|
|
|
5424
5468
|
])
|
|
5425
5469
|
], TextureCubeLoader);
|
|
5426
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 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: 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
|
+
}(Loader);
|
|
5498
|
+
ProjectLoader = __decorate([
|
|
5499
|
+
resourceLoader(AssetType.Project, [
|
|
5500
|
+
"proj"
|
|
5501
|
+
], false)
|
|
5502
|
+
], ProjectLoader);
|
|
5503
|
+
|
|
5427
5504
|
var SceneLoader = /*#__PURE__*/ function(Loader1) {
|
|
5428
5505
|
_inherits(SceneLoader, Loader1);
|
|
5429
5506
|
function SceneLoader() {
|
|
@@ -5442,32 +5519,28 @@ var SceneLoader = /*#__PURE__*/ function(Loader1) {
|
|
|
5442
5519
|
// parse ambient light
|
|
5443
5520
|
var ambient = data.scene.ambient;
|
|
5444
5521
|
var useCustomAmbient = ambient.specularMode === "Custom";
|
|
5522
|
+
var useSH = ambient.diffuseMode === DiffuseMode.SphericalHarmonics;
|
|
5523
|
+
scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
|
|
5524
|
+
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
5525
|
+
scene.ambientLight.diffuseMode = ambient.diffuseMode;
|
|
5526
|
+
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
5527
|
+
scene.ambientLight.specularTextureDecodeRGBM = true;
|
|
5445
5528
|
if (useCustomAmbient && ambient.customAmbientLight) {
|
|
5446
|
-
// @ts-ignore
|
|
5447
|
-
|
|
5448
|
-
|
|
5449
|
-
|
|
5450
|
-
|
|
5451
|
-
|
|
5452
|
-
|
|
5453
|
-
|
|
5454
|
-
|
|
5455
|
-
|
|
5456
|
-
|
|
5457
|
-
|
|
5458
|
-
|
|
5459
|
-
|
|
5460
|
-
|
|
5461
|
-
scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
|
|
5462
|
-
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
5463
|
-
scene.ambientLight.diffuseMode = ambient.diffuseMode;
|
|
5464
|
-
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
5465
|
-
});
|
|
5466
|
-
promises.push(ambientLightPromise);
|
|
5467
|
-
} else {
|
|
5468
|
-
scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
|
|
5469
|
-
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
5470
|
-
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
5529
|
+
promises.push(// @ts-ignore
|
|
5530
|
+
resourceManager.getResourceByRef(ambient.customAmbientLight).then(function(ambientLight) {
|
|
5531
|
+
scene.ambientLight.specularTexture = ambientLight.specularTexture;
|
|
5532
|
+
}));
|
|
5533
|
+
}
|
|
5534
|
+
if (ambient.ambientLight && (!useCustomAmbient || useSH)) {
|
|
5535
|
+
promises.push(// @ts-ignore
|
|
5536
|
+
resourceManager.getResourceByRef(ambient.ambientLight).then(function(ambientLight) {
|
|
5537
|
+
if (!useCustomAmbient) {
|
|
5538
|
+
scene.ambientLight.specularTexture = ambientLight.specularTexture;
|
|
5539
|
+
}
|
|
5540
|
+
if (useSH) {
|
|
5541
|
+
scene.ambientLight.diffuseSphericalHarmonics = ambientLight.diffuseSphericalHarmonics;
|
|
5542
|
+
}
|
|
5543
|
+
}));
|
|
5471
5544
|
}
|
|
5472
5545
|
var background = data.scene.background;
|
|
5473
5546
|
scene.background.mode = background.mode;
|