From 379a8098ad4b7775119a6b57ad70c7aa6c95aa6b Mon Sep 17 00:00:00 2001 From: Stefan Hedman Date: Sat, 4 Apr 2015 15:32:16 +0200 Subject: [PATCH] pause support for interpolation in demos --- demos/js/Renderer.js | 9 +++++++-- demos/js/WebGLRenderer.js | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/demos/js/Renderer.js b/demos/js/Renderer.js index a76d74fc..0d9644db 100644 --- a/demos/js/Renderer.js +++ b/demos/js/Renderer.js @@ -211,6 +211,7 @@ Object.defineProperty(Renderer.prototype, 'paused', { return this.settings['paused [p]']; }, set: function(value) { + this.resetCallTime = true; this.settings['paused [p]'] = value; this.updateGUI(); } @@ -266,7 +267,7 @@ Renderer.prototype.setupGUI = function() { that.paused = p; }); worldFolder.add(settings, 'manualStep [s]'); - worldFolder.add(settings, 'fps', 10, 60*10).step(60).onChange(function(freq){ + worldFolder.add(settings, 'fps', 10, 60*10).step(10).onChange(function(freq){ that.timeStep = 1 / freq; }); worldFolder.add(settings, 'maxSubSteps', 0, 10).step(1); @@ -532,7 +533,11 @@ Renderer.prototype.startRenderingLoop = function(){ function update(){ if(!demo.paused){ var now = Date.now() / 1000, - timeSinceLastCall = now-lastCallTime; + timeSinceLastCall = now - lastCallTime; + if(demo.resetCallTime){ + timeSinceLastCall = 0; + demo.resetCallTime = false; + } lastCallTime = now; demo.world.step(demo.timeStep, timeSinceLastCall, demo.settings.maxSubSteps); } diff --git a/demos/js/WebGLRenderer.js b/demos/js/WebGLRenderer.js index 074bdd10..f01e9475 100644 --- a/demos/js/WebGLRenderer.js +++ b/demos/js/WebGLRenderer.js @@ -590,7 +590,7 @@ WebGLRenderer.prototype.drawPath = function(g,path,color,fillColor,lineWidth,isS }; WebGLRenderer.prototype.updateSpriteTransform = function(sprite,body){ - if(this.useInterpolatedPositions){ + if(this.useInterpolatedPositions && !this.paused){ sprite.position.x = body.interpolatedPosition[0]; sprite.position.y = body.interpolatedPosition[1]; sprite.rotation = body.interpolatedAngle; @@ -634,7 +634,7 @@ WebGLRenderer.prototype.render = function(){ bA = s.bodyA, bB = s.bodyB; - if(this.useInterpolatedPositions){ + if(this.useInterpolatedPositions && !this.paused){ p2.vec2.toGlobalFrame(worldAnchorA, s.localAnchorA, bA.interpolatedPosition, bA.interpolatedAngle); p2.vec2.toGlobalFrame(worldAnchorB, s.localAnchorB, bB.interpolatedPosition, bB.interpolatedAngle); } else {