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 override void acceptGesture(int pointer) { if (_state == _ForceState.possible) { _state = _ForceState.accepted; } if (onStart != null && _state == _ForceState.started) { invokeCallback("onStart", () => onStart(new ForcePressDetails( pressure: _lastPressure, globalPosition: _lastPosition.global, localPosition: _lastPosition.local ))); } }
protected override void didStopTrackingLastPointer(int pointer) { bool wasAccepted = _state == _ForceState.started || _state == _ForceState.peaked; if (_state == _ForceState.possible) { resolve(GestureDisposition.rejected); return; } if (wasAccepted && onEnd != null) { if (onEnd != null) { invokeCallback("onEnd", () => onEnd(new ForcePressDetails( pressure: 0.0f, globalPosition: _lastPosition.global, localPosition: _lastPosition.local ))); } } _state = _ForceState.ready; }
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); }