close #11; Unmask only for children option
parent
288c616367
commit
a93ba3ff85
|
|
@ -29,6 +29,8 @@ namespace Coffee.UIExtensions
|
|||
[SerializeField] bool m_FitOnLateUpdate;
|
||||
[Tooltip("Show the graphic that is associated with the unmask render area.")]
|
||||
[SerializeField] bool m_ShowUnmaskGraphic = false;
|
||||
[Tooltip ("Unmask affects only for children.")]
|
||||
[SerializeField] bool m_OnlyForChildren = false;
|
||||
|
||||
|
||||
//################################
|
||||
|
|
@ -70,6 +72,20 @@ namespace Coffee.UIExtensions
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Unmask affects only for children.
|
||||
/// </summary>
|
||||
public bool onlyForChildren
|
||||
{
|
||||
get { return m_OnlyForChildren; }
|
||||
set
|
||||
{
|
||||
m_OnlyForChildren = value;
|
||||
SetDirty ();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Perform material modification in this function.
|
||||
/// </summary>
|
||||
|
|
@ -88,6 +104,22 @@ namespace Coffee.UIExtensions
|
|||
StencilMaterial.Remove(_unmaskMaterial);
|
||||
_unmaskMaterial = StencilMaterial.Add(baseMaterial, (1 << stencilDepth) - 1, StencilOp.Zero, CompareFunction.Always, m_ShowUnmaskGraphic ? ColorWriteMask.All : (ColorWriteMask)0, 0, (1 << stencilDepth) - 1);
|
||||
|
||||
// Unmask affects only for children.
|
||||
var canvasRenderer = graphic.canvasRenderer;
|
||||
if (m_OnlyForChildren)
|
||||
{
|
||||
canvasRenderer.hasPopInstruction = true;
|
||||
StencilMaterial.Remove (_revertUnmaskMaterial);
|
||||
_revertUnmaskMaterial = StencilMaterial.Add (baseMaterial, (1 << stencilDepth) - 1, StencilOp.Replace, CompareFunction.NotEqual, (ColorWriteMask)0);
|
||||
canvasRenderer.popMaterialCount = 1;
|
||||
canvasRenderer.SetPopMaterial (_revertUnmaskMaterial, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
canvasRenderer.hasPopInstruction = false;
|
||||
canvasRenderer.popMaterialCount = 0;
|
||||
}
|
||||
|
||||
return _unmaskMaterial;
|
||||
}
|
||||
|
||||
|
|
@ -114,6 +146,7 @@ namespace Coffee.UIExtensions
|
|||
// Private Members.
|
||||
//################################
|
||||
Material _unmaskMaterial;
|
||||
Material _revertUnmaskMaterial;
|
||||
Graphic _graphic;
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -134,7 +167,13 @@ namespace Coffee.UIExtensions
|
|||
void OnDisable()
|
||||
{
|
||||
StencilMaterial.Remove (_unmaskMaterial);
|
||||
StencilMaterial.Remove (_revertUnmaskMaterial);
|
||||
_unmaskMaterial = null;
|
||||
_revertUnmaskMaterial = null;
|
||||
|
||||
var canvasRenderer = graphic.canvasRenderer;
|
||||
canvasRenderer.hasPopInstruction = false;
|
||||
canvasRenderer.popMaterialCount = 0;
|
||||
SetDirty ();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue