void MoveUpdater_Tick(object sender, EventArgs e) { if (gazeArg != null && gazeArg.IsAvailable) { var scr = gazeArg.ScreenProperties.PixelSize; var wndPos = Window.GetActualPosition(); var x = (wndPos.X - Mag.Magnifier.Left) / Mag.Magnifier.Width; var y = (wndPos.Y - Mag.Magnifier.Top) / Mag.Magnifier.Height; var trackedX = gazeArg.Position.X / scr.Width; var trackedY = gazeArg.Position.Y / scr.Height; var xPow = trackedX - x; var yPow = trackedY - y; var power = 1 - Drop(Math.Pow(Math.Sqrt(xPow * xPow + yPow * yPow), 2) / ZoomSmooth, 0.1); if (!UseDynamicZoom) { power = 1; } power = mean.Smooth(power); power = kalman.Calculate(power); if (double.IsNaN(power)) { throw new ArgumentException(); } xPow = Clamp(Drop(xPow * Mag.Magnifier.Width / MoveSmooth, MoveMinimum), MoveMaximum); yPow = Clamp(Drop(yPow * Mag.Magnifier.Height / MoveSmooth, MoveMinimum), MoveMaximum); var smt = pointSmoother.Smooth(new Vision.Point(wndPos.X + xPow, wndPos.Y + yPow)); if (Settings.Current.AllowControl && Logger.Stopwatch.ElapsedMilliseconds - lastMs > 33) { MouseEvent.MoveAt(new System.Windows.Point(smt.X, smt.Y)); lastMs = Logger.Stopwatch.ElapsedMilliseconds; } Window.SetActualPosition(smt.X, smt.Y); Mag.Magnifier.CenterX = (int)(smt.X); Mag.Magnifier.CenterY = (int)(smt.Y); Mag.Magnifier.Magnification = Math.Max(1, Mag.Magnification * power); } Mag.Magnifier.UpdateMaginifier(); }