diff --git a/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll b/Distribution/Restock/GameData/ReStock/Plugins/Restock.dll index ffbba4cf..3098fdaf 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 new file mode 100644 index 00000000..9be049b4 --- /dev/null +++ b/Source/Restock/ModuleRestockDepthMask.cs @@ -0,0 +1,73 @@ +using UnityEngine; +using UnityEngine.Serialization; + +namespace Restock +{ + public class ModuleRestockDepthMask: PartModule + { + // The name of the transform that has your mask mesh. The only strictly required property + [KSPField] + public string maskTransform= ""; + + // The name of the depth mask shader + [KSPField] + public string shaderName = "DepthMask"; + + // The render queue value for the mesh, should be less than maskRenderQueue + [KSPField] + public int meshRenderQueue = 1800; + + // the render queue value for the mask, should be less than 2000 + [KSPField] + public int maskRenderQueue = 1900; + + // depth mask object transform + public Transform depthMask; + + // depth mask shader object + public Shader depthShader; + + public override void OnLoad(ConfigNode node) + { + + base.OnLoad(node); + + //if (HighLogic.LoadedSceneIsEditor || HighLogic.LoadedSceneIsFlight) return; + + if (!(base.part.FindModelTransform(maskTransform) is Transform depthMask)) + { + this.LogError($"Can't find transform {maskTransform}"); + return; + } + else + { + this.Log($"found mask transform {maskTransform}"); + } + + if (!(Shader.Find(shaderName) is Shader depthShader)) + { + this.LogError($"Can't find shader {shaderName}"); + return; + } + + var windowRenderer = depthMask.GetComponent(); + + + windowRenderer.material.shader = depthShader; + windowRenderer.material.renderQueue = maskRenderQueue; + + this.Log(depthShader.name); + this.Log(windowRenderer.material.shader.name); + + var meshRenderers = part.partTransform.GetComponentsInChildren(true); + var skinnedMeshRenderers = part.partTransform.GetComponentsInChildren(true); + + foreach (var renderer in meshRenderers) + { + if (renderer == windowRenderer) continue; + renderer.material.renderQueue = meshRenderQueue; + + } + } + } +} \ No newline at end of file