Skip to content

unitycoder/UnityPy-rewrite

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UnityPy (rewrite / dev)

The rewrite is still very much work in progress, with breaking changes bound to take place.

Currently there is still no top level environment handler, so assets have to be parsed in following way atm:

from UnityPy.streams.EndianBinaryReader import EndianBinaryReaderStream
from UnityPy.files import parse_file
from UnityPy.object_handlers.Mesh import MeshHandler

fp = "tests/resources/prefab"
file = parse_file(
    EndianBinaryReaderStream(open(fp, "rb")),
    os.path.basename(fp),
    fp,
)
assert file is not None
for obj in file.get_objects():
    # filter by obj class type
    # obj.m_ClassID is a pure int now, that gets resolved via the tpk,
    # so the property .classname has to be able to get the object class without parsing
    # - bound to change, propably by exporting a map from the tpk, or generating a corresponding enum
    if obj.class_name != "Mesh":
        continue
    try:
        print(obj.m_PathID)
        # parse the object content as dict, comparable to .read_typetree()
        obj_dict = obj.parse_as_dict()
        # parse the object as object class, comparable to .read(),
        # but now it also uses the typetrees and doesn't do any post processing automatically anymore
        obj_inst = obj.parse_as_object()
        # the exporters are now handlers, to allow reimporting later on
        # any previous automatic post processing of the asset data will be done here instead
        handler = MeshHandler(obj_inst)
        handler.process()
        pass
    except Exception as e:
        print(obj.m_PathID, e)
        exit()

Similar Projects

TODO

Credits

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%