void handleEvent(PointerEvent evt) { D.assert(evt.pointer == this.pointer); if (evt is PointerMoveEvent) { if (!this.isWithinGlobalTolerance(evt, Constants.kTouchSlop)) { this.cancel(); } else { this._lastPosition = OffsetPair.fromEventPosition(evt); } } else if (evt is PointerCancelEvent) { this.cancel(); } else if (evt is PointerUpEvent) { this.stopTrackingPointer(this.handleEvent); this._finalPosition = OffsetPair.fromEventPosition(evt); this._check(); } }
protected override void handlePrimaryPointer(PointerEvent evt) { if (evt is PointerUpEvent) { if (this._longPressAccepted) { if (this.onLongPressUp != null) { this.invokeCallback <object>("onLongPressUp", () => { this.onLongPressUp(); return(null); }); } if (this.onLongPressEnd != null) { this.invokeCallback <object>("onLongPressEnd", () => { this.onLongPressEnd(new LongPressEndDetails( globalPosition: evt.position, localPosition: evt.localPosition)); return(null); }); } this._longPressAccepted = true; } else { this.resolve(GestureDisposition.rejected); } } else if (evt is PointerDownEvent || evt is PointerCancelEvent) { this._longPressAccepted = false; this._longPressOrigin = OffsetPair.fromEventPosition(evt); } else if (evt is PointerMoveEvent && this._longPressAccepted && this.onLongPressMoveUpdate != null) { this.invokeCallback <object>("onLongPressMoveUpdate", () => { this.onLongPressMoveUpdate(new LongPressMoveUpdateDetails( globalPosition: evt.position, localPosition: evt.localPosition, offsetFromOrigin: evt.position - this._longPressOrigin.global, localOffsetFromOrigin: evt.localPosition - this._longPressOrigin.local )); return(null); }); } }
public override void addAllowedPointer(PointerDownEvent Event) { if (!(Event is PointerUpEvent) && Event.pressureMax <= 1.0f) { resolve(GestureDisposition.rejected); } else { startTrackingPointer(Event.pointer, Event.transform); if (_state == _ForceState.ready) { _state = _ForceState.possible; _lastPosition = OffsetPair.fromEventPosition(Event); } } }
public _TapGesture( MultiTapGestureRecognizer gestureRecognizer, PointerEvent evt, TimeSpan longTapDelay ) : base( evt: (PointerDownEvent)evt, entry: GestureBinding.instance.gestureArena.add(evt.pointer, gestureRecognizer), doubleTapMinTime: Constants.kDoubleTapMinTime ) { this.gestureRecognizer = gestureRecognizer; this._lastPosition = OffsetPair.fromEventPosition(evt); this.startTrackingPointer(this.handleEvent, evt.transform); if (longTapDelay > TimeSpan.Zero) { this._timer = Window.instance.run(longTapDelay, () => { this._timer = null; this.gestureRecognizer._dispatchLongTap(evt.pointer, this._lastPosition); }); } }
protected override void handleEvent(PointerEvent Event) { D.assert(_state != _ForceState.ready); if (Event is PointerMoveEvent || Event is PointerDownEvent) { if (Event.pressure > Event.pressureMax || Event.pressure < Event.pressureMin) { //debugPrint( UnityEngine.Debug.Log( "The reported device pressure " + Event.pressure.ToString() + " is outside of the device pressure range where: " + Event.pressureMin.ToString() + " <= pressure <= " + Event.pressureMax.ToString() ); } float pressure = interpolation(Event.pressureMin, Event.pressureMax, Event.pressure); D.assert((pressure >= 0.0 && pressure <= 1.0) || pressure.isNaN()); _lastPosition = OffsetPair.fromEventPosition(Event); _lastPressure = pressure; if (_state == _ForceState.possible) { if (pressure > startPressure) { _state = _ForceState.started; resolve(GestureDisposition.accepted); } else if (Event.delta.distanceSquared > 18.0f) { resolve(GestureDisposition.rejected); } } if (pressure > startPressure && _state == _ForceState.accepted) { _state = _ForceState.started; if (onStart != null) { invokeCallback("onStart", () => onStart( new ForcePressDetails( pressure: pressure, globalPosition: _lastPosition.global, localPosition: _lastPosition.local))); } } if (onPeak != null && pressure > peakPressure && (_state == _ForceState.started)) { _state = _ForceState.peaked; if (onPeak != null) { invokeCallback("onPeak", () => onPeak(new ForcePressDetails( pressure: pressure, globalPosition: Event.position, localPosition: Event.localPosition ))); } } if (onUpdate != null && !pressure.isNaN() && (_state == _ForceState.started || _state == _ForceState.peaked)) { if (onUpdate != null) { invokeCallback("onUpdate", () => onUpdate(new ForcePressDetails( pressure: pressure, globalPosition: Event.position, localPosition: Event.localPosition ))); } } } stopTrackingIfPointerNoLongerDown(Event); }