private Position _position = Position.Center; // maybe this should be a property global to all gestures (so f.ex Update(touches, position) public InteractionContinuation Update(Touch2[] touches) { var touch = touches.FirstOrDefault(); if (_processingGesture) { ProcessGesture(); return(InteractionContinuation.End()); } if (touch != null && touch.Phase == TouchPhase.Began) { BeginTrackingGesture(); return(DetermineIgnorableGestureContinuation()); } if (_ignorableGestureDetected) { return(DetermineIgnorableGestureContinuation()); } if (touch != null && _isTrackingGesture) { TrackGesture(touch); return(_ignorableGestureDetected ? DetermineIgnorableGestureContinuation() : InteractionContinuation.End()); } return(InteractionContinuation.Next()); }
private InteractionContinuation DetermineIgnorableGestureContinuation() { if (_position != Position.Center) { return(InteractionContinuation.End()); // we're outside game area, disallow camera gestures } return(InteractionContinuation.Next()); // allow camera gestures }
InteractionContinuation HandleOutOfBoundsTouch() { if (!_interactionInProgress) // if no interaction in progress, we don't care { return(InteractionContinuation.Next()); } FinishGesture(); return(InteractionContinuation.End()); }
public InteractionContinuation Update(Touch2[] touches) { if (touches.Any()) { var touch = touches.First(); PanCamera(touch); } else { MaybeApplyInertia(); } return(InteractionContinuation.Next()); }
public InteractionContinuation Update(Touch2[] touches) { if (!touches.Any()) { return(InteractionContinuation.Next()); } var touch = touches.First(); var ev = TryHitRessi(touch); return(ev != null ? HandleRessiTouch(ev) : HandleOutOfBoundsTouch()); }
InteractionContinuation HandleRessiTouch(CuddleEvent ev) { if (ev.Touch.Phase == TouchPhase.Began) { StartCuddling(ev.Ressi); TryHighfive(ev); return(InteractionContinuation.End()); } if (!_interactionInProgress) { return(InteractionContinuation.Next()); } AppendMovementDelta(ev.Touch); TryInteract(ev); return(InteractionContinuation.End()); }
public InteractionContinuation Update(Touch2[] touches) { if (!touches.Any()) { return(InteractionContinuation.Next()); } var touch = touches.First(); MaybeDeselectObject(touch); MaybeSelectObject(touch); MaybeMoveSelectedObject(touch); if (_selectedObject == null) { return(InteractionContinuation.Next()); } return(InteractionContinuation.End()); }
public InteractionContinuation Update(Touch2[] touches) { if (_started) { return(InteractionContinuation.End()); } if (!SingleTouchBegan(touches)) { return(InteractionContinuation.Next()); } var touch = touches[0]; if (!HitStartButton(touch)) { return(InteractionContinuation.Next()); } _started = true; StartPlaying(); return(InteractionContinuation.End()); }
public InteractionContinuation Update(Touch2[] touches) { if (!Enabled) { return(InteractionContinuation.End()); } if (touches.Length == 1) { var touch = touches[0]; switch (touch.Phase) { case TouchPhase.Began: TryStartGesture(touch); break; case TouchPhase.Moved: TryAddStroke(touch); break; case TouchPhase.Ended: TryAddStroke(touch); TryFinishStroke(); break; case TouchPhase.Canceled: TryFinishStroke(); break; } } else if (_isDrawing && Time.time > (_lastTouch + _graceTimeInSeconds)) { FinalizeGesture(); } return(InteractionContinuation.End()); }