void CCobInstance::TurnSmooth(int piece, int axis, int destination, int delta, int deltaTime) { AnimInfo *ai = FindAnim(ATurn, piece, axis); if (ai) { if (!ai->interpolated) { //logOutput.Print("Anim turn overwrite"); TurnNow(piece, axis, destination); return; } } int cur = pieces[piece].rot[axis]; short int dist = destination - cur; int timeFactor = (1000 * 1000) / (deltaTime * deltaTime); dist = abs(dist); int speed = (dist * timeFactor) / delta; //logOutput.Print("Turnx %d:%d cur %d got %d %d dist %d", piece, axis, cur, destination, speed, dist); Turn(piece, axis, speed, destination, true); }
void CUnitScript::TurnSmooth(int piece, int axis, float destination, int delta, int deltaTime) { if (!PieceExists(piece)) { ShowScriptError("Invalid piecenumber"); return; } AnimInfo *ai = FindAnim(ATurn, piece, axis); if (ai) { if (!ai->interpolated) { TurnNow(piece, axis, destination); return; } } // not sure the ClampRad() call is necessary here float cur = ClampRad(pieces[piece]->rot[axis]); float dist = streflop::fabsf(destination - cur); int timeFactor = (1000 * 1000) / (deltaTime * deltaTime); float speed = (dist * timeFactor) / delta; Turn(piece, axis, speed, destination, true); }