using UnityEngine; using UnityEngine.Pool; namespace DDD.Tycoons { public class Garnish : LiquidIngredient { [SerializeField] private float _autoDestroyTime = 2f; private IObjectPool _managedPool; public void Initialize(Vector3 spawnPosition, Quaternion rotation, Collider2D targetCollider, Vector3 pushForce, Sprite sprite) { transform.position = spawnPosition; transform.rotation = rotation; TargetCollider = targetCollider; SpriteRenderer.sprite = sprite; Rigidbody2D.linearVelocity = Vector2.zero; CanInteraction = true; gameObject.SetActive(true); Rigidbody2D.AddForce(pushForce, ForceMode2D.Impulse); Invoke(nameof(ReachedObject), _autoDestroyTime); } public void SetManagedPool(IObjectPool pool) => _managedPool = pool; public void Destroy() { CancelInvoke(nameof(ReachedObject)); _managedPool.Release(this); } public override void ReachedObject() { base.ReachedObject(); CanInteraction = false; Destroy(); } } }