This repository has been archived on 2026-05-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
AgrarianGameArchive/Scripts/fix_ground_zero_instanced_material_usage.py

44 lines
1.3 KiB
Python

import unreal
MATERIAL_PATHS = [
"/Game/Agrarian/Materials/M_AGR_GZ_Tree_CoastalOak",
"/Game/Agrarian/Materials/M_AGR_GZ_Shrub_CoyoteBrush",
"/Game/Agrarian/Materials/M_AGR_GZ_Grass_DryCoastal",
]
def set_instanced_usage(material):
applied = False
for property_name in (
"used_with_instanced_static_meshes",
"bUsedWithInstancedStaticMeshes",
):
try:
material.set_editor_property(property_name, True)
applied = True
except Exception:
pass
return applied
dirty_assets = []
for material_path in MATERIAL_PATHS:
material = unreal.EditorAssetLibrary.load_asset(material_path)
if not material:
raise RuntimeError(f"Missing material: {material_path}")
if not set_instanced_usage(material):
raise RuntimeError(f"Could not set instanced static mesh usage on {material_path}")
unreal.MaterialEditingLibrary.recompile_material(material)
dirty_assets.append(material_path)
for material_path in dirty_assets:
if not unreal.EditorAssetLibrary.save_asset(material_path, only_if_is_dirty=False):
raise RuntimeError(f"Failed to save updated material: {material_path}")
print("Updated instanced static mesh usage for Ground Zero foliage materials:")
for material_path in dirty_assets:
print(f" - {material_path}")