Exemple #1
0
        public void _move(PointerMoveEvent pEvent)
        {
            D.assert(_arenaEntry != null);
            if (!pEvent.synthesized)
            {
                _velocityTracker.addPosition(pEvent.timeStamp, pEvent.position);
            }

            if (_client != null)
            {
                D.assert(pendingDelta == null);
                _client.update(new DragUpdateDetails(
                                   sourceTimeStamp: pEvent.timeStamp,
                                   delta: pEvent.delta,
                                   globalPosition: pEvent.position
                                   ));
            }
            else
            {
                D.assert(pendingDelta != null);
                _pendingDelta += pEvent.delta;
                _lastPendingEventTimestamp = pEvent.timeStamp;
                checkForResolutionAfterMove();
            }
        }
        protected override void handleEvent(PointerEvent evt)
        {
            D.assert(_state != _ScaleState.ready);
            bool didChangeConfiguration = false;
            bool shouldStartIfAccepted  = false;

            if (evt is PointerMoveEvent)
            {
                VelocityTracker tracker = _velocityTrackers[evt.pointer];
                D.assert(tracker != null);
                if (!evt.synthesized)
                {
                    tracker.addPosition(evt.timeStamp, evt.position);
                }

                _pointerLocations[evt.pointer] = evt.position;
                shouldStartIfAccepted          = true;
                _lastTransform = evt.transform;
            }
            else if (evt is PointerDownEvent)
            {
                _pointerLocations[evt.pointer] = evt.position;
                _pointerQueue.Add(evt.pointer);
                didChangeConfiguration = true;
                shouldStartIfAccepted  = true;
                _lastTransform         = evt.transform;
            }
            else if (evt is PointerUpEvent || evt is PointerCancelEvent)
            {
                _pointerLocations.Remove(evt.pointer);
                _pointerQueue.Remove(evt.pointer);
                didChangeConfiguration = true;
                _lastTransform         = evt.transform;
            }

            _updateLines();
            _update();

            if (!didChangeConfiguration || _reconfigure(evt.pointer))
            {
                _advanceStateMachine(shouldStartIfAccepted);
            }

            stopTrackingIfPointerNoLongerDown(evt);
        }