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);
 }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
            }
        }