namespace UIWidgets { using UnityEngine; /// /// Move object in hierarchy and keeps original parent, position and relative size. /// public class HierarchyToggle : MonoBehaviour { /// /// Allow hierarchy toggle. /// [SerializeField] public bool AllowToggle = true; /// /// Original parent. /// protected Transform Parent; /// /// Original position. /// protected Vector2 AnchoredPosition; /// /// Original size delta. /// protected Vector2 SizeDelta; /// /// Set specified object as new parent. /// /// New parent. public void SetParent(Transform newParent) { if (!AllowToggle) { return; } Parent = transform.parent; AnchoredPosition = (transform as RectTransform).anchoredPosition; SizeDelta = (transform as RectTransform).sizeDelta; transform.SetParent(newParent); } /// /// Set specified object as parent. /// /// New parent. public void SetParent(GameObject newParent) { SetParent(newParent.transform); } /// /// Restore original parent, position and relative size. /// public void Restore() { if (!AllowToggle) { return; } if (Parent == null) { return; } transform.SetParent(Parent); (transform as RectTransform).anchoredPosition = AnchoredPosition; (transform as RectTransform).sizeDelta = SizeDelta; } } }