public void ProcessMove(Move move, MouseLagProcessor otherMouse) { if (move.Mouse != _mouse) { return; } var movingFromDeadStop = _lastMove != null && _lastMove < move.Time - DeadStop; if (movingFromDeadStop) { CompareMovementFromDeadStop(move.Time, otherMouse); _lastMoveFromDeadStop = move.Time; } _lastMove = move.Time; }
private void CompareMovementFromDeadStop(TimeSpan moveTime, MouseLagProcessor otherMouse) { if (otherMouse._lastMoveFromDeadStop == null) { return; } var ourDelay = moveTime - otherMouse._lastMoveFromDeadStop.Value; if (ourDelay >= DeadStop) { return; // this is from an older move } var subjectDelay = _isBaseline ? -ourDelay : ourDelay; _stats.AddPoint(moveTime, subjectDelay.TotalMilliseconds); }
public IStats Analyze(Mouse baseline, Mouse subject, IEnumerable <Move> moves) { var stats = new PointStats (StatDescription , DefaultFactor , -250.0 , 250.0 , 100.0 , 10.0 ); var baseAnalyzer = new MouseLagProcessor(baseline, stats, isBaseline: true); var subjectAnalyzer = new MouseLagProcessor(subject, stats, isBaseline: false); foreach (var move in moves) { baseAnalyzer.ProcessMove(move, subjectAnalyzer); subjectAnalyzer.ProcessMove(move, baseAnalyzer); } return(stats); }