提交 0b45f03a 编写于 作者: M Mr.doob

Animation: Looping currentTime directly. Fixes issue in #4377.

上级 37ea9cce
......@@ -114,15 +114,14 @@ THREE.Animation.prototype.update = function ( delta ) {
var types = [ "pos", "rot", "scl" ];
var duration = this.data.length;
var currentTime = this.currentTime;
if ( this.loop === true ) {
currentTime %= duration;
this.currentTime %= duration;
}
currentTime = Math.min( currentTime, duration );
this.currentTime = Math.min( this.currentTime, duration );
for ( var h = 0, hl = this.hierarchy.length; h < hl; h ++ ) {
......@@ -139,12 +138,12 @@ THREE.Animation.prototype.update = function ( delta ) {
var prevKey = animationCache.prevKey[ type ];
var nextKey = animationCache.nextKey[ type ];
if ( nextKey.time <= currentTime ) {
if ( nextKey.time <= this.currentTime ) {
prevKey = this.data.hierarchy[ h ].keys[ 0 ];
nextKey = this.getNextKeyWith( type, h, 1 );
while ( nextKey.time < currentTime && nextKey.index > prevKey.index ) {
while ( nextKey.time < this.currentTime && nextKey.index > prevKey.index ) {
prevKey = nextKey;
nextKey = this.getNextKeyWith( type, h, nextKey.index + 1 );
......@@ -159,7 +158,7 @@ THREE.Animation.prototype.update = function ( delta ) {
object.matrixAutoUpdate = true;
object.matrixWorldNeedsUpdate = true;
var scale = ( currentTime - prevKey.time ) / ( nextKey.time - prevKey.time );
var scale = ( this.currentTime - prevKey.time ) / ( nextKey.time - prevKey.time );
var prevXYZ = prevKey[ type ];
var nextXYZ = nextKey[ type ];
......
......@@ -177,15 +177,14 @@ THREE.KeyFrameAnimation.prototype.update = function ( delta ) {
//
var duration = this.data.length;
var currentTime = this.currentTime;
if ( this.loop === true ) {
currentTime %= duration;
this.currentTime %= duration;
}
currentTime = Math.min( currentTime, duration );
this.currentTime = Math.min( this.currentTime, duration );
for ( var h = 0, hl = this.hierarchy.length; h < hl; h++ ) {
......@@ -201,9 +200,9 @@ THREE.KeyFrameAnimation.prototype.update = function ( delta ) {
var prevKey = animationCache.prevKey;
var nextKey = animationCache.nextKey;
if ( nextKey.time <= currentTime ) {
if ( nextKey.time <= this.currentTime ) {
while ( nextKey.time < currentTime && nextKey.index > prevKey.index ) {
while ( nextKey.time < this.currentTime && nextKey.index > prevKey.index ) {
prevKey = nextKey;
nextKey = keys[ prevKey.index + 1 ];
......@@ -215,9 +214,9 @@ THREE.KeyFrameAnimation.prototype.update = function ( delta ) {
}
if ( nextKey.time >= currentTime ) {
if ( nextKey.time >= this.currentTime ) {
prevKey.interpolate( nextKey, currentTime );
prevKey.interpolate( nextKey, this.currentTime );
} else {
......
......@@ -38,16 +38,16 @@ THREE.MorphAnimation.prototype = {
this.currentTime += delta;
var currentTime = this.currentTime;
if ( this.loop === true ) {
currentTime %= this.duration;
this.currentTime %= this.duration;
}
this.currentTime = Math.min( this.currentTime, duration );
var interpolation = this.duration / this.frames;
var frame = Math.floor( currentTime / interpolation );
var frame = Math.floor( this.currentTime / interpolation );
if ( frame != currentFrame ) {
......@@ -60,7 +60,7 @@ THREE.MorphAnimation.prototype = {
}
this.mesh.morphTargetInfluences[ frame ] = ( currentTime % interpolation ) / interpolation;
this.mesh.morphTargetInfluences[ frame ] = ( this.currentTime % interpolation ) / interpolation;
this.mesh.morphTargetInfluences[ lastFrame ] = 1 - this.mesh.morphTargetInfluences[ frame ];
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册