From f21dd45b8f870a0bdb1010d143f43dc3c871d975 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Wed, 19 May 2021 17:17:39 +1000 Subject: [PATCH] Generate modelpart constants based on actual data --- src/files/setup/setupame.c | 2 +- src/files/setup/setupark.c | 6 +- src/files/setup/setupazt.c | 2 +- src/files/setup/setupimp.c | 2 +- src/files/setup/setuplee.c | 4 +- src/files/setup/setuprit.c | 2 +- src/files/setup/setupsho.c | 4 +- src/files/setup/setupwax.c | 6 +- src/game/chr/chr.c | 26 +-- src/game/chr/chraction.c | 8 +- src/game/data/data_020df0.c | 4 +- src/game/game_00c490.c | 16 +- src/game/game_02cde0.c | 2 +- src/game/game_097ba0.c | 4 +- src/game/game_1a7560.c | 2 +- src/game/inventory/items.c | 134 ++++++------ src/game/propobj.c | 16 +- src/game/training/menus.c | 25 +-- src/include/constants.h | 420 ++++++++++++++++++++++++++++++++---- src/include/data.h | 2 +- src/include/game/propobj.h | 2 +- 21 files changed, 514 insertions(+), 175 deletions(-) diff --git a/src/files/setup/setupame.c b/src/files/setup/setupame.c index 8334cf40e..fec7d567e 100644 --- a/src/files/setup/setupame.c +++ b/src/files/setup/setupame.c @@ -3323,7 +3323,7 @@ u8 func100f_check_necklace_collected[] = { endloop(0x04) label(0x2c) - chr_toggle_modelpart(CHR_CASS, MODELPART_NECKLACE) + chr_toggle_modelpart(CHR_CASS, MODELPART_CHR_NECKLACE) set_ailist(CHR_SELF, GAILIST_IDLE) endlist }; diff --git a/src/files/setup/setupark.c b/src/files/setup/setupark.c index 741973d60..ef886b559 100644 --- a/src/files/setup/setupark.c +++ b/src/files/setup/setupark.c @@ -1831,7 +1831,7 @@ u8 func0409_tech_conversation[] = { }; u8 func040d_cass_necklace[] = { - chr_toggle_modelpart(CHR_CASS, MODELPART_NECKLACE) + chr_toggle_modelpart(CHR_CASS, MODELPART_CHR_NECKLACE) set_ailist(CHR_SELF, GAILIST_IDLE) endlist }; @@ -2089,7 +2089,7 @@ u8 func040d_cass[] = { label(0x2d) set_chr_hiddenflag(CHR_CASS, CHRHFLAG_00100000) - chr_toggle_modelpart(CHR_CASS, MODELPART_NECKLACE) + chr_toggle_modelpart(CHR_CASS, MODELPART_CHR_NECKLACE) chr_move_to_pad(CHR_CASS, 0x0205, 0x00, /*goto*/ 0x00) dprint 'M','O','V','E',' ','F','A','I','L','\n',0, label(0x00) @@ -2418,7 +2418,7 @@ u8 func0412_outro[] = { dprint 'c','u','t',' ','s','c','e','n','e',' ','2',0, set_chr_chrflag(CHR_P1P2, CHRCFLAG_INVINCIBLE) set_chr_chrflag(CHR_CASS, CHRCFLAG_INVINCIBLE) - chr_toggle_modelpart(CHR_CASS, MODELPART_NECKLACE) + chr_toggle_modelpart(CHR_CASS, MODELPART_CHR_NECKLACE) set_chr_chrflag(CHR_MRBLONDE, CHRCFLAG_INVINCIBLE) set_chr_chrflag(CHR_OUTRO_GUARD1, CHRCFLAG_INVINCIBLE) set_chr_chrflag(CHR_OUTRO_GUARD2, CHRCFLAG_INVINCIBLE) diff --git a/src/files/setup/setupazt.c b/src/files/setup/setupazt.c index bb14ac15b..0cffe4dc3 100644 --- a/src/files/setup/setupazt.c +++ b/src/files/setup/setupazt.c @@ -1936,7 +1936,7 @@ u8 func1014_setup_skedar_shuttle[] = { yield show_object(OBJ_SKEDAR_SHUTTLE) set_object_flag3(OBJ_SKEDAR_SHUTTLE, OBJFLAG3_00000010) - object_set_modelpart_visible(OBJ_SKEDAR_SHUTTLE, MODELPART_SKGANGWAY, FALSE) + object_set_modelpart_visible(OBJ_SKEDAR_SHUTTLE, MODELPART_SKSHUTTLE_GANGWAY, FALSE) object_do_animation(0x0486, OBJ_SKEDAR_SHUTTLE, 0x01, 0xffff) set_ailist(CHR_SELF, GAILIST_IDLE) endlist diff --git a/src/files/setup/setupimp.c b/src/files/setup/setupimp.c index 3cce5adb0..daf603c71 100644 --- a/src/files/setup/setupimp.c +++ b/src/files/setup/setupimp.c @@ -3202,7 +3202,7 @@ u8 func1022_skedar_shuttle[] = { set_object_flag2(OBJ_SKEDAR_SHUTTLE, OBJFLAG2_04000000) set_object_flag3(OBJ_SKEDAR_SHUTTLE, OBJFLAG3_00000010) object_do_animation(0x045a, OBJ_SKEDAR_SHUTTLE, 0x04, 0xffff) - object_set_modelpart_visible(OBJ_SKEDAR_SHUTTLE, MODELPART_SKGANGWAY, FALSE) + object_set_modelpart_visible(OBJ_SKEDAR_SHUTTLE, MODELPART_SKSHUTTLE_GANGWAY, FALSE) set_object_flag(OBJ_SKEDAR_SHUTTLE, OBJFLAG_00000100) unset_chr_chrflag(CHR_BLONDE1, CHRCFLAG_HIDDEN) diff --git a/src/files/setup/setuplee.c b/src/files/setup/setuplee.c index 9d1ce2b3e..9bcfb6873 100644 --- a/src/files/setup/setuplee.c +++ b/src/files/setup/setuplee.c @@ -2819,7 +2819,7 @@ u8 func0c01_outro[] = { set_object_flag2(OBJ_OUTRO_SHUTTLE, OBJFLAG2_04000000) set_object_flag3(OBJ_OUTRO_SHUTTLE, OBJFLAG3_00000010) object_do_animation(0x01e4, OBJ_OUTRO_SHUTTLE, 0x04, 0xffff) - object_set_modelpart_visible(OBJ_OUTRO_SHUTTLE, MODELPART_SKGANGWAY, FALSE) + object_set_modelpart_visible(OBJ_OUTRO_SHUTTLE, MODELPART_SKSHUTTLE_GANGWAY, FALSE) show_nonessential_chrs(FALSE) restart_timer @@ -3375,7 +3375,7 @@ u8 func1002_hangar_shuttle[] = { yield show_object(OBJ_HANGAR_SHUTTLE) set_object_flag3(OBJ_HANGAR_SHUTTLE, OBJFLAG3_00000010) - object_set_modelpart_visible(OBJ_HANGAR_SHUTTLE, MODELPART_SKGANGWAY, FALSE) + object_set_modelpart_visible(OBJ_HANGAR_SHUTTLE, MODELPART_SKSHUTTLE_GANGWAY, FALSE) label(0x09) restart_timer diff --git a/src/files/setup/setuprit.c b/src/files/setup/setuprit.c index 7330055ae..87071b9b4 100644 --- a/src/files/setup/setuprit.c +++ b/src/files/setup/setuprit.c @@ -3580,7 +3580,7 @@ u8 func1019_midcutscene[] = { set_object_flag2(0x19, OBJFLAG2_04000000) set_object_flag3(0x19, OBJFLAG3_00000010) object_do_animation(0x02e0, 0x19, 0x04, 0xffff) - object_set_modelpart_visible(0x19, MODELPART_SKGANGWAY, TRUE) + object_set_modelpart_visible(0x19, MODELPART_SKSHUTTLE_GANGWAY, TRUE) show_object(0x37) set_object_flag2(0x37, OBJFLAG2_04000000) diff --git a/src/files/setup/setupsho.c b/src/files/setup/setupsho.c index 38611a251..33ca83753 100644 --- a/src/files/setup/setupsho.c +++ b/src/files/setup/setupsho.c @@ -2690,7 +2690,7 @@ u8 func0c00_intro[] = { set_object_flag2(0x36, OBJFLAG2_04000000) set_object_flag3(0x36, OBJFLAG3_00000010) object_do_animation(0x02fa, 0x36, 0x01, 0xffff) - object_set_modelpart_visible(0x36, MODELPART_SKGANGWAY, FALSE) + object_set_modelpart_visible(0x36, MODELPART_SKSHUTTLE_GANGWAY, FALSE) beginloop(0x0e) if_camera_animating(/*goto*/ 0x2d) @@ -2759,7 +2759,7 @@ u8 func0c00_intro[] = { set_object_flag2(0x36, OBJFLAG2_04000000) set_object_flag3(0x36, OBJFLAG3_00000010) object_do_animation(0x0302, 0x36, 0x04, 0xffff) - object_set_modelpart_visible(0x36, MODELPART_SKGANGWAY, FALSE) + object_set_modelpart_visible(0x36, MODELPART_SKSHUTTLE_GANGWAY, FALSE) set_chr_chrflag(CHR_BOND, CHRCFLAG_UNPLAYABLE) set_chr_hiddenflag(CHR_BOND, CHRHFLAG_00020000) diff --git a/src/files/setup/setupwax.c b/src/files/setup/setupwax.c index 05436d36b..288f32082 100644 --- a/src/files/setup/setupwax.c +++ b/src/files/setup/setupwax.c @@ -1366,7 +1366,7 @@ u8 func0411_cass_in_office[] = { }; u8 func0413_cass_running[] = { - chr_toggle_modelpart(CHR_CASS, MODELPART_NECKLACE) + chr_toggle_modelpart(CHR_CASS, MODELPART_CHR_NECKLACE) unset_self_chrflag(CHRCFLAG_INVINCIBLE) set_shotlist(AILIST_CASS_RUNNING) if_chr_dead(CHR_CASS, /*goto*/ 0x06) @@ -2029,7 +2029,7 @@ u8 func0417_outro[] = { object_do_animation(0x0475, OBJ_SHUTTLE2, 0x04, 0xffff) show_nonessential_chrs(FALSE) restart_timer - object_set_modelpart_visible(OBJ_SHUTTLE2, MODELPART_SKGANGWAY, FALSE) + object_set_modelpart_visible(OBJ_SHUTTLE2, MODELPART_SKSHUTTLE_GANGWAY, FALSE) beginloop(0x08) if_camera_animating(/*goto*/ 0x2c) @@ -2120,7 +2120,7 @@ u8 func1011_shuttle_animation[] = { yield show_object(OBJ_SHUTTLE1) set_object_flag3(OBJ_SHUTTLE1, OBJFLAG3_00000010) - object_set_modelpart_visible(OBJ_SHUTTLE1, MODELPART_SKGANGWAY, FALSE) + object_set_modelpart_visible(OBJ_SHUTTLE1, MODELPART_SKSHUTTLE_GANGWAY, FALSE) label(0x09) restart_timer diff --git a/src/game/chr/chr.c b/src/game/chr/chr.c index 5c02db9c8..f349084fa 100644 --- a/src/game/chr/chr.c +++ b/src/game/chr/chr.c @@ -11238,16 +11238,16 @@ void chrSetHudpieceVisible(struct chrdata *chr, bool visible) struct modelfiledata *modelfiledata = chr->model->filedata; if (modelfiledata->type == &g_ModelTypeChr) { - struct modelnode *node = modelGetPart(modelfiledata, MODELPART_HUDPIECE); + struct modelnode *headspotnode = modelGetPart(modelfiledata, MODELPART_CHR_HEADSPOT); - if (node && node->type == MODELNODETYPE_HEADSPOT) { - union modelrwdata *rwdata = modelGetNodeRwData(chr->model, node); + if (headspotnode && headspotnode->type == MODELNODETYPE_HEADSPOT) { + union modelrwdata *rwdata = modelGetNodeRwData(chr->model, headspotnode); if (rwdata->headspot.modelfiledata) { - struct modelnode *node2 = modelGetPart(rwdata->headspot.modelfiledata, MODELPART_HUDPIECE); + struct modelnode *hudpiecenode = modelGetPart(rwdata->headspot.modelfiledata, MODELPART_HEAD_HUDPIECE); - if (node2) { - union modelrwdata *rwdata2 = modelGetNodeRwData(chr->model, node2); + if (hudpiecenode) { + union modelrwdata *rwdata2 = modelGetNodeRwData(chr->model, hudpiecenode); rwdata2->toggle.visible = visible; } } @@ -12220,8 +12220,8 @@ Gfx *chrRender(struct prop *prop, Gfx *gdl, bool withalpha) // Set Skedar eyes open or closed if (model->filedata->type == &g_ModelTypeSkedar) { - struct modelnode *node1 = modelGetPart(model->filedata, MODELPART_04); - struct modelnode *node2 = modelGetPart(model->filedata, MODELPART_05); + struct modelnode *node1 = modelGetPart(model->filedata, MODELPART_SKEDAR_EYESOPEN); + struct modelnode *node2 = modelGetPart(model->filedata, MODELPART_SKEDAR_EYESCLOSED); if (node1 && node2) { union modelrwdata *data1 = modelGetNodeRwData(model, node1); @@ -12238,14 +12238,14 @@ Gfx *chrRender(struct prop *prop, Gfx *gdl, bool withalpha) || chr->headnum == HEAD_MAIAN_S || chr->headnum == HEAD_ELVIS_GOGS) { if (model->filedata->type == &g_ModelTypeChr) { - struct modelnode *node = modelGetPart(model->filedata, MODELPART_04); + struct modelnode *headspotnode = modelGetPart(model->filedata, MODELPART_CHR_HEADSPOT); - if (node && node->type == MODELNODETYPE_HEADSPOT) { - union modelrwdata *headrwdata = modelGetNodeRwData(model, node); + if (headspotnode && headspotnode->type == MODELNODETYPE_HEADSPOT) { + union modelrwdata *headrwdata = modelGetNodeRwData(model, headspotnode); if (headrwdata->headspot.modelfiledata) { - struct modelnode *node1 = modelGetPart(headrwdata->headspot.modelfiledata, MODELPART_02); - struct modelnode *node2 = modelGetPart(headrwdata->headspot.modelfiledata, MODELPART_03); + struct modelnode *node1 = modelGetPart(headrwdata->headspot.modelfiledata, MODELPART_HEAD_EYESOPEN); + struct modelnode *node2 = modelGetPart(headrwdata->headspot.modelfiledata, MODELPART_HEAD_EYESCLOSED); if (node1 && node2) { union modelrwdata *data1 = modelGetNodeRwData(model, node1); diff --git a/src/game/chr/chraction.c b/src/game/chr/chraction.c index bd9d0a47a..c98701dbd 100644 --- a/src/game/chr/chraction.c +++ b/src/game/chr/chraction.c @@ -14194,7 +14194,7 @@ bool func0f03fde4(struct chrdata *chr, s32 handnum, struct coord *arg2) model = obj->model; if ((chr->prop->flags & PROPFLAG_02) && (weaponprop->flags & PROPFLAG_02)) { - if ((part0 = modelGetPart(model->filedata, MODELPART_00))) { + if ((part0 = modelGetPart(model->filedata, MODELPART_0000))) { spac = func0001a5cc(model, part0, 0); rodata = &part0->rodata->gunfire; @@ -14205,7 +14205,7 @@ bool func0f03fde4(struct chrdata *chr, s32 handnum, struct coord *arg2) func00015be4(currentPlayerGetUnk174c(), spac, &sp6c); func00015b64(&sp6c, arg2); result = true; - } else if ((part1 = modelGetPart(model->filedata, MODELPART_01))) { + } else if ((part1 = modelGetPart(model->filedata, MODELPART_0001))) { sp64 = func0001a5cc(model, part1, 0); func00015be4(currentPlayerGetUnk174c(), sp64, &sp24); @@ -20819,9 +20819,9 @@ void robotSetMuzzleFlash(struct chrdata *chr, bool right, bool visible) s32 partnum; if (right) { - partnum = MODELPART_ROBOTMUZZLEFLASHR; + partnum = MODELPART_ROBOT_RGUNFIRE; } else { - partnum = MODELPART_ROBOTMUZZLEFLASHL; + partnum = MODELPART_ROBOT_LGUNFIRE; } node = modelGetPart(chr->model->filedata, partnum); diff --git a/src/game/data/data_020df0.c b/src/game/data/data_020df0.c index 158ebe7d4..cfc51c4e3 100644 --- a/src/game/data/data_020df0.c +++ b/src/game/data/data_020df0.c @@ -66,8 +66,8 @@ u16 var8007adf8[] = { }; // 20e3c -struct modeltype g_ModelTypeSkedarShuttle = { - MODELTYPE_SKEDARSHUTTLE, 18, var8007adf8, +struct modeltype g_ModelTypeSkShuttle = { + MODELTYPE_SKSHUTTLE, 18, var8007adf8, }; // 20e44 diff --git a/src/game/game_00c490.c b/src/game/game_00c490.c index 639ac45dc..c27fa291b 100644 --- a/src/game/game_00c490.c +++ b/src/game/game_00c490.c @@ -1079,7 +1079,7 @@ void setupCamera(struct cameraobj *camera, s32 cmdindex) if (camera->lookatpadnum >= 0) { struct coord lenspos; - union modelrodata *lens = modelGetPartRodata(obj->model->filedata, MODELPART_LENS); + union modelrodata *lens = modelGetPartRodata(obj->model->filedata, MODELPART_CCTV_LENS); struct pad pad; f32 xdiff; f32 ydiff; @@ -1335,14 +1335,14 @@ void setupSingleMonitor(struct singlemonitorobj *monitor, s32 cmdindex) modelSetScale(monitor->base.model, monitor->base.model->scale * scale); monitor->base.model->attachedto = owner->model; - if (monitor->ownerpart == MODELPART_00) { - monitor->base.model->unk1c = modelGetPart(owner->model->filedata, MODELPART_00); - } else if (monitor->ownerpart == MODELPART_01) { - monitor->base.model->unk1c = modelGetPart(owner->model->filedata, MODELPART_01); - } else if (monitor->ownerpart == MODELPART_02) { - monitor->base.model->unk1c = modelGetPart(owner->model->filedata, MODELPART_02); + if (monitor->ownerpart == MODELPART_0000) { + monitor->base.model->unk1c = modelGetPart(owner->model->filedata, MODELPART_0000); + } else if (monitor->ownerpart == MODELPART_0001) { + monitor->base.model->unk1c = modelGetPart(owner->model->filedata, MODELPART_0001); + } else if (monitor->ownerpart == MODELPART_0002) { + monitor->base.model->unk1c = modelGetPart(owner->model->filedata, MODELPART_0002); } else { - monitor->base.model->unk1c = modelGetPart(owner->model->filedata, MODELPART_03); + monitor->base.model->unk1c = modelGetPart(owner->model->filedata, MODELPART_0003); } propReparent(prop, owner->prop); diff --git a/src/game/game_02cde0.c b/src/game/game_02cde0.c index ab3b0ecb2..1796b293b 100644 --- a/src/game/game_02cde0.c +++ b/src/game/game_02cde0.c @@ -528,7 +528,7 @@ glabel var7f1a8a84 // // if (!g_HeadsAndBodies[bodynum].unk00_01) { // if (bodyfiledata->type == &g_ModelTypeChr) { -// node = modelGetPart(bodyfiledata, MODELPART_CHR_04); +// node = modelGetPart(bodyfiledata, MODELPART_CHR_HEADSPOT); // // if (node != NULL) { // if (headnum < 0) { diff --git a/src/game/game_097ba0.c b/src/game/game_097ba0.c index b13ee0828..313817fa6 100644 --- a/src/game/game_097ba0.c +++ b/src/game/game_097ba0.c @@ -425,7 +425,7 @@ void func0f097e74(s16 partnum, s32 arg1, struct hand *hand, struct modelfiledata { struct modelnode *node; - if (partnum == 0x35 || partnum == 0x36) { + if (partnum == MODELPART_0035 || partnum == MODELPART_0036) { if (g_Vars.currentplayer->gunctrl.unk1594) { node = modelGetPart(g_Vars.currentplayer->gunctrl.unk1594, partnum); @@ -489,7 +489,7 @@ void func0f098030(struct hand *hand, struct modelfiledata *arg1) s32 j; func0f097f28(hand, arg1, weapon->fptr); - func0f097e74(MODELPART_42, 0, hand, arg1); + func0f097e74(MODELPART_0042, 0, hand, arg1); for (i = 0; i < 2; i++) { if (weapon->ammos[i] && (weapon->ammos[i]->flags & WEAPONFLAG_ONEHANDED)) { diff --git a/src/game/game_1a7560.c b/src/game/game_1a7560.c index 087f9f366..12d404f9d 100644 --- a/src/game/game_1a7560.c +++ b/src/game/game_1a7560.c @@ -90,7 +90,7 @@ struct modeltype *g_ModelTypes[] = { &g_ModelTypeCallisto, &g_ModelTypeHand, &g_ModelTypeRcp120, - &g_ModelTypeSkedarShuttle, + &g_ModelTypeSkShuttle, &g_ModelTypeLaser, &g_ModelTypeMaianUfo, &g_ModelTypeGrenade, diff --git a/src/game/inventory/items.c b/src/game/inventory/items.c index aa9ef6e75..850b918e2 100644 --- a/src/game/inventory/items.c +++ b/src/game/inventory/items.c @@ -299,31 +299,31 @@ struct weapon invitem_unarmed = { }; struct modelpartvisibility invpartvisibility_falcon2[] = { - { MODELPART_MUZZLEFLASH, false }, - { MODELPART_NEWCLIP3, false }, - { MODELPART_NEWCLIP4, false }, - { MODELPART_SCOPE, false }, - { MODELPART_SILENCER, false }, - { MODELPART_2E, false }, - { MODELPART_2F, false }, + { MODELPART_FALCON2_005A, false }, + { MODELPART_FALCON2_002A, false }, + { MODELPART_FALCON2_002B, false }, + { MODELPART_FALCON2_SCOPE, false }, + { MODELPART_FALCON2_SILENCER, false }, + { MODELPART_FALCON2_002E, false }, + { MODELPART_FALCON2_002F, false }, { 255 }, }; struct modelpartvisibility invpartvisibility_falcon2scope[] = { - { MODELPART_MUZZLEFLASH, false }, - { MODELPART_NEWCLIP3, false }, - { MODELPART_NEWCLIP4, false }, - { MODELPART_SILENCER, false }, - { MODELPART_2F, false }, + { MODELPART_FALCON2_005A, false }, + { MODELPART_FALCON2_002A, false }, + { MODELPART_FALCON2_002B, false }, + { MODELPART_FALCON2_SILENCER, false }, + { MODELPART_FALCON2_002F, false }, { 255 }, }; struct modelpartvisibility invpartvisibility_falcon2silencer[] = { - { MODELPART_MUZZLEFLASH, false }, - { MODELPART_NEWCLIP3, false }, - { MODELPART_NEWCLIP4, false }, - { MODELPART_SCOPE, false }, - { MODELPART_2E, false }, + { MODELPART_FALCON2_005A, false }, + { MODELPART_FALCON2_002A, false }, + { MODELPART_FALCON2_002B, false }, + { MODELPART_FALCON2_SCOPE, false }, + { MODELPART_FALCON2_002E, false }, { 255 }, }; @@ -593,9 +593,9 @@ struct weapon invitem_falcon2silencer = { }; struct modelpartvisibility invpartvisibility_magsec[] = { - { MODELPART_MUZZLEFLASH, false }, - { MODELPART_NEWCLIP2, false }, - { MODELPART_NEWCLIP3, false }, + { MODELPART_PISTOL_005A, false }, + { MODELPART_PISTOL_0029, false }, + { MODELPART_PISTOL_002A, false }, { 255 }, }; @@ -740,13 +740,13 @@ struct weapon invitem_magsec = { }; struct modelpartvisibility invpartvisibility_dy357[] = { - { MODELPART_MUZZLEFLASH, false }, - { MODELPART_NEWCLIP, false }, - { MODELPART_NEWCLIP2, false }, - { MODELPART_NEWCLIP3, false }, - { MODELPART_NEWCLIP4, false }, - { MODELPART_SCOPE, false }, // reused model part number - { MODELPART_SILENCER, false }, // reused model part number + { MODELPART_MAGNUM_005A, false }, + { MODELPART_MAGNUM_0028, false }, + { MODELPART_MAGNUM_0029, false }, + { MODELPART_MAGNUM_002A, false }, + { MODELPART_MAGNUM_002B, false }, + { MODELPART_MAGNUM_002C, false }, + { MODELPART_MAGNUM_002D, false }, { 255 }, }; @@ -956,7 +956,7 @@ struct weapon invitem_dy357lx = { }; struct modelpartvisibility invpartvisibility_phoenix[] = { - { MODELPART_NEWCLIP, false }, + { MODELPART_PHOENIX_0028, false }, { 255 }, }; @@ -1076,8 +1076,8 @@ struct weapon invitem_phoenix = { }; struct modelpartvisibility invpartvisibility_mauler[] = { - { MODELPART_NEWCLIP4, false }, - { MODELPART_MUZZLEFLASH, false }, + { MODELPART_MAULER_002B, false }, + { MODELPART_MAULER_005A, false }, { 255 }, }; @@ -1216,8 +1216,8 @@ struct weapon invitem_mauler = { }; struct modelpartvisibility invpartvisibility_cmp150[] = { - { MODELPART_MUZZLEFLASH, false }, - { MODELPART_NEWCLIP4, false }, + { MODELPART_CMP150_005A, false }, + { MODELPART_CMP150_002B, false }, { 255 }, }; @@ -1372,8 +1372,8 @@ struct weapon invitem_cmp150 = { }; struct modelpartvisibility invpartvisibility_cyclone[] = { - { MODELPART_MUZZLEFLASH, false }, - { MODELPART_NEWCLIP, false }, + { MODELPART_CYCLONE_005A, false }, + { MODELPART_CYCLONE_0028, false }, { 255 }, }; @@ -1518,8 +1518,8 @@ struct guncmd invanim_rcp120_equiporshoot[] = { }; struct modelpartvisibility invpartvisibility_rcp120[] = { - { MODELPART_MUZZLEFLASH, false }, - { MODELPART_NEWCLIP2, false }, + { MODELPART_RCP120_005A, false }, + { MODELPART_RCP120_0029, false }, { 255 }, }; @@ -1618,7 +1618,7 @@ struct guncmd invanim_callisto_shoot[] = { }; struct modelpartvisibility invpartvisibility_callisto[] = { - { MODELPART_NEWCLIP, false }, + { MODELPART_CALLISTO_0028, false }, { 255 }, }; @@ -1720,8 +1720,8 @@ struct inventory_typef invf_000128b8[] = { }; struct modelpartvisibility invpartvisibility_dragon[] = { - { MODELPART_NEWCLIP, false }, - { MODELPART_MUZZLEFLASH, false }, + { MODELPART_DRAGON_0028, false }, + { MODELPART_DRAGON_005A, false }, { 255 }, }; @@ -1823,9 +1823,9 @@ struct inventory_typef invf_00012a08[] = { }; struct modelpartvisibility invpartvisibility_superdragon[] = { - { MODELPART_NEWCLIP, false }, - { MODELPART_NEWCLIP2, false }, - { MODELPART_MUZZLEFLASH, false }, + { MODELPART_SUPERDRAGON_0028, false }, + { MODELPART_SUPERDRAGON_0029, false }, + { MODELPART_SUPERDRAGON_005A, false }, { 255 }, }; @@ -1980,8 +1980,8 @@ struct inventory_typef invf_00012c40[] = { }; struct modelpartvisibility invpartvisibility_ar34[] = { - { MODELPART_NEWCLIP3, false }, - { MODELPART_MUZZLEFLASH, false }, + { MODELPART_AR34_002A, false }, + { MODELPART_AR34_005A, false }, { 255 }, }; @@ -2105,8 +2105,8 @@ struct inventory_typef invf_00012df0[] = { }; struct modelpartvisibility invpartvisibility_k7avenger[] = { - { MODELPART_NEWCLIP3, false }, - { MODELPART_MUZZLEFLASH, false }, + { MODELPART_K7AVENGER_002A, false }, + { MODELPART_K7AVENGER_005A, false }, { 255 }, }; @@ -2245,9 +2245,9 @@ struct inventory_typef invf_00012fc8[] = { }; struct modelpartvisibility invpartvisibility_laptopgun[] = { - { MODELPART_MUZZLEFLASH, false }, - { MODELPART_NEWCLIP2, false }, - { MODELPART_NEWCLIP3, false }, + { MODELPART_LAPTOPGUN_005A, false }, + { MODELPART_LAPTOPGUN_0029, false }, + { MODELPART_LAPTOPGUN_002A, false }, { 255 }, }; @@ -2377,8 +2377,8 @@ struct inventory_typef invf_000131dc[] = { }; struct modelpartvisibility invpartvisibility_shotgun[] = { - { MODELPART_NEWCLIP4, false }, - { MODELPART_MUZZLEFLASH, false }, + { MODELPART_SHOTGUN_002B, false }, + { MODELPART_SHOTGUN_005A, false }, { 255 }, }; @@ -2488,10 +2488,10 @@ f32 var8006d33c[] = {0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0}; f32 var8006d36c[] = {1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0}; struct modelpartvisibility invpartvisibility_reaper[] = { - { MODELPART_MUZZLEFLASH, false }, - { MODELPART_MUZZLEFLASH2, false }, - { MODELPART_MUZZLEFLASH3, false }, - { MODELPART_NEWCLIP4, false }, + { MODELPART_REAPER_005A, false }, + { MODELPART_REAPER_005B, false }, + { MODELPART_REAPER_005C, false }, + { MODELPART_REAPER_002B, false }, { 255 }, }; @@ -2613,7 +2613,7 @@ struct weapon invitem_reaper = { }; struct modelpartvisibility invpartvisibility_rocketlauncher[] = { - { MODELPART_NEWCLIP, false }, + { MODELPART_ROCKET_0028, false }, { 255 }, }; @@ -2955,7 +2955,7 @@ struct inventory_ammo invammo_devastator = { }; struct modelpartvisibility invpartvisibility_devastator[] = { - { MODELPART_NEWCLIP2, false }, + { MODELPART_DEVASTATOR_0029, false }, { 255 }, }; @@ -3119,7 +3119,7 @@ struct inventory_ammo invammo_remotemine = { }; struct modelpartvisibility invpartvisibility_remotemine[] = { - { MODELPART_NEWCLIP2, false }, + { MODELPART_REMOTEMINE_0029, false }, { 255 }, }; @@ -3509,7 +3509,7 @@ struct inventory_ammo invammo_farsight = { }; struct modelpartvisibility invpartvisibility_farsight[] = { - { MODELPART_NEWCLIP, false }, + { MODELPART_FARSIGHT_0028, false }, { 255 }, }; @@ -3651,9 +3651,9 @@ struct inventory_ammo invammo_crossbow = { }; struct modelpartvisibility invpartvisibility_crossbow[] = { - { MODELPART_NEWCLIP, false }, - { MODELPART_NEWCLIP2, false }, - { MODELPART_NEWCLIP3, false }, + { MODELPART_CROSSBOW_0028, false }, + { MODELPART_CROSSBOW_0029, false }, + { MODELPART_CROSSBOW_002A, false }, { 255 }, }; @@ -3776,9 +3776,9 @@ struct inventory_ammo invammo_tranquilizer = { }; struct modelpartvisibility invpartvisibility_tranquilizer[] = { - { MODELPART_NEWCLIP, false }, - { MODELPART_NEWCLIP2, false }, - { MODELPART_NEWCLIP3, false }, + { MODELPART_TRANQUILIZER_0028, false }, + { MODELPART_TRANQUILIZER_0029, false }, + { MODELPART_TRANQUILIZER_002A, false }, { 255 }, }; @@ -3941,7 +3941,7 @@ struct inventory_ammo invammo_sniperrifle = { }; struct modelpartvisibility invpartvisibility_sniperrifle[] = { - { MODELPART_NEWCLIP2, false }, + { MODELPART_SNIPERRIFLE_0029, false }, { 255 }, }; @@ -4055,7 +4055,7 @@ struct weapon invitem_laser = { }; struct modelpartvisibility invpartvisibility_classic[] = { - { MODELPART_MUZZLEFLASH, false }, + { MODELPART_CLASSICGUN_005A, false }, { 255 }, }; diff --git a/src/game/propobj.c b/src/game/propobj.c index 88683e6f4..4fdaae53c 100644 --- a/src/game/propobj.c +++ b/src/game/propobj.c @@ -33095,7 +33095,7 @@ void doorUpdatePortalIfWindowed(struct prop *doorprop, s32 playercount) } if (model->filedata->type == &g_ModelTypeWindowedDoor) { - node = modelGetPart(model->filedata, MODELPART_01); + node = modelGetPart(model->filedata, MODELPART_WINDOWEDDOOR_0001); rwdata = modelGetNodeRwData(model, node); if (!rwdata->toggle.visible) { @@ -47054,12 +47054,16 @@ void hoverbikeTick(struct prop *prop, bool arg1) } } -void func0f07e058(struct prop *prop) +/** + * Show or hide the CI dropship's interior features depending on whether the + * dropship object's deactivated flag is set. + */ +void dropshipUpdateInterior(struct prop *prop) { struct defaultobj *obj = prop->obj; struct model *model = obj->model; - struct modelnode *node = modelGetPart(model->filedata, MODELPART_6E); + struct modelnode *node = modelGetPart(model->filedata, MODELPART_DROPSHIP_INTERIOR); if (node) { union modelrwdata *data = modelGetNodeRwData(model, node); @@ -47789,7 +47793,7 @@ s32 objTick(struct prop *prop) if (obj->type == OBJTYPE_FAN) { func0f078be0(prop); } else if (obj->model->filedata->type == &g_ModelTypeDropship) { - func0f07e058(prop); + dropshipUpdateInterior(prop); } if (sp556 == false) { @@ -69595,14 +69599,14 @@ bool weaponIsGunfireVisible(struct prop *prop) struct modelnode *node; if (model && model->filedata->type == &g_ModelTypeChrGun) { - node = modelGetPart(model->filedata, MODELPART_CHRGUN_00); + node = modelGetPart(model->filedata, MODELPART_CHRGUN_GUNFIRE); if (node) { struct modelrwdata_gunfire *rwdata = modelGetNodeRwData(model, node); return rwdata->visible; } - node = modelGetPart(model->filedata, MODELPART_CHRGUN_02); + node = modelGetPart(model->filedata, MODELPART_CHRGUN_0002); if (node) { struct modelrwdata_toggle *rwdata = modelGetNodeRwData(model, node); diff --git a/src/game/training/menus.c b/src/game/training/menus.c index ab9f8d061..d3d737422 100644 --- a/src/game/training/menus.c +++ b/src/game/training/menus.c @@ -4780,30 +4780,31 @@ s32 ciCharacterProfileMenuDialog(s32 operation, struct menudialog *dialog, union case MENUOP_TICK: if (bodynum == BODY_DRCAROLL) { static struct modelpartvisibility vis[] = { - { MODELPART_DRCAROLL_01, false }, - { MODELPART_DRCAROLL_02, false }, - { MODELPART_DRCAROLL_03, false }, - { MODELPART_DRCAROLL_04, false }, - { MODELPART_DRCAROLL_05, false }, - { MODELPART_DRCAROLL_07, false }, - { MODELPART_DRCAROLL_08, false }, - { MODELPART_DRCAROLL_09, false }, - { MODELPART_DRCAROLL_0A, false }, - { MODELPART_DRCAROLL_0B, false }, + { MODELPART_DRCAROLL_0001, false }, + { MODELPART_DRCAROLL_0002, false }, + { MODELPART_DRCAROLL_0003, false }, + { MODELPART_DRCAROLL_0004, false }, + { MODELPART_DRCAROLL_0005, false }, + { MODELPART_DRCAROLL_0007, false }, + { MODELPART_DRCAROLL_0008, false }, + { MODELPART_DRCAROLL_0009, false }, + { MODELPART_DRCAROLL_000A, false }, + { MODELPART_DRCAROLL_000B, false }, { 255 }, }; + g_Menus[g_MpPlayerNum].partvisibility = vis; g_Menus[g_MpPlayerNum].unk89c = 318; - } else { g_Menus[g_MpPlayerNum].unk89c = 106; } if (bodynum == BODY_THEKING) { static struct modelpartvisibility vis[] = { - { MODELPART_ELVIS_03, false }, + { MODELPART_CHR_0003, false }, { 255 }, }; + g_Menus[g_MpPlayerNum].partvisibility = vis; } diff --git a/src/include/constants.h b/src/include/constants.h index 71a7b53a0..ae11d823b 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -1793,49 +1793,383 @@ #define MODELNODETYPE_HEADSPOT 0x17 #define MODELNODETYPE_DL 0x18 -#define MODELPART_CHR_04 0x04 -#define MODELPART_CHRGUN_00 0x00 -#define MODELPART_CHRGUN_02 0x02 -#define MODELPART_HEAD_SUNGLASSES 0x00 -#define MODELPART_HEAD_HUDPIECE 0x04 -#define MODELPART_00 0x00 -#define MODELPART_LENS 0x00 -#define MODELPART_01 0x01 -#define MODELPART_02 0x02 -#define MODELPART_ROBOTMUZZLEFLASHR 0x02 -#define MODELPART_03 0x03 -#define MODELPART_ROBOTMUZZLEFLASHL 0x03 -#define MODELPART_HUDPIECE 0x04 -#define MODELPART_04 0x04 -#define MODELPART_05 0x05 -#define MODELPART_NECKLACE 0x07 -#define MODELPART_NEWCLIP 0x28 -#define MODELPART_NEWCLIP2 0x29 -#define MODELPART_NEWCLIP3 0x2a -#define MODELPART_NEWCLIP4 0x2b -#define MODELPART_SCOPE 0x2c -#define MODELPART_SILENCER 0x2d -#define MODELPART_2E 0x2e -#define MODELPART_2F 0x2f -#define MODELPART_42 0x42 -#define MODELPART_MUZZLEFLASH 0x5a -#define MODELPART_MUZZLEFLASH2 0x5b -#define MODELPART_MUZZLEFLASH3 0x5c -#define MODELPART_6E 0x6e -#define MODELPART_SKGANGWAY 0xb7 +/** + * Models can contain "parts", which are a list of certain node addresses in the + * model's header. It allows the game to quickly find a certain node in the + * model if it's registered in the parts list. + * + * Parts are identified by a part number, and the mapping is unique to each + * model type. For example, for "chrgun" model types, part number 0 is the + * gunfire starburst. + * + * The game assumes that the part numbers refer to particular node types. + * For example, it assumes that chrgun part 02 is a toggle node. + * + * The names below are in the format MODELPART_{modeltype}_{part}. + * The comment is the node type. + */ +#define MODELPART_AR34_0029 0x0029 // toggle +#define MODELPART_AR34_002A 0x002a // toggle +#define MODELPART_AR34_0032 0x0032 // position +#define MODELPART_AR34_0037 0x0037 // position +#define MODELPART_AR34_003C 0x003c // position +#define MODELPART_AR34_0042 0x0042 // toggle +#define MODELPART_AR34_0050 0x0050 // position +#define MODELPART_AR34_0051 0x0051 // position +#define MODELPART_AR34_005A 0x005a // toggle +#define MODELPART_AUTOGUN_0000 0x0000 // position +#define MODELPART_AUTOGUN_0001 0x0001 // position +#define MODELPART_AUTOGUN_0002 0x0002 // position +#define MODELPART_AUTOGUN_0003 0x0003 // position +#define MODELPART_AUTOGUN_0004 0x0004 // position +#define MODELPART_AUTOGUN_0005 0x0005 // gunfire +#define MODELPART_AUTOGUN_0006 0x0006 // position +#define MODELPART_AUTOGUN_0007 0x0007 // gunfire +#define MODELPART_BASIC_0064 0x0064 // type19 +#define MODELPART_BASIC_0065 0x0065 // type19 +#define MODELPART_BASIC_0066 0x0066 // type19 +#define MODELPART_BASIC_0067 0x0067 // bbox +#define MODELPART_BASIC_00C8 0x00c8 // toggle +#define MODELPART_BASIC_00C9 0x00c9 // toggle +#define MODELPART_BASIC_00CA 0x00ca // toggle +#define MODELPART_BASIC_00CB 0x00cb // toggle +#define MODELPART_BASIC_00CC 0x00cc // toggle +#define MODELPART_BASIC_00CD 0x00cd // toggle +#define MODELPART_BASIC_00CE 0x00ce // toggle +#define MODELPART_BASIC_00CF 0x00cf // toggle +#define MODELPART_BASIC_00D0 0x00d0 // toggle +#define MODELPART_BASIC_00D1 0x00d1 // toggle +#define MODELPART_BASIC_00D2 0x00d2 // toggle +#define MODELPART_BASIC_00D3 0x00d3 // toggle +#define MODELPART_CALLISTO_0028 0x0028 // toggle +#define MODELPART_CALLISTO_0032 0x0032 // position +#define MODELPART_CALLISTO_0037 0x0037 // position +#define MODELPART_CCTV_LENS 0x0000 // position +#define MODELPART_CCTV_0001 0x0001 // dl +#define MODELPART_CCTV_0002 0x0002 // bbox +#define MODELPART_CCTV_0003 0x0003 // toggle +#define MODELPART_CHOPPER_0000 0x0000 // position +#define MODELPART_CHOPPER_0001 0x0001 // position +#define MODELPART_CHOPPER_0002 0x0002 // position +#define MODELPART_CHOPPER_0003 0x0003 // gunfire +#define MODELPART_CHOPPER_0005 0x0005 // toggle +#define MODELPART_CHRGUN_GUNFIRE 0x0000 // gunfire +#define MODELPART_CHRGUN_0001 0x0001 // positionheld +#define MODELPART_CHRGUN_0002 0x0002 // toggle +#define MODELPART_CHR_0000 0x0000 // position +#define MODELPART_CHR_0001 0x0001 // position +#define MODELPART_CHR_0002 0x0002 // position +#define MODELPART_CHR_0003 0x0003 // position +#define MODELPART_CHR_HEADSPOT 0x0004 // headspot +#define MODELPART_CHR_0005 0x0005 // position +#define MODELPART_CHR_0006 0x0006 // position +#define MODELPART_CHR_NECKLACE 0x0007 // toggle +#define MODELPART_CIHUB_0000 0x0000 // dl +#define MODELPART_CIHUB_0001 0x0001 // dl +#define MODELPART_CIHUB_0002 0x0002 // dl +#define MODELPART_CLASSICGUN_0032 0x0032 // position +#define MODELPART_CLASSICGUN_003C 0x003c // positionheld +#define MODELPART_CLASSICGUN_0050 0x0050 // position +#define MODELPART_CLASSICGUN_005A 0x005a // toggle +#define MODELPART_CMP150_002A 0x002a // toggle +#define MODELPART_CMP150_002B 0x002b // toggle +#define MODELPART_CMP150_0032 0x0032 // position +#define MODELPART_CMP150_0037 0x0037 // position +#define MODELPART_CMP150_003C 0x003c // position +#define MODELPART_CMP150_0042 0x0042 // toggle +#define MODELPART_CMP150_0046 0x0046 // toggle +#define MODELPART_CMP150_0047 0x0047 // toggle +#define MODELPART_CMP150_0050 0x0050 // position +#define MODELPART_CMP150_0051 0x0051 // position +#define MODELPART_CMP150_005A 0x005a // toggle +#define MODELPART_CROSSBOW_0028 0x0028 // toggle +#define MODELPART_CROSSBOW_0029 0x0029 // toggle +#define MODELPART_CROSSBOW_002A 0x002a // toggle +#define MODELPART_CROSSBOW_0037 0x0037 // position +#define MODELPART_CROSSBOW_0042 0x0042 // toggle +#define MODELPART_CYCLONE_0028 0x0028 // toggle +#define MODELPART_CYCLONE_0032 0x0032 // position +#define MODELPART_CYCLONE_0037 0x0037 // position +#define MODELPART_CYCLONE_0050 0x0050 // position +#define MODELPART_CYCLONE_0051 0x0051 // position +#define MODELPART_CYCLONE_005A 0x005a // toggle +#define MODELPART_DEVASTATOR_0028 0x0028 // position +#define MODELPART_DEVASTATOR_0029 0x0029 // toggle +#define MODELPART_DEVASTATOR_002A 0x002a // toggle +#define MODELPART_DEVASTATOR_0037 0x0037 // position +#define MODELPART_DEVASTATOR_0064 0x0064 // toggle +#define MODELPART_DEVASTATOR_0065 0x0065 // toggle +#define MODELPART_DEVASTATOR_0066 0x0066 // toggle +#define MODELPART_DEVASTATOR_0067 0x0067 // toggle +#define MODELPART_DEVASTATOR_0068 0x0068 // toggle +#define MODELPART_DEVASTATOR_0069 0x0069 // toggle +#define MODELPART_DEVASTATOR_006A 0x006a // toggle +#define MODELPART_DEVASTATOR_006B 0x006b // toggle +#define MODELPART_DRAGON_0028 0x0028 // toggle +#define MODELPART_DRAGON_002A 0x002a // toggle +#define MODELPART_DRAGON_0032 0x0032 // position +#define MODELPART_DRAGON_0037 0x0037 // position +#define MODELPART_DRAGON_003C 0x003c // position +#define MODELPART_DRAGON_0042 0x0042 // toggle +#define MODELPART_DRAGON_0050 0x0050 // position +#define MODELPART_DRAGON_0051 0x0051 // position +#define MODELPART_DRAGON_0052 0x0052 // position +#define MODELPART_DRAGON_005A 0x005a // toggle +#define MODELPART_DRCAROLL_0000 0x0000 // toggle +#define MODELPART_DRCAROLL_0001 0x0001 // toggle +#define MODELPART_DRCAROLL_0002 0x0002 // toggle +#define MODELPART_DRCAROLL_0003 0x0003 // toggle +#define MODELPART_DRCAROLL_0004 0x0004 // toggle +#define MODELPART_DRCAROLL_0005 0x0005 // toggle +#define MODELPART_DRCAROLL_0006 0x0006 // toggle +#define MODELPART_DRCAROLL_0007 0x0007 // toggle +#define MODELPART_DRCAROLL_0008 0x0008 // toggle +#define MODELPART_DRCAROLL_0009 0x0009 // toggle +#define MODELPART_DRCAROLL_000A 0x000a // toggle +#define MODELPART_DRCAROLL_000B 0x000b // toggle +#define MODELPART_DROPSHIP_0064 0x0064 // type19 +#define MODELPART_DROPSHIP_INTERIOR 0x006e // toggle +#define MODELPART_ECMMINE_0037 0x0037 // position +#define MODELPART_FALCON2_002A 0x002a // toggle +#define MODELPART_FALCON2_002B 0x002b // toggle +#define MODELPART_FALCON2_SCOPE 0x002c // toggle +#define MODELPART_FALCON2_SILENCER 0x002d // toggle +#define MODELPART_FALCON2_002E 0x002e // toggle +#define MODELPART_FALCON2_002F 0x002f // toggle +#define MODELPART_FALCON2_0032 0x0032 // position +#define MODELPART_FALCON2_0033 0x0033 // position +#define MODELPART_FALCON2_0034 0x0034 // position +#define MODELPART_FALCON2_0037 0x0037 // position +#define MODELPART_FALCON2_003C 0x003c // position +#define MODELPART_FALCON2_0042 0x0042 // toggle +#define MODELPART_FALCON2_0050 0x0050 // position +#define MODELPART_FALCON2_0051 0x0051 // position +#define MODELPART_FALCON2_005A 0x005a // toggle +#define MODELPART_FARSIGHT_0028 0x0028 // toggle +#define MODELPART_FARSIGHT_0032 0x0032 // position +#define MODELPART_FARSIGHT_0037 0x0037 // position +#define MODELPART_GRENADE_002B 0x002b // position +#define MODELPART_GRENADE_0037 0x0037 // position +#define MODELPART_GRENADE_0064 0x0064 // toggle +#define MODELPART_HAND_0035 0x0035 // toggle +#define MODELPART_HAND_0036 0x0036 // toggle +#define MODELPART_HEAD_SUNGLASSES 0x0000 // toggle +#define MODELPART_HEAD_0001 0x0001 // toggle +#define MODELPART_HEAD_EYESOPEN 0x0002 // toggle +#define MODELPART_HEAD_EYESCLOSED 0x0003 // toggle +#define MODELPART_HEAD_HUDPIECE 0x0004 // toggle +#define MODELPART_HEAD_0190 0x0190 // dl +#define MODELPART_HEAD_0191 0x0191 // dl +#define MODELPART_HOVERBIKE_0064 0x0064 // type19 +#define MODELPART_HUDPIECE_0000 0x0000 // gundl +#define MODELPART_HUDPIECE_0001 0x0001 // position +#define MODELPART_HUDPIECE_0002 0x0002 // position +#define MODELPART_JOYPAD_0000 0x0000 // position +#define MODELPART_JOYPAD_0001 0x0001 // position +#define MODELPART_JOYPAD_0002 0x0002 // position +#define MODELPART_JOYPAD_0003 0x0003 // position +#define MODELPART_JOYPAD_0004 0x0004 // position +#define MODELPART_JOYPAD_0005 0x0005 // position +#define MODELPART_JOYPAD_0006 0x0006 // position +#define MODELPART_JOYPAD_0007 0x0007 // position +#define MODELPART_JOYPAD_0008 0x0008 // position +#define MODELPART_JOYPAD_0009 0x0009 // position +#define MODELPART_JOYPAD_000A 0x000a // position +#define MODELPART_JOYPAD_000B 0x000b // position +#define MODELPART_JOYPAD_000C 0x000c // position +#define MODELPART_JOYPAD_000D 0x000d // toggle +#define MODELPART_K7AVENGER_0029 0x0029 // toggle +#define MODELPART_K7AVENGER_002A 0x002a // toggle +#define MODELPART_K7AVENGER_0032 0x0032 // position +#define MODELPART_K7AVENGER_0037 0x0037 // position +#define MODELPART_K7AVENGER_003C 0x003c // position +#define MODELPART_K7AVENGER_0042 0x0042 // toggle +#define MODELPART_K7AVENGER_0050 0x0050 // position +#define MODELPART_K7AVENGER_0051 0x0051 // position +#define MODELPART_K7AVENGER_005A 0x005a // toggle +#define MODELPART_KNIFE_0037 0x0037 // position +#define MODELPART_KNIFE_0064 0x0064 // toggle +#define MODELPART_LAPTOPGUN_0029 0x0029 // toggle +#define MODELPART_LAPTOPGUN_002A 0x002a // toggle +#define MODELPART_LAPTOPGUN_0032 0x0032 // position +#define MODELPART_LAPTOPGUN_0037 0x0037 // position +#define MODELPART_LAPTOPGUN_0050 0x0050 // position +#define MODELPART_LAPTOPGUN_0051 0x0051 // position +#define MODELPART_LAPTOPGUN_005A 0x005a // toggle +#define MODELPART_LASER_0032 0x0032 // position +#define MODELPART_LASER_0037 0x0037 // position +#define MODELPART_LASER_0041 0x0041 // gundl +#define MODELPART_LASER_0042 0x0042 // toggle +#define MODELPART_LIFT_0000 0x0000 // bbox +#define MODELPART_LIFT_0001 0x0001 // type19 +#define MODELPART_LIFT_0002 0x0002 // type19 +#define MODELPART_LIFT_0003 0x0003 // type19 +#define MODELPART_LIFT_0004 0x0004 // type19 +#define MODELPART_LIFT_0005 0x0005 // type19 +#define MODELPART_LIFT_0006 0x0006 // type19 +#define MODELPART_LOGO_0000 0x0000 // toggle +#define MODELPART_LOGO_0001 0x0001 // toggle +#define MODELPART_LOGO_0002 0x0002 // dl +#define MODELPART_LOGO_0003 0x0003 // dl +#define MODELPART_LOGO_0004 0x0004 // dl +#define MODELPART_LOGO_0005 0x0005 // dl +#define MODELPART_LOGO_0006 0x0006 // dl +#define MODELPART_LOGO_0007 0x0007 // dl +#define MODELPART_LOGO_0008 0x0008 // dl +#define MODELPART_LOGO_0009 0x0009 // dl +#define MODELPART_LOGO_0110 0x0110 // toggle +#define MODELPART_LOGO_0500 0x0500 // toggle +#define MODELPART_LOGO_4040 0x4040 // dl +#define MODELPART_MAGNUM_000A 0x000a // position +#define MODELPART_MAGNUM_000B 0x000b // position +#define MODELPART_MAGNUM_000C 0x000c // position +#define MODELPART_MAGNUM_000D 0x000d // position +#define MODELPART_MAGNUM_000E 0x000e // position +#define MODELPART_MAGNUM_000F 0x000f // position +#define MODELPART_MAGNUM_0028 0x0028 // toggle +#define MODELPART_MAGNUM_0029 0x0029 // toggle +#define MODELPART_MAGNUM_002A 0x002a // toggle +#define MODELPART_MAGNUM_002B 0x002b // toggle +#define MODELPART_MAGNUM_002C 0x002c // toggle +#define MODELPART_MAGNUM_002D 0x002d // toggle +#define MODELPART_MAGNUM_0032 0x0032 // position +#define MODELPART_MAGNUM_0037 0x0037 // position +#define MODELPART_MAGNUM_0042 0x0042 // toggle +#define MODELPART_MAGNUM_0050 0x0050 // position +#define MODELPART_MAGNUM_0051 0x0051 // position +#define MODELPART_MAGNUM_005A 0x005a // toggle +#define MODELPART_MAIANUFO_0064 0x0064 // type19 +#define MODELPART_MAULER_002A 0x002a // toggle +#define MODELPART_MAULER_002B 0x002b // toggle +#define MODELPART_MAULER_0032 0x0032 // position +#define MODELPART_MAULER_0033 0x0033 // position +#define MODELPART_MAULER_0037 0x0037 // position +#define MODELPART_MAULER_0050 0x0050 // position +#define MODELPART_MAULER_005A 0x005a // toggle +#define MODELPART_PHOENIX_0028 0x0028 // toggle +#define MODELPART_PHOENIX_0032 0x0032 // position +#define MODELPART_PHOENIX_0037 0x0037 // position +#define MODELPART_PHOENIX_0042 0x0042 // toggle +#define MODELPART_PISTOL_0029 0x0029 // toggle +#define MODELPART_PISTOL_002A 0x002a // toggle +#define MODELPART_PISTOL_0032 0x0032 // position +#define MODELPART_PISTOL_0033 0x0033 // position +#define MODELPART_PISTOL_0037 0x0037 // position +#define MODELPART_PISTOL_003C 0x003c // position +#define MODELPART_PISTOL_0042 0x0042 // toggle +#define MODELPART_PISTOL_0050 0x0050 // position +#define MODELPART_PISTOL_005A 0x005a // toggle +#define MODELPART_RARELOGO_000B 0x000b // toggle +#define MODELPART_RARELOGO_000C 0x000c // toggle +#define MODELPART_RARELOGO_000D 0x000d // toggle +#define MODELPART_RCP120_0028 0x0028 // toggle +#define MODELPART_RCP120_0029 0x0029 // toggle +#define MODELPART_RCP120_0032 0x0032 // position +#define MODELPART_RCP120_0037 0x0037 // position +#define MODELPART_RCP120_003C 0x003c // position +#define MODELPART_RCP120_0042 0x0042 // toggle +#define MODELPART_RCP120_0050 0x0050 // position +#define MODELPART_RCP120_0051 0x0051 // position +#define MODELPART_RCP120_005A 0x005a // toggle +#define MODELPART_REAPER_001E 0x001e // position +#define MODELPART_REAPER_001F 0x001f // position +#define MODELPART_REAPER_0020 0x0020 // position +#define MODELPART_REAPER_002A 0x002a // toggle +#define MODELPART_REAPER_002B 0x002b // toggle +#define MODELPART_REAPER_002C 0x002c // position +#define MODELPART_REAPER_002D 0x002d // position +#define MODELPART_REAPER_002E 0x002e // position +#define MODELPART_REAPER_002F 0x002f // position +#define MODELPART_REAPER_0030 0x0030 // position +#define MODELPART_REAPER_0031 0x0031 // position +#define MODELPART_REAPER_0037 0x0037 // position +#define MODELPART_REAPER_0042 0x0042 // toggle +#define MODELPART_REAPER_0050 0x0050 // position +#define MODELPART_REAPER_0051 0x0051 // position +#define MODELPART_REAPER_0052 0x0052 // position +#define MODELPART_REAPER_005A 0x005a // toggle +#define MODELPART_REAPER_005B 0x005b // toggle +#define MODELPART_REAPER_005C 0x005c // toggle +#define MODELPART_REMOTEMINE_0028 0x0028 // toggle +#define MODELPART_REMOTEMINE_0029 0x0029 // toggle +#define MODELPART_REMOTEMINE_002A 0x002a // position +#define MODELPART_REMOTEMINE_0037 0x0037 // position +#define MODELPART_ROBOT_0000 0x0000 // position +#define MODELPART_ROBOT_0001 0x0001 // position +#define MODELPART_ROBOT_RGUNFIRE 0x0002 // gunfire +#define MODELPART_ROBOT_LGUNFIRE 0x0003 // gunfire +#define MODELPART_ROBOT_0004 0x0004 // toggle +#define MODELPART_ROCKET_0028 0x0028 // toggle +#define MODELPART_ROCKET_0032 0x0032 // position +#define MODELPART_ROCKET_0037 0x0037 // position +#define MODELPART_ROCKET_0042 0x0042 // toggle +#define MODELPART_SHOTGUN_002B 0x002b // toggle +#define MODELPART_SHOTGUN_0032 0x0032 // position +#define MODELPART_SHOTGUN_0037 0x0037 // position +#define MODELPART_SHOTGUN_003C 0x003c // position +#define MODELPART_SHOTGUN_0042 0x0042 // toggle +#define MODELPART_SHOTGUN_0050 0x0050 // position +#define MODELPART_SHOTGUN_005A 0x005a // toggle +#define MODELPART_SKSHUTTLE_GANGWAY 0x00b7 // toggle +#define MODELPART_SKEDAR_0000 0x0000 // position +#define MODELPART_SKEDAR_0001 0x0001 // position +#define MODELPART_SKEDAR_0002 0x0002 // position +#define MODELPART_SKEDAR_0003 0x0003 // position +#define MODELPART_SKEDAR_EYESOPEN 0x0004 // toggle +#define MODELPART_SKEDAR_EYESCLOSED 0x0005 // toggle +#define MODELPART_SLAYERROCKET_0032 0x0032 // position +#define MODELPART_SLAYERROCKET_0037 0x0037 // position +#define MODELPART_SLAYERROCKET_0042 0x0042 // toggle +#define MODELPART_SNIPERRIFLE_0028 0x0028 // toggle +#define MODELPART_SNIPERRIFLE_0029 0x0029 // toggle +#define MODELPART_SNIPERRIFLE_002A 0x002a // position +#define MODELPART_SNIPERRIFLE_002B 0x002b // position +#define MODELPART_SNIPERRIFLE_002C 0x002c // position +#define MODELPART_SNIPERRIFLE_002D 0x002d // position +#define MODELPART_SNIPERRIFLE_0032 0x0032 // position +#define MODELPART_SNIPERRIFLE_0037 0x0037 // position +#define MODELPART_SNIPERRIFLE_003C 0x003c // position +#define MODELPART_SNIPERRIFLE_0042 0x0042 // toggle +#define MODELPART_SUPERDRAGON_0028 0x0028 // toggle +#define MODELPART_SUPERDRAGON_0029 0x0029 // toggle +#define MODELPART_SUPERDRAGON_002A 0x002a // toggle +#define MODELPART_SUPERDRAGON_002B 0x002b // toggle +#define MODELPART_SUPERDRAGON_0032 0x0032 // position +#define MODELPART_SUPERDRAGON_0037 0x0037 // position +#define MODELPART_SUPERDRAGON_003C 0x003c // position +#define MODELPART_SUPERDRAGON_0042 0x0042 // toggle +#define MODELPART_SUPERDRAGON_0050 0x0050 // position +#define MODELPART_SUPERDRAGON_0051 0x0051 // position +#define MODELPART_SUPERDRAGON_0052 0x0052 // position +#define MODELPART_SUPERDRAGON_005A 0x005a // toggle +#define MODELPART_TERMINAL_0000 0x0000 // dl +#define MODELPART_TIMEDPROXYMINE_0037 0x0037 // position +#define MODELPART_TRANQUILIZER_0028 0x0028 // toggle +#define MODELPART_TRANQUILIZER_0029 0x0029 // toggle +#define MODELPART_TRANQUILIZER_002A 0x002a // toggle +#define MODELPART_TRANQUILIZER_002B 0x002b // position +#define MODELPART_TRANQUILIZER_0032 0x0032 // position +#define MODELPART_TRANQUILIZER_0037 0x0037 // position +#define MODELPART_TRANQUILIZER_0042 0x0042 // toggle +#define MODELPART_UPLINK_0037 0x0037 // position +#define MODELPART_UZI_0032 0x0032 // position +#define MODELPART_UZI_003C 0x003c // positionheld +#define MODELPART_UZI_0050 0x0050 // position +#define MODELPART_UZI_0051 0x0051 // position +#define MODELPART_UZI_005A 0x005a // toggle +#define MODELPART_WINDOWEDDOOR_0000 0x0000 // bbox +#define MODELPART_WINDOWEDDOOR_0001 0x0001 // toggle +#define MODELPART_WINDOWEDDOOR_0002 0x0002 // bbox +#define MODELPART_WINDOWEDDOOR_0003 0x0003 // dl -#define MODELPART_DRCAROLL_01 0x01 -#define MODELPART_DRCAROLL_02 0x02 -#define MODELPART_DRCAROLL_03 0x03 -#define MODELPART_DRCAROLL_04 0x04 -#define MODELPART_DRCAROLL_05 0x05 -#define MODELPART_DRCAROLL_07 0x07 -#define MODELPART_DRCAROLL_08 0x08 -#define MODELPART_DRCAROLL_09 0x09 -#define MODELPART_DRCAROLL_0A 0x0a -#define MODELPART_DRCAROLL_0B 0x0b - -#define MODELPART_ELVIS_03 0x03 +// Unsure which model types these are for +#define MODELPART_0000 0x0000 +#define MODELPART_0001 0x0001 +#define MODELPART_0002 0x0002 +#define MODELPART_0003 0x0003 +#define MODELPART_0035 0x0035 +#define MODELPART_0036 0x0036 +#define MODELPART_0042 0x0042 #define MODELTYPE_BASIC 0x02 #define MODELTYPE_CHRGUN 0x03 @@ -1883,7 +2217,7 @@ #define MODELTYPE_CABLECAR 0x3c #define MODELTYPE_SUBMARINE 0x43 #define MODELTYPE_MAIANUFO 0x44 -#define MODELTYPE_SKEDARSHUTTLE 0x45 +#define MODELTYPE_SKSHUTTLE 0x45 #define MODELTYPE_CMP150 0x46 #define MODELTYPE_DRAGON 0x47 #define MODELTYPE_SUPERDRAGON 0x48 diff --git a/src/include/data.h b/src/include/data.h index 8e10fdd8f..285a5d3ff 100644 --- a/src/include/data.h +++ b/src/include/data.h @@ -351,7 +351,7 @@ extern u8 unregistered_function2[]; extern u8 unregistered_function3[]; extern struct ailist g_GlobalAilists[]; extern struct modeltype g_ModelTypeDropship; -extern struct modeltype g_ModelTypeSkedarShuttle; +extern struct modeltype g_ModelTypeSkShuttle; extern struct modeltype g_ModelTypeLift; extern struct modeltype g_ModelTypeCctv; extern struct modeltype g_ModelTypeTerminal; diff --git a/src/include/game/propobj.h b/src/include/game/propobj.h index 45cfbc8c6..b387247bf 100644 --- a/src/include/game/propobj.h +++ b/src/include/game/propobj.h @@ -195,7 +195,7 @@ void chopperTickAttackMode1(struct prop *chopper); void hovercarTick(struct prop *hovercar); void hoverpropTick(struct prop *hoverprop, bool arg1); void hoverbikeTick(struct prop *hoverbike, bool arg1); -void func0f07e058(struct prop *prop); +void dropshipUpdateInterior(struct prop *prop); void func0f07e0b8(struct prop *glass, s32 playercount, bool *arg2); u32 func0f07e184(void); u32 func0f07e1fc(void);