Guest User

Untitled

a guest
Jun 18th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading;
  6. using TUIO;
  7.  
  8. namespace TuioProcessing
  9. {
  10. class MultiGestureManager : GestureListener
  11. {
  12. private Dictionary<long, AutoResetEvent> events;
  13. private MultiGesture mg = null;
  14.  
  15. public MultiGestureManager()
  16. {
  17. events = new Dictionary<long, AutoResetEvent>();
  18. }
  19.  
  20. public AutoResetEvent getResetEvent(long id)
  21. {
  22. return events[id];
  23. }
  24.  
  25. #region GestureListener Member
  26.  
  27. public void gestureChainCode(Gesture g)
  28. {
  29.  
  30. if(g.getCursorID() > 0)
  31. {
  32. mg.addGesture(g);
  33. foreach (AutoResetEvent are in events.Values)
  34. {
  35. are.Set();
  36. }
  37. } else
  38. {
  39. if (mg != null)
  40. {
  41.  
  42. if (events.ContainsKey(mg.getID()))
  43. {
  44. events.Remove(mg.getID());
  45. }
  46. Console.WriteLine("MultiGesture: " + mg.getID() + " #Fingers: " + mg.getFingers());
  47. }
  48.  
  49. mg = new MultiGesture();
  50. mg.addGesture(g);
  51. events.Add(mg.getID(), new AutoResetEvent(false));
  52. ThreadPool.QueueUserWorkItem(mg.threadStart, this);
  53. }
  54. }
  55.  
  56. #endregion
  57.  
  58. class MultiGesture
  59. {
  60. private List<Gesture> gestures;
  61. private MultiGestureManager mgm;
  62. private bool wait;
  63. private static long id = 0;
  64.  
  65. public MultiGesture()
  66. {
  67. gestures = new List<Gesture>();
  68. wait = true;
  69. id++;
  70. }
  71.  
  72. public long getID()
  73. {
  74. return id;
  75. }
  76.  
  77. public int getFingers()
  78. {
  79. return gestures.Count;
  80. }
  81.  
  82. public void addGesture(Gesture g)
  83. {
  84. gestures.Add(g);
  85. }
  86.  
  87. public void threadStart(Object threadContext)
  88. {
  89. mgm = (MultiGestureManager)threadContext;
  90. mgm.getResetEvent(id).WaitOne(100, false);
  91.  
  92. }
  93.  
  94. }
  95. }
  96. }
Add Comment
Please, Sign In to add comment