// --------------------------------------------------------------------------------------------------------------------
//
// Copyright (c) VRMADA, All rights reserved.
//
// --------------------------------------------------------------------------------------------------------------------
using UnityEngine;
using UnityEngine.UI;
namespace UltimateXR.Animation.UI
{
///
/// Abstract base class for tweening animations on Unity components.
///
[RequireComponent(typeof(Graphic))]
[DisallowMultipleComponent]
public abstract class UxrGraphicTween : UxrTween
{
#region Public Types & Data
public Graphic TargetGraphic => GetCachedComponent();
public RectTransform TargetRectTransform => GetCachedComponent();
#endregion
#region Protected Overrides UxrTween
///
protected override Behaviour TargetBehaviour => TargetGraphic;
///
protected override void StoreOriginalValue()
{
_originalAnchoredPosition = TargetRectTransform.anchoredPosition;
_originalLocalScale = TargetRectTransform.localScale;
_originalLocalRotation = TargetRectTransform.localRotation;
_originalColor = TargetGraphic.color;
}
#endregion
#region Protected Methods
///
/// Restores the original Graphic's anchored position.
///
protected void RestoreAnchoredPosition()
{
if (HasOriginalValueStored)
{
TargetRectTransform.anchoredPosition = _originalAnchoredPosition;
}
}
///
/// Restores the original Graphic's local scale.
///
protected void RestoreLocalScale()
{
if (HasOriginalValueStored)
{
TargetRectTransform.localScale = _originalLocalScale;
}
}
///
/// Restores the original Graphic's local rotation.
///
protected void RestoreLocalRotation()
{
if (HasOriginalValueStored)
{
TargetRectTransform.localRotation = _originalLocalRotation;
}
}
///
/// Restores the original Graphic's color.
///
protected void RestoreColor()
{
if (HasOriginalValueStored)
{
TargetGraphic.color = _originalColor;
}
}
#endregion
#region Private Types & Data
private Vector2 _originalAnchoredPosition;
private Vector3 _originalLocalScale;
private Quaternion _originalLocalRotation;
private Color _originalColor;
#endregion
}
}