Skip to content

Commit e147dac

Browse files
Search resources in sub-folders too
1 parent 9694d1a commit e147dac

1 file changed

Lines changed: 14 additions & 13 deletions

File tree

UnityPy/helpers/ResourceReader.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import os
2-
3-
from .ImportHelper import find_all_files
1+
import os, glob
42

3+
def search_resource(path, name):
4+
files = glob.glob(os.path.join(path, "**", name), recursive = True)
5+
return files[0] if len(files) else ""
56

67
def get_resource_data(*args):
78
"""
@@ -30,27 +31,28 @@ def get_resource_data(*args):
3031
resource_file_name = path
3132

3233
reader = assets_file.environment.resources.get(resource_file_name)
34+
base_name = os.path.basename(resource_file_name)
3335
if not reader:
34-
reader = assets_file.environment.resources.get(
35-
os.path.basename(resource_file_name)
36-
)
36+
reader = assets_file.environment.resources.get(base_name)
3737
if not reader:
3838
reader = assets_file.environment.resources.get(
39-
os.path.basename(resource_file_name.replace('.assets.resS', '.resource'))
39+
base_name.replace('.assets.resS', '.resource')
4040
)
4141

4242
if reader:
4343
reader.Position = offset
4444
return reader.read_bytes(size)
4545

46+
current_directory = ''
4647
if not assets_file.environment.path:
47-
return
48-
current_directory = os.path.dirname(assets_file.environment.path)
48+
current_directory = os.getcwd()
49+
else:
50+
current_directory = os.path.dirname(assets_file.environment.path)
4951
resource_file_path = os.path.join(current_directory, resource_file_name)
5052
if not os.path.isfile(resource_file_path):
51-
find_files = find_all_files(current_directory, resource_file_name)
52-
if find_files:
53-
resource_file_path = find_files[0]
53+
resource_file_path = search_resource(current_directory, base_name)
54+
if not os.path.isfile(resource_file_path):
55+
resource_file_path = search_resource(current_directory, base_name.replace('.assets.resS', '.resource'))
5456

5557
if os.path.isfile(resource_file_path):
5658
with open(resource_file_path, "rb") as f:
@@ -60,7 +62,6 @@ def get_resource_data(*args):
6062
raise FileNotFoundError(
6163
f"Can't find the resource file {resource_file_name}"
6264
)
63-
6465
else:
6566
reader.Position = offset
6667
return reader.read_bytes(size)

0 commit comments

Comments
 (0)