Files
Dec2017-Script-Dump/UnityEngine.UI/UI/RectMask2D.cs
T
2026-06-04 11:42:34 +02:00

180 lines
5.0 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine.EventSystems;
namespace UnityEngine.UI
{
// Token: 0x02000069 RID: 105
[AddComponentMenu("UI/Rect Mask 2D", 13)]
[ExecuteInEditMode]
[DisallowMultipleComponent]
[RequireComponent(typeof(RectTransform))]
public class RectMask2D : UIBehaviour, IClipper, ICanvasRaycastFilter
{
// Token: 0x0600038A RID: 906 RVA: 0x00014D9C File Offset: 0x0001319C
protected RectMask2D()
{
}
// Token: 0x170000F5 RID: 245
// (get) Token: 0x0600038B RID: 907 RVA: 0x00014DC8 File Offset: 0x000131C8
public Rect canvasRect
{
get
{
Canvas canvas = null;
List<Canvas> list = ListPool<Canvas>.Get();
base.gameObject.GetComponentsInParent<Canvas>(false, list);
if (list.Count > 0)
{
canvas = list[list.Count - 1];
}
ListPool<Canvas>.Release(list);
return this.m_VertexClipper.GetCanvasRect(this.rectTransform, canvas);
}
}
// Token: 0x170000F6 RID: 246
// (get) Token: 0x0600038C RID: 908 RVA: 0x00014E28 File Offset: 0x00013228
public RectTransform rectTransform
{
get
{
RectTransform rectTransform;
if ((rectTransform = this.m_RectTransform) == null)
{
rectTransform = (this.m_RectTransform = base.GetComponent<RectTransform>());
}
return rectTransform;
}
}
// Token: 0x0600038D RID: 909 RVA: 0x00014E59 File Offset: 0x00013259
protected override void OnEnable()
{
base.OnEnable();
this.m_ShouldRecalculateClipRects = true;
ClipperRegistry.Register(this);
MaskUtilities.Notify2DMaskStateChanged(this);
}
// Token: 0x0600038E RID: 910 RVA: 0x00014E75 File Offset: 0x00013275
protected override void OnDisable()
{
base.OnDisable();
this.m_ClipTargets.Clear();
this.m_Clippers.Clear();
ClipperRegistry.Unregister(this);
MaskUtilities.Notify2DMaskStateChanged(this);
}
// Token: 0x0600038F RID: 911 RVA: 0x00014EA0 File Offset: 0x000132A0
public virtual bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera)
{
return !base.isActiveAndEnabled || RectTransformUtility.RectangleContainsScreenPoint(this.rectTransform, sp, eventCamera);
}
// Token: 0x06000390 RID: 912 RVA: 0x00014ED4 File Offset: 0x000132D4
public virtual void PerformClipping()
{
if (this.m_ShouldRecalculateClipRects)
{
MaskUtilities.GetRectMasksForClip(this, this.m_Clippers);
this.m_ShouldRecalculateClipRects = false;
}
bool flag = true;
Rect rect = Clipping.FindCullAndClipWorldRect(this.m_Clippers, out flag);
bool flag2 = rect != this.m_LastClipRectCanvasSpace;
if (flag2 || this.m_ForceClip)
{
foreach (IClippable clippable in this.m_ClipTargets)
{
clippable.SetClipRect(rect, flag);
}
this.m_LastClipRectCanvasSpace = rect;
this.m_LastValidClipRect = flag;
}
foreach (IClippable clippable2 in this.m_ClipTargets)
{
MaskableGraphic maskableGraphic = clippable2 as MaskableGraphic;
if (!(maskableGraphic != null) || maskableGraphic.canvasRenderer.hasMoved || flag2)
{
clippable2.Cull(this.m_LastClipRectCanvasSpace, this.m_LastValidClipRect);
}
}
}
// Token: 0x06000391 RID: 913 RVA: 0x00015020 File Offset: 0x00013420
public void AddClippable(IClippable clippable)
{
if (clippable != null)
{
this.m_ShouldRecalculateClipRects = true;
if (!this.m_ClipTargets.Contains(clippable))
{
this.m_ClipTargets.Add(clippable);
}
this.m_ForceClip = true;
}
}
// Token: 0x06000392 RID: 914 RVA: 0x0001505C File Offset: 0x0001345C
public void RemoveClippable(IClippable clippable)
{
if (clippable != null)
{
this.m_ShouldRecalculateClipRects = true;
clippable.SetClipRect(default(Rect), false);
this.m_ClipTargets.Remove(clippable);
this.m_ForceClip = true;
}
}
// Token: 0x06000393 RID: 915 RVA: 0x000150A0 File Offset: 0x000134A0
protected override void OnTransformParentChanged()
{
base.OnTransformParentChanged();
this.m_ShouldRecalculateClipRects = true;
}
// Token: 0x06000394 RID: 916 RVA: 0x000150B0 File Offset: 0x000134B0
protected override void OnCanvasHierarchyChanged()
{
base.OnCanvasHierarchyChanged();
this.m_ShouldRecalculateClipRects = true;
}
// Token: 0x040001BE RID: 446
[NonSerialized]
private readonly RectangularVertexClipper m_VertexClipper = new RectangularVertexClipper();
// Token: 0x040001BF RID: 447
[NonSerialized]
private RectTransform m_RectTransform;
// Token: 0x040001C0 RID: 448
[NonSerialized]
private HashSet<IClippable> m_ClipTargets = new HashSet<IClippable>();
// Token: 0x040001C1 RID: 449
[NonSerialized]
private bool m_ShouldRecalculateClipRects;
// Token: 0x040001C2 RID: 450
[NonSerialized]
private List<RectMask2D> m_Clippers = new List<RectMask2D>();
// Token: 0x040001C3 RID: 451
[NonSerialized]
private Rect m_LastClipRectCanvasSpace;
// Token: 0x040001C4 RID: 452
[NonSerialized]
private bool m_LastValidClipRect;
// Token: 0x040001C5 RID: 453
[NonSerialized]
private bool m_ForceClip;
}
}