// See http://www.gamedev.net/topic/652186-de-jitter-buffer-on-both-the-client-and-server/ public void Update() { if (this.shouldTick == false) { return; // 0; } this.estimatedRemote = this.estimatedRemote + 1; if (this.shouldUpdateEstimate == false) { return; // 1; } int delta = this.latestRemote - this.estimatedRemote; if (this.ShouldSnapTick(delta)) { // Reset RailDebug.LogMessage("Reset"); this.estimatedRemote = this.latestRemote - this.delayDesired; return; // 0; } else if (delta > this.delayMax) { // Jump 1 RailDebug.LogMessage("Jump 1"); this.estimatedRemote = this.estimatedRemote + 1; return; // 2; } else if (delta < this.delayMin) { // Stall 1 RailDebug.LogMessage("Stall 1"); this.estimatedRemote = this.estimatedRemote - 1; return; // 0; } this.shouldUpdateEstimate = false; return; // 1; }