parseProperty method
dynamic
parseProperty(
- dynamic reader
Implementation
parseProperty(reader) {
var type = reader.getString(1);
var length;
switch (type) {
case 'C':
return reader.getBoolean();
case 'D':
return reader.getFloat64();
case 'F':
return reader.getFloat32();
case 'I':
return reader.getInt32();
case 'L':
return reader.getInt64();
case 'R':
length = reader.getUint32();
return reader.getArrayBuffer(length);
case 'S':
length = reader.getUint32();
return reader.getString(length);
case 'Y':
return reader.getInt16();
case 'b':
case 'c':
case 'd':
case 'f':
case 'i':
case 'l':
var arrayLength = reader.getUint32();
var encoding = reader.getUint32(); // 0: non-compressed, 1: compressed
var compressedLength = reader.getUint32();
if (encoding == 0) {
switch (type) {
case 'b':
case 'c':
return reader.getBooleanArray(arrayLength);
case 'd':
return reader.getFloat64Array(arrayLength);
case 'f':
return reader.getFloat32Array(arrayLength);
case 'i':
return reader.getInt32Array(arrayLength);
case 'l':
return reader.getInt64Array(arrayLength);
}
}
// https://pub.dev/packages/archive
// use archive replace fflate.js
// var data = fflate.unzlibSync( new Uint8Array( reader.getArrayBuffer( compressedLength ) ) ); // eslint-disable-line no-undef
var data = ZLibDecoder()
.decodeBytes(reader.getArrayBuffer(compressedLength), verify: true);
var reader2 = new BinaryReader(data);
switch (type) {
case 'b':
case 'c':
return reader2.getBooleanArray(arrayLength);
case 'd':
return reader2.getFloat64Array(arrayLength);
case 'f':
return reader2.getFloat32Array(arrayLength);
case 'i':
return reader2.getInt32Array(arrayLength);
case 'l':
return reader2.getInt64Array(arrayLength);
}
break;
default:
throw ('THREE.FBXLoader: Unknown property type ' + type);
}
}