Index: src/common/effects/pseffectanchorsocket.cpp =================================================================== --- src/common/effects/pseffectanchorsocket.cpp (revision 5654) +++ src/common/effects/pseffectanchorsocket.cpp (working copy) @@ -145,8 +145,8 @@ } life += (float)elapsed; - while (life > animLength) - life -= animLength; + if (life > animLength) + life -= (int)(life/animLength); if (keyFrames->GetSize() == 0) return true; Index: src/common/effects/pseffectanchorspline.cpp =================================================================== --- src/common/effects/pseffectanchorspline.cpp (revision 5654) +++ src/common/effects/pseffectanchorspline.cpp (working copy) @@ -94,8 +94,8 @@ bool psEffectAnchorSpline::Update(csTicks elapsed) { life += (float)elapsed; - while (life > animLength) - life -= animLength; + if (life > animLength) + life -= (int)(life/animLength); if (keyFrames->GetSize() == 0) objTargetOffset = csVector3(0,0,0); Index: src/common/effects/pseffectobjtext2d.cpp =================================================================== --- src/common/effects/pseffectobjtext2d.cpp (revision 5654) +++ src/common/effects/pseffectobjtext2d.cpp (working copy) @@ -387,8 +387,8 @@ return true; life += (float)elapsed; - while (life > animLength && killTime <= 0) - life -= animLength; + if (life > animLength && killTime <= 0) + life -= (int)(life/animLength); if (life >= birth && !isAlive) isAlive = true; Index: src/common/effects/pseffectobjtrail.cpp =================================================================== --- src/common/effects/pseffectobjtrail.cpp (revision 5654) +++ src/common/effects/pseffectobjtrail.cpp (working copy) @@ -174,8 +174,8 @@ return true; life += (float)elapsed; - while (life > animLength && killTime <= 0) - life -= animLength; + if (life > animLength && killTime <= 0) + life -= (int)(life/animLength); if (life >= birth && !isAlive) { Index: src/common/effects/pseffectanchor.cpp =================================================================== --- src/common/effects/pseffectanchor.cpp (revision 5654) +++ src/common/effects/pseffectanchor.cpp (working copy) @@ -229,8 +229,8 @@ animLength = 10; life += (float)elapsed; - while (life > animLength) - life -= animLength; + if (life > animLength) + life -= (int)(life/animLength)*animLength; if (keyFrames->GetSize() == 0) return true; Index: src/common/effects/pseffectobjsound.cpp =================================================================== --- src/common/effects/pseffectobjsound.cpp (revision 5654) +++ src/common/effects/pseffectobjsound.cpp (working copy) @@ -199,8 +199,8 @@ return true; life += (float)elapsed; - while (life > animLength && killTime <= 0) - life -= animLength; + if (life > animLength && killTime <= 0) + life -= (int)(life/animLength); if (life >= birth && !isAlive) { Index: src/common/effects/pseffectobj.cpp =================================================================== --- src/common/effects/pseffectobj.cpp (revision 5654) +++ src/common/effects/pseffectobj.cpp (working copy) @@ -454,8 +454,8 @@ const static csMatrix3 UP_FIX(1,0,0, 0,0,1, 0,1,0); life += (float)elapsed; - while (life > animLength && killTime <= 0) - life -= animLength; + if(life > animLength && killTime <= 0) + life -= (int)(life/animLength)*animLength; if (life >= birth && !isAlive) {