From dbe1dd01adb9cf5a0a9277829e4e42b702ac7ac0 Mon Sep 17 00:00:00 2001 From: Jeremiah Billmann Date: Sat, 6 Jul 2013 13:37:27 -0400 Subject: [PATCH] Storing state history for lag compensation. --- lib/server/entities/entity.js | 4 ++-- lib/server/garageservergame.js | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/server/entities/entity.js b/lib/server/entities/entity.js index 5f61591..6dadc65 100644 --- a/lib/server/entities/entity.js +++ b/lib/server/entities/entity.js @@ -11,10 +11,10 @@ Entity.prototype = { addState: function (state, executionTime) { var minTime, spliceTo = 0; this.stateHistory.push({ state: state, executionTime: executionTime }); - minTime = this.stateHistory[this.stateHistory - 1].executionTime - 1000; + minTime = this.stateHistory[this.stateHistory.length - 1].executionTime - 1000; for (var i = 0; i < this.stateHistory.length; i ++) { - if (this.stateHistory[i].executionTime >= minTime) { + if (this.stateHistory[i].executionTime > minTime) { spliceTo = i - 1; break; } diff --git a/lib/server/garageservergame.js b/lib/server/garageservergame.js index c7000cc..0b56dbf 100644 --- a/lib/server/garageservergame.js +++ b/lib/server/garageservergame.js @@ -42,10 +42,10 @@ GarageServerGame.prototype.updatePhysics = function (options) { this.playerController.entities.forEach(function (player) { if (player.inputs.length > 0) { if (options.onUpdatePlayerPhysics) { - player.state = options.onUpdatePlayerPhysics(player.client.id, player.state, player.inputs, self.physicsDelta); + player.addState(options.onUpdatePlayerPhysics(player.client.id, player.state, player.inputs, self.physicsDelta), player.inputs[player.inputs.length - 1].time); + player.sequence += player.inputs.length; + player.inputs = []; } - player.sequence += player.inputs.length; - player.inputs = []; } }); };