protected System.Collections.IEnumerator OnClickUpDestroyCoroutine(UsableContainerField fieldRef, Vector2 targetPos, float lagSeconds) { yield return(new WaitForSeconds(lagSeconds)); fieldRef.GetComponent <RectTransform>().position = targetPos; fieldRef.transform.SetParent(_tempTransform, true); Destroy(this); yield return(null); }
protected void OnClickUpInEquipment(PointerEventData eventData) { if (!_actionsLocked) { FloatingParticleManager.Instance.Hide(); bool actionDone = false; // check for mouse collisions with scene objects RaycastHit2D[] hits = InputManager.Instance.GetRaycastHitsUnderCursor(); int objectsLayerID = LayerMask.NameToLayer("Objects"); int hl = hits.Length; if (hl == 0) { actionDone = true; } for (int i = 0; i < hl; ++i) { if (!actionDone && hits[i].collider != null && hits[i].collider.gameObject.layer == objectsLayerID) { actionDone = PerformActionOnClick(hits[i].collider.gameObject); } } if (!actionDone) { // check for collisions with equipment elements PointerEventData pData = new PointerEventData(EventSystem.current); pData.position = InputManager.Instance.CursorCurrentPosition; List <RaycastResult> results = new List <RaycastResult>(); EventSystem.current.RaycastAll(pData, results); int length = results.Count; for (int i = 0; i < length; ++i) { if (results[i].gameObject.layer == objectsLayerID && results[i].gameObject != _container.UsableField.gameObject) { UsableContainerField field = results[i].gameObject.GetComponent <UsableContainerField>(); if (field != null && !field.Container.IsFree) { actionDone = PerformActionOnClick(field.Container.AssociatedObject.gameObject); } } } } if (!actionDone) { PerformActionOnClick(null); } _actionsLocked = true; if (actionDone && DestroyOnUse) { EquipmentManager.Instance.RemoveObjectFromPool(this, 0.6f); StartCoroutine(OnClickUpDestroyCoroutine(_container.UsableField, _startSlotPosition, 1.2f)); } else { StartCoroutine(OnClickUpReturnToSlotCoroutine(_container.UsableField.GetComponent <RectTransform>().position, _startSlotPosition, 0.5f)); } } }