diff --git a/autogen/convert_functions.py b/autogen/convert_functions.py index e5f2b250..0ff729ee 100644 --- a/autogen/convert_functions.py +++ b/autogen/convert_functions.py @@ -79,7 +79,7 @@ override_disallowed_functions = { "src/game/sound_init.h": [ "_loop_", "thread4_", "set_sound_mode" ], "src/pc/network/network_utils.h": [ "network_get_player_text_color[^_]" ], "src/pc/network/network_player.h": [ "_init", "_connected[^_]", "_shutdown", "_disconnected", "_update" ], - "src/game/object_helpers.c": [ "spawn_obj", "^bhv_", "abs[fi]", "^bit_shift", "_debug$", "^stub_" ], + "src/game/object_helpers.c": [ "spawn_obj", "^bhv_", "abs[fi]", "^bit_shift", "_debug$", "^stub_", "_set_model" ], "src/game/obj_behaviors.c": [ "debug_" ], "src/game/obj_behaviors_2.c": [ "wiggler_jumped_on_attack_handler", "huge_goomba_weakly_attacked" ], "src/game/spawn_sound.c": [ "spawner" ], diff --git a/autogen/lua_definitions/functions.lua b/autogen/lua_definitions/functions.lua index fab661b0..21c793ed 100644 --- a/autogen/lua_definitions/functions.lua +++ b/autogen/lua_definitions/functions.lua @@ -6193,12 +6193,6 @@ function cur_obj_set_hurtbox_radius_and_height(radius, height) -- ... end ---- @param modelID integer ---- @return nil -function cur_obj_set_model(modelID) - -- ... -end - --- @param other Object --- @param dleft number --- @param dy number diff --git a/docs/lua/functions.md b/docs/lua/functions.md index 3039c51f..4b3e461d 100644 --- a/docs/lua/functions.md +++ b/docs/lua/functions.md @@ -1163,7 +1163,6 @@ - [cur_obj_set_hitbox_and_die_if_attacked](#cur_obj_set_hitbox_and_die_if_attacked) - [cur_obj_set_hitbox_radius_and_height](#cur_obj_set_hitbox_radius_and_height) - [cur_obj_set_hurtbox_radius_and_height](#cur_obj_set_hurtbox_radius_and_height) - - [cur_obj_set_model](#cur_obj_set_model) - [cur_obj_set_pos_relative](#cur_obj_set_pos_relative) - [cur_obj_set_pos_relative_to_parent](#cur_obj_set_pos_relative_to_parent) - [cur_obj_set_pos_to_home](#cur_obj_set_pos_to_home) @@ -22003,26 +22002,6 @@ The `reliable` field will ensure that the packet arrives, but should be used spa
-## [cur_obj_set_model](#cur_obj_set_model) - -### Lua Example -`cur_obj_set_model(modelID)` - -### Parameters -| Field | Type | -| ----- | ---- | -| modelID | `integer` | - -### Returns -- None - -### C Prototype -`void cur_obj_set_model(s32 modelID);` - -[:arrow_up_small:](#) - -
- ## [cur_obj_set_pos_relative](#cur_obj_set_pos_relative) ### Lua Example diff --git a/src/engine/behavior_script.c b/src/engine/behavior_script.c index c8f4fb83..4426712e 100644 --- a/src/engine/behavior_script.c +++ b/src/engine/behavior_script.c @@ -183,7 +183,7 @@ static s32 bhv_cmd_cylboard(void) { static s32 bhv_cmd_set_model(void) { s32 modelID = BHV_CMD_GET_2ND_S16(0); - gCurrentObject->header.gfx.sharedChild = gLoadedGraphNodes[modelID]; + obj_set_model(gCurrentObject, modelID); gCurBhvCommand++; return BHV_PROC_CONTINUE; diff --git a/src/engine/graph_node_manager.c b/src/engine/graph_node_manager.c index 20af9835..b9b7f579 100644 --- a/src/engine/graph_node_manager.c +++ b/src/engine/graph_node_manager.c @@ -70,8 +70,7 @@ void register_scene_graph_node(struct GraphNode *graphNode) { } } else { if (gCurGraphNodeList[gCurGraphNodeIndex - 1]->type == GRAPH_NODE_TYPE_OBJECT_PARENT) { - ((struct GraphNodeObjectParent *) gCurGraphNodeList[gCurGraphNodeIndex - 1]) - ->sharedChild = graphNode; + ((struct GraphNodeObjectParent *) gCurGraphNodeList[gCurGraphNodeIndex - 1])->sharedChild = graphNode; } else { geo_add_child(gCurGraphNodeList[gCurGraphNodeIndex - 1], graphNode); } diff --git a/src/game/behaviors/celebration_star.inc.c b/src/game/behaviors/celebration_star.inc.c index 375dcc35..3e57aed6 100644 --- a/src/game/behaviors/celebration_star.inc.c +++ b/src/game/behaviors/celebration_star.inc.c @@ -8,20 +8,20 @@ void bhv_celebration_star_init(void) { o->oCelebStarDiameterOfRotation = 100; #if BUGFIX_STAR_BOWSER_KEY if (gCurrLevelNum == LEVEL_BOWSER_1 || gCurrLevelNum == LEVEL_BOWSER_2) { - o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_BOWSER_KEY]; + cur_obj_set_model(MODEL_BOWSER_KEY); o->oFaceAnglePitch = 0; o->oFaceAngleRoll = 49152; cur_obj_scale(0.1f); o->oCelebStarUnkF4 = 1; } else { - o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_STAR]; + cur_obj_set_model(MODEL_STAR); o->oFaceAnglePitch = 0; o->oFaceAngleRoll = 0; cur_obj_scale(0.4f); o->oCelebStarUnkF4 = 0; } #else - o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_STAR]; + cur_obj_set_model(MODEL_STAR); cur_obj_scale(0.4f); o->oFaceAnglePitch = 0; o->oFaceAngleRoll = 0; diff --git a/src/game/behaviors/spawn_star.inc.c b/src/game/behaviors/spawn_star.inc.c index a9be9d53..c77ed6b1 100644 --- a/src/game/behaviors/spawn_star.inc.c +++ b/src/game/behaviors/spawn_star.inc.c @@ -19,9 +19,9 @@ void bhv_collect_star_init(void) { starId = (o->oBehParams >> 24) & 0xFF; currentLevelStarFlags = save_file_get_star_flags(gCurrSaveFileNum - 1, gCurrCourseNum - 1); if (currentLevelStarFlags & (1 << starId)) { - o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_TRANSPARENT_STAR]; + cur_obj_set_model(MODEL_TRANSPARENT_STAR); } else { - o->header.gfx.sharedChild = gLoadedGraphNodes[MODEL_STAR]; + cur_obj_set_model(MODEL_STAR); } obj_set_hitbox(o, &sCollectStarHitbox); diff --git a/src/game/mario.c b/src/game/mario.c index 57fd4804..2b6f8848 100644 --- a/src/game/mario.c +++ b/src/game/mario.c @@ -2233,7 +2233,7 @@ static void init_single_mario(struct MarioState* m) { u8 modelIndex = gNetworkPlayers[playerIndex].overrideModelIndex; if (modelIndex >= CT_MAX) { modelIndex = 0; } m->character = &gCharacters[modelIndex]; - m->marioObj->header.gfx.sharedChild = gLoadedGraphNodes[m->character->modelId]; + obj_set_model(m->marioObj, m->character->modelId); } void init_mario(void) { diff --git a/src/game/object_helpers.c b/src/game/object_helpers.c index 305afd9e..85995182 100644 --- a/src/game/object_helpers.c +++ b/src/game/object_helpers.c @@ -1285,7 +1285,11 @@ void cur_obj_get_dropped(void) { } void cur_obj_set_model(s32 modelID) { - o->header.gfx.sharedChild = gLoadedGraphNodes[modelID]; + obj_set_model(o, modelID); +} + +void obj_set_model(struct Object* obj, s32 modelID) { + obj->header.gfx.sharedChild = gLoadedGraphNodes[modelID]; } void mario_set_flag(s32 flag) { diff --git a/src/game/object_helpers.h b/src/game/object_helpers.h index 25cb9dab..b6a656a9 100644 --- a/src/game/object_helpers.h +++ b/src/game/object_helpers.h @@ -168,6 +168,7 @@ void cur_obj_unrender_and_reset_state(s32 sp18, s32 sp1C); void cur_obj_get_thrown_or_placed(f32 forwardVel, f32 velY, s32 thrownAction); void cur_obj_get_dropped(void); void cur_obj_set_model(s32 modelID); +void obj_set_model(struct Object* obj, s32 modelID); void mario_set_flag(s32 flag); s32 cur_obj_clear_interact_status_flag(s32 flag); void obj_mark_for_deletion(struct Object *obj); diff --git a/src/pc/lua/smlua_functions_autogen.c b/src/pc/lua/smlua_functions_autogen.c index 5233986b..95913fdc 100644 --- a/src/pc/lua/smlua_functions_autogen.c +++ b/src/pc/lua/smlua_functions_autogen.c @@ -12709,18 +12709,6 @@ int smlua_func_cur_obj_set_hurtbox_radius_and_height(lua_State* L) { return 1; } -int smlua_func_cur_obj_set_model(lua_State* L) { - if(!smlua_functions_valid_param_count(L, 1)) { return 0; } - - s32 modelID = smlua_to_integer(L, 1); - if (!gSmLuaConvertSuccess) { return 0; } - - extern void cur_obj_set_model(s32 modelID); - cur_obj_set_model(modelID); - - return 1; -} - int smlua_func_cur_obj_set_pos_relative(lua_State* L) { if(!smlua_functions_valid_param_count(L, 4)) { return 0; } @@ -16837,7 +16825,6 @@ void smlua_bind_functions_autogen(void) { smlua_bind_function(L, "cur_obj_set_hitbox_and_die_if_attacked", smlua_func_cur_obj_set_hitbox_and_die_if_attacked); smlua_bind_function(L, "cur_obj_set_hitbox_radius_and_height", smlua_func_cur_obj_set_hitbox_radius_and_height); smlua_bind_function(L, "cur_obj_set_hurtbox_radius_and_height", smlua_func_cur_obj_set_hurtbox_radius_and_height); - smlua_bind_function(L, "cur_obj_set_model", smlua_func_cur_obj_set_model); smlua_bind_function(L, "cur_obj_set_pos_relative", smlua_func_cur_obj_set_pos_relative); smlua_bind_function(L, "cur_obj_set_pos_relative_to_parent", smlua_func_cur_obj_set_pos_relative_to_parent); smlua_bind_function(L, "cur_obj_set_pos_to_home", smlua_func_cur_obj_set_pos_to_home); diff --git a/src/pc/lua/utils/smlua_obj_utils.c b/src/pc/lua/utils/smlua_obj_utils.c index e79ea670..e8de9d24 100644 --- a/src/pc/lua/utils/smlua_obj_utils.c +++ b/src/pc/lua/utils/smlua_obj_utils.c @@ -94,7 +94,7 @@ s32 obj_has_model_extended(struct Object *o, enum ModelExtendedId modelId) { } void obj_set_model_extended(struct Object *o, enum ModelExtendedId modelId) { - o->header.gfx.sharedChild = gLoadedGraphNodes[smlua_model_util_load(modelId)]; + obj_set_model(o, smlua_model_util_load(modelId)); } Trajectory* get_trajectory(const char* name) { diff --git a/src/pc/network/network_player.c b/src/pc/network/network_player.c index 19a62ed5..19e99901 100644 --- a/src/pc/network/network_player.c +++ b/src/pc/network/network_player.c @@ -8,6 +8,7 @@ #include "game/area.h" #include "game/level_info.h" #include "game/hardcoded.h" +#include "game/object_helpers.h" #include "pc/lua/smlua_hooks.h" struct NetworkPlayer gNetworkPlayers[MAX_PLAYERS] = { 0 }; @@ -32,7 +33,7 @@ void network_player_update_model(u8 localIndex) { m->character = &gCharacters[index]; if (m->marioObj == NULL) { return; } - m->marioObj->header.gfx.sharedChild = gLoadedGraphNodes[m->character->modelId]; + obj_set_model(m->marioObj, m->character->modelId); } bool network_player_any_connected(void) {