private void Awake() { m_scrollRect = GetComponent <ScrollRect>(); m_draggableElement = null; m_draggableElementBlank = null; m_draggableElementIndex = -1; m_canDragElements = m_elementPrefab is BaseDraggableListElement; m_canAnimateElements = m_elementPrefab is BaseAnimatedListElement; m_showAnimationWasPlayed = false; if (m_scrollRect != null) { m_content = m_scrollRect.content != null ? m_scrollRect.content : transform as RectTransform; m_viewport = m_scrollRect.viewport != null ? m_scrollRect.viewport : transform as RectTransform; m_scrollVertical = m_scrollRect.vertical; m_scrollHorizontal = m_scrollRect.horizontal; } else { m_content = transform as RectTransform; m_viewport = transform as RectTransform; m_scrollVertical = false; m_scrollHorizontal = false; } }
public void ElementPressHandler(BaseDraggableListElement element) { if (!m_canDragElements) { return; } m_contentStartPosition = m_content.anchoredPosition; }
private void ElementCanStartDragHandler(BaseDraggableListElement element) { if (!m_canDragElements) { return; } var contentDistance = (m_contentStartPosition - m_content.anchoredPosition).magnitude; if (contentDistance < m_dragTolerance) { m_draggableElementIndex = element.transform.GetSiblingIndex(); m_draggableElement = element; element.transform.SetParent(m_viewport); CreateDraggableElementBlank(element); element.StartDrag(); SetScrollActive(false); } }
private void ElementCanEndDragHandler(BaseDraggableListElement element) { if (!m_canDragElements) { return; } if (m_draggableElement != null) { var blankIndex = m_draggableElementBlank.GetSiblingIndex(); Destroy(m_draggableElementBlank.gameObject); m_draggableElementBlank = null; m_draggableElement.transform.SetParent(m_content); m_draggableElement = null; property.Move(element.data, blankIndex); element.EndDrag(); SetScrollActive(true); } }