示例#1
0
    public void OnPointerDown(PointerEventData eventData)
    {
        // step from unused to single touch?
        if ((eventData.pointerId == -1 || eventData.pointerId == 0) && _recieveMode == 0)
        {
            _recieveMode = 1;

            _firstTouch.positionOrigin  = eventData.position;
            _firstTouch.positionCurrent = eventData.position;
            _firstTouch.startTime       = Time.time;
            _firstTouch.duration        = 0;
            _firstTouch.moved           = false;

            if (_singleListener != null)
            {
                _singleListener.OnSingleStart(_firstTouch);
            }
        }
        // step from single touch to double touch?
        else if (eventData.pointerId == 1 && _recieveMode == 1)
        {
            if (_singleListener != null)
            {
                _singleListener.OnSingleEnd(_firstTouch);
            }

            _recieveMode = 2;

            _secondTouch.positionOrigin  = eventData.position;
            _secondTouch.positionCurrent = eventData.position;
            _secondTouch.startTime       = Time.time;
            _secondTouch.duration        = 0;
            _secondTouch.moved           = false;

            if (_dualListener != null)
            {
                _dualListener.OnDualStart(_firstTouch, _secondTouch);
            }
        }
    }
示例#2
0
    void Update()
    {
        IExposedInputModule exposedModule = _eventSystem.currentInputModule as IExposedInputModule;

        if (exposedModule != null)
        {
            Dictionary <int, UnityEngine.EventSystems.PointerEventData> pointers = exposedModule.Pointers;
            if (pointers.ContainsKey(-1) && pointers[-1].selectedObject == null)
            {
                UnityEngine.EventSystems.PointerEventData eventData = pointers[-1];
                if (_recieveMode == 0)
                {
                    _recieveMode = 1;

                    _firstTouch.positionOrigin  = eventData.position;
                    _firstTouch.positionCurrent = eventData.position;
                    _firstTouch.startTime       = Time.time;
                    _firstTouch.duration        = 0;
                    _firstTouch.moved           = false;

                    if (_singleListener != null)
                    {
                        _singleListener.OnSingleStart(_firstTouch);
                    }
                }
            }
            else
            {
                if (_recieveMode == 1)
                {
                    _recieveMode = 0;
                    if (_singleListener != null)
                    {
                        _singleListener.OnSingleEnd(_firstTouch);
                    }
                }
                else if (_recieveMode == 2)
                {
                    _recieveMode = 0;
                    if (_dualListener != null)
                    {
                        _dualListener.OnDualEnd(_firstTouch, _secondTouch);
                    }
                }
            }

            if (pointers.ContainsKey(0) && pointers[0].selectedObject == null)
            {
                UnityEngine.EventSystems.PointerEventData eventData = pointers[0];
                if (_recieveMode == 0)
                {
                    _recieveMode = 1;

                    _firstTouch.positionOrigin  = eventData.position;
                    _firstTouch.positionCurrent = eventData.position;
                    _firstTouch.startTime       = Time.time;
                    _firstTouch.duration        = 0;
                    _firstTouch.moved           = false;

                    if (_singleListener != null)
                    {
                        _singleListener.OnSingleStart(_firstTouch);
                    }
                }
            }
            else
            {
                if (_recieveMode == 1)
                {
                    _recieveMode = 0;
                    if (_singleListener != null)
                    {
                        _singleListener.OnSingleEnd(_firstTouch);
                    }
                }
                else if (_recieveMode == 2)
                {
                    _recieveMode = 0;
                    if (_dualListener != null)
                    {
                        _dualListener.OnDualEnd(_firstTouch, _secondTouch);
                    }
                }
            }

            if (pointers.ContainsKey(1) && pointers[1].selectedObject == null)
            {
                UnityEngine.EventSystems.PointerEventData eventData = pointers[1];
                if (_recieveMode == 1)
                {
                    if (_singleListener != null)
                    {
                        _singleListener.OnSingleEnd(_firstTouch);
                    }

                    _recieveMode = 2;

                    _secondTouch.positionOrigin  = eventData.position;
                    _secondTouch.positionCurrent = eventData.position;
                    _secondTouch.startTime       = Time.time;
                    _secondTouch.duration        = 0;
                    _secondTouch.moved           = false;

                    if (_dualListener != null)
                    {
                        _dualListener.OnDualStart(_firstTouch, _secondTouch);
                    }
                }
            }
            else
            {
                if (_recieveMode == 2)
                {
                    _recieveMode = 0;
                    if (_dualListener != null)
                    {
                        _dualListener.OnDualEnd(_firstTouch, _secondTouch);
                    }
                }
            }
        }
    }