Add easing functions autocompletion for math.tween

Remove redundant check in `str_starts_with_spaces`
This commit is contained in:
PeachyPeachSM64 2026-03-01 23:28:19 +01:00
parent fa3bad7177
commit 1272c0d733
4 changed files with 132 additions and 5 deletions

View file

@ -306,6 +306,49 @@ IN_OUT_BOUNCE = function (x) return x < 0.5 and (1 - OUT_BOUNCE(1 - 2 * x)) / 2
---@return number
OUT_IN_BOUNCE = function (x) return x < 0.5 and 0.5 * OUT_BOUNCE(x * 2) or 0.5 + 0.5 * IN_BOUNCE(2 * x - 1) end
--- @alias EasingFunction
--- | `IN_SINE`
--- | `OUT_SINE`
--- | `IN_OUT_SINE`
--- | `OUT_IN_SINE`
--- | `IN_QUAD`
--- | `OUT_QUAD`
--- | `IN_OUT_QUAD`
--- | `OUT_IN_QUAD`
--- | `IN_CUBIC`
--- | `OUT_CUBIC`
--- | `IN_OUT_CUBIC`
--- | `OUT_IN_CUBIC`
--- | `IN_QUART`
--- | `OUT_QUART`
--- | `IN_OUT_QUART`
--- | `OUT_IN_QUART`
--- | `IN_QUINT`
--- | `OUT_QUINT`
--- | `IN_OUT_QUINT`
--- | `OUT_IN_QUINT`
--- | `IN_EXPO`
--- | `OUT_EXPO`
--- | `IN_OUT_EXPO`
--- | `OUT_IN_EXPO`
--- | `IN_CIRC`
--- | `OUT_CIRC`
--- | `IN_OUT_CIRC`
--- | `OUT_IN_CIRC`
--- | `IN_BACK`
--- | `OUT_BACK`
--- | `IN_OUT_BACK`
--- | `OUT_IN_BACK`
--- | `IN_ELASTIC`
--- | `OUT_ELASTIC`
--- | `IN_OUT_ELASTIC`
--- | `OUT_IN_ELASTIC`
--- | `IN_BOUNCE`
--- | `OUT_BOUNCE`
--- | `IN_OUT_BOUNCE`
--- | `OUT_IN_BOUNCE`
--- | fun(x: number): number
--------------------
-- math functions --
--------------------
@ -385,7 +428,7 @@ function math.round(x)
return x > 0 and __math_floor(x + 0.5) or __math_ceil(x - 0.5)
end
--- @param t function | number
--- @param t EasingFunction | number
--- @param a number
--- @param b number
--- @param x number

View file

@ -308,6 +308,49 @@ IN_OUT_BOUNCE = function (x) return x < 0.5 and (1 - OUT_BOUNCE(1 - 2 * x)) / 2
---@return number
OUT_IN_BOUNCE = function (x) return x < 0.5 and 0.5 * OUT_BOUNCE(x * 2) or 0.5 + 0.5 * IN_BOUNCE(2 * x - 1) end
--- @alias EasingFunction
--- | `IN_SINE`
--- | `OUT_SINE`
--- | `IN_OUT_SINE`
--- | `OUT_IN_SINE`
--- | `IN_QUAD`
--- | `OUT_QUAD`
--- | `IN_OUT_QUAD`
--- | `OUT_IN_QUAD`
--- | `IN_CUBIC`
--- | `OUT_CUBIC`
--- | `IN_OUT_CUBIC`
--- | `OUT_IN_CUBIC`
--- | `IN_QUART`
--- | `OUT_QUART`
--- | `IN_OUT_QUART`
--- | `OUT_IN_QUART`
--- | `IN_QUINT`
--- | `OUT_QUINT`
--- | `IN_OUT_QUINT`
--- | `OUT_IN_QUINT`
--- | `IN_EXPO`
--- | `OUT_EXPO`
--- | `IN_OUT_EXPO`
--- | `OUT_IN_EXPO`
--- | `IN_CIRC`
--- | `OUT_CIRC`
--- | `IN_OUT_CIRC`
--- | `OUT_IN_CIRC`
--- | `IN_BACK`
--- | `OUT_BACK`
--- | `IN_OUT_BACK`
--- | `OUT_IN_BACK`
--- | `IN_ELASTIC`
--- | `OUT_ELASTIC`
--- | `IN_OUT_ELASTIC`
--- | `OUT_IN_ELASTIC`
--- | `IN_BOUNCE`
--- | `OUT_BOUNCE`
--- | `IN_OUT_BOUNCE`
--- | `OUT_IN_BOUNCE`
--- | fun(x: number): number
--------------------
-- math functions --
--------------------
@ -387,7 +430,7 @@ function math.round(x)
return x > 0 and __math_floor(x + 0.5) or __math_ceil(x - 0.5)
end
--- @param t function | number
--- @param t EasingFunction | number
--- @param a number
--- @param b number
--- @param x number

