void CancelDrag() { _isDragging = false; //If it's a clone, delete it if (_reorderableList.CloneDraggedObject) { Destroy(_draggingObject.gameObject); } //Else replace the draggedObject to his first place else { RefreshSizes(); _draggingObject.SetParent(_reorderableList.Content, false); _draggingObject.rotation = _reorderableList.Content.transform.rotation; _draggingObject.SetSiblingIndex(_fromIndex); var args = new ReorderableList.ReorderableListEventStruct { DroppedObject = _draggingObject.gameObject, IsAClone = _reorderableList.CloneDraggedObject, SourceObject = _reorderableList.CloneDraggedObject ? gameObject : _draggingObject.gameObject, FromList = _reorderableList, FromIndex = _fromIndex, ToList = _reorderableList, ToIndex = _fromIndex }; _reorderableList.OnElementAdded.Invoke(args); if (!isValid) { throw new Exception("Transfer is already Cancelled."); } } //Delete fake element if (_fakeElement != null) { Destroy(_fakeElement.gameObject); } }
public void OnEndDrag(PointerEventData eventData) { _isDragging = false; if (_draggingObject != null) { //If we have a, ReorderableList that is dropable //Put the dragged object into the content and at the right index if (_currentReorderableListRaycasted != null && _currentReorderableListRaycasted.IsDropable && (IsTransferable || _currentReorderableListRaycasted == _reorderableList)) { var args = new ReorderableList.ReorderableListEventStruct { DroppedObject = _draggingObject.gameObject, IsAClone = _reorderableList.CloneDraggedObject, SourceObject = _reorderableList.CloneDraggedObject ? gameObject : _draggingObject.gameObject, FromList = _reorderableList, FromIndex = _fromIndex, ToList = _currentReorderableListRaycasted, ToIndex = _fakeElement.GetSiblingIndex() }; //Send OnelementDropped Event if (_reorderableList && _reorderableList.OnElementDropped != null) { _reorderableList.OnElementDropped.Invoke(args); } if (!isValid) { CancelDrag(); return; } RefreshSizes(); _draggingObject.SetParent(_currentReorderableListRaycasted.Content, false); _draggingObject.rotation = _currentReorderableListRaycasted.transform.rotation; _draggingObject.SetSiblingIndex(_fakeElement.GetSiblingIndex()); _reorderableList.OnElementAdded.Invoke(args); if (!isValid) { throw new Exception("It's too late to cancel the Transfer! Do so in OnElementDropped!"); } } //We don't have an ReorderableList else { if (this.isDroppableInSpace) { _reorderableList.OnElementDropped.Invoke(new ReorderableList.ReorderableListEventStruct { DroppedObject = _draggingObject.gameObject, IsAClone = _reorderableList.CloneDraggedObject, SourceObject = _reorderableList.CloneDraggedObject ? gameObject : _draggingObject.gameObject, FromList = _reorderableList, FromIndex = _fromIndex }); } else { CancelDrag(); } } } //Delete fake element if (_fakeElement != null) { Destroy(_fakeElement.gameObject); } }