4 using System.Collections.Generic;
6 using SiliconStudio.Core.Mathematics;
8 namespace SiliconStudio.
Paradox.Input
10 internal sealed
class GestureRecognizerLongPress : GestureRecognizer
12 private GestureConfigLongPress ConfigLongPress {
get {
return (GestureConfigLongPress)Config; } }
14 protected override int NbOfFingerOnScreen
16 get {
return FingerIdToBeginPositions.Count; }
19 public GestureRecognizerLongPress(GestureConfigLongPress config,
float screenRatio)
20 :base(config, screenRatio)
24 protected override void ProcessPointerEventsImpl(TimeSpan deltaTime, List<PointerEvent> events)
26 AnalysePointerEvents(events);
28 if (HasGestureStarted && ElapsedSinceBeginning >= ConfigLongPress.RequiredPressTime)
30 var avgPosition = ComputeMeanPosition(FingerIdToBeginPositions.Values);
31 CurrentGestureEvents.Add(
new GestureEventLongPress(ConfigLongPress.RequiredNumberOfFingers, ElapsedSinceBeginning, NormalizeVector(avgPosition)));
32 HasGestureStarted =
false;
36 protected override void ProcessDownEventPointer(
int id,
Vector2 pos)
38 FingerIdToBeginPositions[id] = pos;
39 HasGestureStarted = (NbOfFingerOnScreen == ConfigLongPress.RequiredNumberOfFingers);
42 protected override void ProcessMoveEventPointers(Dictionary<int, Vector2> fingerIdsToMovePos)
44 foreach (var
id in fingerIdsToMovePos.Keys)
46 var dist = (fingerIdsToMovePos[id] - FingerIdToBeginPositions[id]).Length();
47 if (dist > ConfigLongPress.MaximumTranslationDistance)
48 HasGestureStarted =
false;
52 protected override void ProcessUpEventPointer(
int id,
Vector2 pos)
54 FingerIdToBeginPositions.Remove(id);
55 HasGestureStarted = (NbOfFingerOnScreen == ConfigLongPress.RequiredNumberOfFingers);
Represents a two dimensional mathematical vector.