@@ -252,10 +252,7 @@ def copy_from_spriterenderdata(self):
252
252
def get_streams (
253
253
self , m_Channels : list [ChannelInfo ], m_VertexCount : int
254
254
) -> list [StreamInfo ]:
255
- streamCount = 1
256
- if m_Channels :
257
- streamCount += max (x .stream for x in m_Channels )
258
-
255
+ streamCount = 1 + max (x .stream for x in m_Channels )
259
256
m_Streams : list [StreamInfo ] = []
260
257
offset = 0
261
258
for s in range (streamCount ):
@@ -266,7 +263,7 @@ def get_streams(
266
263
if m_Channel .dimension > 0 :
267
264
chnMask |= 1 << chn
268
265
component_size = self .get_channel_component_size (m_Channel )
269
- stride += m_Channel .dimension * component_size
266
+ stride += ( m_Channel .dimension & 0xF ) * component_size
270
267
271
268
m_Streams .append (
272
269
StreamInfo (
@@ -358,6 +355,7 @@ def read_vertex_data(
358
355
# channel_byte_size = m_Channel.dimension * component_byte_size
359
356
360
357
swap = self .endianess == "<" and component_byte_size > 1
358
+ channel_dimension = m_Channel .dimension & 0xF
361
359
362
360
if UnityPyBoost :
363
361
componentBytes = UnityPyBoost .unpack_vertexdata (
@@ -367,22 +365,22 @@ def read_vertex_data(
367
365
m_Stream .offset ,
368
366
m_Stream .stride ,
369
367
m_Channel .offset ,
370
- m_Channel . dimension ,
368
+ channel_dimension ,
371
369
swap ,
372
370
)
373
371
else :
374
372
componentBytes = bytearray (
375
- m_VertexCount * m_Channel . dimension * component_byte_size
373
+ m_VertexCount * channel_dimension * component_byte_size
376
374
)
377
375
378
376
vertexBaseOffset = m_Stream .offset + m_Channel .offset
379
377
for v in range (m_VertexCount ):
380
378
vertexOffset = vertexBaseOffset + m_Stream .stride * v
381
- for d in range (m_Channel . dimension ):
379
+ for d in range (channel_dimension ):
382
380
componentOffset = vertexOffset + component_byte_size * d
383
381
vertexDataSrc = componentOffset
384
382
componentDataSrc = component_byte_size * (
385
- v * m_Channel . dimension + d
383
+ v * channel_dimension + d
386
384
)
387
385
buff = m_VertexData .m_DataSize [
388
386
vertexDataSrc : vertexDataSrc + component_byte_size
@@ -399,7 +397,7 @@ def read_vertex_data(
399
397
f">{ count } { component_dtype } " , componentBytes
400
398
)
401
399
component_data = flat_list_to_tuples (
402
- component_data , m_Channel . dimension
400
+ component_data , channel_dimension
403
401
)
404
402
405
403
self .assign_channel_vertex_data (chn , component_data )
0 commit comments