Infra_

Untitled

May 3rd, 2019
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.34 KB | None | 0 0
  1. local ease = {}
  2.  
  3. function easeGameSpeed(targetSpeed, overTime, callback)
  4.     ease.startedAt      =   getTickCount()
  5.     ease.startSpeed     =   getGameSpeed()
  6.     ease.targetSpeed    =   math.round(targetSpeed, 4, "floor")
  7.     ease.overTime       =   overTime
  8.     ease.callback       =   (type(callback) == "function" or type(callback) == "nil") and (type(callback) == "function" and callback or nil) or nil
  9.     ease.isActive       =   true
  10. end
  11.  
  12. addEventHandler("onClientRender", root, function()
  13.     if ease.isActive then
  14.         local progress = (getTickCount() - ease.startedAt) / ((ease.startedAt + ease.overTime) - ease.startedAt)
  15.         local currentSpeed = math.round(getGameSpeed(), 1, (ease.startSpeed > ease.targetSpeed and "ceil" or "floor"))
  16.  
  17.         local X, Y, Z = interpolateBetween(currentSpeed, 0.0, 0.0, ease.targetSpeed, 0.0, 0.0, progress, "InOutQuad")
  18.         X = math.round(X, 4, (ease.startSpeed > ease.targetSpeed and "floor" or "ceil"))
  19.         setGameSpeed(X)
  20.         if X == ease.targetSpeed then
  21.             ease.isActive = false
  22.             if type(ease.callback) == "function" then
  23.                 ease.callback();
  24.             end
  25.         end
  26.     end
  27. end)
  28.  
  29. function math.round(number, decimals, method)
  30.     decimals = decimals or 0
  31.     local factor = 10 ^ decimals
  32.     if (method == "ceil" or method == "floor") then return math[method](number * factor) / factor
  33.     else return tonumber(("%."..decimals.."f"):format(number)) end
  34. end
Advertisement
Add Comment
Please, Sign In to add comment