Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
GestureRecognizerLongPress.cs
Go to the documentation of this file.
1 // Copyright (c) 2014 Silicon Studio Corp. (http://siliconstudio.co.jp)
2 // This file is distributed under GPL v3. See LICENSE.md for details.
3 using System;
4 using System.Collections.Generic;
5 
6 using SiliconStudio.Core.Mathematics;
7 
8 namespace SiliconStudio.Paradox.Input
9 {
10  internal sealed class GestureRecognizerLongPress : GestureRecognizer
11  {
12  private GestureConfigLongPress ConfigLongPress { get { return (GestureConfigLongPress)Config; } }
13 
14  protected override int NbOfFingerOnScreen
15  {
16  get { return FingerIdToBeginPositions.Count; }
17  }
18 
19  public GestureRecognizerLongPress(GestureConfigLongPress config, float screenRatio)
20  :base(config, screenRatio)
21  {
22  }
23 
24  protected override void ProcessPointerEventsImpl(TimeSpan deltaTime, List<PointerEvent> events)
25  {
26  AnalysePointerEvents(events);
27 
28  if (HasGestureStarted && ElapsedSinceBeginning >= ConfigLongPress.RequiredPressTime)
29  {
30  var avgPosition = ComputeMeanPosition(FingerIdToBeginPositions.Values);
31  CurrentGestureEvents.Add(new GestureEventLongPress(ConfigLongPress.RequiredNumberOfFingers, ElapsedSinceBeginning, NormalizeVector(avgPosition)));
32  HasGestureStarted = false;
33  }
34  }
35 
36  protected override void ProcessDownEventPointer(int id, Vector2 pos)
37  {
38  FingerIdToBeginPositions[id] = pos;
39  HasGestureStarted = (NbOfFingerOnScreen == ConfigLongPress.RequiredNumberOfFingers);
40  }
41 
42  protected override void ProcessMoveEventPointers(Dictionary<int, Vector2> fingerIdsToMovePos)
43  {
44  foreach (var id in fingerIdsToMovePos.Keys)
45  {
46  var dist = (fingerIdsToMovePos[id] - FingerIdToBeginPositions[id]).Length();
47  if (dist > ConfigLongPress.MaximumTranslationDistance)
48  HasGestureStarted = false;
49  }
50  }
51 
52  protected override void ProcessUpEventPointer(int id, Vector2 pos)
53  {
54  FingerIdToBeginPositions.Remove(id);
55  HasGestureStarted = (NbOfFingerOnScreen == ConfigLongPress.RequiredNumberOfFingers);
56  }
57  }
58 }
Represents a two dimensional mathematical vector.
Definition: Vector2.cs:42