diff options
Diffstat (limited to '')
-rw-r--r-- | src/animation/AnimBlendHierarchy.cpp | 4 | ||||
-rw-r--r-- | src/animation/AnimBlendNode.cpp | 5 | ||||
-rw-r--r-- | src/animation/AnimManager.cpp | 5 |
3 files changed, 6 insertions, 8 deletions
diff --git a/src/animation/AnimBlendHierarchy.cpp b/src/animation/AnimBlendHierarchy.cpp index 7388352f..d3d6287a 100644 --- a/src/animation/AnimBlendHierarchy.cpp +++ b/src/animation/AnimBlendHierarchy.cpp @@ -44,7 +44,7 @@ CAnimBlendHierarchy::CalcTotalTime(void) #endif totalLength = Max(totalLength, sequences[i].GetKeyFrame(sequences[i].numFrames-1)->deltaTime); - for(j = sequences[i].numFrames-1; j > 0; j--){ + for(j = sequences[i].numFrames-1; j >= 1; j--){ KeyFrame *kf1 = sequences[i].GetKeyFrame(j); KeyFrame *kf2 = sequences[i].GetKeyFrame(j-1); kf1->deltaTime -= kf2->deltaTime; @@ -66,7 +66,7 @@ CAnimBlendHierarchy::CalcTotalTimeCompressed(void) #endif totalLength = Max(totalLength, sequences[i].GetKeyFrameCompressed(sequences[i].numFrames-1)->deltaTime/60.0f); - for(j = sequences[i].numFrames-1; j > 0; j--){ + for(j = sequences[i].numFrames-1; j >= 1; j--){ KeyFrame *kf1 = sequences[i].GetKeyFrameCompressed(j); KeyFrame *kf2 = sequences[i].GetKeyFrameCompressed(j-1); kf1->deltaTime -= kf2->deltaTime; diff --git a/src/animation/AnimBlendNode.cpp b/src/animation/AnimBlendNode.cpp index 860046e8..4ef7d1c0 100644 --- a/src/animation/AnimBlendNode.cpp +++ b/src/animation/AnimBlendNode.cpp @@ -97,12 +97,9 @@ CAnimBlendNode::FindKeyFrame(float t) if(sequence->numFrames == 1){ remainingTime = 0.0f; }else{ - frameA++; - // advance until t is between frameB and frameA - while(t > sequence->GetKeyFrame(frameA)->deltaTime){ + while(t > sequence->GetKeyFrame(++frameA)->deltaTime){ t -= sequence->GetKeyFrame(frameA)->deltaTime; - frameA++; if(frameA + 1 >= sequence->numFrames){ // reached end of animation if(!association->IsRepeating()){ diff --git a/src/animation/AnimManager.cpp b/src/animation/AnimManager.cpp index 385f1f67..4694920a 100644 --- a/src/animation/AnimManager.cpp +++ b/src/animation/AnimManager.cpp @@ -1004,9 +1004,10 @@ CAnimManager::UncompressAnimation(CAnimBlendHierarchy *hier) }else{ CLink<CAnimBlendHierarchy*> *link = ms_animCache.Insert(hier); if(link == nil){ - ms_animCache.tail.prev->item->RemoveUncompressedData(); + CAnimBlendHierarchy *lastHier = ms_animCache.tail.prev->item; + lastHier->RemoveUncompressedData(); ms_animCache.Remove(ms_animCache.tail.prev); - ms_animCache.tail.prev->item->linkPtr = nil; + lastHier->linkPtr = nil; link = ms_animCache.Insert(hier); } hier->linkPtr = link; |