Skip to content

Commit 9360ef6

Browse files
authored
bool m_IsArray -> int/uint8 m_TypeFlags (K0lb3#144)
1 parent d5bce1c commit 9360ef6

4 files changed

Lines changed: 18 additions & 18 deletions

File tree

UnityPy/files/SerializedFile.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -326,20 +326,20 @@ def read_type_tree(self):
326326
level_stack[-1][1] -= 1
327327

328328
type_tree_node = TypeTreeNode(
329-
m_Level = level,
330-
m_Type = self.reader.read_string_to_null(),
331-
m_Name = self.reader.read_string_to_null(),
332-
m_ByteSize = self.reader.read_int()
329+
m_Level=level,
330+
m_Type=self.reader.read_string_to_null(),
331+
m_Name=self.reader.read_string_to_null(),
332+
m_ByteSize=self.reader.read_int(),
333333
)
334-
334+
335335
type_tree.append(type_tree_node)
336336
if self.header.version == 2:
337337
type_tree_node.m_VariableCount = self.reader.read_int()
338338

339339
if self.header.version != 3:
340340
type_tree_node.m_Index = self.reader.read_int()
341341

342-
type_tree_node.m_IsArray = bool(self.reader.read_int())
342+
type_tree_node.m_TypeFlags = self.reader.read_int()
343343
type_tree_node.m_Version = self.reader.read_int()
344344
if self.header.version != 3:
345345
type_tree_node.m_MetaFlag = self.reader.read_int()
@@ -354,11 +354,11 @@ def read_type_tree_blob(self):
354354
number_of_nodes = self.reader.read_int()
355355
string_buffer_size = self.reader.read_int()
356356

357-
type = f"{reader.endian}hb?IIiii"
357+
type = f"{reader.endian}hBBIIiii"
358358
keys = [
359359
"m_Version",
360360
"m_Level",
361-
"m_IsArray",
361+
"m_TypeFlags",
362362
"m_TypeStrOffset",
363363
"m_NameStrOffset",
364364
"m_ByteSize",
@@ -560,7 +560,7 @@ def save_type_tree(self, nodes: list, writer: EndianBinaryWriter):
560560
if self.header.version != 3:
561561
writer.write_int(node.m_Index)
562562

563-
writer.write_int(node.m_IsArray)
563+
writer.write_int(node.m_TypeFlags)
564564
writer.write_int(node.m_Version)
565565
if self.header.version != 3:
566566
writer.write_int(node.m_MetaFlag)
@@ -598,7 +598,7 @@ def save_type_tree5(self, nodes: list, writer: EndianBinaryWriter, str_data=b"")
598598
# level
599599
writer.write_byte(node.m_Level)
600600
# is array
601-
writer.write_boolean(node.m_IsArray)
601+
writer.write_u_byte(node.m_TypeFlags)
602602
# type str offfset
603603
writer.write_u_int(strings_values[i][0])
604604
# name str offset

UnityPy/helpers/TypeTreeHelper.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class TypeTreeNode(object):
1111
__slots__ = (
1212
"m_Version",
1313
"m_Level",
14-
"m_IsArray",
14+
"m_TypeFlags",
1515
"m_ByteSize",
1616
"m_Index",
1717
"m_MetaFlag",
@@ -32,7 +32,7 @@ class TypeTreeNode(object):
3232
m_TypeStrOffset: int
3333
m_NameStrOffset: int
3434
m_RefTypeHash: str
35-
m_IsArray: int
35+
m_TypeFlags: int
3636
m_VariableCount: int
3737

3838
def __init__(self, data: Union[dict, Iterable[Tuple]] = None, **kwargs):

UnityPyBoost/TypeTreeHelper.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,7 @@ TypeTreeNode_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
613613
{
614614
self->m_Version = 0;
615615
self->m_Level = 0;
616-
self->m_IsArray = 0;
616+
self->m_TypeFlags = 0;
617617
self->m_ByteSize = 0;
618618
self->m_Index = 0;
619619
self->m_MetaFlag = 0;
@@ -640,7 +640,7 @@ TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject *kwds)
640640
"m_Level", // uint8
641641
"m_MetaFlag", // int32
642642
"m_Version", // int16
643-
"m_IsArray", // char
643+
"m_TypeFlags", // int32
644644
"m_ByteSize", // int
645645
"m_Index", // int
646646
"m_TypeStrOffset", // unsigned int
@@ -653,14 +653,14 @@ TypeTreeNode_init(TypeTreeNodeObject *self, PyObject *args, PyObject *kwds)
653653
if (!PyArg_ParseTupleAndKeywords(
654654
args,
655655
kwds,
656-
"|zzbihbiiIIKi",
656+
"|zzbihiiiIIKi",
657657
kwlist,
658658
&name,
659659
&type,
660660
&self->m_Level,
661661
&self->m_MetaFlag,
662662
&self->m_Version,
663-
&self->m_IsArray,
663+
&self->m_TypeFlags,
664664
&self->m_ByteSize,
665665
&self->m_Index,
666666
&self->m_TypeStrOffset,
@@ -732,7 +732,7 @@ static PyMemberDef TypeTreeNode_members[] = {
732732
//{"m_Name", T_STRING, offsetof(TypeTreeNodeObject, m_Name), 0, ""},
733733
{"m_ByteSize", T_INT, offsetof(TypeTreeNodeObject, m_ByteSize), 0, ""},
734734
{"m_Index", T_INT, offsetof(TypeTreeNodeObject, m_Index), 0, ""},
735-
{"m_IsArray", T_BOOL, offsetof(TypeTreeNodeObject, m_IsArray), 0, ""},
735+
{"m_TypeFlags", T_INT, offsetof(TypeTreeNodeObject, m_TypeFlags), 0, ""},
736736
{"m_Version", T_SHORT, offsetof(TypeTreeNodeObject, m_Version), 0, ""},
737737
{"m_MetaFlag", T_INT, offsetof(TypeTreeNodeObject, m_MetaFlag), 0, ""},
738738
{"m_Level", T_UBYTE, offsetof(TypeTreeNodeObject, m_Level), 0, ""},

UnityPyBoost/TypeTreeHelper.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ typedef struct TypeTreeNodeObject{
77
PyObject_HEAD
88
short m_Version;
99
unsigned char m_Level;
10-
char m_IsArray;
10+
int m_TypeFlags;
1111
int m_ByteSize;
1212
int m_Index;
1313
int m_MetaFlag;

0 commit comments

Comments
 (0)