Ejemplo n.º 1
0
 public virtual void OnInput(ref POINTER_INFO ptr)
 {
     if (Container != null)
     {
         ptr.callerIsControl = true;
         Container.OnInput(ptr);
     }
 }
Ejemplo n.º 2
0
    public override void OnInput(POINTER_INFO ptr)
    {
        if (deleted)
        {
            return;
        }

        if (!m_controlIsEnabled)
        {
            switch (ptr.evt)
            {
            case POINTER_INFO.INPUT_EVENT.NO_CHANGE:
                if (list != null && ptr.active)
                {
                    list.ListDragged(ptr);
                }
                break;

            case POINTER_INFO.INPUT_EVENT.DRAG:
                if (list != null && !ptr.isTap)
                {
                    list.ListDragged(ptr);
                }
                break;

            case POINTER_INFO.INPUT_EVENT.TAP:
            case POINTER_INFO.INPUT_EVENT.RELEASE:
            case POINTER_INFO.INPUT_EVENT.RELEASE_OFF:
                if (list != null)
                {
                    list.PointerReleased();
                }
                break;
            }

            // Apply any mousewheel scrolling to our list:
            if (list != null && ptr.inputDelta.z != 0 && ptr.type != POINTER_INFO.POINTER_TYPE.RAY)
            {
                list.ScrollWheel(ptr.inputDelta.z);
            }

            if (Container != null)
            {
                ptr.callerIsControl = true;
                Container.OnInput(ptr);
            }

            return;
        }

        // Do our own tap checking with the list's
        // own threshold:
        if (list != null && Vector3.SqrMagnitude(ptr.origPos - ptr.devicePos) > (list.dragThreshold * list.dragThreshold))
        {
            ptr.isTap = false;
            if (ptr.evt == POINTER_INFO.INPUT_EVENT.TAP)
            {
                ptr.evt = POINTER_INFO.INPUT_EVENT.RELEASE;
            }
        }
        else
        {
            ptr.isTap = true;
        }

        if (inputDelegate != null)
        {
            inputDelegate(ref ptr);
        }

        // Change the state if necessary:
        switch (ptr.evt)
        {
        case POINTER_INFO.INPUT_EVENT.NO_CHANGE:
            if (list != null && ptr.active)                     // If this is a hold
            {
                list.ListDragged(ptr);
            }
            break;

        case POINTER_INFO.INPUT_EVENT.DRAG:
            if (list != null && !ptr.isTap)
            {
                list.ListDragged(ptr);
            }
            break;

        case POINTER_INFO.INPUT_EVENT.TAP:
            if (list == null)
            {
                break;
            }
            if (ptr.callerIsControl)
            {
                list.DidClick(ptr.targetObj);
            }

            list.PointerReleased();
            break;

        case POINTER_INFO.INPUT_EVENT.RELEASE:
        case POINTER_INFO.INPUT_EVENT.RELEASE_OFF:
            if (list != null)
            {
                list.PointerReleased();
            }
            break;
        }

        // Apply any mousewheel scrolling to our list:
        if (list != null && ptr.inputDelta.z != 0 && ptr.type != POINTER_INFO.POINTER_TYPE.RAY)
        {
            list.ScrollWheel(ptr.inputDelta.z);
        }

        base.OnInput(ptr);
    }
    public override void OnInput(POINTER_INFO ptr)
    {
        if (deleted)
        {
            return;
        }

        if (!m_controlIsEnabled)
        {
            switch (ptr.evt)
            {
            case POINTER_INFO.INPUT_EVENT.NO_CHANGE:
            case POINTER_INFO.INPUT_EVENT.DRAG:
                list.ListDragged(ptr);
                break;

            case POINTER_INFO.INPUT_EVENT.TAP:
            case POINTER_INFO.INPUT_EVENT.RELEASE:
            case POINTER_INFO.INPUT_EVENT.RELEASE_OFF:
                list.PointerReleased();
                break;
            }

            if (Container != null)
            {
                ptr.callerIsControl = true;
                Container.OnInput(ptr);
            }

            return;
        }

        // Do our own tap checking with the list's
        // own threshold:
        if (Vector3.SqrMagnitude(ptr.origPos - ptr.devicePos) > (list.dragThreshold * list.dragThreshold))
        {
            ptr.isTap = false;
            if (ptr.evt == POINTER_INFO.INPUT_EVENT.TAP)
            {
                ptr.evt = POINTER_INFO.INPUT_EVENT.RELEASE;
            }
        }
        else
        {
            ptr.isTap = true;
        }

        if (inputDelegate != null)
        {
            inputDelegate(ref ptr);
        }

        // Change the state if necessary:
        switch (ptr.evt)
        {
        case POINTER_INFO.INPUT_EVENT.NO_CHANGE:
            if (ptr.active)                     // If this is a hold
            {
                list.ListDragged(ptr);
            }
            break;

        case POINTER_INFO.INPUT_EVENT.DRAG:
            if (!ptr.isTap)
            {
                list.ListDragged(ptr);
            }
            break;

        case POINTER_INFO.INPUT_EVENT.TAP:
            list.PointerReleased();
            break;

        case POINTER_INFO.INPUT_EVENT.RELEASE:
        case POINTER_INFO.INPUT_EVENT.RELEASE_OFF:
            list.PointerReleased();
            break;
        }

        base.OnInput(ptr);
    }