diff --git a/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll b/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll index 08e4f751..bb2c9bb3 100644 Binary files a/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll and b/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll differ diff --git a/Source/Restock/ModuleRestockDepthMask.cs b/Source/Restock/ModuleRestockDepthMask.cs index 92909c1d..6051a324 100644 --- a/Source/Restock/ModuleRestockDepthMask.cs +++ b/Source/Restock/ModuleRestockDepthMask.cs @@ -9,6 +9,9 @@ namespace Restock [KSPField] public string maskTransform= ""; + [KSPField] + public string bodyTransform = ""; + // The name of the depth mask shader [KSPField] public string shaderName = "DepthMask"; @@ -23,6 +26,8 @@ namespace Restock // depth mask object transform public Transform depthMask; + + public Transform bodyRoot; // depth mask shader object public Shader depthShader; @@ -44,7 +49,7 @@ namespace Restock base.OnLoad(node); - //if (HighLogic.LoadedSceneIsEditor || HighLogic.LoadedSceneIsFlight) return; + if (HighLogic.LoadedSceneIsEditor || HighLogic.LoadedSceneIsFlight) return; this.depthMask = base.part.FindModelTransform(maskTransform); if (!(this.depthMask is Transform)) @@ -52,7 +57,21 @@ namespace Restock this.LogError($"Can't find transform {maskTransform}"); return; } - + + if (bodyTransform == "") + { + bodyRoot = base.part.partTransform; + } + else + { + this.bodyRoot = base.part.partTransform.Find(bodyTransform); + if (!(this.bodyRoot is Transform)) + { + this.LogError($"Can't find transform {bodyTransform}"); + return; + } + } + this.depthShader = Shader.Find(shaderName); if (!(this.depthShader is Shader)) @@ -80,17 +99,23 @@ namespace Restock this.Log(depthShader.name); this.Log(windowRenderer.material.shader.name); - var meshRenderers = part.partTransform.GetComponentsInChildren(true); - var skinnedMeshRenderers = part.partTransform.GetComponentsInChildren(true); + var meshRenderers = bodyRoot.GetComponentsInChildren(true); + var skinnedMeshRenderers = bodyRoot.GetComponentsInChildren(true); foreach (var renderer in meshRenderers) { - this.Log(renderer.material.name + " " + renderer.material.renderQueue.ToString()); if (renderer == windowRenderer) continue; var queue = renderer.material.renderQueue; queue = meshRenderQueue + ((queue - 2000) / 2); renderer.material.renderQueue = queue; - + } + + foreach (var renderer in skinnedMeshRenderers) + { + if (renderer == windowRenderer) continue; + var queue = renderer.material.renderQueue; + queue = meshRenderQueue + ((queue - 2000) / 2); + renderer.material.renderQueue = queue; } } }