private void ElementDropped(ReorderableList.ReorderableListEventStruct droppedStruct) { DebugLabel.text = ""; DebugLabel.text += "Dropped Object: " + droppedStruct.DroppedObject.name + "\n"; DebugLabel.text += "Is Clone ?: " + droppedStruct.IsAClone + "\n"; if (droppedStruct.IsAClone) { DebugLabel.text += "Source Object: " + droppedStruct.SourceObject.name + "\n"; } DebugLabel.text += string.Format("From {0} at Index {1} \n", droppedStruct.FromList.name, droppedStruct.FromIndex); DebugLabel.text += string.Format("To {0} at Index {1} \n", droppedStruct.ToList.name, droppedStruct.ToIndex); }
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); } }
private void OnPositionsUpdated(ReorderableList.ReorderableListEventStruct arg0) { var idList = new List <int>(); var sortedList = new List <HeadList_Item>(); for (int i = 0; i < itemParent.childCount; i++) { var child = itemParent.GetChild(i); var item = child.gameObject.GetComponent <HeadList_Item>(); if (child.gameObject.activeSelf && item != null) { sortedList.Add(item); } } for (int i = 0; i < sortedList.Count; i++) { idList.Add(sortedList[i].ID); } for (int i = 0; i < sortedList.Count; i++) { var item = sortedList[i]; item.SetIndex(i); itemDic[i] = item; } var tempList = new List <string[]>(arrayList); arrayList.Clear(); for (int i = 0; i < tempList.Count; i++) { arrayList.Add(tempList[idList[i]]); } if (onSortChanged != null) { onSortChanged.Invoke(idList); } }
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() }; if (!isValid) { CancelDrag(); return; } RefreshSizes(); _draggingObject.SetParent(_currentReorderableListRaycasted.Content, false); _draggingObject.rotation = _currentReorderableListRaycasted.transform.rotation; _draggingObject.SetSiblingIndex(_fakeElement.GetSiblingIndex()); _reorderableList.OnElementAdded.Invoke(args); //Send OnelementDropped Event if (_reorderableList && _reorderableList.OnElementDropped != null) { _reorderableList.OnElementDropped.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); } }