1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- using BBIWARG.Input.InputHandling;
- using BBIWARG.Recognition.Tracking;
- using BBIWARG.Utility;
- using System.Collections.Generic;
- namespace BBIWARG.Recognition.TouchRecognition
- {
-
-
-
- internal class TouchTracker : Tracker<Touch, TrackedTouch>
- {
-
-
-
- private List<TouchEvent> touchEvents;
-
-
-
-
- public TouchTracker(ImageSize imageSize)
- : base(imageSize)
- {
- touchEvents = new List<TouchEvent>();
- }
-
-
-
-
-
-
- public override float calculateSimilarity(TrackedTouch trackedTouch, Touch detectedTouch)
- {
- return (trackedTouch.FingerID == detectedTouch.Finger.TrackID) ? 1 : 0;
- }
-
-
-
-
- public List<TouchEvent> flushTouchEvents()
- {
- List<TouchEvent> flushedTouchEvents = touchEvents;
- touchEvents = new List<TouchEvent>();
- return flushedTouchEvents;
- }
-
-
-
-
- public void trackTouches(FrameData frameData)
- {
- trackObjects(frameData.DetectedTouches);
- frameData.TrackedTouches = getOptimizedTouches();
- frameData.TouchEvents = flushTouchEvents();
- }
-
-
-
-
-
- protected override TrackedTouch createTrackedObject(Touch detectedObject)
- {
- TrackedTouch tt = new TrackedTouch(idPool.getNextUnusedID(), detectedObject, Parameters.TouchTrackerNumFramesDetectedUntilTracked, Parameters.TouchTrackerNumFramesLostUntilDeleted);
- tt.TouchEvent += handleTouchEvent;
- return tt;
- }
-
-
-
-
- private List<Touch> getOptimizedTouches()
- {
- List<Touch> optimizedTouchs = new List<Touch>();
- foreach (TrackedTouch tp in TrackedObjects)
- {
- if (tp.IsTouchActive)
- optimizedTouchs.Add(tp.OptimizedTouch);
- }
- return optimizedTouchs;
- }
-
-
-
-
-
- private void handleTouchEvent(object sender, TouchEvent e)
- {
- touchEvents.Add(e);
- }
- }
- }
|