mirror of
https://github.com/Outer-Wilds-New-Horizons/new-horizons.git
synced 2025-12-11 20:15:44 +01:00
fix shader replacer (#443)
<!-- A new module or something else important --> ## Major features - <!-- A new parameter added to a module, or API feature --> ## Minor features - <!-- Some improvement that requires no action on the part of add-on creators i.e., improved star graphics --> ## Improvements - <!-- Be sure to reference the existing issue if it exists --> ## Bug fixes - makes Standard shader transparent materials work in bundles
This commit is contained in:
commit
a1b878b2fd
@ -67,19 +67,24 @@ namespace NewHorizons.Utility
|
|||||||
return prefab;
|
return prefab;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ReplaceShaders(GameObject prefab)
|
public static void ReplaceShaders(GameObject prefab)
|
||||||
{
|
{
|
||||||
foreach (var renderer in prefab.GetComponentsInChildren<Renderer>(true))
|
foreach (var renderer in prefab.GetComponentsInChildren<Renderer>(true))
|
||||||
{
|
{
|
||||||
foreach (var material in renderer.sharedMaterials)
|
foreach (var material in renderer.sharedMaterials)
|
||||||
{
|
{
|
||||||
if (material == null)
|
if (material == null) continue;
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
var replacementShader = Shader.Find(material.shader.name);
|
var replacementShader = Shader.Find(material.shader.name);
|
||||||
if (replacementShader != null) material.shader = replacementShader;
|
if (replacementShader == null) continue;
|
||||||
|
|
||||||
|
// preserve override tag and render queue (for Standard shader)
|
||||||
|
// keywords and properties are already preserved
|
||||||
|
var renderType = material.GetTag("RenderType", false);
|
||||||
|
var renderQueue = material.renderQueue;
|
||||||
|
material.shader = replacementShader;
|
||||||
|
material.SetOverrideTag("RenderType", renderType);
|
||||||
|
material.renderQueue = renderQueue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user