using System; using System.Drawing; using System.Threading.Tasks; using System.Timers; using System.Windows.Forms; namespace TrackerBridge { public class FakeTracker : IBridgeTracker { public event ConnectionEventHandler ConnectionEvent; public event ConnectionEventHandler ConnectionTimeout; public event GazeDataHandler GazeDataAvailable { add { gazeDataProcessor.GazeDataProcessed += value; } remove { gazeDataProcessor.GazeDataProcessed -= value; } } private readonly GazeDataProcessor gazeDataProcessor; private System.Timers.Timer timer; private Single trackerFrequency; public Single OutputFrequency { get => gazeDataProcessor.OutputFrequency; set => gazeDataProcessor.OutputFrequency = value; } public String SerialNumber => "Fake"; public Single TrackingFrequency { get { return trackerFrequency; } set { trackerFrequency = value; TimerSetup(); } } public FakeTracker(Single frequency) { trackerFrequency = frequency; gazeDataProcessor = new GazeDataProcessor(); } public void Connect() { TimerSetup(); ConnectionEvent?.Invoke(this); } private void TimerSetup() { timer?.Stop(); timer?.Dispose(); timer = new System.Timers.Timer(1000.0 / trackerFrequency); timer.Elapsed += (Object sender, ElapsedEventArgs e) => { Point mousePosition = Control.MousePosition; GazeData data = new GazeData(mousePosition.X, mousePosition.Y, mousePosition.X, mousePosition.Y, 0, 0); gazeDataProcessor.Process(this, data); }; timer.AutoReset = true; timer.Start(); } } }