diff --git a/io_scene_fbx/parse_fbx.py b/io_scene_fbx/parse_fbx.py index f099cb0e3d69ff0570e56e9a6e1ea9ac1590a69a..6288d4111fe5d9549b2e994d015e8415e6a62366 100644 --- a/io_scene_fbx/parse_fbx.py +++ b/io_scene_fbx/parse_fbx.py @@ -79,19 +79,19 @@ def unpack_array(read, array_type, array_stride, array_byteswap): read_data_dict = { - b'Y'[0]: lambda read, size: unpack(b'<h', read(2))[0], # 16 bit int - b'C'[0]: lambda read, size: unpack(b'?', read(1))[0], # 1 bit bool (yes/no) - b'I'[0]: lambda read, size: unpack(b'<i', read(4))[0], # 32 bit int - b'F'[0]: lambda read, size: unpack(b'<f', read(4))[0], # 32 bit float - b'D'[0]: lambda read, size: unpack(b'<d', read(8))[0], # 64 bit float - b'L'[0]: lambda read, size: unpack(b'<q', read(8))[0], # 64 bit int - b'R'[0]: lambda read, size: read(read_uint(read)), # binary data - b'S'[0]: lambda read, size: read(read_uint(read)), # string data - b'f'[0]: lambda read, size: unpack_array(read, 'f', 4, False), # array (float) - b'i'[0]: lambda read, size: unpack_array(read, 'i', 4, True), # array (int) - b'd'[0]: lambda read, size: unpack_array(read, 'd', 8, False), # array (double) - b'l'[0]: lambda read, size: unpack_array(read, 'q', 8, True), # array (long) - b'b'[0]: lambda read, size: read(size), # unknown + b'Y'[0]: lambda read: unpack(b'<h', read(2))[0], # 16 bit int + b'C'[0]: lambda read: unpack(b'?', read(1))[0], # 1 bit bool (yes/no) + b'I'[0]: lambda read: unpack(b'<i', read(4))[0], # 32 bit int + b'F'[0]: lambda read: unpack(b'<f', read(4))[0], # 32 bit float + b'D'[0]: lambda read: unpack(b'<d', read(8))[0], # 64 bit float + b'L'[0]: lambda read: unpack(b'<q', read(8))[0], # 64 bit int + b'R'[0]: lambda read: read(read_uint(read)), # binary data + b'S'[0]: lambda read: read(read_uint(read)), # string data + b'f'[0]: lambda read: unpack_array(read, 'f', 4, False), # array (float) + b'i'[0]: lambda read: unpack_array(read, 'i', 4, True), # array (int) + b'd'[0]: lambda read: unpack_array(read, 'd', 8, False), # array (double) + b'l'[0]: lambda read: unpack_array(read, 'q', 8, True), # array (long) + b'b'[0]: lambda read: unpack_array(read, 'b', 1, False), # bool array } @@ -113,7 +113,7 @@ def read_elem(read, tell, use_namedtuple): for i in range(prop_count): data_type = read(1)[0] - elem_props_data[i] = read_data_dict[data_type](read, prop_length) + elem_props_data[i] = read_data_dict[data_type](read) elem_props_type[i] = data_type if tell() < end_offset: @@ -183,4 +183,5 @@ FLOAT32_ARRAY = b'f'[0], INT32_ARRAY = b'i'[0], FLOAT64_ARRAY = b'd'[0], INT64_ARRAY = b'l'[0], +BOOL_ARRAY = b'b'[0], ))