View file

@ -288,6 +288,48 @@ char gSmluaConstants[] = ""
"---@param x number\n"
"---@return number\n"
"OUT_IN_BOUNCE = function (x) return x < 0.5 and 0.5 * OUT_BOUNCE(x * 2) or 0.5 + 0.5 * IN_BOUNCE(2 * x - 1) end\n"
"--- @alias EasingFunction\n"
"--- | `IN_SINE`\n"
"--- | `OUT_SINE`\n"
"--- | `IN_OUT_SINE`\n"
"--- | `OUT_IN_SINE`\n"
"--- | `IN_QUAD`\n"
"--- | `OUT_QUAD`\n"
"--- | `IN_OUT_QUAD`\n"
"--- | `OUT_IN_QUAD`\n"
"--- | `IN_CUBIC`\n"
"--- | `OUT_CUBIC`\n"
"--- | `IN_OUT_CUBIC`\n"
"--- | `OUT_IN_CUBIC`\n"
"--- | `IN_QUART`\n"
"--- | `OUT_QUART`\n"
"--- | `IN_OUT_QUART`\n"
"--- | `OUT_IN_QUART`\n"
"--- | `IN_QUINT`\n"
"--- | `OUT_QUINT`\n"
"--- | `IN_OUT_QUINT`\n"
"--- | `OUT_IN_QUINT`\n"
"--- | `IN_EXPO`\n"
"--- | `OUT_EXPO`\n"
"--- | `IN_OUT_EXPO`\n"
"--- | `OUT_IN_EXPO`\n"
"--- | `IN_CIRC`\n"
"--- | `OUT_CIRC`\n"
"--- | `IN_OUT_CIRC`\n"
"--- | `OUT_IN_CIRC`\n"
"--- | `IN_BACK`\n"
"--- | `OUT_BACK`\n"
"--- | `IN_OUT_BACK`\n"
"--- | `OUT_IN_BACK`\n"
"--- | `IN_ELASTIC`\n"
"--- | `OUT_ELASTIC`\n"
"--- | `IN_OUT_ELASTIC`\n"
"--- | `OUT_IN_ELASTIC`\n"
"--- | `IN_BOUNCE`\n"
"--- | `OUT_BOUNCE`\n"
"--- | `IN_OUT_BOUNCE`\n"
"--- | `OUT_IN_BOUNCE`\n"
"--- | fun(x: number): number\n"
"--------------------\n"
"-- math functions --\n"
"--------------------\n"
@ -357,7 +399,7 @@ char gSmluaConstants[] = ""
"function math.round(x)\n"
"return x > 0 and __math_floor(x + 0.5) or __math_ceil(x - 0.5)\n"
"end\n"
"--- @param t function | number\n"
"--- @param t EasingFunction | number\n"
"--- @param a number\n"
"--- @param b number\n"
"--- @param x number\n"

View file

@ -112,8 +112,7 @@ static u8* smlua_text_utils_convert(const char* str) {
// Checks the first 3 characters
static bool str_starts_with_spaces(const char* str) {
for (u8 i = 0; i < 3; i++) {
if (str[i] == '\0') { return false; }
if (str[i] != ' ') { return false; }
if (str[i] != ' ') { return false; }
}
return true;
}