TouchTracker.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Drawing;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using bbiwarg.Images;
  8. using bbiwarg.Output;
  9. using bbiwarg.Recognition.Tracking;
  10. using bbiwarg.Utility;
  11. using bbiwarg.Input.InputHandling;
  12. namespace bbiwarg.Recognition.TouchRecognition
  13. {
  14. class TouchTracker : Tracker<Touch, TrackedTouch>
  15. {
  16. private List<TouchEventArgs> touchEvents;
  17. public TouchTracker() {
  18. touchEvents = new List<TouchEventArgs>();
  19. }
  20. public void trackTouches(FrameData frameData) {
  21. trackObjects(frameData.DetectedTouches);
  22. frameData.TrackedTouches = getOptimizedTouches();
  23. frameData.TouchEvents = flushTouchEvents();
  24. }
  25. protected override TrackedTouch createTrackedObject(Touch detectedObject)
  26. {
  27. TrackedTouch tt = new TrackedTouch(idPool.getNextUnusedID(), detectedObject, Parameters.TouchTrackerNumFramesDetectedUntilTracked, Parameters.TouchTrackerNumFramesLostUntilDeleted);
  28. tt.TouchEvent += touchEvent;
  29. return tt;
  30. }
  31. private List<Touch> getOptimizedTouches()
  32. {
  33. List<Touch> optimizedTouchs = new List<Touch>();
  34. foreach (TrackedTouch tp in TrackedObjects)
  35. {
  36. if (tp.IsTouchActive)
  37. optimizedTouchs.Add(tp.OptimizedTouch);
  38. }
  39. return optimizedTouchs;
  40. }
  41. private void touchEvent(TrackedTouch sender, TouchEventArgs e)
  42. {
  43. touchEvents.Add(e);
  44. }
  45. public List<TouchEventArgs> flushTouchEvents() {
  46. List<TouchEventArgs> flushedTouchEvents = touchEvents;
  47. touchEvents = new List<TouchEventArgs>();
  48. return flushedTouchEvents;
  49. }
  50. }
  51. }