internal void INTERNAL_Reset() { activePointers.Clear(); numPointers = 0; delayedStateChange = GestureState.Idle; pointersNumState = PointersNumState.TooFew; requiredGestureFailed = false; reset(); }
internal void INTERNAL_PointersUpdated(IList <Pointer> pointers) { pointersNumState = PointersNumState.InRange; if (minPointers > 0 && numPointers < minPointers) { pointersNumState = PointersNumState.TooFew; } if (maxPointers > 0 && pointersNumState == PointersNumState.InRange && numPointers > maxPointers) { pointersNumState = PointersNumState.TooMany; } pointersUpdated(pointers); }
internal void INTERNAL_PointersCancelled(IList <Pointer> pointers) { var count = pointers.Count; var total = numPointers - count; pointersNumState = PointersNumState.InRange; if (minPointers <= 0) { // have no pointers if (total == 0) { pointersNumState = PointersNumState.PassedMinThreshold; } } else { if (numPointers >= minPointers) { // had >= MinPointers, got < MinPointers if (total < minPointers) { pointersNumState = PointersNumState.PassedMinThreshold; } } // last event we already were under MinPointers else { pointersNumState = PointersNumState.TooFew; } } if (maxPointers > 0) { if (numPointers > maxPointers) { if (total <= maxPointers) { // this event we crossed both MinPointers and MaxPointers if (pointersNumState == PointersNumState.PassedMinThreshold) { pointersNumState = PointersNumState.PassedMinMaxThreshold; } // this event we crossed MaxPointers else { pointersNumState = PointersNumState.PassedMaxThreshold; } } // last event we already were over MaxPointers else { pointersNumState = PointersNumState.TooMany; } } } for (var i = 0; i < count; i++) { activePointers.Remove(pointers[i]); } numPointers = total; pointersCancelled(pointers); }
internal void INTERNAL_PointersReleased(IList <Pointer> pointers) { var count = pointers.Count; var total = numPointers - count; pointersNumState = PointersNumState.InRange; if (minPointers <= 0) { // have no pointers if (total == 0) { pointersNumState = PointersNumState.PassedMinThreshold; } } else { if (numPointers >= minPointers) { // had >= MinPointers, got < MinPointers if (total < minPointers) { pointersNumState = PointersNumState.PassedMinThreshold; } } // last event we already were under MinPointers else { pointersNumState = PointersNumState.TooFew; } } if (maxPointers > 0) { if (numPointers > maxPointers) { if (total <= maxPointers) { // this event we crossed both MinPointers and MaxPointers if (pointersNumState == PointersNumState.PassedMinThreshold) { pointersNumState = PointersNumState.PassedMinMaxThreshold; } // this event we crossed MaxPointers else { pointersNumState = PointersNumState.PassedMaxThreshold; } } // last event we already were over MaxPointers else { pointersNumState = PointersNumState.TooMany; } } } for (var i = 0; i < count; i++) { activePointers.Remove(pointers[i]); } numPointers = total; if (NumPointers == 0) { var lastPoint = pointers[count - 1]; if (shouldCachePointerPosition(lastPoint)) { cachedScreenPosition = lastPoint.Position; cachedPreviousScreenPosition = lastPoint.PreviousPosition; } else { cachedScreenPosition = TouchManager.INVALID_POSITION; cachedPreviousScreenPosition = TouchManager.INVALID_POSITION; } } pointersReleased(pointers); }
internal void INTERNAL_PointersPressed(IList <Pointer> pointers) { var count = pointers.Count; var total = numPointers + count; pointersNumState = PointersNumState.InRange; if (minPointers <= 0) { // MinPointers is not set and we got our first pointers if (numPointers == 0) { pointersNumState = PointersNumState.PassedMinThreshold; } } else { if (numPointers < minPointers) { // had < MinPointers, got >= MinPointers if (total >= minPointers) { pointersNumState = PointersNumState.PassedMinThreshold; } else { pointersNumState = PointersNumState.TooFew; } } } if (maxPointers > 0) { if (numPointers <= maxPointers) { if (total > maxPointers) { // this event we crossed both MinPointers and MaxPointers if (pointersNumState == PointersNumState.PassedMinThreshold) { pointersNumState = PointersNumState.PassedMinMaxThreshold; } // this event we crossed MaxPointers else { pointersNumState = PointersNumState.PassedMaxThreshold; } } } // last event we already were over MaxPointers else { pointersNumState = PointersNumState.TooMany; } } if (state == GestureState.Began || state == GestureState.Changed) { for (var i = 0; i < count; i++) { pointers[i].INTERNAL_Retain(); } } activePointers.AddRange(pointers); numPointers = total; pointersPressed(pointers); }