diff --git a/autogen/convert_functions.py b/autogen/convert_functions.py
index 687e56183..5cc1a078e 100644
--- a/autogen/convert_functions.py
+++ b/autogen/convert_functions.py
@@ -77,7 +77,7 @@ override_disallowed_functions = {
"src/game/obj_behaviors_2.c": [ "wiggler_jumped_on_attack_handler", "huge_goomba_weakly_attacked" ],
"src/game/spawn_sound.c": [ "spawner" ],
"src/pc/lua/utils/smlua_obj_utils.h": [ "spawn_object_remember_field" ],
- "src/game/camera.h": [ "update_camera", "init_camera", "stub_camera", "^reset_camera" ],
+ "src/game/camera.h": [ "update_camera", "init_camera", "stub_camera", "^reset_camera", "move_point_along_spline" ],
}
lua_function_params = {
diff --git a/autogen/lua_definitions/functions.lua b/autogen/lua_definitions/functions.lua
index 84799bc65..dd6559f41 100644
--- a/autogen/lua_definitions/functions.lua
+++ b/autogen/lua_definitions/functions.lua
@@ -248,15 +248,6 @@ function move_mario_head_c_up(c)
-- ...
end
---- @param p Vec3f
---- @param spline[] CutsceneSplinePoint
---- @param splineSegment Pointer_integer
---- @param progress Pointer_number
---- @return integer
-function move_point_along_spline(p, spline[], splineSegment, progress)
- -- ...
-end
-
--- @param newPos Vec3f
--- @param newFoc Vec3f
--- @param curPos Vec3f
diff --git a/docs/lua/functions.md b/docs/lua/functions.md
index 7ea37196c..3352cb8c8 100644
--- a/docs/lua/functions.md
+++ b/docs/lua/functions.md
@@ -47,7 +47,6 @@
- [is_range_behind_surface](#is_range_behind_surface)
- [is_within_100_units_of_mario](#is_within_100_units_of_mario)
- [move_mario_head_c_up](#move_mario_head_c_up)
- - [move_point_along_spline](#move_point_along_spline)
- [next_lakitu_state](#next_lakitu_state)
- [obj_rotate_towards_point](#obj_rotate_towards_point)
- [object_pos_to_vec3f](#object_pos_to_vec3f)
@@ -1599,29 +1598,6 @@ The `reliable` field will ensure that the packet arrives, but should be used spa
-## [move_point_along_spline](#move_point_along_spline)
-
-### Lua Example
-`local integerValue = move_point_along_spline(p, spline[], splineSegment, progress)`
-
-### Parameters
-| Field | Type |
-| ----- | ---- |
-| p | [Vec3f](structs.md#Vec3f) |
-| spline[] | [CutsceneSplinePoint](structs.md#CutsceneSplinePoint) |
-| splineSegment | `Pointer` <`integer`> |
-| progress | `Pointer` <`number`> |
-
-### Returns
-- `integer`
-
-### C Prototype
-`s32 move_point_along_spline(Vec3f p, struct CutsceneSplinePoint spline[], s16 *splineSegment, f32 *progress);`
-
-[:arrow_up_small:](#)
-
-
-
## [next_lakitu_state](#next_lakitu_state)
### Lua Example
diff --git a/docs/lua/globals.md b/docs/lua/globals.md
index 90884346f..a09e1f3b2 100644
--- a/docs/lua/globals.md
+++ b/docs/lua/globals.md
@@ -51,6 +51,13 @@ The `gGlobalObjectCollisionData` table contains references to object collision d
+## [gLakituState](#gLakituState)
+`gLakituState`'s fields are listed in [LakituState](structs.md#LakituState).
+
+[:arrow_up_small:](#)
+
+
+
## [gGlobalSyncTable](#gGlobalSyncTable)
The `gGlobalSyncTable` is a table used for networking. Any field set inside of this table is automatically synchronized with all other clients. Do not use this table for player-specific variables, keep those in [gPlayerSyncTable](#gPlayerSyncTable). Player-specific variable will desynchronize within this table since it doesn't automatically translate `playerIndex`.
diff --git a/src/pc/lua/smlua_cobject.c b/src/pc/lua/smlua_cobject.c
index fdcf52eac..1b559a7ad 100644
--- a/src/pc/lua/smlua_cobject.c
+++ b/src/pc/lua/smlua_cobject.c
@@ -485,6 +485,11 @@ void smlua_cobject_init_globals(void) {
lua_setglobal(L, "gGlobalObjectCollisionData");
}
+ {
+ smlua_push_object(L, LOT_LAKITUSTATE, &gLakituState);
+ lua_setglobal(L, "gLakituState");
+ }
+
}
void smlua_cobject_init_per_file_globals(char* path) {
diff --git a/src/pc/lua/smlua_functions_autogen.c b/src/pc/lua/smlua_functions_autogen.c
index afeb4a402..195163ff8 100644
--- a/src/pc/lua/smlua_functions_autogen.c
+++ b/src/pc/lua/smlua_functions_autogen.c
@@ -740,33 +740,6 @@ int smlua_func_move_mario_head_c_up(lua_State* L) {
return 1;
}
-int smlua_func_move_point_along_spline(lua_State* L) {
- if(!smlua_functions_valid_param_count(L, 4)) { return 0; }
-
-
- f32* p = smlua_get_vec3f_from_buffer();
- p[0] = smlua_get_number_field(1, "x");
- if (!gSmLuaConvertSuccess) { return 0; }
- p[1] = smlua_get_number_field(1, "y");
- if (!gSmLuaConvertSuccess) { return 0; }
- p[2] = smlua_get_number_field(1, "z");
- if (!gSmLuaConvertSuccess) { return 0; }
- struct CutsceneSplinePoint spline[] = (struct CutsceneSplinePoint)smlua_to_cobject(L, 2, LOT_CUTSCENESPLINEPOINT);
- if (!gSmLuaConvertSuccess) { return 0; }
- s16 * splineSegment = (s16 *)smlua_to_cpointer(L, 3, LVT_S16_P);
- if (!gSmLuaConvertSuccess) { return 0; }
- f32 * progress = (f32 *)smlua_to_cpointer(L, 4, LVT_F32_P);
- if (!gSmLuaConvertSuccess) { return 0; }
-
- lua_pushinteger(L, move_point_along_spline(p, spline[], splineSegment, progress));
-
- smlua_push_number_field(1, "x", p[0]);
- smlua_push_number_field(1, "y", p[1]);
- smlua_push_number_field(1, "z", p[2]);
-
- return 1;
-}
-
int smlua_func_next_lakitu_state(lua_State* L) {
if(!smlua_functions_valid_param_count(L, 7)) { return 0; }
@@ -9980,7 +9953,6 @@ void smlua_bind_functions_autogen(void) {
smlua_bind_function(L, "is_range_behind_surface", smlua_func_is_range_behind_surface);
smlua_bind_function(L, "is_within_100_units_of_mario", smlua_func_is_within_100_units_of_mario);
smlua_bind_function(L, "move_mario_head_c_up", smlua_func_move_mario_head_c_up);
- smlua_bind_function(L, "move_point_along_spline", smlua_func_move_point_along_spline);
smlua_bind_function(L, "next_lakitu_state", smlua_func_next_lakitu_state);
smlua_bind_function(L, "obj_rotate_towards_point", smlua_func_obj_rotate_towards_point);
smlua_bind_function(L, "object_pos_to_vec3f", smlua_func_object_pos_to_vec3f);