@galacean/engine-loader 1.1.0-beta.2 → 1.1.0-beta.20
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 +331 -232
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +331 -232
- package/dist/module.js +332 -233
- package/dist/module.js.map +1 -1
- package/package.json +5 -5
- package/types/GLTFLoader.d.ts +1 -0
- package/types/gltf/GLTFUtil.d.ts +3 -3
- package/types/gltf/parser/GLTFParserContext.d.ts +4 -2
- package/types/gltf/parser/GLTFSceneParser.d.ts +0 -1
- package/types/index.d.ts +1 -0
- package/types/ktx2/KTX2Loader.d.ts +4 -3
- package/types/ktx2/transcoder/AbstractTranscoder.d.ts +1 -1
- package/types/ktx2/transcoder/BinomialLLCTranscoder.d.ts +1 -1
- package/types/ktx2/transcoder/BinomialLLCWorkerCode.d.ts +1 -1
- 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/resource-deserialize/resources/schema/MaterialSchema.d.ts +1 -1
- package/types/resource-deserialize/utils/BufferReader.d.ts +1 -1
package/dist/main.js
CHANGED
|
@@ -120,116 +120,116 @@ var BufferReader = /*#__PURE__*/ function() {
|
|
|
120
120
|
this.data = data;
|
|
121
121
|
this._dataView = new DataView(data.buffer, data.byteOffset + byteOffset, byteLength != null ? byteLength : data.byteLength - byteOffset);
|
|
122
122
|
this._littleEndian = littleEndian;
|
|
123
|
-
this.
|
|
123
|
+
this._position = 0;
|
|
124
124
|
this._baseOffset = byteOffset;
|
|
125
125
|
}
|
|
126
126
|
var _proto = BufferReader.prototype;
|
|
127
127
|
_proto.nextUint8 = function nextUint8() {
|
|
128
|
-
var value = this._dataView.getUint8(this.
|
|
129
|
-
this.
|
|
128
|
+
var value = this._dataView.getUint8(this._position);
|
|
129
|
+
this._position += 1;
|
|
130
130
|
return value;
|
|
131
131
|
};
|
|
132
132
|
_proto.nextUint16 = function nextUint16() {
|
|
133
|
-
var value = this._dataView.getUint16(this.
|
|
134
|
-
this.
|
|
133
|
+
var value = this._dataView.getUint16(this._position, this._littleEndian);
|
|
134
|
+
this._position += 2;
|
|
135
135
|
return value;
|
|
136
136
|
};
|
|
137
137
|
_proto.nextUint32 = function nextUint32() {
|
|
138
|
-
var value = this._dataView.getUint32(this.
|
|
139
|
-
this.
|
|
138
|
+
var value = this._dataView.getUint32(this._position, this._littleEndian);
|
|
139
|
+
this._position += 4;
|
|
140
140
|
return value;
|
|
141
141
|
};
|
|
142
142
|
_proto.nextInt32 = function nextInt32() {
|
|
143
|
-
var value = this._dataView.getInt32(this.
|
|
144
|
-
this.
|
|
143
|
+
var value = this._dataView.getInt32(this._position, this._littleEndian);
|
|
144
|
+
this._position += 4;
|
|
145
145
|
return value;
|
|
146
146
|
};
|
|
147
147
|
_proto.nextInt32Array = function nextInt32Array(len) {
|
|
148
|
-
var value = new Int32Array(this.data.buffer, this.
|
|
149
|
-
this.
|
|
148
|
+
var value = new Int32Array(this.data.buffer, this._position + this._dataView.byteOffset, len);
|
|
149
|
+
this._position += 4 * len;
|
|
150
150
|
return value;
|
|
151
151
|
};
|
|
152
152
|
_proto.nextFloat32 = function nextFloat32() {
|
|
153
|
-
var value = this._dataView.getFloat32(this.
|
|
154
|
-
this.
|
|
153
|
+
var value = this._dataView.getFloat32(this._position, this._littleEndian);
|
|
154
|
+
this._position += 4;
|
|
155
155
|
return value;
|
|
156
156
|
};
|
|
157
157
|
_proto.nextFloat32Array = function nextFloat32Array(len) {
|
|
158
|
-
var value = new Float32Array(this.data.buffer, this.
|
|
159
|
-
this.
|
|
158
|
+
var value = new Float32Array(this.data.buffer, this._position + this._dataView.byteOffset, len);
|
|
159
|
+
this._position += 4 * len;
|
|
160
160
|
return value;
|
|
161
161
|
};
|
|
162
162
|
_proto.nextUint32Array = function nextUint32Array(len) {
|
|
163
|
-
var value = new Uint32Array(this.data.buffer, this.
|
|
164
|
-
this.
|
|
163
|
+
var value = new Uint32Array(this.data.buffer, this._position + this._dataView.byteOffset, len);
|
|
164
|
+
this._position += 4 * len;
|
|
165
165
|
return value;
|
|
166
166
|
};
|
|
167
167
|
_proto.nextUint8Array = function nextUint8Array(len) {
|
|
168
|
-
var value = new Uint8Array(this.data.buffer, this.
|
|
169
|
-
this.
|
|
168
|
+
var value = new Uint8Array(this.data.buffer, this._position + this._dataView.byteOffset, len);
|
|
169
|
+
this._position += len;
|
|
170
170
|
return value;
|
|
171
171
|
};
|
|
172
172
|
_proto.nextUint64 = function nextUint64() {
|
|
173
|
-
var left = this._dataView.getUint32(this.
|
|
174
|
-
var right = this._dataView.getUint32(this.
|
|
173
|
+
var left = this._dataView.getUint32(this._position, this._littleEndian);
|
|
174
|
+
var right = this._dataView.getUint32(this._position + 4, this._littleEndian);
|
|
175
175
|
var value = left + Math.pow(2, 32) * right;
|
|
176
|
-
this.
|
|
176
|
+
this._position += 8;
|
|
177
177
|
return value;
|
|
178
178
|
};
|
|
179
179
|
_proto.nextStr = function nextStr() {
|
|
180
180
|
var strByteLength = this.nextUint16();
|
|
181
|
-
var uint8Array = new Uint8Array(this.data.buffer, this.
|
|
182
|
-
this.
|
|
181
|
+
var uint8Array = new Uint8Array(this.data.buffer, this._position + this._dataView.byteOffset, strByteLength);
|
|
182
|
+
this._position += strByteLength;
|
|
183
183
|
return engineCore.Utils.decodeText(uint8Array);
|
|
184
184
|
};
|
|
185
185
|
/**
|
|
186
186
|
* image data 放在最后
|
|
187
187
|
*/ _proto.nextImageData = function nextImageData(count) {
|
|
188
|
-
return new Uint8Array(this.data.buffer, this.data.byteOffset + this.
|
|
188
|
+
return new Uint8Array(this.data.buffer, this.data.byteOffset + this._position);
|
|
189
189
|
};
|
|
190
190
|
_proto.nextImagesData = function nextImagesData(count) {
|
|
191
191
|
var imagesLen = new Array(count);
|
|
192
192
|
// Start offset of Uint32Array should be a multiple of 4. ref: https://stackoverflow.com/questions/15417310/why-typed-array-constructors-require-offset-to-be-multiple-of-underlying-type-si
|
|
193
193
|
for(var i = 0; i < count; i++){
|
|
194
|
-
var len = this._dataView.getUint32(this.
|
|
194
|
+
var len = this._dataView.getUint32(this._position, this._littleEndian);
|
|
195
195
|
imagesLen[i] = len;
|
|
196
|
-
this.
|
|
196
|
+
this._position += 4;
|
|
197
197
|
}
|
|
198
198
|
var imagesData = [];
|
|
199
199
|
for(var i1 = 0; i1 < count; i1++){
|
|
200
200
|
var len1 = imagesLen[i1];
|
|
201
|
-
var buffer = new Uint8Array(this.data.buffer, this._dataView.byteOffset + this.
|
|
202
|
-
this.
|
|
201
|
+
var buffer = new Uint8Array(this.data.buffer, this._dataView.byteOffset + this._position, len1);
|
|
202
|
+
this._position += len1;
|
|
203
203
|
imagesData.push(buffer);
|
|
204
204
|
}
|
|
205
205
|
return imagesData;
|
|
206
206
|
};
|
|
207
207
|
_proto.skip = function skip(bytes) {
|
|
208
|
-
this.
|
|
208
|
+
this._position += bytes;
|
|
209
209
|
return this;
|
|
210
210
|
};
|
|
211
211
|
_proto.scan = function scan(maxByteLength, term) {
|
|
212
212
|
if (term === void 0) term = 0x00;
|
|
213
|
-
var byteOffset = this.
|
|
213
|
+
var byteOffset = this._position;
|
|
214
214
|
var byteLength = 0;
|
|
215
|
-
while(this._dataView.getUint8(this.
|
|
215
|
+
while(this._dataView.getUint8(this._position) !== term && byteLength < maxByteLength){
|
|
216
216
|
byteLength++;
|
|
217
|
-
this.
|
|
217
|
+
this._position++;
|
|
218
218
|
}
|
|
219
|
-
if (byteLength < maxByteLength) this.
|
|
219
|
+
if (byteLength < maxByteLength) this._position++;
|
|
220
220
|
return new Uint8Array(this._dataView.buffer, this._dataView.byteOffset + byteOffset, byteLength);
|
|
221
221
|
};
|
|
222
222
|
_create_class(BufferReader, [
|
|
223
223
|
{
|
|
224
224
|
key: "position",
|
|
225
225
|
get: function get() {
|
|
226
|
-
return this.
|
|
226
|
+
return this._position;
|
|
227
227
|
}
|
|
228
228
|
},
|
|
229
229
|
{
|
|
230
230
|
key: "offset",
|
|
231
231
|
get: function get() {
|
|
232
|
-
return this.
|
|
232
|
+
return this._position + this._baseOffset;
|
|
233
233
|
}
|
|
234
234
|
}
|
|
235
235
|
]);
|
|
@@ -293,75 +293,74 @@ exports.MeshDecoder = /*#__PURE__*/ function() {
|
|
|
293
293
|
var encodedMeshData = JSON.parse(jsonDataString);
|
|
294
294
|
// @ts-ignore Vector3 is not compatible with {x: number, y: number, z: number}.
|
|
295
295
|
encodedMeshData.bounds && modelMesh.bounds.copyFrom(encodedMeshData.bounds);
|
|
296
|
-
var offset = Math.ceil(bufferReader.offset / 4) * 4;
|
|
296
|
+
var offset = Math.ceil(bufferReader.offset / 4) * 4 + bufferReader.data.byteOffset;
|
|
297
297
|
var buffer = bufferReader.data.buffer;
|
|
298
|
-
var
|
|
299
|
-
var float32Array = new Float32Array(buffer, encodedMeshData.positions.start + offset + byteOffset, (encodedMeshData.positions.end - encodedMeshData.positions.start) / 4);
|
|
298
|
+
var float32Array = new Float32Array(buffer, encodedMeshData.positions.start + offset, (encodedMeshData.positions.end - encodedMeshData.positions.start) / 4);
|
|
300
299
|
var vertexCount = float32Array.length / 3;
|
|
301
300
|
var positions = float32ArrayToVector3(float32Array, vertexCount);
|
|
302
301
|
modelMesh.setPositions(positions);
|
|
303
302
|
if (encodedMeshData.normals) {
|
|
304
|
-
var float32Array1 = new Float32Array(buffer, encodedMeshData.normals.start + offset
|
|
303
|
+
var float32Array1 = new Float32Array(buffer, encodedMeshData.normals.start + offset, (encodedMeshData.normals.end - encodedMeshData.normals.start) / 4);
|
|
305
304
|
var normals = float32ArrayToVector3(float32Array1, vertexCount);
|
|
306
305
|
modelMesh.setNormals(normals);
|
|
307
306
|
}
|
|
308
307
|
if (encodedMeshData.uvs) {
|
|
309
|
-
var float32Array2 = new Float32Array(buffer, encodedMeshData.uvs.start + offset
|
|
308
|
+
var float32Array2 = new Float32Array(buffer, encodedMeshData.uvs.start + offset, (encodedMeshData.uvs.end - encodedMeshData.uvs.start) / 4);
|
|
310
309
|
modelMesh.setUVs(float32ArrayToVector2(float32Array2, vertexCount));
|
|
311
310
|
}
|
|
312
311
|
if (encodedMeshData.uv1) {
|
|
313
|
-
var float32Array3 = new Float32Array(buffer, encodedMeshData.uv1.start + offset
|
|
312
|
+
var float32Array3 = new Float32Array(buffer, encodedMeshData.uv1.start + offset, (encodedMeshData.uv1.end - encodedMeshData.uv1.start) / 4);
|
|
314
313
|
modelMesh.setUVs(float32ArrayToVector2(float32Array3, vertexCount), 1);
|
|
315
314
|
}
|
|
316
315
|
if (encodedMeshData.uv2) {
|
|
317
|
-
var float32Array4 = new Float32Array(buffer, encodedMeshData.uv2.start + offset
|
|
316
|
+
var float32Array4 = new Float32Array(buffer, encodedMeshData.uv2.start + offset, (encodedMeshData.uv2.end - encodedMeshData.uv2.start) / 4);
|
|
318
317
|
modelMesh.setUVs(float32ArrayToVector2(float32Array4, vertexCount), 2);
|
|
319
318
|
}
|
|
320
319
|
if (encodedMeshData.uv3) {
|
|
321
|
-
var float32Array5 = new Float32Array(buffer, encodedMeshData.uv3.start + offset
|
|
320
|
+
var float32Array5 = new Float32Array(buffer, encodedMeshData.uv3.start + offset, (encodedMeshData.uv3.end - encodedMeshData.uv3.start) / 4);
|
|
322
321
|
modelMesh.setUVs(float32ArrayToVector2(float32Array5, vertexCount), 3);
|
|
323
322
|
}
|
|
324
323
|
if (encodedMeshData.uv4) {
|
|
325
|
-
var float32Array6 = new Float32Array(buffer, encodedMeshData.uv4.start + offset
|
|
324
|
+
var float32Array6 = new Float32Array(buffer, encodedMeshData.uv4.start + offset, (encodedMeshData.uv4.end - encodedMeshData.uv4.start) / 4);
|
|
326
325
|
modelMesh.setUVs(float32ArrayToVector2(float32Array6, vertexCount), 4);
|
|
327
326
|
}
|
|
328
327
|
if (encodedMeshData.uv5) {
|
|
329
|
-
var float32Array7 = new Float32Array(buffer, encodedMeshData.uv5.start + offset
|
|
328
|
+
var float32Array7 = new Float32Array(buffer, encodedMeshData.uv5.start + offset, (encodedMeshData.uv5.end - encodedMeshData.uv5.start) / 4);
|
|
330
329
|
modelMesh.setUVs(float32ArrayToVector2(float32Array7, vertexCount), 5);
|
|
331
330
|
}
|
|
332
331
|
if (encodedMeshData.uv6) {
|
|
333
|
-
var float32Array8 = new Float32Array(buffer, encodedMeshData.uv6.start + offset
|
|
332
|
+
var float32Array8 = new Float32Array(buffer, encodedMeshData.uv6.start + offset, (encodedMeshData.uv6.end - encodedMeshData.uv6.start) / 4);
|
|
334
333
|
modelMesh.setUVs(float32ArrayToVector2(float32Array8, vertexCount), 6);
|
|
335
334
|
}
|
|
336
335
|
if (encodedMeshData.uv7) {
|
|
337
|
-
var float32Array9 = new Float32Array(buffer, encodedMeshData.uv7.start + offset
|
|
336
|
+
var float32Array9 = new Float32Array(buffer, encodedMeshData.uv7.start + offset, (encodedMeshData.uv7.end - encodedMeshData.uv7.start) / 4);
|
|
338
337
|
modelMesh.setUVs(float32ArrayToVector2(float32Array9, vertexCount), 7);
|
|
339
338
|
}
|
|
340
339
|
if (encodedMeshData.colors) {
|
|
341
|
-
var float32Array10 = new Float32Array(buffer, encodedMeshData.colors.start + offset
|
|
340
|
+
var float32Array10 = new Float32Array(buffer, encodedMeshData.colors.start + offset, (encodedMeshData.colors.end - encodedMeshData.colors.start) / 4);
|
|
342
341
|
modelMesh.setColors(float32ArrayToVColor(float32Array10, vertexCount));
|
|
343
342
|
}
|
|
344
343
|
if (encodedMeshData.boneWeights) {
|
|
345
|
-
var float32Array11 = new Float32Array(buffer, encodedMeshData.boneWeights.start + offset
|
|
344
|
+
var float32Array11 = new Float32Array(buffer, encodedMeshData.boneWeights.start + offset, (encodedMeshData.boneWeights.end - encodedMeshData.boneWeights.start) / 4);
|
|
346
345
|
modelMesh.setBoneWeights(float32ArrayToVector4(float32Array11, vertexCount));
|
|
347
346
|
}
|
|
348
347
|
if (encodedMeshData.boneIndices) {
|
|
349
|
-
var float32Array12 = new Float32Array(buffer, encodedMeshData.boneIndices.start + offset
|
|
348
|
+
var float32Array12 = new Float32Array(buffer, encodedMeshData.boneIndices.start + offset, (encodedMeshData.boneIndices.end - encodedMeshData.boneIndices.start) / 4);
|
|
350
349
|
modelMesh.setBoneIndices(float32ArrayToVector4(float32Array12, vertexCount));
|
|
351
350
|
}
|
|
352
351
|
if (encodedMeshData.blendShapes) {
|
|
353
352
|
encodedMeshData.blendShapes.forEach(function(blendShapeData) {
|
|
354
353
|
var blendShape = new engineCore.BlendShape(blendShapeData.name);
|
|
355
354
|
blendShapeData.frames.forEach(function(frameData) {
|
|
356
|
-
var positionArray = new Float32Array(buffer, frameData.deltaPosition.start + offset
|
|
355
|
+
var positionArray = new Float32Array(buffer, frameData.deltaPosition.start + offset, (frameData.deltaPosition.end - frameData.deltaPosition.start) / 4);
|
|
357
356
|
var count = positionArray.length / 3;
|
|
358
357
|
var deltaPosition = float32ArrayToVector3(positionArray, count);
|
|
359
358
|
if (frameData.deltaNormals) {
|
|
360
|
-
var normalsArray = new Float32Array(buffer, frameData.deltaNormals.start + offset
|
|
359
|
+
var normalsArray = new Float32Array(buffer, frameData.deltaNormals.start + offset, (frameData.deltaNormals.end - frameData.deltaNormals.start) / 4);
|
|
361
360
|
float32ArrayToVector3(normalsArray, count);
|
|
362
361
|
}
|
|
363
362
|
if (frameData.deltaTangents) {
|
|
364
|
-
var tangentsArray = new Float32Array(buffer, frameData.deltaTangents.start + offset
|
|
363
|
+
var tangentsArray = new Float32Array(buffer, frameData.deltaTangents.start + offset, (frameData.deltaTangents.end - frameData.deltaTangents.start) / 4);
|
|
365
364
|
float32ArrayToVector4(tangentsArray, count);
|
|
366
365
|
}
|
|
367
366
|
blendShape.addFrame(frameData.weight, deltaPosition);
|
|
@@ -372,9 +371,9 @@ exports.MeshDecoder = /*#__PURE__*/ function() {
|
|
|
372
371
|
if (encodedMeshData.indices) {
|
|
373
372
|
var indices = null;
|
|
374
373
|
if (encodedMeshData.indices.type === 0) {
|
|
375
|
-
indices = new Uint16Array(buffer, encodedMeshData.indices.start + offset
|
|
374
|
+
indices = new Uint16Array(buffer, encodedMeshData.indices.start + offset, (encodedMeshData.indices.end - encodedMeshData.indices.start) / 2);
|
|
376
375
|
} else {
|
|
377
|
-
indices = new Uint32Array(buffer, encodedMeshData.indices.start + offset
|
|
376
|
+
indices = new Uint32Array(buffer, encodedMeshData.indices.start + offset, (encodedMeshData.indices.end - encodedMeshData.indices.start) / 4);
|
|
378
377
|
}
|
|
379
378
|
modelMesh.setIndices(indices);
|
|
380
379
|
}
|
|
@@ -527,12 +526,12 @@ function _construct(Parent, args, Class) {
|
|
|
527
526
|
}
|
|
528
527
|
|
|
529
528
|
var ReflectionParser = /*#__PURE__*/ function() {
|
|
530
|
-
function ReflectionParser() {
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
return
|
|
529
|
+
function ReflectionParser(_context) {
|
|
530
|
+
this._context = _context;
|
|
531
|
+
}
|
|
532
|
+
var _proto = ReflectionParser.prototype;
|
|
533
|
+
_proto.parseEntity = function parseEntity(entityConfig) {
|
|
534
|
+
return this._getEntityByConfig(entityConfig).then(function(entity) {
|
|
536
535
|
var _entityConfig_isActive;
|
|
537
536
|
entity.isActive = (_entityConfig_isActive = entityConfig.isActive) != null ? _entityConfig_isActive : true;
|
|
538
537
|
var position = entityConfig.position, rotation = entityConfig.rotation, scale = entityConfig.scale;
|
|
@@ -542,72 +541,33 @@ var ReflectionParser = /*#__PURE__*/ function() {
|
|
|
542
541
|
return entity;
|
|
543
542
|
});
|
|
544
543
|
};
|
|
545
|
-
|
|
546
|
-
|
|
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;
|
|
544
|
+
_proto.parseClassObject = function parseClassObject(item) {
|
|
545
|
+
var _this = this;
|
|
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
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
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
|
-
}
|
|
549
|
+
return Promise.all(params.map(function(param) {
|
|
550
|
+
return _this.parseBasicType(param);
|
|
551
|
+
})).then(function(resultParams) {
|
|
552
|
+
return _construct(Class, [].concat(resultParams));
|
|
553
|
+
}).then(function(instance) {
|
|
554
|
+
return _this.parsePropsAndMethods(instance, item);
|
|
555
|
+
});
|
|
592
556
|
};
|
|
593
|
-
|
|
594
|
-
if (resourceManager === void 0) resourceManager = engine.resourceManager;
|
|
595
|
-
var _this = this;
|
|
557
|
+
_proto.parsePropsAndMethods = function parsePropsAndMethods(instance, item) {
|
|
596
558
|
var promises = [];
|
|
597
559
|
if (item.methods) {
|
|
598
560
|
for(var methodName in item.methods){
|
|
599
561
|
var methodParams = item.methods[methodName];
|
|
600
562
|
for(var i = 0, count = methodParams.length; i < count; i++){
|
|
601
|
-
|
|
602
|
-
var promise = this.parseMethod(instance, methodName, params, engine, resourceManager);
|
|
603
|
-
promises.push(promise);
|
|
563
|
+
promises.push(this.parseMethod(instance, methodName, methodParams[i]));
|
|
604
564
|
}
|
|
605
565
|
}
|
|
606
566
|
}
|
|
607
567
|
if (item.props) {
|
|
608
|
-
var
|
|
568
|
+
var _this = this, _loop = function(key) {
|
|
609
569
|
var value = item.props[key];
|
|
610
|
-
var promise =
|
|
570
|
+
var promise = _this.parseBasicType(value, instance[key]).then(function(v) {
|
|
611
571
|
return instance[key] = v;
|
|
612
572
|
});
|
|
613
573
|
promises.push(promise);
|
|
@@ -615,27 +575,96 @@ var ReflectionParser = /*#__PURE__*/ function() {
|
|
|
615
575
|
for(var key in item.props)_loop(key);
|
|
616
576
|
}
|
|
617
577
|
return Promise.all(promises).then(function() {
|
|
618
|
-
var handle =
|
|
619
|
-
if (handle) return handle(instance, item
|
|
578
|
+
var handle = ReflectionParser.customParseComponentHandles[instance.constructor.name];
|
|
579
|
+
if (handle) return handle(instance, item);
|
|
620
580
|
else return instance;
|
|
621
581
|
});
|
|
622
582
|
};
|
|
623
|
-
|
|
624
|
-
if (resourceManager === void 0) resourceManager = engine.resourceManager;
|
|
583
|
+
_proto.parseMethod = function parseMethod(instance, methodName, methodParams) {
|
|
625
584
|
var _this = this;
|
|
626
585
|
return Promise.all(methodParams.map(function(param) {
|
|
627
|
-
return _this.parseBasicType(param
|
|
586
|
+
return _this.parseBasicType(param);
|
|
628
587
|
})).then(function(result) {
|
|
629
588
|
var _instance;
|
|
630
589
|
return (_instance = instance)[methodName].apply(_instance, [].concat(result));
|
|
631
590
|
});
|
|
632
591
|
};
|
|
592
|
+
_proto.parseBasicType = function parseBasicType(value, originValue) {
|
|
593
|
+
var _this = this;
|
|
594
|
+
if (Array.isArray(value)) {
|
|
595
|
+
return Promise.all(value.map(function(item) {
|
|
596
|
+
return _this.parseBasicType(item);
|
|
597
|
+
}));
|
|
598
|
+
} else if (typeof value === "object" && value != null) {
|
|
599
|
+
if (ReflectionParser._isClass(value)) {
|
|
600
|
+
// class object
|
|
601
|
+
return this.parseClassObject(value);
|
|
602
|
+
} else if (ReflectionParser._isAssetRef(value)) {
|
|
603
|
+
// reference object
|
|
604
|
+
// @ts-ignore
|
|
605
|
+
return this._context.resourceManager.getResourceByRef(value);
|
|
606
|
+
} else if (ReflectionParser._isEntityRef(value)) {
|
|
607
|
+
// entity reference
|
|
608
|
+
return Promise.resolve(this._context.entityMap.get(value.entityId));
|
|
609
|
+
} else if (originValue) {
|
|
610
|
+
var _this1 = this, _loop = function(key) {
|
|
611
|
+
if (key === "methods") {
|
|
612
|
+
var methods = value[key];
|
|
613
|
+
for(var methodName in methods){
|
|
614
|
+
var methodParams = methods[methodName];
|
|
615
|
+
for(var i = 0, count = methodParams.length; i < count; i++){
|
|
616
|
+
var params = methodParams[i];
|
|
617
|
+
var promise = _this1.parseMethod(originValue, methodName, params);
|
|
618
|
+
promises.push(promise);
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
} else {
|
|
622
|
+
promises.push(_this1.parseBasicType(value[key], originValue[key]).then(function(v) {
|
|
623
|
+
return originValue[key] = v;
|
|
624
|
+
}));
|
|
625
|
+
}
|
|
626
|
+
};
|
|
627
|
+
var promises = [];
|
|
628
|
+
for(var key in value)_loop(key);
|
|
629
|
+
return Promise.all(promises).then(function() {
|
|
630
|
+
return originValue;
|
|
631
|
+
});
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
// primitive type
|
|
635
|
+
return Promise.resolve(value);
|
|
636
|
+
};
|
|
637
|
+
_proto._getEntityByConfig = function _getEntityByConfig(entityConfig) {
|
|
638
|
+
// @ts-ignore
|
|
639
|
+
var assetRefId = entityConfig.assetRefId;
|
|
640
|
+
var engine = this._context.engine;
|
|
641
|
+
if (assetRefId) {
|
|
642
|
+
return engine.resourceManager// @ts-ignore
|
|
643
|
+
.getResourceByRef({
|
|
644
|
+
refId: assetRefId,
|
|
645
|
+
key: entityConfig.key,
|
|
646
|
+
isClone: entityConfig.isClone
|
|
647
|
+
}).then(function(entity) {
|
|
648
|
+
entity.name = entityConfig.name;
|
|
649
|
+
return entity;
|
|
650
|
+
});
|
|
651
|
+
} else {
|
|
652
|
+
var entity = new engineCore.Entity(engine, entityConfig.name);
|
|
653
|
+
return Promise.resolve(entity);
|
|
654
|
+
}
|
|
655
|
+
};
|
|
656
|
+
ReflectionParser.registerCustomParseComponent = function registerCustomParseComponent(componentType, handle) {
|
|
657
|
+
this.customParseComponentHandles[componentType] = handle;
|
|
658
|
+
};
|
|
633
659
|
ReflectionParser._isClass = function _isClass(value) {
|
|
634
660
|
return value["class"] != undefined;
|
|
635
661
|
};
|
|
636
|
-
ReflectionParser.
|
|
662
|
+
ReflectionParser._isAssetRef = function _isAssetRef(value) {
|
|
637
663
|
return value["refId"] != undefined;
|
|
638
664
|
};
|
|
665
|
+
ReflectionParser._isEntityRef = function _isEntityRef(value) {
|
|
666
|
+
return value["entityId"] != undefined;
|
|
667
|
+
};
|
|
639
668
|
return ReflectionParser;
|
|
640
669
|
}();
|
|
641
670
|
(function() {
|
|
@@ -903,6 +932,8 @@ var SceneParserContext = /*#__PURE__*/ function() {
|
|
|
903
932
|
this.assets = new Map();
|
|
904
933
|
this.entityConfigMap = new Map();
|
|
905
934
|
this.rootIds = [];
|
|
935
|
+
this.engine = scene.engine;
|
|
936
|
+
this.resourceManager = scene.engine.resourceManager;
|
|
906
937
|
}
|
|
907
938
|
var _proto = SceneParserContext.prototype;
|
|
908
939
|
_proto.destroy = function destroy() {
|
|
@@ -919,7 +950,7 @@ var SceneParserContext = /*#__PURE__*/ function() {
|
|
|
919
950
|
function SceneParser(context) {
|
|
920
951
|
var _this = this;
|
|
921
952
|
this.context = context;
|
|
922
|
-
this._engine =
|
|
953
|
+
this._engine = context.scene.engine;
|
|
923
954
|
this._organizeEntities = this._organizeEntities.bind(this);
|
|
924
955
|
this._parseComponents = this._parseComponents.bind(this);
|
|
925
956
|
this._clearAndResolveScene = this._clearAndResolveScene.bind(this);
|
|
@@ -927,22 +958,24 @@ var SceneParserContext = /*#__PURE__*/ function() {
|
|
|
927
958
|
_this._reject = reject;
|
|
928
959
|
_this._resolve = resolve;
|
|
929
960
|
});
|
|
961
|
+
this._reflectionParser = new ReflectionParser(context);
|
|
930
962
|
}
|
|
931
963
|
var _proto = SceneParser.prototype;
|
|
932
964
|
/** start parse the scene */ _proto.start = function start() {
|
|
933
965
|
this._parseEntities().then(this._organizeEntities).then(this._parseComponents).then(this._clearAndResolveScene).then(this._resolve).catch(this._reject);
|
|
934
966
|
};
|
|
935
967
|
_proto._parseEntities = function _parseEntities() {
|
|
968
|
+
var _this = this;
|
|
936
969
|
var entitiesConfig = this.context.originalData.entities;
|
|
937
970
|
var entityConfigMap = this.context.entityConfigMap;
|
|
938
971
|
var entitiesMap = this.context.entityMap;
|
|
939
972
|
var rootIds = this.context.rootIds;
|
|
940
|
-
|
|
973
|
+
this._engine;
|
|
941
974
|
var promises = entitiesConfig.map(function(entityConfig) {
|
|
942
975
|
entityConfigMap.set(entityConfig.id, entityConfig);
|
|
943
976
|
// record root entities
|
|
944
977
|
if (!entityConfig.parent) rootIds.push(entityConfig.id);
|
|
945
|
-
return
|
|
978
|
+
return _this._reflectionParser.parseEntity(entityConfig);
|
|
946
979
|
});
|
|
947
980
|
return Promise.all(promises).then(function(entities) {
|
|
948
981
|
for(var i = 0, l = entities.length; i < l; i++){
|
|
@@ -980,7 +1013,7 @@ var SceneParserContext = /*#__PURE__*/ function() {
|
|
|
980
1013
|
component = entity.getComponent(engineCore.Loader.getClass(key));
|
|
981
1014
|
}
|
|
982
1015
|
component = component || entity.addComponent(engineCore.Loader.getClass(key));
|
|
983
|
-
var promise =
|
|
1016
|
+
var promise = this._reflectionParser.parsePropsAndMethods(component, componentConfig);
|
|
984
1017
|
promises.push(promise);
|
|
985
1018
|
}
|
|
986
1019
|
}
|
|
@@ -1536,10 +1569,10 @@ var TextureWrapMode;
|
|
|
1536
1569
|
/**
|
|
1537
1570
|
* @internal
|
|
1538
1571
|
*/ var GLTFParserContext = /*#__PURE__*/ function() {
|
|
1539
|
-
function GLTFParserContext(glTFResource, resourceManager,
|
|
1572
|
+
function GLTFParserContext(glTFResource, resourceManager, params) {
|
|
1540
1573
|
this.glTFResource = glTFResource;
|
|
1541
1574
|
this.resourceManager = resourceManager;
|
|
1542
|
-
this.
|
|
1575
|
+
this.params = params;
|
|
1543
1576
|
this.accessorBufferCache = {};
|
|
1544
1577
|
this._resourceCache = new Map();
|
|
1545
1578
|
this.contentRestorer = new GLTFContentRestorer(glTFResource);
|
|
@@ -1593,11 +1626,37 @@ var TextureWrapMode;
|
|
|
1593
1626
|
_this.get(9),
|
|
1594
1627
|
_this.get(2)
|
|
1595
1628
|
]).then(function() {
|
|
1629
|
+
var glTFResource = _this.glTFResource;
|
|
1630
|
+
if (glTFResource.skins || glTFResource.animations) {
|
|
1631
|
+
_this._createAnimator(_this, glTFResource.animations);
|
|
1632
|
+
}
|
|
1596
1633
|
_this.resourceManager.addContentRestorer(_this.contentRestorer);
|
|
1597
|
-
return
|
|
1634
|
+
return glTFResource;
|
|
1598
1635
|
});
|
|
1599
1636
|
});
|
|
1600
1637
|
};
|
|
1638
|
+
_proto._createAnimator = function _createAnimator(context, animations) {
|
|
1639
|
+
var defaultSceneRoot = context.glTFResource.defaultSceneRoot;
|
|
1640
|
+
var animator = defaultSceneRoot.addComponent(engineCore.Animator);
|
|
1641
|
+
var animatorController = new engineCore.AnimatorController();
|
|
1642
|
+
var layer = new engineCore.AnimatorControllerLayer("layer");
|
|
1643
|
+
var animatorStateMachine = new engineCore.AnimatorStateMachine();
|
|
1644
|
+
animatorController.addLayer(layer);
|
|
1645
|
+
animator.animatorController = animatorController;
|
|
1646
|
+
layer.stateMachine = animatorStateMachine;
|
|
1647
|
+
if (animations) {
|
|
1648
|
+
for(var i = 0; i < animations.length; i++){
|
|
1649
|
+
var animationClip = animations[i];
|
|
1650
|
+
var name = animationClip.name;
|
|
1651
|
+
var uniqueName = animatorStateMachine.makeUniqueStateName(name);
|
|
1652
|
+
if (uniqueName !== name) {
|
|
1653
|
+
console.warn("AnimatorState name is existed, name: " + name + " reset to " + uniqueName);
|
|
1654
|
+
}
|
|
1655
|
+
var animatorState = animatorStateMachine.addState(uniqueName);
|
|
1656
|
+
animatorState.clip = animationClip;
|
|
1657
|
+
}
|
|
1658
|
+
}
|
|
1659
|
+
};
|
|
1601
1660
|
_proto._handleSubAsset = function _handleSubAsset(resource, type, index) {
|
|
1602
1661
|
var _this = this;
|
|
1603
1662
|
var glTFResourceKey = glTFResourceMap[type];
|
|
@@ -2237,7 +2296,7 @@ var SupercompressionScheme;
|
|
|
2237
2296
|
alphaSliceByteLength: sgdReader.nextUint32()
|
|
2238
2297
|
};
|
|
2239
2298
|
}
|
|
2240
|
-
var endpointsByteOffset = sgdByteOffset + sgdReader.
|
|
2299
|
+
var endpointsByteOffset = sgdByteOffset + sgdReader.position;
|
|
2241
2300
|
var selectorsByteOffset = endpointsByteOffset + endpointsByteLength;
|
|
2242
2301
|
var tablesByteOffset = selectorsByteOffset + selectorsByteLength;
|
|
2243
2302
|
var extendedByteOffset = tablesByteOffset + tablesByteLength;
|
|
@@ -2429,6 +2488,25 @@ var AbstractTranscoder = /*#__PURE__*/ function() {
|
|
|
2429
2488
|
}();
|
|
2430
2489
|
|
|
2431
2490
|
/** @internal */ function TranscodeWorkerCode$1() {
|
|
2491
|
+
var initPromise;
|
|
2492
|
+
var init = function init(wasmBinary) {
|
|
2493
|
+
if (!initPromise) {
|
|
2494
|
+
initPromise = new Promise(function(resolve, reject) {
|
|
2495
|
+
var BasisModule = {
|
|
2496
|
+
wasmBinary: wasmBinary,
|
|
2497
|
+
onRuntimeInitialized: function() {
|
|
2498
|
+
return resolve(BasisModule);
|
|
2499
|
+
},
|
|
2500
|
+
onAbort: reject
|
|
2501
|
+
};
|
|
2502
|
+
self["BASIS"](BasisModule);
|
|
2503
|
+
}).then(function(BasisModule) {
|
|
2504
|
+
BasisModule.initializeBasis();
|
|
2505
|
+
return BasisModule.KTX2File;
|
|
2506
|
+
});
|
|
2507
|
+
}
|
|
2508
|
+
return initPromise;
|
|
2509
|
+
};
|
|
2432
2510
|
self.onmessage = function onmessage(event) {
|
|
2433
2511
|
var message = event.data;
|
|
2434
2512
|
switch(message.type){
|
|
@@ -2543,6 +2621,10 @@ function transcode(buffer, targetFormat, KTX2File) {
|
|
|
2543
2621
|
cleanup();
|
|
2544
2622
|
throw new Error("Invalid or unsupported .ktx2 file");
|
|
2545
2623
|
}
|
|
2624
|
+
if (!ktx2File.startTranscoding()) {
|
|
2625
|
+
cleanup();
|
|
2626
|
+
throw new Error("KTX2 startTranscoding failed");
|
|
2627
|
+
}
|
|
2546
2628
|
var width = ktx2File.getWidth();
|
|
2547
2629
|
var height = ktx2File.getHeight();
|
|
2548
2630
|
var layerCount = ktx2File.getLayers() || 1;
|
|
@@ -2551,6 +2633,7 @@ function transcode(buffer, targetFormat, KTX2File) {
|
|
|
2551
2633
|
var faceCount = ktx2File.getFaces();
|
|
2552
2634
|
var format = getTranscodeFormatFromTarget(targetFormat, hasAlpha);
|
|
2553
2635
|
var faces = new Array(faceCount);
|
|
2636
|
+
var isBC = format === 2 || format === 3 || format === 7;
|
|
2554
2637
|
for(var face = 0; face < faceCount; face++){
|
|
2555
2638
|
var mipmaps = new Array(levelCount);
|
|
2556
2639
|
for(var mip = 0; mip < levelCount; mip++){
|
|
@@ -2558,8 +2641,15 @@ function transcode(buffer, targetFormat, KTX2File) {
|
|
|
2558
2641
|
var mipWidth = void 0, mipHeight = void 0;
|
|
2559
2642
|
for(var layer = 0; layer < layerCount; layer++){
|
|
2560
2643
|
var levelInfo = ktx2File.getImageLevelInfo(mip, layer, face);
|
|
2561
|
-
|
|
2562
|
-
|
|
2644
|
+
// see: https://github.com/KhronosGroup/KTX-Software/issues/254
|
|
2645
|
+
if (isBC && mip === 0 && (width !== levelInfo.width || height !== levelInfo.height)) {
|
|
2646
|
+
width = mipWidth = levelInfo.width;
|
|
2647
|
+
height = mipHeight = levelInfo.height;
|
|
2648
|
+
console.warn("KTX2 transcode to BC will resize to width: " + width + ", height: " + height + ". You'd better use an image whose size if multiple of 4.");
|
|
2649
|
+
} else {
|
|
2650
|
+
mipWidth = levelInfo.origWidth;
|
|
2651
|
+
mipHeight = levelInfo.origHeight;
|
|
2652
|
+
}
|
|
2563
2653
|
var dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, format));
|
|
2564
2654
|
var status = ktx2File.transcodeImage(dst, mip, layer, face, format, 0, -1, -1);
|
|
2565
2655
|
if (!status) {
|
|
@@ -2625,7 +2715,7 @@ function transcode(buffer, targetFormat, KTX2File) {
|
|
|
2625
2715
|
} else {
|
|
2626
2716
|
var funcCode = TranscodeWorkerCode$1.toString();
|
|
2627
2717
|
var transcodeString = funcCode.substring(funcCode.indexOf("{"), funcCode.lastIndexOf("}") + 1);
|
|
2628
|
-
var workerCode = "\n " + jsCode + "\n
|
|
2718
|
+
var workerCode = "\n " + jsCode + "\n " + transcode.toString() + "\n " + transcodeString + "\n ";
|
|
2629
2719
|
var workerURL = URL.createObjectURL(new Blob([
|
|
2630
2720
|
workerCode
|
|
2631
2721
|
], {
|
|
@@ -2874,6 +2964,7 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
|
|
|
2874
2964
|
_proto.initialize = function initialize(engine, configuration) {
|
|
2875
2965
|
if (configuration.ktx2Loader) {
|
|
2876
2966
|
var options = configuration.ktx2Loader;
|
|
2967
|
+
if (options.priorityFormats) exports.KTX2Loader._priorityFormats = options.priorityFormats;
|
|
2877
2968
|
if (this._isKhronosSupported(options.priorityFormats, engine) && options.workerCount !== 0) {
|
|
2878
2969
|
return exports.KTX2Loader._getKhronosTranscoder(options.workerCount).init();
|
|
2879
2970
|
} else {
|
|
@@ -2894,25 +2985,7 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
|
|
|
2894
2985
|
});
|
|
2895
2986
|
};
|
|
2896
2987
|
_proto._isKhronosSupported = function _isKhronosSupported(priorityFormats, engine) {
|
|
2897
|
-
|
|
2898
|
-
exports.KTX2TargetFormat.ASTC,
|
|
2899
|
-
exports.KTX2TargetFormat.ETC,
|
|
2900
|
-
exports.KTX2TargetFormat.BC7,
|
|
2901
|
-
exports.KTX2TargetFormat.BC1_BC3,
|
|
2902
|
-
exports.KTX2TargetFormat.PVRTC,
|
|
2903
|
-
exports.KTX2TargetFormat.R8G8B8A8
|
|
2904
|
-
];
|
|
2905
|
-
var supportedList = new Array();
|
|
2906
|
-
if (Array.isArray(priorityFormats[0])) {
|
|
2907
|
-
for(var i = 0; i < priorityFormats.length; i++){
|
|
2908
|
-
supportedList.push(exports.KTX2Loader._detectSupportedFormat(engine._hardwareRenderer, priorityFormats[i]));
|
|
2909
|
-
}
|
|
2910
|
-
} else {
|
|
2911
|
-
supportedList.push(exports.KTX2Loader._detectSupportedFormat(engine._hardwareRenderer, priorityFormats));
|
|
2912
|
-
}
|
|
2913
|
-
return supportedList.every(function(format) {
|
|
2914
|
-
return KhronosTranscoder.transcoderMap[format];
|
|
2915
|
-
});
|
|
2988
|
+
return !!KhronosTranscoder.transcoderMap[exports.KTX2Loader._detectSupportedFormat(engine._hardwareRenderer, priorityFormats)];
|
|
2916
2989
|
};
|
|
2917
2990
|
/**
|
|
2918
2991
|
* Destroy ktx2 transcoder worker.
|
|
@@ -2926,7 +2999,8 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
|
|
|
2926
2999
|
/** @internal */ KTX2Loader1._parseBuffer = function _parseBuffer(buffer, engine, params) {
|
|
2927
3000
|
var _params;
|
|
2928
3001
|
var ktx2Container = new KTX2Container(buffer);
|
|
2929
|
-
var
|
|
3002
|
+
var _params_priorityFormats;
|
|
3003
|
+
var formatPriorities = (_params_priorityFormats = (_params = params) == null ? void 0 : _params.priorityFormats) != null ? _params_priorityFormats : exports.KTX2Loader._priorityFormats;
|
|
2930
3004
|
var targetFormat = exports.KTX2Loader._decideTargetFormat(engine, ktx2Container, formatPriorities);
|
|
2931
3005
|
var transcodeResultPromise;
|
|
2932
3006
|
if (exports.KTX2Loader._isBinomialInit || !KhronosTranscoder.transcoderMap[targetFormat] || !ktx2Container.isUASTC) {
|
|
@@ -2993,18 +3067,22 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
|
|
|
2993
3067
|
return targetFormat;
|
|
2994
3068
|
};
|
|
2995
3069
|
KTX2Loader1._detectSupportedFormat = function _detectSupportedFormat(renderer, priorityFormats) {
|
|
2996
|
-
if (priorityFormats === void 0) priorityFormats = [
|
|
2997
|
-
exports.KTX2TargetFormat.ASTC,
|
|
2998
|
-
exports.KTX2TargetFormat.ETC,
|
|
2999
|
-
exports.KTX2TargetFormat.BC7,
|
|
3000
|
-
exports.KTX2TargetFormat.BC1_BC3,
|
|
3001
|
-
exports.KTX2TargetFormat.PVRTC
|
|
3002
|
-
];
|
|
3003
3070
|
for(var i = 0; i < priorityFormats.length; i++){
|
|
3004
|
-
var
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3071
|
+
var format = priorityFormats[i];
|
|
3072
|
+
var capabilities = this._supportedMap[format];
|
|
3073
|
+
if (capabilities) {
|
|
3074
|
+
for(var j = 0; j < capabilities.length; j++){
|
|
3075
|
+
if (renderer.canIUse(capabilities[j])) {
|
|
3076
|
+
return format;
|
|
3077
|
+
}
|
|
3078
|
+
}
|
|
3079
|
+
} else {
|
|
3080
|
+
switch(priorityFormats[i]){
|
|
3081
|
+
case exports.KTX2TargetFormat.R8G8B8A8:
|
|
3082
|
+
return format;
|
|
3083
|
+
case exports.KTX2TargetFormat.R8:
|
|
3084
|
+
case exports.KTX2TargetFormat.R8G8:
|
|
3085
|
+
if (renderer.isWebGL2) return format;
|
|
3008
3086
|
}
|
|
3009
3087
|
}
|
|
3010
3088
|
}
|
|
@@ -3041,6 +3119,14 @@ exports.KTX2Loader = (_KTX2Loader = /*#__PURE__*/ function(Loader1) {
|
|
|
3041
3119
|
return KTX2Loader1;
|
|
3042
3120
|
}(engineCore.Loader), function() {
|
|
3043
3121
|
_KTX2Loader._isBinomialInit = false;
|
|
3122
|
+
}(), function() {
|
|
3123
|
+
_KTX2Loader._priorityFormats = [
|
|
3124
|
+
exports.KTX2TargetFormat.BC7,
|
|
3125
|
+
exports.KTX2TargetFormat.ASTC,
|
|
3126
|
+
exports.KTX2TargetFormat.BC1_BC3,
|
|
3127
|
+
exports.KTX2TargetFormat.ETC,
|
|
3128
|
+
exports.KTX2TargetFormat.PVRTC
|
|
3129
|
+
];
|
|
3044
3130
|
}(), function() {
|
|
3045
3131
|
var _obj;
|
|
3046
3132
|
_KTX2Loader._supportedMap = (_obj = {}, _obj[exports.KTX2TargetFormat.ASTC] = [
|
|
@@ -3504,6 +3590,7 @@ exports.GLTFAnimationParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
3504
3590
|
var promises = new Array();
|
|
3505
3591
|
// parse samplers
|
|
3506
3592
|
for(var j = 0, m = samplers.length; j < m; j++)_loop(j);
|
|
3593
|
+
promises.push(context.get(exports.GLTFParserType.Scene));
|
|
3507
3594
|
return Promise.all(promises).then(function() {
|
|
3508
3595
|
for(var j = 0, m = channels.length; j < m; j++){
|
|
3509
3596
|
var gltfChannel = channels[j];
|
|
@@ -3515,6 +3602,10 @@ exports.GLTFAnimationParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
3515
3602
|
relativePath = relativePath === "" ? "" + entity.name : entity.name + "/" + relativePath;
|
|
3516
3603
|
entity = entity.parent;
|
|
3517
3604
|
}
|
|
3605
|
+
// If the target node is in the default scene, relativePath will be empty
|
|
3606
|
+
if (context.glTFResource.sceneRoots.indexOf(entity) === -1) {
|
|
3607
|
+
continue;
|
|
3608
|
+
}
|
|
3518
3609
|
var ComponentType = void 0;
|
|
3519
3610
|
var propertyName = void 0;
|
|
3520
3611
|
switch(target.path){
|
|
@@ -3595,12 +3686,12 @@ exports.GLTFAnimationParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
3595
3686
|
if (curve2.interpolation === engineCore.InterpolationType.CubicSpine) {
|
|
3596
3687
|
keyframe2.inTangent = Array.from(output.subarray(offset2, offset2 + outputSize));
|
|
3597
3688
|
offset2 += outputSize;
|
|
3598
|
-
keyframe2.value = output.
|
|
3689
|
+
keyframe2.value = output.slice(offset2, offset2 + outputSize);
|
|
3599
3690
|
offset2 += outputSize;
|
|
3600
3691
|
keyframe2.outTangent = Array.from(output.subarray(offset2, offset2 + outputSize));
|
|
3601
3692
|
offset2 += outputSize;
|
|
3602
3693
|
} else {
|
|
3603
|
-
keyframe2.value = output.
|
|
3694
|
+
keyframe2.value = output.slice(offset2, offset2 + outputSize);
|
|
3604
3695
|
offset2 += outputSize;
|
|
3605
3696
|
}
|
|
3606
3697
|
curve2.addKey(keyframe2);
|
|
@@ -3851,7 +3942,7 @@ exports.GLTFMeshParser = (_GLTFMeshParser = /*#__PURE__*/ function(GLTFParser1)
|
|
|
3851
3942
|
return context.get(exports.GLTFParserType.Buffer).then(function(buffers) {
|
|
3852
3943
|
return GLTFUtils.getAccessorData(glTF, indexAccessor, buffers);
|
|
3853
3944
|
});
|
|
3854
|
-
}, context.keepMeshData).then(resolve);
|
|
3945
|
+
}, context.params.keepMeshData).then(resolve);
|
|
3855
3946
|
}
|
|
3856
3947
|
});
|
|
3857
3948
|
};
|
|
@@ -4029,9 +4120,9 @@ exports.GLTFSceneParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
4029
4120
|
}
|
|
4030
4121
|
var _proto = GLTFSceneParser.prototype;
|
|
4031
4122
|
_proto.parse = function parse(context, index) {
|
|
4032
|
-
var _this = this;
|
|
4033
4123
|
var _context_glTF = context.glTF, scenes = _context_glTF.scenes, _context_glTF_scene = _context_glTF.scene, scene = _context_glTF_scene === void 0 ? 0 : _context_glTF_scene, glTFResource = context.glTFResource;
|
|
4034
4124
|
var sceneInfo = scenes[index];
|
|
4125
|
+
var sceneExtensions = sceneInfo.extensions;
|
|
4035
4126
|
var engine = glTFResource.engine;
|
|
4036
4127
|
var isDefaultScene = scene === index;
|
|
4037
4128
|
var sceneNodes = sceneInfo.nodes;
|
|
@@ -4057,18 +4148,7 @@ exports.GLTFSceneParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
4057
4148
|
promises.push(this._parseEntityComponent(context, sceneNodes[i1]));
|
|
4058
4149
|
}
|
|
4059
4150
|
return Promise.all(promises).then(function() {
|
|
4060
|
-
|
|
4061
|
-
return Promise.all([
|
|
4062
|
-
context.get(exports.GLTFParserType.Skin),
|
|
4063
|
-
context.get(exports.GLTFParserType.Animation)
|
|
4064
|
-
]).then(function(param) {
|
|
4065
|
-
var skins = param[0], animations = param[1];
|
|
4066
|
-
if (skins || animations) {
|
|
4067
|
-
_this._createAnimator(context, animations);
|
|
4068
|
-
}
|
|
4069
|
-
return sceneRoot;
|
|
4070
|
-
});
|
|
4071
|
-
}
|
|
4151
|
+
GLTFParser.executeExtensionsAdditiveAndParse(sceneExtensions, context, sceneRoot, sceneInfo);
|
|
4072
4152
|
return sceneRoot;
|
|
4073
4153
|
});
|
|
4074
4154
|
};
|
|
@@ -4180,28 +4260,6 @@ exports.GLTFSceneParser = /*#__PURE__*/ function(GLTFParser1) {
|
|
|
4180
4260
|
for(var i = 0; i < glTFMeshPrimitives.length; i++)_loop(i);
|
|
4181
4261
|
return Promise.all(promises);
|
|
4182
4262
|
};
|
|
4183
|
-
_proto._createAnimator = function _createAnimator(context, animations) {
|
|
4184
|
-
var defaultSceneRoot = context.glTFResource.defaultSceneRoot;
|
|
4185
|
-
var animator = defaultSceneRoot.addComponent(engineCore.Animator);
|
|
4186
|
-
var animatorController = new engineCore.AnimatorController();
|
|
4187
|
-
var layer = new engineCore.AnimatorControllerLayer("layer");
|
|
4188
|
-
var animatorStateMachine = new engineCore.AnimatorStateMachine();
|
|
4189
|
-
animatorController.addLayer(layer);
|
|
4190
|
-
animator.animatorController = animatorController;
|
|
4191
|
-
layer.stateMachine = animatorStateMachine;
|
|
4192
|
-
if (animations) {
|
|
4193
|
-
for(var i = 0; i < animations.length; i++){
|
|
4194
|
-
var animationClip = animations[i];
|
|
4195
|
-
var name = animationClip.name;
|
|
4196
|
-
var uniqueName = animatorStateMachine.makeUniqueStateName(name);
|
|
4197
|
-
if (uniqueName !== name) {
|
|
4198
|
-
console.warn("AnimatorState name is existed, name: " + name + " reset to " + uniqueName);
|
|
4199
|
-
}
|
|
4200
|
-
var animatorState = animatorStateMachine.addState(uniqueName);
|
|
4201
|
-
animatorState.clip = animationClip;
|
|
4202
|
-
}
|
|
4203
|
-
}
|
|
4204
|
-
};
|
|
4205
4263
|
_proto._computeLocalBounds = function _computeLocalBounds(skinnedMeshRenderer, mesh, bones, rootBone, inverseBindMatrices) {
|
|
4206
4264
|
var rootBoneIndex = bones.indexOf(rootBone);
|
|
4207
4265
|
if (rootBoneIndex !== -1) {
|
|
@@ -4351,8 +4409,7 @@ exports.GLTFTextureParser = (_GLTFTextureParser = /*#__PURE__*/ function(GLTFPar
|
|
|
4351
4409
|
mipmap: (_samplerInfo = samplerInfo) == null ? void 0 : _samplerInfo.mipmap
|
|
4352
4410
|
}
|
|
4353
4411
|
}).then(function(texture) {
|
|
4354
|
-
|
|
4355
|
-
(_texture = texture).name || (_texture.name = textureName || imageName || "texture_" + index);
|
|
4412
|
+
texture.name = textureName || imageName || texture.name || "texture_" + index;
|
|
4356
4413
|
useSampler && GLTFUtils.parseSampler(texture, samplerInfo);
|
|
4357
4414
|
return texture;
|
|
4358
4415
|
});
|
|
@@ -4434,11 +4491,12 @@ var GLTFLoader = /*#__PURE__*/ function(Loader1) {
|
|
|
4434
4491
|
}
|
|
4435
4492
|
var _proto = GLTFLoader.prototype;
|
|
4436
4493
|
_proto.load = function load(item, resourceManager) {
|
|
4437
|
-
var _params;
|
|
4438
4494
|
var url = item.url;
|
|
4439
4495
|
var params = item.params;
|
|
4440
4496
|
var glTFResource = new GLTFResource(resourceManager.engine, url);
|
|
4441
|
-
var context = new GLTFParserContext(glTFResource, resourceManager,
|
|
4497
|
+
var context = new GLTFParserContext(glTFResource, resourceManager, _extends({
|
|
4498
|
+
keepMeshData: false
|
|
4499
|
+
}, params));
|
|
4442
4500
|
return context.parse();
|
|
4443
4501
|
};
|
|
4444
4502
|
return GLTFLoader;
|
|
@@ -5086,6 +5144,12 @@ var MaterialLoader = /*#__PURE__*/ function(Loader1) {
|
|
|
5086
5144
|
materialShaderData.setTexture(key, texture);
|
|
5087
5145
|
}));
|
|
5088
5146
|
break;
|
|
5147
|
+
case "Boolean":
|
|
5148
|
+
materialShaderData.setInt(key, value ? 1 : 0);
|
|
5149
|
+
break;
|
|
5150
|
+
case "Integer":
|
|
5151
|
+
materialShaderData.setInt(key, Number(value));
|
|
5152
|
+
break;
|
|
5089
5153
|
}
|
|
5090
5154
|
};
|
|
5091
5155
|
var engine = resourceManager.engine;
|
|
@@ -5221,9 +5285,10 @@ var SpriteAtlasLoader = /*#__PURE__*/ function(Loader1) {
|
|
|
5221
5285
|
var _loop = function(i) {
|
|
5222
5286
|
var atlasItem = atlasItems[i];
|
|
5223
5287
|
if (atlasItem.img) {
|
|
5288
|
+
var _atlasItem_type;
|
|
5224
5289
|
chainPromises.push(resourceManager.load({
|
|
5225
5290
|
url: engineCore.Utils.resolveAbsoluteUrl(item.url, atlasItem.img),
|
|
5226
|
-
type: engineCore.AssetType.Texture2D,
|
|
5291
|
+
type: (_atlasItem_type = atlasItem.type) != null ? _atlasItem_type : engineCore.AssetType.Texture2D,
|
|
5227
5292
|
params: {
|
|
5228
5293
|
format: format,
|
|
5229
5294
|
mipmap: mipmap
|
|
@@ -5459,6 +5524,39 @@ TextureCubeLoader = __decorate([
|
|
|
5459
5524
|
])
|
|
5460
5525
|
], TextureCubeLoader);
|
|
5461
5526
|
|
|
5527
|
+
var ProjectLoader = /*#__PURE__*/ function(Loader1) {
|
|
5528
|
+
_inherits(ProjectLoader, Loader1);
|
|
5529
|
+
function ProjectLoader() {
|
|
5530
|
+
return Loader1.apply(this, arguments);
|
|
5531
|
+
}
|
|
5532
|
+
var _proto = ProjectLoader.prototype;
|
|
5533
|
+
_proto.load = function load(item, resourceManager) {
|
|
5534
|
+
var _this = this;
|
|
5535
|
+
var engine = resourceManager.engine;
|
|
5536
|
+
return new engineCore.AssetPromise(function(resolve, reject) {
|
|
5537
|
+
_this.request(item.url, {
|
|
5538
|
+
type: "json"
|
|
5539
|
+
}).then(function(data) {
|
|
5540
|
+
// @ts-ignore
|
|
5541
|
+
engine.resourceManager.initVirtualResources(data.files);
|
|
5542
|
+
return resourceManager.load({
|
|
5543
|
+
type: engineCore.AssetType.Scene,
|
|
5544
|
+
url: data.scene
|
|
5545
|
+
}).then(function(scene) {
|
|
5546
|
+
engine.sceneManager.activeScene = scene;
|
|
5547
|
+
resolve();
|
|
5548
|
+
});
|
|
5549
|
+
}).catch(reject);
|
|
5550
|
+
});
|
|
5551
|
+
};
|
|
5552
|
+
return ProjectLoader;
|
|
5553
|
+
}(engineCore.Loader);
|
|
5554
|
+
ProjectLoader = __decorate([
|
|
5555
|
+
engineCore.resourceLoader(engineCore.AssetType.Project, [
|
|
5556
|
+
"proj"
|
|
5557
|
+
], false)
|
|
5558
|
+
], ProjectLoader);
|
|
5559
|
+
|
|
5462
5560
|
var SceneLoader = /*#__PURE__*/ function(Loader1) {
|
|
5463
5561
|
_inherits(SceneLoader, Loader1);
|
|
5464
5562
|
function SceneLoader() {
|
|
@@ -5476,33 +5574,34 @@ var SceneLoader = /*#__PURE__*/ function(Loader1) {
|
|
|
5476
5574
|
var promises = [];
|
|
5477
5575
|
// parse ambient light
|
|
5478
5576
|
var ambient = data.scene.ambient;
|
|
5479
|
-
|
|
5480
|
-
|
|
5481
|
-
|
|
5482
|
-
// prettier-ignore
|
|
5483
|
-
var customAmbientPromise = resourceManager.getResourceByRef(ambient.customAmbientLight).then(function(ambientLight) {
|
|
5484
|
-
scene.ambientLight = ambientLight;
|
|
5485
|
-
scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
|
|
5486
|
-
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
5487
|
-
scene.ambientLight.diffuseMode = ambient.diffuseMode;
|
|
5488
|
-
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
5489
|
-
});
|
|
5490
|
-
promises.push(customAmbientPromise);
|
|
5491
|
-
} else if (!useCustomAmbient && ambient.ambientLight) {
|
|
5492
|
-
// @ts-ignore
|
|
5493
|
-
// prettier-ignore
|
|
5494
|
-
var ambientLightPromise = resourceManager.getResourceByRef(ambient.ambientLight).then(function(ambientLight) {
|
|
5495
|
-
scene.ambientLight = ambientLight;
|
|
5496
|
-
scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
|
|
5497
|
-
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
5498
|
-
scene.ambientLight.diffuseMode = ambient.diffuseMode;
|
|
5499
|
-
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
5500
|
-
});
|
|
5501
|
-
promises.push(ambientLightPromise);
|
|
5502
|
-
} else {
|
|
5577
|
+
if (ambient) {
|
|
5578
|
+
var useCustomAmbient = ambient.specularMode === "Custom";
|
|
5579
|
+
var useSH = ambient.diffuseMode === engineCore.DiffuseMode.SphericalHarmonics;
|
|
5503
5580
|
scene.ambientLight.diffuseIntensity = ambient.diffuseIntensity;
|
|
5504
5581
|
scene.ambientLight.specularIntensity = ambient.specularIntensity;
|
|
5582
|
+
scene.ambientLight.diffuseMode = ambient.diffuseMode;
|
|
5505
5583
|
scene.ambientLight.diffuseSolidColor.copyFrom(ambient.diffuseSolidColor);
|
|
5584
|
+
scene.ambientLight.specularTextureDecodeRGBM = true;
|
|
5585
|
+
if (useCustomAmbient && ambient.customAmbientLight) {
|
|
5586
|
+
promises.push(// @ts-ignore
|
|
5587
|
+
resourceManager.getResourceByRef(ambient.customAmbientLight).then(function(ambientLight) {
|
|
5588
|
+
var _ambientLight;
|
|
5589
|
+
scene.ambientLight.specularTexture = (_ambientLight = ambientLight) == null ? void 0 : _ambientLight.specularTexture;
|
|
5590
|
+
}));
|
|
5591
|
+
}
|
|
5592
|
+
if (ambient.ambientLight && (!useCustomAmbient || useSH)) {
|
|
5593
|
+
promises.push(// @ts-ignore
|
|
5594
|
+
resourceManager.getResourceByRef(ambient.ambientLight).then(function(ambientLight) {
|
|
5595
|
+
if (!useCustomAmbient) {
|
|
5596
|
+
var _ambientLight;
|
|
5597
|
+
scene.ambientLight.specularTexture = (_ambientLight = ambientLight) == null ? void 0 : _ambientLight.specularTexture;
|
|
5598
|
+
}
|
|
5599
|
+
if (useSH) {
|
|
5600
|
+
var _ambientLight1;
|
|
5601
|
+
scene.ambientLight.diffuseSphericalHarmonics = (_ambientLight1 = ambientLight) == null ? void 0 : _ambientLight1.diffuseSphericalHarmonics;
|
|
5602
|
+
}
|
|
5603
|
+
}));
|
|
5604
|
+
}
|
|
5506
5605
|
}
|
|
5507
5606
|
var background = data.scene.background;
|
|
5508
5607
|
scene.background.mode = background.mode;
|
|
@@ -5559,13 +5658,13 @@ SceneLoader = __decorate([
|
|
|
5559
5658
|
"scene"
|
|
5560
5659
|
], true)
|
|
5561
5660
|
], SceneLoader);
|
|
5562
|
-
ReflectionParser.registerCustomParseComponent("TextRenderer", /*#__PURE__*/ _async_to_generator(function(instance, item
|
|
5661
|
+
ReflectionParser.registerCustomParseComponent("TextRenderer", /*#__PURE__*/ _async_to_generator(function(instance, item) {
|
|
5563
5662
|
var props;
|
|
5564
5663
|
return __generator(this, function(_state) {
|
|
5565
5664
|
props = item.props;
|
|
5566
5665
|
if (!props.font) {
|
|
5567
5666
|
// @ts-ignore
|
|
5568
|
-
instance.font = engineCore.Font.createFromOS(engine, props.fontFamily || "Arial");
|
|
5667
|
+
instance.font = engineCore.Font.createFromOS(instance.engine, props.fontFamily || "Arial");
|
|
5569
5668
|
}
|
|
5570
5669
|
return [
|
|
5571
5670
|
2,
|
|
@@ -5621,7 +5720,7 @@ var KHR_draco_mesh_compression = (_KHR_draco_mesh_compression = /*#__PURE__*/ fu
|
|
|
5621
5720
|
throw "BlendShape animation is not supported when using draco.";
|
|
5622
5721
|
}, function() {
|
|
5623
5722
|
return decodedGeometry.index.array;
|
|
5624
|
-
}, context.keepMeshData);
|
|
5723
|
+
}, context.params.keepMeshData);
|
|
5625
5724
|
});
|
|
5626
5725
|
});
|
|
5627
5726
|
};
|