Exemple #1
0
        // 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;
        }