add project files

This commit is contained in:
Boris Nikolaev
2026-08-14 01:58:31 +03:00
parent 9134cad79b
commit 5f1e94b653
4399 changed files with 12286903 additions and 0 deletions
@@ -0,0 +1,84 @@
using System.Collections;
using UnityEngine;
using UnityEngine.Events;
using OHM.UnityToolkit;
using OHM.UnityToolkit.Pooling;
namespace OHM.UnityToolkit.UI
{
public class UIMoveToTarget : MonoBehaviour, PooledObjectListener
{
[SerializeField]
private RectTransform rectTransform;
[SerializeField]
public RectTransform target;
[SerializeField]
public float initialDelay;
[SerializeField]
public float animDuration;
[SerializeField]
public AnimationCurve xCurve;
[SerializeField]
public AnimationCurve yCurve;
[SerializeField]
public bool autoStart = true;
[SerializeField]
public bool destroyOnEnd;
public UnityEvent onMoveDone = new UnityEvent();
private void Start()
{
ComponentsUtils.GetRequiredComponent(this, ref rectTransform);
if (autoStart)
{
StartCoroutine(MoveAnim());
}
}
public void StartMove()
{
StartCoroutine(MoveAnim());
}
private IEnumerator MoveAnim()
{
yield return new WaitForEndOfFrame();
yield return new WaitForSeconds(initialDelay);
Vector2 from = rectTransform.anchoredPosition;
var delta = (Vector2)target.localPosition - from;
for (float t = animDuration; t > 0f; t -= Time.deltaTime)
{
float ratio = 1f - t / animDuration;
rectTransform.anchoredPosition = new Vector2(
from.x + xCurve.Evaluate(ratio) * delta.x,
from.y + yCurve.Evaluate(ratio) * delta.y);
yield return new WaitForEndOfFrame();
}
onMoveDone.Invoke();
if (destroyOnEnd)
{
PoolsManager.ReleaseObject(base.gameObject);
}
}
public void OnEnable()
{
StartCoroutine(MoveAnim());
}
public void OnRelease()
{
}
public void OnReset()
{
}
}
}