function isNan(v) return v ~= v end function clamp(v, min, max) return math.max(math.min(v, max), min) end function lerp(a, b, t) local v = a + (b - a) * t if a > b then return clamp(v, b, a) else return clamp(v, a, b) end end function roundMultiple(v, m) local a = math.floor(v / m) * m; local b = a + m; if v - a > b - v then return b else return a end end