void CCobInstance::MoveSmooth(int piece, int axis, int destination, int delta, int deltaTime) { //Make sure we do not overwrite animations of non-interpolated origin AnimInfo *ai = FindAnim(AMove, piece, axis); if (ai) { if (!ai->interpolated) { //logOutput.Print("Anim move overwrite"); MoveNow(piece, axis, destination); return; } } int cur = pieces[piece].coords[axis]; int dist = abs(destination - cur); int timeFactor = (1000 * 1000) / (deltaTime * deltaTime); int speed = (dist * timeFactor) / delta; //logOutput.Print("Move %d got %d %d", cur, destination, speed); Move(piece, axis, speed, destination, true); }
void CUnitScript::MoveSmooth(int piece, int axis, float destination, int delta, int deltaTime) { if (!PieceExists(piece)) { ShowScriptError("Invalid piecenumber"); return; } //Make sure we do not overwrite animations of non-interpolated origin AnimInfo *ai = FindAnim(AMove, piece, axis); if (ai) { if (!ai->interpolated) { MoveNow(piece, axis, destination); return; } } float cur = pieces[piece]->pos[axis] - pieces[piece]->original->offset[axis]; float dist = streflop::fabsf(destination - cur); int timeFactor = (1000 * 1000) / (deltaTime * deltaTime); float speed = (dist * timeFactor) / delta; Move(piece, axis, speed, destination, true); }