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; 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;
} }
} }
} }