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:
Nick 2022-11-10 22:04:32 -05:00 committed by GitHub
commit a1b878b2fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -67,19 +67,24 @@ namespace NewHorizons.Utility
return prefab;
}
private static void ReplaceShaders(GameObject prefab)
public static void ReplaceShaders(GameObject prefab)
{
foreach (var renderer in prefab.GetComponentsInChildren<Renderer>(true))
{
foreach (var material in renderer.sharedMaterials)
{
if (material == null)
{
continue;
}
if (material == null) continue;
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;
}
}
}