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;
        }
Esempio n. 2
0
        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;
 }
Esempio n. 4
0
 public override void UpdateState(ITabletReport report)
 {
     SyntheticReport = new SyntheticTabletReport(report);
     Core.Add(report.Position);
 }