コード例 #1
0
        protected void ProcessPressUp(ColliderButtonEventData eventData, ButtonHandlers handlers)
        {
            IndexedSet <GameObject> tmp;

            eventData.isPressed = false;

            tmp = eventData.lastPressedRawObjects;
            eventData.lastPressedRawObjects = eventData.pressedRawObjects;
            eventData.pressedRawObjects     = tmp;

            // press up
            handlers.pressUpHandlers.AddRange(eventData.pressedHandlers);

            tmp = eventData.lastPressedHandlers;
            eventData.lastPressedHandlers = eventData.pressedHandlers;
            eventData.pressedHandlers     = tmp;

            // drag end
            handlers.dragEndHandlers.AddRange(eventData.draggingHandlers);
            // drop
            if (eventData.isDragging)
            {
                GetEventHandlersFromHoveredColliders <IColliderEventDropHandler>(handlers.dropHandlers);
            }

            // click end (execute only if pressDown handler and pressUp handler are the same)
            GetMatchedEventHandlersFromHoveredColliders <IColliderEventClickHandler>(h => eventData.clickingHandlers.Remove(h), handlers.clickHandlers);

            eventData.pressedRawObjects.Clear();
            eventData.pressedHandlers.Clear();
            eventData.clickingHandlers.Clear();
            eventData.draggingHandlers.Clear();
        }
コード例 #2
0
 private ButtonHandlers GetButtonHandlers(int i)
 {
     while (i >= buttonEventHandlerList.Count)
     {
         buttonEventHandlerList.Add(null);
     }
     return(buttonEventHandlerList[i] ?? (buttonEventHandlerList[i] = new ButtonHandlers()));
 }
コード例 #3
0
 protected void ProcessPressing(ColliderButtonEventData eventData, ButtonHandlers handlers)
 {
     // dragging
     for (int i = eventData.draggingHandlers.Count - 1; i >= 0; --i)
     {
         handlers.dragUpdateHandlers.Add(eventData.draggingHandlers[i]);
     }
 }
コード例 #4
0
 private ButtonHandlers GetButtonHandlers(int i)
 {
     // jiao-相当于初始化?先添加为null,输出时new
     while (i >= buttonEventHandlerList.Count)
     {
         buttonEventHandlerList.Add(null);
     }
     return(buttonEventHandlerList[i] ?? (buttonEventHandlerList[i] = new ButtonHandlers()));
 }
コード例 #5
0
        protected void ProcessPressDown(ColliderButtonEventData eventData, ButtonHandlers handlers)
        {
            eventData.isPressed     = true;
            eventData.pressPosition = transform.position;
            eventData.pressRotation = transform.rotation;

            // click start
            GetEventHandlersFromHoveredColliders <IColliderEventClickHandler>(eventData.clickingHandlers);
            // press down
            GetEventHandlersFromHoveredColliders <IColliderEventPressDownHandler>(handlers.pressDownHandlers);
            // drag start
            GetEventHandlersFromHoveredColliders <IColliderEventDragStartHandler>(eventData.draggingHandlers, handlers.dragStartHandlers);
        }
コード例 #6
0
        protected void ProcessPressUp(ColliderButtonEventData eventData, ButtonHandlers handlers)
        {
            eventData.isPressed = false;

            // press up
            GetEventHandlersFromHoveredColliders <IColliderEventPressUpHandler>(handlers.pressUpHandlers);
            // drag end
            for (int i = eventData.draggingHandlers.Count - 1; i >= 0; --i)
            {
                handlers.dragEndHandlers.Add(eventData.draggingHandlers[i]);
            }
            // drop
            if (eventData.draggingHandlers.Count > 0)
            {
                GetEventHandlersFromHoveredColliders <IColliderEventDropHandler>(handlers.dropHandlers);
            }
            // click end (execute only if pressDown handler and pressUp handler are the same)

            for (int i = stayingColliders.Count - 1; i >= 0; --i)
            {
                var collider = stayingColliders[i];

                if (collider == null)
                {
                    continue;
                }

                var handler = ExecuteEvents.GetEventHandler <IColliderEventClickHandler>(collider.gameObject);

                if (ReferenceEquals(handler, null))
                {
                    continue;
                }

                if (!eventData.clickingHandlers.Remove(handler))
                {
                    continue;
                }

                handlers.clickHandlers.Add(handler);
            }

            eventData.clickingHandlers.Clear();
            eventData.draggingHandlers.Clear();
        }
コード例 #7
0
        protected void ProcessPressDown(ColliderButtonEventData eventData, ButtonHandlers handlers)
        {
            eventData.isPressed     = true;
            eventData.pressPosition = transform.position;
            eventData.pressRotation = transform.rotation;

            for (int i = stayingColliders.Count - 1; i >= 0; --i)
            {
                if (stayingColliders[i] != null)
                {
                    eventData.pressedRawObjects.AddUnique(stayingColliders[i].gameObject);
                }
            }

            // press down
            GetEventHandlersFromHoveredColliders <IColliderEventPressDownHandler>(eventData.pressedHandlers, handlers.pressDownHandlers);
            // click start
            GetEventHandlersFromHoveredColliders <IColliderEventClickHandler>(eventData.clickingHandlers);
            // drag start
            GetEventHandlersFromHoveredColliders <IColliderEventDragStartHandler>(eventData.draggingHandlers, handlers.dragStartHandlers);
        }
コード例 #8
0
 protected void ProcessPressing(ColliderButtonEventData eventData, ButtonHandlers handlers)
 {
     // dragging
     handlers.dragUpdateHandlers.AddRange(eventData.draggingHandlers);
 }