// Copyright (c) 2015 - 2023 Doozy Entertainment. All Rights Reserved. // This code can only be used under the standard Unity Asset Store End User License Agreement // A Copy of the EULA APPENDIX 1 is available at http://unity3d.com/company/legal/as_terms using UnityEngine; // ReSharper disable MemberCanBePrivate.Global // ReSharper disable UnusedType.Global // ReSharper disable UnusedMember.Global namespace Doozy.Runtime.Common.Extensions { /// Extension methods for the RectTransform class public static class RectTransformExtensions { /// Convert a RectTransform to screen space coordinates /// RectTransform to convert /// Rect in screen space coordinates public static Rect ToScreenSpace(this RectTransform rectTransform) { Vector3 lossyScale = rectTransform.lossyScale; var size = Vector2.Scale ( rectTransform.rect.size, new Vector3 ( Mathf.Abs(lossyScale.x), Mathf.Abs(lossyScale.y), Mathf.Abs(lossyScale.z) ) ); return new Rect((Vector2)rectTransform.position - (size * rectTransform.pivot), size); } /// Copies the RectTransform settings /// Target RectTransform /// Source RectTransform public static RectTransform Copy(this RectTransform target, RectTransform from) { target.localScale = from.localScale; target.anchorMin = from.anchorMin; target.anchorMax = from.anchorMax; target.pivot = from.pivot; target.sizeDelta = from.sizeDelta; target.anchoredPosition3D = from.anchoredPosition3D; return target; } /// Makes the RectTransform match its parent size /// Target RectTransform /// Reset LocalScale to Vector3.one public static RectTransform ExpandToParentSize(this RectTransform target, bool resetScaleToOne) { if (resetScaleToOne) target.ResetLocalScaleToOne(); target.AnchorMinToZero(); target.AnchorMaxToOne(); target.CenterPivot(); target.SizeDeltaToZero(); target.ResetAnchoredPosition3D(); target.ResetLocalPosition(); return target; } /// Moves the RectTransform pivot settings to its center /// Target RectTransform /// Reset LocalScale to Vector3.one public static RectTransform Center(this RectTransform target, bool resetScaleToOne) { if (resetScaleToOne) target.ResetLocalScaleToOne(); target.AnchorMinToCenter(); target.AnchorMaxToCenter(); target.CenterPivot(); target.SizeDeltaToZero(); return target; } /// Resets the target's anchoredPosition3D to Vector3.zero /// Target RectTransform public static RectTransform ResetAnchoredPosition3D(this RectTransform target) { target.anchoredPosition3D = Vector3.zero; return target; } /// Resets the target's localPosition to Vector3.zero /// Target RectTransform public static RectTransform ResetLocalPosition(this RectTransform target) { target.localPosition = Vector3.zero; return target; } /// Resets the target's localScale to Vector3.one /// Target RectTransform public static RectTransform ResetLocalScaleToOne(this RectTransform target) { target.localScale = Vector3.one; return target; } /// Resets the target's anchorMin to Vector2.zero /// Target RectTransform public static RectTransform AnchorMinToZero(this RectTransform target) { target.anchorMin = Vector2.zero; return target; } /// Sets the target's anchorMin to Vector2(0.5f, 0.5f) /// Target RectTransform public static RectTransform AnchorMinToCenter(this RectTransform target) { target.anchorMin = new Vector2(0.5f, 0.5f); return target; } /// Resets the target's anchorMax to Vector2.one /// Target RectTransform public static RectTransform AnchorMaxToOne(this RectTransform target) { target.anchorMax = Vector2.one; return target; } /// Sets the target's anchorMax to Vector2(0.5f, 0.5f) /// Target RectTransform public static RectTransform AnchorMaxToCenter(this RectTransform target) { target.anchorMax = new Vector2(0.5f, 0.5f); return target; } /// Sets the target's pivot to Vector2(0.5f, 0.5f) /// Target RectTransform public static RectTransform CenterPivot(this RectTransform target) { target.pivot = new Vector2(0.5f, 0.5f); return target; } /// Resets the target's sizeDelta to Vector2.zero /// Target RectTransform public static RectTransform SizeDeltaToZero(this RectTransform target) { target.sizeDelta = Vector2.zero; return target; } } }