diff options
author | chai <chaifix@163.com> | 2021-04-07 19:10:30 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-04-07 19:10:30 +0800 |
commit | e7dfbec8e8634e767d78959941daf71a96e021cf (patch) | |
tree | 58895a7c60df0bd3f316e6461051eabd1c0a51e1 /Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Mask.cs | |
parent | ff5a3fbf31db349db11bbc5c60ba199d26780f19 (diff) |
*移动目录
Diffstat (limited to 'Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Mask.cs')
-rw-r--r-- | Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Mask.cs | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Mask.cs b/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Mask.cs deleted file mode 100644 index 39dc291..0000000 --- a/Assets/uGUI-2017.1/UnityEngine.UI/UI/Core/Mask.cs +++ /dev/null @@ -1,166 +0,0 @@ -using System; -using UnityEngine; -using UnityEngine.EventSystems; -using UnityEngine.Rendering; -using UnityEngine.Serialization; - -namespace UnityEngine.UI -{ - [AddComponentMenu("UI/Mask", 13)] - [ExecuteInEditMode] - [RequireComponent(typeof(RectTransform))] - [DisallowMultipleComponent] - public class Mask : UIBehaviour, ICanvasRaycastFilter, IMaterialModifier - { - [NonSerialized] - private RectTransform m_RectTransform; - public RectTransform rectTransform - { - get { return m_RectTransform ?? (m_RectTransform = GetComponent<RectTransform>()); } - } - - [SerializeField] - [FormerlySerializedAs("m_ShowGraphic")] - private bool m_ShowMaskGraphic = true; - public bool showMaskGraphic - { - get { return m_ShowMaskGraphic; } - set - { - if (m_ShowMaskGraphic == value) - return; - - m_ShowMaskGraphic = value; - if (graphic != null) - graphic.SetMaterialDirty(); - } - } - - [NonSerialized] - private Graphic m_Graphic; - public Graphic graphic - { - get { return m_Graphic ?? (m_Graphic = GetComponent<Graphic>()); } - } - - [NonSerialized] - private Material m_MaskMaterial; - - [NonSerialized] - private Material m_UnmaskMaterial; - - protected Mask() - {} - - public virtual bool MaskEnabled() { return IsActive() && graphic != null; } - - [Obsolete("Not used anymore.")] - public virtual void OnSiblingGraphicEnabledDisabled() {} - - protected override void OnEnable() - { - base.OnEnable(); - if (graphic != null) - { - graphic.canvasRenderer.hasPopInstruction = true; - graphic.SetMaterialDirty(); - } - - MaskUtilities.NotifyStencilStateChanged(this); - } - - protected override void OnDisable() - { - // we call base OnDisable first here - // as we need to have the IsActive return the - // correct value when we notify the children - // that the mask state has changed. - base.OnDisable(); - if (graphic != null) - { - graphic.SetMaterialDirty(); - graphic.canvasRenderer.hasPopInstruction = false; - graphic.canvasRenderer.popMaterialCount = 0; - } - - StencilMaterial.Remove(m_MaskMaterial); - m_MaskMaterial = null; - StencilMaterial.Remove(m_UnmaskMaterial); - m_UnmaskMaterial = null; - - MaskUtilities.NotifyStencilStateChanged(this); - } - -#if UNITY_EDITOR - protected override void OnValidate() - { - base.OnValidate(); - - if (!IsActive()) - return; - - if (graphic != null) - graphic.SetMaterialDirty(); - - MaskUtilities.NotifyStencilStateChanged(this); - } - -#endif - - public virtual bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera) - { - if (!isActiveAndEnabled) - return true; - - return RectTransformUtility.RectangleContainsScreenPoint(rectTransform, sp, eventCamera); - } - - /// Stencil calculation time! - public virtual Material GetModifiedMaterial(Material baseMaterial) - { - if (!MaskEnabled()) - return baseMaterial; - - var rootSortCanvas = MaskUtilities.FindRootSortOverrideCanvas(transform); - var stencilDepth = MaskUtilities.GetStencilDepth(transform, rootSortCanvas); - if (stencilDepth >= 8) - { - Debug.LogError("Attempting to use a stencil mask with depth > 8", gameObject); - return baseMaterial; - } - - int desiredStencilBit = 1 << stencilDepth; - - // if we are at the first level... - // we want to destroy what is there - if (desiredStencilBit == 1) - { - var maskMaterial = StencilMaterial.Add(baseMaterial, 1, StencilOp.Replace, CompareFunction.Always, m_ShowMaskGraphic ? ColorWriteMask.All : 0); - StencilMaterial.Remove(m_MaskMaterial); - m_MaskMaterial = maskMaterial; - - var unmaskMaterial = StencilMaterial.Add(baseMaterial, 1, StencilOp.Zero, CompareFunction.Always, 0); - StencilMaterial.Remove(m_UnmaskMaterial); - m_UnmaskMaterial = unmaskMaterial; - graphic.canvasRenderer.popMaterialCount = 1; - graphic.canvasRenderer.SetPopMaterial(m_UnmaskMaterial, 0); - - return m_MaskMaterial; - } - - //otherwise we need to be a bit smarter and set some read / write masks - var maskMaterial2 = StencilMaterial.Add(baseMaterial, desiredStencilBit | (desiredStencilBit - 1), StencilOp.Replace, CompareFunction.Equal, m_ShowMaskGraphic ? ColorWriteMask.All : 0, desiredStencilBit - 1, desiredStencilBit | (desiredStencilBit - 1)); - StencilMaterial.Remove(m_MaskMaterial); - m_MaskMaterial = maskMaterial2; - - graphic.canvasRenderer.hasPopInstruction = true; - var unmaskMaterial2 = StencilMaterial.Add(baseMaterial, desiredStencilBit - 1, StencilOp.Replace, CompareFunction.Equal, 0, desiredStencilBit - 1, desiredStencilBit | (desiredStencilBit - 1)); - StencilMaterial.Remove(m_UnmaskMaterial); - m_UnmaskMaterial = unmaskMaterial2; - graphic.canvasRenderer.popMaterialCount = 1; - graphic.canvasRenderer.SetPopMaterial(m_UnmaskMaterial, 0); - - return m_MaskMaterial; - } - } -} |