diff --git a/Assets/Scripts/Core/UpdateContext.cs b/Assets/Scripts/Core/UpdateContext.cs index 1c83882c..a3748e6b 100644 --- a/Assets/Scripts/Core/UpdateContext.cs +++ b/Assets/Scripts/Core/UpdateContext.cs @@ -19,6 +19,7 @@ public struct ClipInfo public uint clipId; public int rectMaskDepth; public int referenceValue; + public int compareValue; public bool reversed; } @@ -60,10 +61,12 @@ public void Begin() batchingDepth = 0; rectMaskDepth = 0; stencilReferenceValue = 0; + stencilCompareValue = 0; alpha = 1; grayed = false; clipped = false; + clipInfo = default; _clipStack.Clear(); Stats.ObjectCount = 0; @@ -181,6 +184,7 @@ public void EnterClipping(uint clipId, bool reversedMask) clipInfo.clipId = clipId; clipInfo.referenceValue = stencilReferenceValue; + clipInfo.compareValue = stencilCompareValue; clipInfo.reversed = reversedMask; clipped = true; } @@ -192,6 +196,7 @@ public void LeaveClipping() { clipInfo = _clipStack.Pop(); stencilReferenceValue = clipInfo.referenceValue; + stencilCompareValue = clipInfo.compareValue; rectMaskDepth = clipInfo.rectMaskDepth; clipped = stencilReferenceValue != 0 || rectMaskDepth != 0; } @@ -203,7 +208,11 @@ public void EnterPaintingMode() clipInfo.rectMaskDepth = 0; clipInfo.referenceValue = 0; + clipInfo.compareValue = 0; clipInfo.reversed = false; + rectMaskDepth = 0; + stencilReferenceValue = 0; + stencilCompareValue = 0; clipped = false; } @@ -211,6 +220,7 @@ public void LeavePaintingMode() { clipInfo = _clipStack.Pop(); stencilReferenceValue = clipInfo.referenceValue; + stencilCompareValue = clipInfo.compareValue; rectMaskDepth = clipInfo.rectMaskDepth; clipped = stencilReferenceValue != 0 || rectMaskDepth != 0; }