public override void UpdateState(SyntheticTabletReport report) { this.targetPos = report.Position; if (PredictionEnabled) { // Calculate predicted position onNewPacket if (this.prevTargetPos.X != this.targetPos.X || this.prevTargetPos.Y != this.targetPos.Y) { // Calculate distance between last 2 packets and prediction var delta = this.targetPos - this.prevTargetPos; var distance = Vector2.Distance(this.prevTargetPos, this.targetPos); var predictionModifier = 1 / Cosh((distance - PredictionOffsetX) * PredictionSharpness) * PredictionStrength + PredictionOffsetY; // Apply prediction delta *= predictionModifier; // Update predicted position this.calcTarget = this.targetPos + delta; // Update old position for further prediction this.prevTargetPos = this.targetPos; } } else { calcTarget = targetPos; } this.report = report; }
public override void UpdateState(SyntheticTabletReport report) { var now = DateTime.UtcNow; var reportMs = (now - lastTime).TotalMilliseconds; reportMsAvg += (reportMs - reportMsAvg) / 50.0; lastTime = now; SyntheticReport = new SyntheticTabletReport(report); if (reportMs > 100) { reportMsAvg = 4; } if (reportMs >= reportMsAvg * 0.75) { Core.Add(report.Position); } }
public override void UpdateState(SyntheticTabletReport report) { this.targetPos = new Vector3(report.Position, report.Pressure) * mmScale; this.report = report; }
public override void UpdateState(ITabletReport report) { SyntheticReport = new SyntheticTabletReport(report); Core.Add(report.Position); }