using Core; using DG.Tweening; using UnityEngine; namespace Components { public class MovingPillar : BaseMonoBehaviour { [SerializeField] private Transform moveTransform; [SerializeField] private float duration; [SerializeField] private Ease moveEase; private Tween _moveTween; protected override void ReleaseReferences() { moveTransform = null; } public void AnimateTile(int inDirection) { gameObject.SetActive(true); LoopMovement(inDirection); return; void LoopMovement(int direction) { _moveTween = moveTransform.DOLocalMoveX(.22f * direction, duration) .SetEase(moveEase) .OnComplete(() => LoopMovement(-direction)); } } public void StopTile() { _moveTween?.Kill(); moveTransform.DOLocalMoveX(0f, 0f); gameObject.SetActive(false); } public void Pause() => _moveTween?.Pause(); public void Resume() => _moveTween?.Play(); } }