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;
}
}
}