Пример #1
0
        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;
            }
        }
Пример #2
0
        public void ElementPressHandler(BaseDraggableListElement element)
        {
            if (!m_canDragElements)
            {
                return;
            }

            m_contentStartPosition = m_content.anchoredPosition;
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
            }
        }