UnityEngine.UI.Mask.GetModifiedMaterial C# (CSharp) Method

GetModifiedMaterial() public method

See: IMaterialModifier.

public GetModifiedMaterial ( Material baseMaterial ) : Material
baseMaterial UnityEngine.Material
return UnityEngine.Material
        public virtual Material GetModifiedMaterial(Material baseMaterial)
        {
            if (!this.MaskEnabled())
            {
                return baseMaterial;
            }
            Transform stopAfter = MaskUtilities.FindRootSortOverrideCanvas(base.transform);
            int stencilDepth = MaskUtilities.GetStencilDepth(base.transform, stopAfter);
            if (stencilDepth >= 8)
            {
                Debug.LogError("Attempting to use a stencil mask with depth > 8", base.gameObject);
                return baseMaterial;
            }
            int num2 = ((int) 1) << stencilDepth;
            if (num2 == 1)
            {
                Material material2 = StencilMaterial.Add(baseMaterial, 1, StencilOp.Replace, CompareFunction.Always, !this.m_ShowMaskGraphic ? ((ColorWriteMask) 0) : ColorWriteMask.All);
                StencilMaterial.Remove(this.m_MaskMaterial);
                this.m_MaskMaterial = material2;
                Material material3 = StencilMaterial.Add(baseMaterial, 1, StencilOp.Zero, CompareFunction.Always, 0);
                StencilMaterial.Remove(this.m_UnmaskMaterial);
                this.m_UnmaskMaterial = material3;
                this.graphic.canvasRenderer.popMaterialCount = 1;
                this.graphic.canvasRenderer.SetPopMaterial(this.m_UnmaskMaterial, 0);
                return this.m_MaskMaterial;
            }
            Material material4 = StencilMaterial.Add(baseMaterial, num2 | (num2 - 1), StencilOp.Replace, CompareFunction.Equal, !this.m_ShowMaskGraphic ? ((ColorWriteMask) 0) : ColorWriteMask.All, num2 - 1, num2 | (num2 - 1));
            StencilMaterial.Remove(this.m_MaskMaterial);
            this.m_MaskMaterial = material4;
            this.graphic.canvasRenderer.hasPopInstruction = true;
            Material material5 = StencilMaterial.Add(baseMaterial, num2 - 1, StencilOp.Replace, CompareFunction.Equal, 0, num2 - 1, num2 | (num2 - 1));
            StencilMaterial.Remove(this.m_UnmaskMaterial);
            this.m_UnmaskMaterial = material5;
            this.graphic.canvasRenderer.popMaterialCount = 1;
            this.graphic.canvasRenderer.SetPopMaterial(this.m_UnmaskMaterial, 0);
            return this.m_MaskMaterial;
        }

Usage Example

コード例 #1
0
 static public int GetModifiedMaterial(IntPtr l)
 {
     try {
                     #if DEBUG
         var    method     = System.Reflection.MethodBase.GetCurrentMethod();
         string methodName = GetMethodName(method);
                     #if UNITY_5_5_OR_NEWER
         UnityEngine.Profiling.Profiler.BeginSample(methodName);
                     #else
         Profiler.BeginSample(methodName);
                     #endif
                     #endif
         UnityEngine.UI.Mask  self = (UnityEngine.UI.Mask)checkSelf(l);
         UnityEngine.Material a1;
         checkType(l, 2, out a1);
         var ret = self.GetModifiedMaterial(a1);
         pushValue(l, true);
         pushValue(l, ret);
         return(2);
     }
     catch (Exception e) {
         return(error(l, e));
     }
             #if DEBUG
     finally {
                     #if UNITY_5_5_OR_NEWER
         UnityEngine.Profiling.Profiler.EndSample();
                     #else
         Profiler.EndSample();
                     #endif
     }
             #endif
 }
All Usage Examples Of UnityEngine.UI.Mask::GetModifiedMaterial