using DG.Tweening; using DG.Tweening.Core; using DG.Tweening.Plugins.Options; using UnityEngine; namespace AxibugEmuOnline.Client.Tools { public class DotweenRotation : MonoBehaviour { [SerializeField] float m_duration = 1f; [SerializeField] Ease m_ease = Ease.Linear; [SerializeField] bool m_reverseRotation; private TweenerCore<Quaternion, Vector3, QuaternionOptions> m_tween; void OnEnable() { Restart(); } private void Restart() { if (m_tween != null) { m_tween.Kill(); m_tween = null; } transform.localRotation = Quaternion.identity; m_tween = transform.DOLocalRotate(new Vector3(0, 0, 360f * (m_reverseRotation ? -1 : 1)), m_duration, RotateMode.LocalAxisAdd) .SetEase(m_ease) .SetLoops(-1); m_tween.SetLink(gameObject); } private void OnDisable() { if (m_tween != null) { m_tween.Kill(); m_tween = null; } } private void OnValidate() { Restart(); } } }