using System; using System.Collections.Generic; using UnityEngine.Events; using UnityEngine.EventSystems; using UnityEngine.Serialization; using UnityEngine.UI.CoroutineTween; namespace UnityEngine.UI { // Token: 0x02000049 RID: 73 [DisallowMultipleComponent] [RequireComponent(typeof(CanvasRenderer))] [RequireComponent(typeof(RectTransform))] [ExecuteInEditMode] public abstract class Graphic : UIBehaviour, ICanvasElement { // Token: 0x06000227 RID: 551 RVA: 0x0000B170 File Offset: 0x00009570 protected Graphic() { if (this.m_ColorTweenRunner == null) { this.m_ColorTweenRunner = new TweenRunner(); } this.m_ColorTweenRunner.Init(this); this.useLegacyMeshGeneration = true; } // Token: 0x1700008E RID: 142 // (get) Token: 0x06000228 RID: 552 RVA: 0x0000B1C0 File Offset: 0x000095C0 public static Material defaultGraphicMaterial { get { if (Graphic.s_DefaultUI == null) { Graphic.s_DefaultUI = Canvas.GetDefaultCanvasMaterial(); } return Graphic.s_DefaultUI; } } // Token: 0x1700008F RID: 143 // (get) Token: 0x06000229 RID: 553 RVA: 0x0000B1F4 File Offset: 0x000095F4 // (set) Token: 0x0600022A RID: 554 RVA: 0x0000B20F File Offset: 0x0000960F public virtual Color color { get { return this.m_Color; } set { if (SetPropertyUtility.SetColor(ref this.m_Color, value)) { this.SetVerticesDirty(); } } } // Token: 0x17000090 RID: 144 // (get) Token: 0x0600022B RID: 555 RVA: 0x0000B22C File Offset: 0x0000962C // (set) Token: 0x0600022C RID: 556 RVA: 0x0000B247 File Offset: 0x00009647 public virtual bool raycastTarget { get { return this.m_RaycastTarget; } set { this.m_RaycastTarget = value; } } // Token: 0x17000091 RID: 145 // (get) Token: 0x0600022D RID: 557 RVA: 0x0000B254 File Offset: 0x00009654 // (set) Token: 0x0600022E RID: 558 RVA: 0x0000B26E File Offset: 0x0000966E protected bool useLegacyMeshGeneration { get; set; } // Token: 0x0600022F RID: 559 RVA: 0x0000B277 File Offset: 0x00009677 public virtual void SetAllDirty() { this.SetLayoutDirty(); this.SetVerticesDirty(); this.SetMaterialDirty(); } // Token: 0x06000230 RID: 560 RVA: 0x0000B28C File Offset: 0x0000968C public virtual void SetLayoutDirty() { if (this.IsActive()) { LayoutRebuilder.MarkLayoutForRebuild(this.rectTransform); if (this.m_OnDirtyLayoutCallback != null) { this.m_OnDirtyLayoutCallback(); } } } // Token: 0x06000231 RID: 561 RVA: 0x0000B2C0 File Offset: 0x000096C0 public virtual void SetVerticesDirty() { if (this.IsActive()) { this.m_VertsDirty = true; CanvasUpdateRegistry.RegisterCanvasElementForGraphicRebuild(this); if (this.m_OnDirtyVertsCallback != null) { this.m_OnDirtyVertsCallback(); } } } // Token: 0x06000232 RID: 562 RVA: 0x0000B2F6 File Offset: 0x000096F6 public virtual void SetMaterialDirty() { if (this.IsActive()) { this.m_MaterialDirty = true; CanvasUpdateRegistry.RegisterCanvasElementForGraphicRebuild(this); if (this.m_OnDirtyMaterialCallback != null) { this.m_OnDirtyMaterialCallback(); } } } // Token: 0x06000233 RID: 563 RVA: 0x0000B32C File Offset: 0x0000972C protected override void OnRectTransformDimensionsChange() { if (base.gameObject.activeInHierarchy) { if (CanvasUpdateRegistry.IsRebuildingLayout()) { this.SetVerticesDirty(); } else { this.SetVerticesDirty(); this.SetLayoutDirty(); } } } // Token: 0x06000234 RID: 564 RVA: 0x0000B364 File Offset: 0x00009764 protected override void OnBeforeTransformParentChanged() { GraphicRegistry.UnregisterGraphicForCanvas(this.canvas, this); LayoutRebuilder.MarkLayoutForRebuild(this.rectTransform); } // Token: 0x06000235 RID: 565 RVA: 0x0000B37E File Offset: 0x0000977E protected override void OnTransformParentChanged() { base.OnTransformParentChanged(); this.m_Canvas = null; if (this.IsActive()) { this.CacheCanvas(); GraphicRegistry.RegisterGraphicForCanvas(this.canvas, this); this.SetAllDirty(); } } // Token: 0x17000092 RID: 146 // (get) Token: 0x06000236 RID: 566 RVA: 0x0000B3B8 File Offset: 0x000097B8 public int depth { get { return this.canvasRenderer.absoluteDepth; } } // Token: 0x17000093 RID: 147 // (get) Token: 0x06000237 RID: 567 RVA: 0x0000B3D8 File Offset: 0x000097D8 public RectTransform rectTransform { get { RectTransform rectTransform; if ((rectTransform = this.m_RectTransform) == null) { rectTransform = (this.m_RectTransform = base.GetComponent()); } return rectTransform; } } // Token: 0x17000094 RID: 148 // (get) Token: 0x06000238 RID: 568 RVA: 0x0000B40C File Offset: 0x0000980C public Canvas canvas { get { if (this.m_Canvas == null) { this.CacheCanvas(); } return this.m_Canvas; } } // Token: 0x06000239 RID: 569 RVA: 0x0000B440 File Offset: 0x00009840 private void CacheCanvas() { List list = ListPool.Get(); base.gameObject.GetComponentsInParent(false, list); if (list.Count > 0) { for (int i = 0; i < list.Count; i++) { if (list[i].isActiveAndEnabled) { this.m_Canvas = list[i]; break; } } } else { this.m_Canvas = null; } ListPool.Release(list); } // Token: 0x17000095 RID: 149 // (get) Token: 0x0600023A RID: 570 RVA: 0x0000B4C0 File Offset: 0x000098C0 public CanvasRenderer canvasRenderer { get { if (this.m_CanvasRender == null) { this.m_CanvasRender = base.GetComponent(); } return this.m_CanvasRender; } } // Token: 0x17000096 RID: 150 // (get) Token: 0x0600023B RID: 571 RVA: 0x0000B4F8 File Offset: 0x000098F8 public virtual Material defaultMaterial { get { return Graphic.defaultGraphicMaterial; } } // Token: 0x17000097 RID: 151 // (get) Token: 0x0600023C RID: 572 RVA: 0x0000B514 File Offset: 0x00009914 // (set) Token: 0x0600023D RID: 573 RVA: 0x0000B54B File Offset: 0x0000994B public virtual Material material { get { return (!(this.m_Material != null)) ? this.defaultMaterial : this.m_Material; } set { if (!(this.m_Material == value)) { this.m_Material = value; this.SetMaterialDirty(); } } } // Token: 0x17000098 RID: 152 // (get) Token: 0x0600023E RID: 574 RVA: 0x0000B574 File Offset: 0x00009974 public virtual Material materialForRendering { get { List list = ListPool.Get(); base.GetComponents(typeof(IMaterialModifier), list); Material material = this.material; for (int i = 0; i < list.Count; i++) { material = (list[i] as IMaterialModifier).GetModifiedMaterial(material); } ListPool.Release(list); return material; } } // Token: 0x17000099 RID: 153 // (get) Token: 0x0600023F RID: 575 RVA: 0x0000B5D8 File Offset: 0x000099D8 public virtual Texture mainTexture { get { return Graphic.s_WhiteTexture; } } // Token: 0x06000240 RID: 576 RVA: 0x0000B5F2 File Offset: 0x000099F2 protected override void OnEnable() { base.OnEnable(); this.CacheCanvas(); GraphicRegistry.RegisterGraphicForCanvas(this.canvas, this); if (Graphic.s_WhiteTexture == null) { Graphic.s_WhiteTexture = Texture2D.whiteTexture; } this.SetAllDirty(); } // Token: 0x06000241 RID: 577 RVA: 0x0000B630 File Offset: 0x00009A30 protected override void OnDisable() { GraphicRegistry.UnregisterGraphicForCanvas(this.canvas, this); CanvasUpdateRegistry.UnRegisterCanvasElementForRebuild(this); if (this.canvasRenderer != null) { this.canvasRenderer.Clear(); } LayoutRebuilder.MarkLayoutForRebuild(this.rectTransform); base.OnDisable(); } // Token: 0x06000242 RID: 578 RVA: 0x0000B680 File Offset: 0x00009A80 protected override void OnCanvasHierarchyChanged() { Canvas canvas = this.m_Canvas; this.m_Canvas = null; if (this.IsActive()) { this.CacheCanvas(); if (canvas != this.m_Canvas) { GraphicRegistry.UnregisterGraphicForCanvas(canvas, this); if (this.IsActive()) { GraphicRegistry.RegisterGraphicForCanvas(this.canvas, this); } } } } // Token: 0x06000243 RID: 579 RVA: 0x0000B6E4 File Offset: 0x00009AE4 public virtual void Rebuild(CanvasUpdate update) { if (!this.canvasRenderer.cull) { if (update == CanvasUpdate.PreRender) { if (this.m_VertsDirty) { this.UpdateGeometry(); this.m_VertsDirty = false; } if (this.m_MaterialDirty) { this.UpdateMaterial(); this.m_MaterialDirty = false; } } } } // Token: 0x06000244 RID: 580 RVA: 0x0000B74C File Offset: 0x00009B4C public virtual void LayoutComplete() { } // Token: 0x06000245 RID: 581 RVA: 0x0000B74F File Offset: 0x00009B4F public virtual void GraphicUpdateComplete() { } // Token: 0x06000246 RID: 582 RVA: 0x0000B754 File Offset: 0x00009B54 protected virtual void UpdateMaterial() { if (this.IsActive()) { this.canvasRenderer.materialCount = 1; this.canvasRenderer.SetMaterial(this.materialForRendering, 0); this.canvasRenderer.SetTexture(this.mainTexture); } } // Token: 0x06000247 RID: 583 RVA: 0x0000B7A1 File Offset: 0x00009BA1 protected virtual void UpdateGeometry() { if (this.useLegacyMeshGeneration) { this.DoLegacyMeshGeneration(); } else { this.DoMeshGeneration(); } } // Token: 0x06000248 RID: 584 RVA: 0x0000B7C0 File Offset: 0x00009BC0 private void DoMeshGeneration() { if (this.rectTransform != null && this.rectTransform.rect.width >= 0f && this.rectTransform.rect.height >= 0f) { this.OnPopulateMesh(Graphic.s_VertexHelper); } else { Graphic.s_VertexHelper.Clear(); } List list = ListPool.Get(); base.GetComponents(typeof(IMeshModifier), list); for (int i = 0; i < list.Count; i++) { ((IMeshModifier)list[i]).ModifyMesh(Graphic.s_VertexHelper); } ListPool.Release(list); Graphic.s_VertexHelper.FillMesh(Graphic.workerMesh); this.canvasRenderer.SetMesh(Graphic.workerMesh); } // Token: 0x06000249 RID: 585 RVA: 0x0000B89C File Offset: 0x00009C9C private void DoLegacyMeshGeneration() { if (this.rectTransform != null && this.rectTransform.rect.width >= 0f && this.rectTransform.rect.height >= 0f) { this.OnPopulateMesh(Graphic.workerMesh); } else { Graphic.workerMesh.Clear(); } List list = ListPool.Get(); base.GetComponents(typeof(IMeshModifier), list); for (int i = 0; i < list.Count; i++) { ((IMeshModifier)list[i]).ModifyMesh(Graphic.workerMesh); } ListPool.Release(list); this.canvasRenderer.SetMesh(Graphic.workerMesh); } // Token: 0x1700009A RID: 154 // (get) Token: 0x0600024A RID: 586 RVA: 0x0000B970 File Offset: 0x00009D70 protected static Mesh workerMesh { get { if (Graphic.s_Mesh == null) { Graphic.s_Mesh = new Mesh(); Graphic.s_Mesh.name = "Shared UI Mesh"; Graphic.s_Mesh.hideFlags = HideFlags.HideAndDontSave; } return Graphic.s_Mesh; } } // Token: 0x0600024B RID: 587 RVA: 0x0000B9C1 File Offset: 0x00009DC1 [Obsolete("Use OnPopulateMesh instead.", true)] protected virtual void OnFillVBO(List vbo) { } // Token: 0x0600024C RID: 588 RVA: 0x0000B9C4 File Offset: 0x00009DC4 [Obsolete("Use OnPopulateMesh(VertexHelper vh) instead.", false)] protected virtual void OnPopulateMesh(Mesh m) { this.OnPopulateMesh(Graphic.s_VertexHelper); Graphic.s_VertexHelper.FillMesh(m); } // Token: 0x0600024D RID: 589 RVA: 0x0000B9E0 File Offset: 0x00009DE0 protected virtual void OnPopulateMesh(VertexHelper vh) { Rect pixelAdjustedRect = this.GetPixelAdjustedRect(); Vector4 vector = new Vector4(pixelAdjustedRect.x, pixelAdjustedRect.y, pixelAdjustedRect.x + pixelAdjustedRect.width, pixelAdjustedRect.y + pixelAdjustedRect.height); Color32 color = this.color; vh.Clear(); vh.AddVert(new Vector3(vector.x, vector.y), color, new Vector2(0f, 0f)); vh.AddVert(new Vector3(vector.x, vector.w), color, new Vector2(0f, 1f)); vh.AddVert(new Vector3(vector.z, vector.w), color, new Vector2(1f, 1f)); vh.AddVert(new Vector3(vector.z, vector.y), color, new Vector2(1f, 0f)); vh.AddTriangle(0, 1, 2); vh.AddTriangle(2, 3, 0); } // Token: 0x0600024E RID: 590 RVA: 0x0000BAF0 File Offset: 0x00009EF0 protected override void OnDidApplyAnimationProperties() { this.SetAllDirty(); } // Token: 0x0600024F RID: 591 RVA: 0x0000BAF9 File Offset: 0x00009EF9 public virtual void SetNativeSize() { } // Token: 0x06000250 RID: 592 RVA: 0x0000BAFC File Offset: 0x00009EFC public virtual bool Raycast(Vector2 sp, Camera eventCamera) { bool flag; if (!base.isActiveAndEnabled) { flag = false; } else { Transform transform = base.transform; List list = ListPool.Get(); bool flag2 = false; bool flag3 = true; while (transform != null) { transform.GetComponents(list); for (int i = 0; i < list.Count; i++) { Canvas canvas = list[i] as Canvas; if (canvas != null && canvas.overrideSorting) { flag3 = false; } ICanvasRaycastFilter canvasRaycastFilter = list[i] as ICanvasRaycastFilter; if (canvasRaycastFilter != null) { bool flag4 = true; CanvasGroup canvasGroup = list[i] as CanvasGroup; if (canvasGroup != null) { if (!flag2 && canvasGroup.ignoreParentGroups) { flag2 = true; flag4 = canvasRaycastFilter.IsRaycastLocationValid(sp, eventCamera); } else if (!flag2) { flag4 = canvasRaycastFilter.IsRaycastLocationValid(sp, eventCamera); } } else { flag4 = canvasRaycastFilter.IsRaycastLocationValid(sp, eventCamera); } if (!flag4) { ListPool.Release(list); return false; } } } transform = ((!flag3) ? null : transform.parent); } ListPool.Release(list); flag = true; } return flag; } // Token: 0x06000251 RID: 593 RVA: 0x0000BC4C File Offset: 0x0000A04C public Vector2 PixelAdjustPoint(Vector2 point) { Vector2 vector; if (!this.canvas || this.canvas.renderMode == RenderMode.WorldSpace || this.canvas.scaleFactor == 0f || !this.canvas.pixelPerfect) { vector = point; } else { vector = RectTransformUtility.PixelAdjustPoint(point, base.transform, this.canvas); } return vector; } // Token: 0x06000252 RID: 594 RVA: 0x0000BCC4 File Offset: 0x0000A0C4 public Rect GetPixelAdjustedRect() { Rect rect; if (!this.canvas || this.canvas.renderMode == RenderMode.WorldSpace || this.canvas.scaleFactor == 0f || !this.canvas.pixelPerfect) { rect = this.rectTransform.rect; } else { rect = RectTransformUtility.PixelAdjustRect(this.rectTransform, this.canvas); } return rect; } // Token: 0x06000253 RID: 595 RVA: 0x0000BD41 File Offset: 0x0000A141 public virtual void CrossFadeColor(Color targetColor, float duration, bool ignoreTimeScale, bool useAlpha) { this.CrossFadeColor(targetColor, duration, ignoreTimeScale, useAlpha, true); } // Token: 0x06000254 RID: 596 RVA: 0x0000BD50 File Offset: 0x0000A150 public virtual void CrossFadeColor(Color targetColor, float duration, bool ignoreTimeScale, bool useAlpha, bool useRGB) { if (!(this.canvasRenderer == null) && (useRGB || useAlpha)) { if (this.canvasRenderer.GetColor().Equals(targetColor)) { this.m_ColorTweenRunner.StopTween(); } else { ColorTween.ColorTweenMode colorTweenMode = ((!useRGB || !useAlpha) ? ((!useRGB) ? ColorTween.ColorTweenMode.Alpha : ColorTween.ColorTweenMode.RGB) : ColorTween.ColorTweenMode.All); ColorTween colorTween = new ColorTween { duration = duration, startColor = this.canvasRenderer.GetColor(), targetColor = targetColor }; colorTween.AddOnChangedCallback(new UnityAction(this.canvasRenderer.SetColor)); colorTween.ignoreTimeScale = ignoreTimeScale; colorTween.tweenMode = colorTweenMode; this.m_ColorTweenRunner.StartTween(colorTween); } } } // Token: 0x06000255 RID: 597 RVA: 0x0000BE3C File Offset: 0x0000A23C private static Color CreateColorFromAlpha(float alpha) { Color black = Color.black; black.a = alpha; return black; } // Token: 0x06000256 RID: 598 RVA: 0x0000BE60 File Offset: 0x0000A260 public virtual void CrossFadeAlpha(float alpha, float duration, bool ignoreTimeScale) { this.CrossFadeColor(Graphic.CreateColorFromAlpha(alpha), duration, ignoreTimeScale, true, false); } // Token: 0x06000257 RID: 599 RVA: 0x0000BE73 File Offset: 0x0000A273 public void RegisterDirtyLayoutCallback(UnityAction action) { this.m_OnDirtyLayoutCallback = (UnityAction)Delegate.Combine(this.m_OnDirtyLayoutCallback, action); } // Token: 0x06000258 RID: 600 RVA: 0x0000BE8D File Offset: 0x0000A28D public void UnregisterDirtyLayoutCallback(UnityAction action) { this.m_OnDirtyLayoutCallback = (UnityAction)Delegate.Remove(this.m_OnDirtyLayoutCallback, action); } // Token: 0x06000259 RID: 601 RVA: 0x0000BEA7 File Offset: 0x0000A2A7 public void RegisterDirtyVerticesCallback(UnityAction action) { this.m_OnDirtyVertsCallback = (UnityAction)Delegate.Combine(this.m_OnDirtyVertsCallback, action); } // Token: 0x0600025A RID: 602 RVA: 0x0000BEC1 File Offset: 0x0000A2C1 public void UnregisterDirtyVerticesCallback(UnityAction action) { this.m_OnDirtyVertsCallback = (UnityAction)Delegate.Remove(this.m_OnDirtyVertsCallback, action); } // Token: 0x0600025B RID: 603 RVA: 0x0000BEDB File Offset: 0x0000A2DB public void RegisterDirtyMaterialCallback(UnityAction action) { this.m_OnDirtyMaterialCallback = (UnityAction)Delegate.Combine(this.m_OnDirtyMaterialCallback, action); } // Token: 0x0600025C RID: 604 RVA: 0x0000BEF5 File Offset: 0x0000A2F5 public void UnregisterDirtyMaterialCallback(UnityAction action) { this.m_OnDirtyMaterialCallback = (UnityAction)Delegate.Remove(this.m_OnDirtyMaterialCallback, action); } // Token: 0x0600025E RID: 606 RVA: 0x0000BF27 File Offset: 0x0000A327 Transform ICanvasElement.get_transform() { return base.transform; } // Token: 0x04000107 RID: 263 protected static Material s_DefaultUI = null; // Token: 0x04000108 RID: 264 protected static Texture2D s_WhiteTexture = null; // Token: 0x04000109 RID: 265 [FormerlySerializedAs("m_Mat")] [SerializeField] protected Material m_Material; // Token: 0x0400010A RID: 266 [SerializeField] private Color m_Color = Color.white; // Token: 0x0400010B RID: 267 [SerializeField] private bool m_RaycastTarget = true; // Token: 0x0400010C RID: 268 [NonSerialized] private RectTransform m_RectTransform; // Token: 0x0400010D RID: 269 [NonSerialized] private CanvasRenderer m_CanvasRender; // Token: 0x0400010E RID: 270 [NonSerialized] private Canvas m_Canvas; // Token: 0x0400010F RID: 271 [NonSerialized] private bool m_VertsDirty; // Token: 0x04000110 RID: 272 [NonSerialized] private bool m_MaterialDirty; // Token: 0x04000111 RID: 273 [NonSerialized] protected UnityAction m_OnDirtyLayoutCallback; // Token: 0x04000112 RID: 274 [NonSerialized] protected UnityAction m_OnDirtyVertsCallback; // Token: 0x04000113 RID: 275 [NonSerialized] protected UnityAction m_OnDirtyMaterialCallback; // Token: 0x04000114 RID: 276 [NonSerialized] protected static Mesh s_Mesh; // Token: 0x04000115 RID: 277 [NonSerialized] private static readonly VertexHelper s_VertexHelper = new VertexHelper(); // Token: 0x04000116 RID: 278 [NonSerialized] private readonly TweenRunner m_ColorTweenRunner; } }