44 lines
1.3 KiB
Python
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}")
|