43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
import re, unreal
|
|
|
|
FOLDERS = {
|
|
"World": "Maps",
|
|
"LevelSequence": "Sequences",
|
|
"Material": "Materials",
|
|
"MaterialInstanceConstant": "Materials",
|
|
"NiagaraSystem": "Effects",
|
|
"Blueprint": "Blueprints",
|
|
}
|
|
PREFIXES = {
|
|
"World": "",
|
|
"Material": "M_",
|
|
"MaterialInstanceConstant": "MI_",
|
|
"StaticMesh": "SM_",
|
|
"SkeletalMesh": "SK_",
|
|
"Blueprint": "BP_",
|
|
"NiagaraSystem": "NS_",
|
|
"LevelSequence": "LS_",
|
|
}
|
|
|
|
lib = unreal.EditorAssetLibrary
|
|
for path in lib.list_assets("/Game", recursive=True):
|
|
path = path.split(".")[0]
|
|
name = path.rsplit("/", 1)[-1]
|
|
data = lib.find_asset_data(path)
|
|
cls = str(data.asset_class_path.asset_name)
|
|
|
|
# instance assets are renamed after their parent, not their own name
|
|
if cls == "MaterialInstanceConstant":
|
|
parent = lib.load_asset(path).get_editor_property("parent")
|
|
base = re.sub(r"^(M_|MI_)", "", parent.get_name()) if parent else name
|
|
suffix = name[len(base):] if name.lower().startswith(base.lower()) else ""
|
|
name = base + (f"_{suffix.capitalize()}" if suffix else "")
|
|
|
|
name = re.sub(r"^(" + "|".join(p for p in PREFIXES.values() if p) + ")", "", name)
|
|
name = PREFIXES.get(cls, "") + name
|
|
|
|
folder = FOLDERS.get(cls, "Misc")
|
|
dest = f"/Game/{folder}/{name}"
|
|
if path != dest:
|
|
lib.rename_asset(path, dest)
|