Skip to content

Commit

Permalink
Add ApplyPresetsInMaterial()
Browse files Browse the repository at this point in the history
  • Loading branch information
JasonMa0012 committed Jan 29, 2024
1 parent f15f869 commit 331b192
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 9 deletions.
13 changes: 4 additions & 9 deletions Editor/MetaDataHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -380,16 +380,11 @@ public void BuildPerFrameData(Shader shader, Material material, MaterialProperty
var drawer = ReflectionHelper.GetPropertyDrawer(shader, prop, out decoratorDrawers);

// Get Presets
if (drawer != null)
if (drawer != null && drawer is IBasePresetDrawer)
{
if (drawer is IBasePresetDrawer)
{
var activePreset = (drawer as IBasePresetDrawer).GetActivePreset(prop, perShaderData.propertyDatas[prop.name].propertyPresetAsset);
if (activePreset != null)
{
activePresets.Add(new PersetDynamicData(activePreset, prop));
}
}
var activePreset = (drawer as IBasePresetDrawer).GetActivePreset(prop, perShaderData.propertyDatas[prop.name].propertyPresetAsset);
if (activePreset != null)
activePresets.Add(new PersetDynamicData(activePreset, prop));
}
}

Expand Down
20 changes: 20 additions & 0 deletions Editor/PresetHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,5 +58,25 @@ public static ShaderPropertyPreset GetPresetFile(string presetFileName)

return _loadedPresets[presetFileName];
}

// Call this after a material has modified in code
public static void ApplyPresetsInMaterial(Material material)
{
var props = MaterialEditor.GetMaterialProperties(new[] { material });
foreach (var prop in props)
{
List<MaterialPropertyDrawer> decoratorDrawers;
var drawer = ReflectionHelper.GetPropertyDrawer(material.shader, prop, out decoratorDrawers);

// Get Presets
if (drawer != null && drawer is IBasePresetDrawer)
{
var activePreset = (drawer as IBasePresetDrawer).GetActivePreset(prop, PresetHelper.GetPresetFile((drawer as PresetDrawer).presetFileName));
if (activePreset != null)
activePreset.ApplyToDefaultMaterial(material);
}

}
}
}
}

0 comments on commit 331b192

Please sign in to comment.