4 using System.Collections.Generic;
5 using SiliconStudio.Core.Mathematics;
7 namespace SiliconStudio.
Paradox.Input
12 internal abstract class GestureRecognizerContMotion : GestureRecognizer
14 protected bool GestureBeganEventSent {
get;
private set; }
16 protected GestureRecognizerContMotion(GestureConfig config,
float screenRatio)
17 : base(config, screenRatio)
21 protected override void ProcessDownEventPointer(
int id,
Vector2 pos)
23 UpdateGestureStartEndStatus(
true,
id, pos);
26 protected override void ProcessUpEventPointer(
int id,
Vector2 pos)
28 if (!FingerIdsToLastPos.ContainsKey(
id))
31 UpdateGestureStartEndStatus(
false,
id, pos);
34 private void UpdateGestureStartEndStatus(
bool isKeyDown,
int id,
Vector2 pos)
36 var gestureWasStarted = HasGestureStarted;
37 HasGestureStarted = (NbOfFingerOnScreen + (isKeyDown?1:-1) == Config.RequiredNumberOfFingers);
39 UpdateFingerDictionaries(isKeyDown,
id, pos);
41 if (HasGestureStarted)
43 InitializeGestureVariables();
45 else if (gestureWasStarted && GestureBeganEventSent)
51 protected abstract void InitializeGestureVariables();
53 protected override void ProcessMoveEventPointers(Dictionary<int, Vector2> fingerIdsToMovePos)
56 foreach (var
id in fingerIdsToMovePos.Keys)
57 FingerIdsToLastPos[id] = fingerIdsToMovePos[id];
59 if (!HasGestureStarted)
62 UpdateGestureVarsAndPerfomChecks();
64 if (!GestureBeganEventSent && HasGestureStarted && GestureBeginningConditionFulfilled())
67 GestureBeganEventSent =
true;
70 if (GestureBeganEventSent)
74 protected abstract void UpdateGestureVarsAndPerfomChecks();
76 protected abstract bool GestureBeginningConditionFulfilled();
78 private void UpdateFingerDictionaries(
bool isKeyDown,
int id,
Vector2 pos)
82 FingerIdToBeginPositions[id] = pos;
83 FingerIdsToLastPos[id] = pos;
87 FingerIdToBeginPositions.Remove(id);
88 FingerIdsToLastPos.Remove(id);
92 protected virtual void AddGestureEventToCurrentList(
GestureState state)
94 ElapsedSinceLast = TimeSpan.Zero;
97 GestureBeganEventSent =
false;
Represents a two dimensional mathematical vector.