Skip to content

Commit d3a4512

Browse files
committed
1.6
internal path rework texture save fix
1 parent 1132566 commit d3a4512

24 files changed

Lines changed: 244 additions & 445 deletions

UnityPy/AssetsManager.py

Lines changed: 0 additions & 234 deletions
This file was deleted.

UnityPy/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = "1.5.3.3"
1+
__version__ = "1.6"
22

33
from .environment import Environment
44

UnityPy/classes/Mesh.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from ..helpers.ResourceReader import get_resource_data
77
from ..math import Matrix4x4, Vector3
88
from ..streams import EndianBinaryWriter
9+
from ..enums import GfxPrimitiveType
910

1011
class MinMaxAABB:
1112
def __init__(self, reader):
@@ -323,10 +324,11 @@ def __init__(self, reader):
323324

324325

325326
class SubMesh:
326-
def __init__(self, reader, version):
327+
def __init__(self, reader):
328+
version = reader.version
327329
self.firstByte = reader.read_u_int()
328330
self.indexCount = reader.read_u_int()
329-
self.topology = reader.read_int()
331+
self.topology = GfxPrimitiveType(reader.read_int())
330332

331333
if version < (4,): # 4.0 down
332334
self.triangleCount = reader.read_u_int()
@@ -493,12 +495,12 @@ def __init__(self, reader):
493495

494496
if version >= (2018, 3): # 2018.3 and up
495497
reader.align_stream()
496-
self.m_StreamData = StreamingInfo(reader)
498+
self.m_StreamData = StreamingInfo(reader, version)
497499

498-
# try:
499-
# self.ProcessData()
500-
# except:
501-
# pass
500+
try:
501+
self.ProcessData()
502+
except:
503+
pass
502504

503505
def ProcessData(self):
504506
if self.m_StreamData and self.m_StreamData.path:
@@ -635,21 +637,21 @@ def DecompressCompressedMesh(self):
635637
version = self.version
636638
m_CompressedMesh = self.m_CompressedMesh
637639
if m_CompressedMesh.m_Vertices.m_NumItems > 0:
638-
m_VertexCount = m_CompressedMesh.m_Vertices.m_NumItems / 3
639-
m_Vertices = m_CompressedMesh.m_Vertices.UnpackFloats(3, 4)
640+
self.m_VertexCount = m_CompressedMesh.m_Vertices.m_NumItems / 3
641+
self.m_Vertices = m_CompressedMesh.m_Vertices.UnpackFloats(3, 4)
640642
# UV
641643
if m_CompressedMesh.m_UV.m_NumItems > 0: #
642-
m_UV0 = m_CompressedMesh.m_UV.UnpackFloats(2, 4, 0, m_VertexCount)
644+
self.m_UV0 = m_CompressedMesh.m_UV.UnpackFloats(2, 4, 0, m_VertexCount)
643645
if m_CompressedMesh.m_UV.m_NumItems >= m_VertexCount * 4: #
644-
m_UV1 = m_CompressedMesh.m_UV.UnpackFloats(
646+
self.m_UV1 = m_CompressedMesh.m_UV.UnpackFloats(
645647
2, 4, m_VertexCount * 2, m_VertexCount
646648
)
647649
if m_CompressedMesh.m_UV.m_NumItems >= m_VertexCount * 6: #
648-
m_UV2 = m_CompressedMesh.m_UV.UnpackFloats(
650+
self.m_UV2 = m_CompressedMesh.m_UV.UnpackFloats(
649651
2, 4, m_VertexCount * 4, m_VertexCount
650652
)
651653
if m_CompressedMesh.m_UV.m_NumItems >= m_VertexCount * 8: #
652-
m_UV3 = m_CompressedMesh.m_UV.UnpackFloats(
654+
self.m_UV3 = m_CompressedMesh.m_UV.UnpackFloats(
653655
2, 4, m_VertexCount * 6, m_VertexCount
654656
)
655657
# BindPose

UnityPy/classes/Object.py

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from ..streams import EndianBinaryWriter, EndianBinaryReader
44

55

6-
class Object:
6+
class Object(object):
77
type_tree: dict
88

99
def __init__(self, reader):
@@ -16,7 +16,7 @@ def __init__(self, reader):
1616
self.platform = reader.platform
1717
self.serialized_type = reader.serialized_type
1818
self.byte_size = reader.byte_size
19-
self.environment = reader.assets_file.environment
19+
self.assets_file = reader.assets_file
2020

2121
if self.platform == BuildTarget.NoTarget:
2222
self._object_hide_flags = reader.read_u_int()
@@ -86,7 +86,7 @@ def __repr__(self):
8686
from .PPtr import PPtr
8787

8888

89-
class NodeHelper(object):
89+
class NodeHelper:
9090
def __init__(self, data, assets_file):
9191
if "m_PathID" in data and "m_FileID" in data:
9292
# used to make pointers directly useable
@@ -107,8 +107,8 @@ def __new__(cls, data, assets_file):
107107
return [NodeHelper(x, assets_file) for x in data]
108108
return data
109109

110-
def __item__(self, key):
111-
return self.__dict__[key]
110+
def __getitem__(self, item):
111+
return getattr(self, item)
112112

113113
def to_dict(self):
114114
def dump(val):
@@ -126,6 +126,15 @@ def dump(val):
126126

127127
return {key: dump(val) for key, val in self.__dict__.items()}
128128

129+
def items(self):
130+
return self.__dict__.items()
131+
132+
def values(self):
133+
return self.__dict__.values()
134+
135+
def keys(self):
136+
return self.__dict__.keys()
137+
129138
def __repr__(self):
130139
return "<NodeHelper - %s>" % self.__dict__.__repr__()
131140

UnityPy/classes/Sprite.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ def __init__(self, reader):
171171

172172
if version >= (5, 6): # 5.6 and up
173173
SubMeshesSize = reader.read_int()
174-
self.m_SubMeshes = [SubMesh(reader, version) for _ in range(SubMeshesSize)]
174+
self.m_SubMeshes = [SubMesh(reader) for _ in range(SubMeshesSize)]
175175
IndexBufferSize = reader.read_int()
176176
self.m_IndexBuffer = reader.read_bytes(IndexBufferSize)
177177
reader.align_stream()

0 commit comments

Comments
 (0)