private void processTouchVectors(MotionAverages averages) { switch (this.state) { case MotionGestureRecognizerState.MotionGestureRecognizerStatePossible: if (averages.velocityAverage.y < MotionTapDownBeginYThreshold && averages.velocityAverage.z < MotionTapDownBeginZThreshold) { this.Direction = MotionTapGestureRecognizerDirection.MotionTapGestureRecognizerDirectionDown; this.state = MotionGestureRecognizerState.MotionGestureRecognizerStateBegan; } break; case MotionGestureRecognizerState.MotionGestureRecognizerStateBegan: this.state = MotionGestureRecognizerState.MotionGestureRecognizerStateChanged; if (averages.velocityAverage.y > MotionTapDownBeginYThreshold && averages.velocityAverage.z > MotionTapDownBeginZThreshold) { this.Direction = MotionTapGestureRecognizerDirection.MotionTapGestureRecognizerDirectionUp; } break; case MotionGestureRecognizerState.MotionGestureRecognizerStateChanged: this.state = MotionGestureRecognizerState.MotionGestureRecognizerStateChanged; if (averages.velocityAverage.y > MotionTapDownBeginZThreshold && averages.velocityAverage.z > MotionTapDownBeginZEndThreshold) { this.Direction = MotionTapGestureRecognizerDirection.MotionTapGestureRecognizerDirectionUp; this.state = MotionGestureRecognizerState.MotionGestureRecognizerStateEnded; } else if (averages.velocityAverage.y > MotionTapDownBeginYThreshold && averages.velocityAverage.z > MotionTapDownBeginZThreshold) { this.Direction = MotionTapGestureRecognizerDirection.MotionTapGestureRecognizerDirectionUp; } break; case MotionGestureRecognizerState.MotionGestureRecognizerStateEnded: this.state = MotionGestureRecognizerState.MotionGestureRecognizerStatePossible; break; default: break; } }