Add CGunWeapon

This commit is contained in:
Henrique Gemignani Passos Lima 2022-11-25 14:41:28 +02:00
parent 3bcfd86d48
commit edbfd0d305
No known key found for this signature in database
GPG Key ID: E224F951761145F8
38 changed files with 1099 additions and 175 deletions

View File

@ -97,8 +97,8 @@ ClearPointGeneratorFunc__13CSkinnedModelFv:
/* 8035270C 0034F66C 90 0D AA 30 */ stw r0, lbl_805A95F0@sda21(r13)
/* 80352710 0034F670 4E 80 00 20 */ blr
.global SetPointGeneratorFunc__13CSkinnedModelFUiPFUiPC9CVector3fPC9CVector3fi_v
SetPointGeneratorFunc__13CSkinnedModelFUiPFUiPC9CVector3fPC9CVector3fi_v:
.global SetPointGeneratorFunc__13CSkinnedModelFPvPFPvPC9CVector3fPC9CVector3fi_v
SetPointGeneratorFunc__13CSkinnedModelFPvPFPvPC9CVector3fPC9CVector3fi_v:
/* 80352714 0034F674 90 8D AA 30 */ stw r4, lbl_805A95F0@sda21(r13)
/* 80352718 0034F678 90 6D AA 34 */ stw r3, lbl_805A95F4@sda21(r13)
/* 8035271C 0034F67C 4E 80 00 20 */ blr

View File

@ -1123,7 +1123,7 @@ SetupHook__20CActorModelParticlesCF9TUniqueId:
/* 801E47AC 001E170C 3C 80 80 1E */ lis r4, PointGenerator__20CActorModelParticlesFUiPC9CVector3fPC9CVector3fi@ha
/* 801E47B0 001E1710 38 63 00 08 */ addi r3, r3, 8
/* 801E47B4 001E1714 38 84 4E 20 */ addi r4, r4, PointGenerator__20CActorModelParticlesFUiPC9CVector3fPC9CVector3fi@l
/* 801E47B8 001E1718 48 16 DF 5D */ bl SetPointGeneratorFunc__13CSkinnedModelFUiPFUiPC9CVector3fPC9CVector3fi_v
/* 801E47B8 001E1718 48 16 DF 5D */ bl SetPointGeneratorFunc__13CSkinnedModelFPvPFPvPC9CVector3fPC9CVector3fi_v
lbl_801E47BC:
/* 801E47BC 001E171C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 801E47C0 001E1720 83 E1 00 1C */ lwz r31, 0x1c(r1)

View File

@ -1334,7 +1334,7 @@ lbl_80115DF4:
/* 80115E28 00112D88 4B F1 6B 51 */ bl "SetupRender__9CAnimDataCFRC13CSkinnedModelRCQ24rstl37optional_object<18CVertexMorphEffect>PCf"
/* 80115E2C 00112D8C 38 61 00 A4 */ addi r3, r1, 0xa4
/* 80115E30 00112D90 38 80 FF FF */ li r4, -1
/* 80115E34 00112D94 4B F6 1E 59 */ bl sub_80077c8c
/* 80115E34 00112D94 4B F6 1E 59 */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
/* 80115E38 00112D98 3C 60 80 11 */ lis r3, MultipassDrawCallback__10CModelDataFPCfPCfPC21SMultipassDrawContext@ha
/* 80115E3C 00112D9C 93 C1 00 08 */ stw r30, 8(r1)
/* 80115E40 00112DA0 38 83 64 48 */ addi r4, r3, MultipassDrawCallback__10CModelDataFPCfPCfPC21SMultipassDrawContext@l
@ -1412,7 +1412,7 @@ MultiLightingDraw__10CModelDataF11EWhichModelRC12CTransform4fPC12CActorLightsRC6
/* 80115F44 00112EA4 4B F1 6A 35 */ bl "SetupRender__9CAnimDataCFRC13CSkinnedModelRCQ24rstl37optional_object<18CVertexMorphEffect>PCf"
/* 80115F48 00112EA8 38 61 00 B8 */ addi r3, r1, 0xb8
/* 80115F4C 00112EAC 38 80 FF FF */ li r4, -1
/* 80115F50 00112EB0 4B F6 1D 3D */ bl sub_80077c8c
/* 80115F50 00112EB0 4B F6 1D 3D */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
/* 80115F54 00112EB4 80 1F 00 0C */ lwz r0, 0xc(r31)
/* 80115F58 00112EB8 3C 60 80 11 */ lis r3, MultiLightingDrawCallback__10CModelDataFPCfPCfPC25SMultiLightingDrawContext@ha
/* 80115F5C 00112EBC 38 83 64 B8 */ addi r4, r3, MultiLightingDrawCallback__10CModelDataFPCfPCfPC25SMultiLightingDrawContext@l
@ -1444,8 +1444,8 @@ lbl_80115FB0:
/* 80115FBC 00112F1C 38 21 01 20 */ addi r1, r1, 0x120
/* 80115FC0 00112F20 4E 80 00 20 */ blr
.global FlatDraw__10CModelDataF11EWhichModelRC12CTransform4fbRC11CModelFlags
FlatDraw__10CModelDataF11EWhichModelRC12CTransform4fbRC11CModelFlags:
.global FlatDraw__10CModelDataCF11EWhichModelRC12CTransform4fbRC11CModelFlags
FlatDraw__10CModelDataCF11EWhichModelRC12CTransform4fbRC11CModelFlags:
/* 80115FC4 00112F24 94 21 FE F0 */ stwu r1, -0x110(r1)
/* 80115FC8 00112F28 7C 08 02 A6 */ mflr r0
/* 80115FCC 00112F2C 90 01 01 14 */ stw r0, 0x114(r1)
@ -1488,7 +1488,7 @@ FlatDraw__10CModelDataF11EWhichModelRC12CTransform4fbRC11CModelFlags:
/* 80116060 00112FC0 4B F1 69 19 */ bl "SetupRender__9CAnimDataCFRC13CSkinnedModelRCQ24rstl37optional_object<18CVertexMorphEffect>PCf"
/* 80116064 00112FC4 38 61 00 A4 */ addi r3, r1, 0xa4
/* 80116068 00112FC8 38 80 FF FF */ li r4, -1
/* 8011606C 00112FCC 4B F6 1C 21 */ bl sub_80077c8c
/* 8011606C 00112FCC 4B F6 1C 21 */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
/* 80116070 00112FD0 3C 60 80 11 */ lis r3, FlatDrawCallback__10CModelDataFPCfPCfPC16SFlatDrawContext@ha
/* 80116074 00112FD4 93 E1 00 08 */ stw r31, 8(r1)
/* 80116078 00112FD8 38 83 66 40 */ addi r4, r3, FlatDrawCallback__10CModelDataFPCfPCfPC16SFlatDrawContext@l
@ -1604,7 +1604,7 @@ DisintegrateDraw__10CModelDataF11EWhichModelRC12CTransform4fRC8CTextureRC6CColor
/* 80116210 00113170 4B F1 67 69 */ bl "SetupRender__9CAnimDataCFRC13CSkinnedModelRCQ24rstl37optional_object<18CVertexMorphEffect>PCf"
/* 80116214 00113174 38 61 00 C0 */ addi r3, r1, 0xc0
/* 80116218 00113178 38 80 FF FF */ li r4, -1
/* 8011621C 0011317C 4B F6 1A 71 */ bl sub_80077c8c
/* 8011621C 0011317C 4B F6 1A 71 */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
/* 80116220 00113180 80 1E 00 00 */ lwz r0, 0(r30)
/* 80116224 00113184 3C 60 80 11 */ lis r3, DisintegrateDrawCallback__10CModelDataFPCfPCfPC22SOneTextureDrawContext@ha
/* 80116228 00113188 38 83 66 8C */ addi r4, r3, DisintegrateDrawCallback__10CModelDataFPCfPCfPC22SOneTextureDrawContext@l
@ -1684,7 +1684,7 @@ RenderThermal__10CModelDataCFRC12CTransform4fRC6CColorRC6CColorRC11CModelFlags:
/* 8011633C 0011329C 4B F1 66 3D */ bl "SetupRender__9CAnimDataCFRC13CSkinnedModelRCQ24rstl37optional_object<18CVertexMorphEffect>PCf"
/* 80116340 001132A0 38 61 00 98 */ addi r3, r1, 0x98
/* 80116344 001132A4 38 80 FF FF */ li r4, -1
/* 80116348 001132A8 4B F6 19 45 */ bl sub_80077c8c
/* 80116348 001132A8 4B F6 19 45 */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
/* 8011634C 001132AC 7F E3 FB 78 */ mr r3, r31
/* 80116350 001132B0 7F 84 E3 78 */ mr r4, r28
/* 80116354 001132B4 7F A5 EB 78 */ mr r5, r29
@ -2143,7 +2143,7 @@ lbl_80116984:
/* 801169B8 00113918 4B F1 5F 65 */ bl "Render__9CAnimDataCFRC13CSkinnedModelRC11CModelFlagsRCQ24rstl37optional_object<18CVertexMorphEffect>PCf"
/* 801169BC 0011391C 38 61 00 A0 */ addi r3, r1, 0xa0
/* 801169C0 00113920 38 80 FF FF */ li r4, -1
/* 801169C4 00113924 4B F6 12 C9 */ bl sub_80077c8c
/* 801169C4 00113924 4B F6 12 C9 */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
/* 801169C8 00113928 48 00 00 40 */ b lbl_80116A08
lbl_801169CC:
/* 801169CC 0011392C 88 1F 00 28 */ lbz r0, 0x28(r31)

View File

@ -684,7 +684,7 @@ RenderShadowBuffer__16CProjectedShadowFR13CStateManagerRC10CModelDataRC12CTransf
/* 8029E0BC 0029B01C 4B D8 E8 BD */ bl "SetupRender__9CAnimDataCFRC13CSkinnedModelRCQ24rstl37optional_object<18CVertexMorphEffect>PCf"
/* 8029E0C0 0029B020 38 61 01 64 */ addi r3, r1, 0x164
/* 8029E0C4 0029B024 38 80 FF FF */ li r4, -1
/* 8029E0C8 0029B028 4B DD 9B C5 */ bl sub_80077c8c
/* 8029E0C8 0029B028 4B DD 9B C5 */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
/* 8029E0CC 0029B02C 7F 60 00 34 */ cntlzw r0, r27
/* 8029E0D0 0029B030 C0 59 00 00 */ lfs f2, 0(r25)
/* 8029E0D4 0029B034 C0 39 00 04 */ lfs f1, 4(r25)

View File

@ -3822,7 +3822,7 @@ lbl_800DDC60:
/* 800DDC70 000DABD0 4B FF F9 85 */ bl BuildSuitModelData1__10CSamusDollFQ212CPlayerState11EPlayerSuit
/* 800DDC74 000DABD4 38 7A 00 C8 */ addi r3, r26, 0xc8
/* 800DDC78 000DABD8 38 81 00 D8 */ addi r4, r1, 0xd8
/* 800DDC7C 000DABDC 48 00 01 FD */ bl sub_800dde78
/* 800DDC7C 000DABDC 48 00 01 FD */ bl "__as__Q24rstl29optional_object<10CModelData>FRC10CModelData"
/* 800DDC80 000DABE0 38 61 00 D8 */ addi r3, r1, 0xd8
/* 800DDC84 000DABE4 38 80 FF FF */ li r4, -1
/* 800DDC88 000DABE8 48 03 8D C5 */ bl __dt__10CModelDataFv
@ -3895,7 +3895,7 @@ lbl_800DDD70:
/* 800DDD88 000DACE8 4B FF F7 65 */ bl BuildSuitModelDataBoots__10CSamusDollFQ212CPlayerState11EPlayerSuit
/* 800DDD8C 000DACEC 38 7A 01 34 */ addi r3, r26, 0x134
/* 800DDD90 000DACF0 38 81 00 8C */ addi r4, r1, 0x8c
/* 800DDD94 000DACF4 48 00 00 E5 */ bl sub_800dde78
/* 800DDD94 000DACF4 48 00 00 E5 */ bl "__as__Q24rstl29optional_object<10CModelData>FRC10CModelData"
/* 800DDD98 000DACF8 38 61 00 8C */ addi r3, r1, 0x8c
/* 800DDD9C 000DACFC 38 80 FF FF */ li r4, -1
/* 800DDDA0 000DAD00 48 03 8C AD */ bl __dt__10CModelDataFv
@ -3934,7 +3934,7 @@ lbl_800DDDC0:
/* 800DDE20 000DAD80 48 03 8D 35 */ bl __ct__10CModelDataFRC8CAnimRes
/* 800DDE24 000DAD84 38 7A 01 84 */ addi r3, r26, 0x184
/* 800DDE28 000DAD88 38 81 00 40 */ addi r4, r1, 0x40
/* 800DDE2C 000DAD8C 48 00 00 4D */ bl sub_800dde78
/* 800DDE2C 000DAD8C 48 00 00 4D */ bl "__as__Q24rstl29optional_object<10CModelData>FRC10CModelData"
/* 800DDE30 000DAD90 38 61 00 40 */ addi r3, r1, 0x40
/* 800DDE34 000DAD94 38 80 FF FF */ li r4, -1
/* 800DDE38 000DAD98 48 03 8C 15 */ bl __dt__10CModelDataFv
@ -3955,8 +3955,8 @@ lbl_800DDE64:
/* 800DDE70 000DADD0 38 21 01 90 */ addi r1, r1, 0x190
/* 800DDE74 000DADD4 4E 80 00 20 */ blr
.global sub_800dde78
sub_800dde78:
.global "__as__Q24rstl29optional_object<10CModelData>FRC10CModelData"
"__as__Q24rstl29optional_object<10CModelData>FRC10CModelData":
/* 800DDE78 000DADD8 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 800DDE7C 000DADDC 7C 08 02 A6 */ mflr r0
/* 800DDE80 000DADE0 90 01 00 14 */ stw r0, 0x14(r1)

View File

@ -40,7 +40,7 @@ lbl_805A789C:
.section .bss
.balign 8
.lcomm lbl_8046C7D0, 0x78, 4
.comm lbl_805719E8, 0xD4, 4
.comm skChargedShotCameraShakeData__16CCameraShakeData, 0xD4, 4
.comm lbl_80571ABC, 0xD4, 4 # MWCC .comm bug
.comm lbl_80571B90, 0xD4, 4
@ -1476,12 +1476,12 @@ __sinit_CCameraShakeData_cpp:
/* 8015DD54 0015ACB4 4B FF F4 FD */ bl __ct__22CCameraShakerComponentFiRC17SCameraShakePointRC17SCameraShakePoint
/* 8015DD58 0015ACB8 38 61 00 BC */ addi r3, r1, 0xbc
/* 8015DD5C 0015ACBC 4B FF F3 D5 */ bl __ct__22CCameraShakerComponentFv
/* 8015DD60 0015ACC0 3C 60 80 57 */ lis r3, lbl_805719E8@ha
/* 8015DD60 0015ACC0 3C 60 80 57 */ lis r3, skChargedShotCameraShakeData__16CCameraShakeData@ha
/* 8015DD64 0015ACC4 3C 80 80 5A */ lis r4, sZeroVector__9CVector3f@ha
/* 8015DD68 0015ACC8 38 A4 66 A0 */ addi r5, r4, sZeroVector__9CVector3f@l
/* 8015DD6C 0015ACCC C0 22 9F 18 */ lfs f1, lbl_805ABC38@sda21(r2)
/* 8015DD70 0015ACD0 C0 42 9E F4 */ lfs f2, lbl_805ABC14@sda21(r2)
/* 8015DD74 0015ACD4 38 63 19 E8 */ addi r3, r3, lbl_805719E8@l
/* 8015DD74 0015ACD4 38 63 19 E8 */ addi r3, r3, skChargedShotCameraShakeData__16CCameraShakeData@l
/* 8015DD78 0015ACD8 38 C1 01 34 */ addi r6, r1, 0x134
/* 8015DD7C 0015ACDC 38 E1 00 F8 */ addi r7, r1, 0xf8
/* 8015DD80 0015ACE0 39 01 00 BC */ addi r8, r1, 0xbc

View File

@ -5023,7 +5023,7 @@ Render__12COmegaPirateCFRC13CStateManager:
/* 8028F518 0028C478 4B D9 D4 05 */ bl "Render__9CAnimDataCFRC13CSkinnedModelRC11CModelFlagsRCQ24rstl37optional_object<18CVertexMorphEffect>PCf"
/* 8028F51C 0028C47C 38 61 01 20 */ addi r3, r1, 0x120
/* 8028F520 0028C480 38 80 FF FF */ li r4, -1
/* 8028F524 0028C484 4B DE 87 69 */ bl sub_80077c8c
/* 8028F524 0028C484 4B DE 87 69 */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
lbl_8028F528:
/* 8028F528 0028C488 88 1E 09 A0 */ lbz r0, 0x9a0(r30)
/* 8028F52C 0028C48C 28 00 00 00 */ cmplwi r0, 0
@ -5081,7 +5081,7 @@ lbl_8028F580:
/* 8028F5F8 0028C558 4B D9 D3 25 */ bl "Render__9CAnimDataCFRC13CSkinnedModelRC11CModelFlagsRCQ24rstl37optional_object<18CVertexMorphEffect>PCf"
/* 8028F5FC 0028C55C 38 61 00 D4 */ addi r3, r1, 0xd4
/* 8028F600 0028C560 38 80 FF FF */ li r4, -1
/* 8028F604 0028C564 4B DE 86 89 */ bl sub_80077c8c
/* 8028F604 0028C564 4B DE 86 89 */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
lbl_8028F608:
/* 8028F608 0028C568 7F C3 F3 78 */ mr r3, r30
/* 8028F60C 0028C56C 7F E4 FB 78 */ mr r4, r31

View File

@ -1208,7 +1208,7 @@ RenderIceModelWithFlags__10CPatternedCFRC11CModelFlags:
/* 80077C60 00074BC0 4B FB 4C BD */ bl "Render__9CAnimDataCFRC13CSkinnedModelRC11CModelFlagsRCQ24rstl37optional_object<18CVertexMorphEffect>PCf"
/* 80077C64 00074BC4 38 61 00 10 */ addi r3, r1, 0x10
/* 80077C68 00074BC8 38 80 FF FF */ li r4, -1
/* 80077C6C 00074BCC 48 00 00 21 */ bl sub_80077c8c
/* 80077C6C 00074BCC 48 00 00 21 */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
lbl_80077C70:
/* 80077C70 00074BD0 80 01 00 74 */ lwz r0, 0x74(r1)
/* 80077C74 00074BD4 83 E1 00 6C */ lwz r31, 0x6c(r1)
@ -1218,8 +1218,8 @@ lbl_80077C70:
/* 80077C84 00074BE4 38 21 00 70 */ addi r1, r1, 0x70
/* 80077C88 00074BE8 4E 80 00 20 */ blr
.global sub_80077c8c
sub_80077c8c:
.global "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
"__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv":
/* 80077C8C 00074BEC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 80077C90 00074BF0 7C 08 02 A6 */ mflr r0
/* 80077C94 00074BF4 90 01 00 14 */ stw r0, 0x14(r1)

View File

@ -1377,7 +1377,7 @@ sub_8023c688:
/* 8023C714 00239674 48 11 65 E5 */ bl "Calculate__13CSkinnedModelFRC17CPoseAsTransformsRCQ24rstl37optional_object<18CVertexMorphEffect>PCfPf"
/* 8023C718 00239678 38 61 00 AC */ addi r3, r1, 0xac
/* 8023C71C 0023967C 38 80 FF FF */ li r4, -1
/* 8023C720 00239680 4B E3 B5 6D */ bl sub_80077c8c
/* 8023C720 00239680 4B E3 B5 6D */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
lbl_8023C724:
/* 8023C724 00239684 7F 03 C3 78 */ mr r3, r24
/* 8023C728 00239688 48 00 1C 5D */ bl sub_8023e384

View File

@ -2633,7 +2633,7 @@ lbl_801E98C4:
/* 801E9924 001E6884 48 16 93 D5 */ bl "Calculate__13CSkinnedModelFRC17CPoseAsTransformsRCQ24rstl37optional_object<18CVertexMorphEffect>PCfPf"
/* 801E9928 001E6888 38 61 00 88 */ addi r3, r1, 0x88
/* 801E992C 001E688C 38 80 FF FF */ li r4, -1
/* 801E9930 001E6890 4B E8 E3 5D */ bl sub_80077c8c
/* 801E9930 001E6890 4B E8 E3 5D */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
lbl_801E9934:
/* 801E9934 001E6894 80 6D A0 68 */ lwz r3, gpRender@sda21(r13)
/* 801E9938 001E6898 38 97 00 40 */ addi r4, r23, 0x40
@ -2716,7 +2716,7 @@ lbl_801E9934:
/* 801E9A6C 001E69CC 4B E4 2E B1 */ bl "Render__9CAnimDataCFRC13CSkinnedModelRC11CModelFlagsRCQ24rstl37optional_object<18CVertexMorphEffect>PCf"
/* 801E9A70 001E69D0 38 61 00 3C */ addi r3, r1, 0x3c
/* 801E9A74 001E69D4 38 80 FF FF */ li r4, -1
/* 801E9A78 001E69D8 4B E8 E2 15 */ bl sub_80077c8c
/* 801E9A78 001E69D8 4B E8 E2 15 */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
/* 801E9A7C 001E69DC 48 00 00 B4 */ b lbl_801E9B30
lbl_801E9A80:
/* 801E9A80 001E69E0 57 20 06 3F */ clrlwi. r0, r25, 0x18

View File

@ -271,7 +271,7 @@ RenderXRayModel__11CGrappleArmFRC13CStateManagerRC12CTransform4fRC11CModelFlags:
/* 8011D5FC 0011A55C 4B F0 F3 21 */ bl "Render__9CAnimDataCFRC13CSkinnedModelRC11CModelFlagsRCQ24rstl37optional_object<18CVertexMorphEffect>PCf"
/* 8011D600 0011A560 38 61 00 A4 */ addi r3, r1, 0xa4
/* 8011D604 0011A564 38 80 FF FF */ li r4, -1
/* 8011D608 0011A568 4B F5 A6 85 */ bl sub_80077c8c
/* 8011D608 0011A568 4B F5 A6 85 */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
/* 8011D60C 0011A56C 48 22 C9 A1 */ bl White__6CColorFv
/* 8011D610 0011A570 7C 64 1B 78 */ mr r4, r3
/* 8011D614 0011A574 80 6D A0 68 */ lwz r3, gpRender@sda21(r13)
@ -535,7 +535,7 @@ lbl_8011D95C:
/* 8011D99C 0011A8FC 4B FF 91 B9 */ bl __ct__10CModelDataFRC8CAnimRes
/* 8011D9A0 0011A900 38 7F 00 50 */ addi r3, r31, 0x50
/* 8011D9A4 0011A904 38 81 00 24 */ addi r4, r1, 0x24
/* 8011D9A8 0011A908 4B FC 04 D1 */ bl sub_800dde78
/* 8011D9A8 0011A908 4B FC 04 D1 */ bl "__as__Q24rstl29optional_object<10CModelData>FRC10CModelData"
/* 8011D9AC 0011A90C 38 61 00 24 */ addi r3, r1, 0x24
/* 8011D9B0 0011A910 38 80 FF FF */ li r4, -1
/* 8011D9B4 0011A914 4B FF 90 99 */ bl __dt__10CModelDataFv
@ -583,7 +583,7 @@ LoadSuitPoll__11CGrappleArmFv:
/* 8011DA50 0011A9B0 4B FF 91 05 */ bl __ct__10CModelDataFRC8CAnimRes
/* 8011DA54 0011A9B4 7F E3 FB 78 */ mr r3, r31
/* 8011DA58 0011A9B8 38 81 00 24 */ addi r4, r1, 0x24
/* 8011DA5C 0011A9BC 4B FC 04 1D */ bl sub_800dde78
/* 8011DA5C 0011A9BC 4B FC 04 1D */ bl "__as__Q24rstl29optional_object<10CModelData>FRC10CModelData"
/* 8011DA60 0011A9C0 38 61 00 24 */ addi r3, r1, 0x24
/* 8011DA64 0011A9C4 38 80 FF FF */ li r4, -1
/* 8011DA68 0011A9C8 4B FF 8F E5 */ bl __dt__10CModelDataFv
@ -710,7 +710,7 @@ AsyncLoadSuit__11CGrappleArmFR13CStateManager:
/* 8011DC10 0011AB70 7F C3 F3 78 */ mr r3, r30
/* 8011DC14 0011AB74 98 01 00 74 */ stb r0, 0x74(r1)
/* 8011DC18 0011AB78 38 81 00 28 */ addi r4, r1, 0x28
/* 8011DC1C 0011AB7C 48 00 01 31 */ bl sub_8011dd4c
/* 8011DC1C 0011AB7C 48 00 01 31 */ bl "__as__Q24rstl29optional_object<10CModelData>FRCQ24rstl29optional_object<10CModelData>"
/* 8011DC20 0011AB80 88 01 00 74 */ lbz r0, 0x74(r1)
/* 8011DC24 0011AB84 28 00 00 00 */ cmplwi r0, 0
/* 8011DC28 0011AB88 41 82 00 10 */ beq lbl_8011DC38
@ -795,8 +795,8 @@ lbl_8011DD2C:
/* 8011DD44 0011ACA4 38 21 00 90 */ addi r1, r1, 0x90
/* 8011DD48 0011ACA8 4E 80 00 20 */ blr
.global sub_8011dd4c
sub_8011dd4c:
.global "__as__Q24rstl29optional_object<10CModelData>FRCQ24rstl29optional_object<10CModelData>"
"__as__Q24rstl29optional_object<10CModelData>FRCQ24rstl29optional_object<10CModelData>":
/* 8011DD4C 0011ACAC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8011DD50 0011ACB0 7C 08 02 A6 */ mflr r0
/* 8011DD54 0011ACB4 90 01 00 14 */ stw r0, 0x14(r1)
@ -944,7 +944,7 @@ ReturnToDefault__11CGrappleArmFR13CStateManagerf:
/* 8011DF34 0011AE94 54 00 F7 FF */ rlwinm. r0, r0, 0x1e, 0x1f, 0x1f
/* 8011DF38 0011AE98 40 82 00 0C */ bne lbl_8011DF44
/* 8011DF3C 0011AE9C 80 63 03 28 */ lwz r3, 0x328(r3)
/* 8011DF40 0011AEA0 48 0A E3 B9 */ bl ReturnToDefault__14CGunControllerFR13CStateManagerf
/* 8011DF40 0011AEA0 48 0A E3 B9 */ bl ReturnToDefault__14CGunControllerFR13CStateManagerfb
lbl_8011DF44:
/* 8011DF44 0011AEA4 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8011DF48 0011AEA8 7C 08 03 A6 */ mtlr r0
@ -1048,7 +1048,7 @@ LoadAnimations__11CGrappleArmFv:
/* 8011E094 0011AFF4 7F E3 FB 78 */ mr r3, r31
/* 8011E098 0011AFF8 98 01 00 54 */ stb r0, 0x54(r1)
/* 8011E09C 0011AFFC 38 81 00 08 */ addi r4, r1, 8
/* 8011E0A0 0011B000 4B FF FC AD */ bl sub_8011dd4c
/* 8011E0A0 0011B000 4B FF FC AD */ bl "__as__Q24rstl29optional_object<10CModelData>FRCQ24rstl29optional_object<10CModelData>"
/* 8011E0A4 0011B004 88 01 00 54 */ lbz r0, 0x54(r1)
/* 8011E0A8 0011B008 28 00 00 00 */ cmplwi r0, 0
/* 8011E0AC 0011B00C 41 82 00 10 */ beq lbl_8011E0BC
@ -2083,7 +2083,7 @@ lbl_8011EF44:
/* 8011EF54 0011BEB4 38 7E 00 50 */ addi r3, r30, 0x50
/* 8011EF58 0011BEB8 98 01 01 34 */ stb r0, 0x134(r1)
/* 8011EF5C 0011BEBC 38 81 00 E8 */ addi r4, r1, 0xe8
/* 8011EF60 0011BEC0 4B FF ED ED */ bl sub_8011dd4c
/* 8011EF60 0011BEC0 4B FF ED ED */ bl "__as__Q24rstl29optional_object<10CModelData>FRCQ24rstl29optional_object<10CModelData>"
/* 8011EF64 0011BEC4 88 01 01 34 */ lbz r0, 0x134(r1)
/* 8011EF68 0011BEC8 28 00 00 00 */ cmplwi r0, 0
/* 8011EF6C 0011BECC 41 82 00 10 */ beq lbl_8011EF7C
@ -2638,7 +2638,7 @@ lbl_8011F728:
/* 8011F73C 0011C69C 41 82 00 10 */ beq lbl_8011F74C
/* 8011F740 0011C6A0 3C 80 80 12 */ lis r4, PointGenerator__11CGrappleArmFPvPC9CVector3fPC9CVector3fi@ha
/* 8011F744 0011C6A4 38 84 D5 0C */ addi r4, r4, PointGenerator__11CGrappleArmFPvPC9CVector3fPC9CVector3fi@l
/* 8011F748 0011C6A8 48 23 2F CD */ bl SetPointGeneratorFunc__13CSkinnedModelFUiPFUiPC9CVector3fPC9CVector3fi_v
/* 8011F748 0011C6A8 48 23 2F CD */ bl SetPointGeneratorFunc__13CSkinnedModelFPvPFPvPC9CVector3fPC9CVector3fi_v
lbl_8011F74C:
/* 8011F74C 0011C6AC 7F 83 E3 78 */ mr r3, r28
/* 8011F750 0011C6B0 7F A4 EB 78 */ mr r4, r29

View File

@ -5681,7 +5681,7 @@ lbl_800F1C54:
/* 800F1CE4 000EEC44 38 E1 00 18 */ addi r7, r1, 0x18
/* 800F1CE8 000EEC48 38 80 00 00 */ li r4, 0
/* 800F1CEC 000EEC4C 38 C0 00 00 */ li r6, 0
/* 800F1CF0 000EEC50 48 02 42 D5 */ bl FlatDraw__10CModelDataF11EWhichModelRC12CTransform4fbRC11CModelFlags
/* 800F1CF0 000EEC50 48 02 42 D5 */ bl FlatDraw__10CModelDataCF11EWhichModelRC12CTransform4fbRC11CModelFlags
/* 800F1CF4 000EEC54 3B FF 00 01 */ addi r31, r31, 1
/* 800F1CF8 000EEC58 2C 1F 00 05 */ cmpwi r31, 5
/* 800F1CFC 000EEC5C 41 80 FF 58 */ blt lbl_800F1C54
@ -6250,7 +6250,7 @@ lbl_800F2500:
/* 800F2514 000EF474 41 82 00 10 */ beq lbl_800F2524
/* 800F2518 000EF478 3C 80 80 0F */ lis r4, PointGenerator__10CMorphBallFPvPC9CVector3fPC9CVector3fi@ha
/* 800F251C 000EF47C 38 84 E7 88 */ addi r4, r4, PointGenerator__10CMorphBallFPvPC9CVector3fPC9CVector3fi@l
/* 800F2520 000EF480 48 26 01 F5 */ bl SetPointGeneratorFunc__13CSkinnedModelFUiPFUiPC9CVector3fPC9CVector3fi_v
/* 800F2520 000EF480 48 26 01 F5 */ bl SetPointGeneratorFunc__13CSkinnedModelFPvPFPvPC9CVector3fPC9CVector3fi_v
lbl_800F2524:
/* 800F2524 000EF484 C0 22 91 5C */ lfs f1, lbl_805AAE7C@sda21(r2)
/* 800F2528 000EF488 C0 1D 1C 34 */ lfs f0, 0x1c34(r29)

View File

@ -2216,7 +2216,7 @@ sub_801cff50:
/* 801CFFDC 001CCF3C 48 18 2D 1D */ bl "Calculate__13CSkinnedModelFRC17CPoseAsTransformsRCQ24rstl37optional_object<18CVertexMorphEffect>PCfPf"
/* 801CFFE0 001CCF40 38 61 00 5C */ addi r3, r1, 0x5c
/* 801CFFE4 001CCF44 38 80 FF FF */ li r4, -1
/* 801CFFE8 001CCF48 4B EA 7C A5 */ bl sub_80077c8c
/* 801CFFE8 001CCF48 4B EA 7C A5 */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
lbl_801CFFEC:
/* 801CFFEC 001CCF4C C0 38 00 04 */ lfs f1, 4(r24)
/* 801CFFF0 001CCF50 3C 60 80 5A */ lis r3, sUpVector__9CVector3f@ha

View File

@ -5429,7 +5429,7 @@ lbl_8021A3FC:
/* 8021A458 002173B8 4B EC DE 41 */ bl sub_800e8298
/* 8021A45C 002173BC 38 7E 04 A4 */ addi r3, r30, 0x4a4
/* 8021A460 002173C0 38 81 00 B4 */ addi r4, r1, 0xb4
/* 8021A464 002173C4 4B F0 38 E9 */ bl sub_8011dd4c
/* 8021A464 002173C4 4B F0 38 E9 */ bl "__as__Q24rstl29optional_object<10CModelData>FRCQ24rstl29optional_object<10CModelData>"
/* 8021A468 002173C8 88 01 01 00 */ lbz r0, 0x100(r1)
/* 8021A46C 002173CC 28 00 00 00 */ cmplwi r0, 0
/* 8021A470 002173D0 41 82 00 10 */ beq lbl_8021A480

View File

@ -327,8 +327,8 @@ lbl_801B8D14:
/* 801B8D24 001B5C84 38 E0 00 4A */ li r7, 0x4a
/* 801B8D28 001B5C88 48 0D 1D D1 */ bl play_sfx__12NWeaponTypesFUsbbs
/* 801B8D2C 001B5C8C 80 01 00 28 */ lwz r0, 0x28(r1)
/* 801B8D30 001B5C90 3C 60 80 57 */ lis r3, lbl_805719E8@ha
/* 801B8D34 001B5C94 38 83 19 E8 */ addi r4, r3, lbl_805719E8@l
/* 801B8D30 001B5C90 3C 60 80 57 */ lis r3, skChargedShotCameraShakeData__16CCameraShakeData@ha
/* 801B8D34 001B5C94 38 83 19 E8 */ addi r4, r3, skChargedShotCameraShakeData__16CCameraShakeData@l
/* 801B8D38 001B5C98 38 A0 00 00 */ li r5, 0
/* 801B8D3C 001B5C9C 90 1C 00 7C */ stw r0, 0x7c(r28)
/* 801B8D40 001B5CA0 80 7F 08 70 */ lwz r3, 0x870(r31)

View File

@ -3,8 +3,8 @@
.section .data
.balign 8
.global lbl_803E52B0
lbl_803E52B0:
.global __vt__10CGunWeapon
__vt__10CGunWeapon:
# ROM: 0x3E22B0
.4byte 0
.4byte 0
@ -590,9 +590,9 @@ LoadSuitArm__10CGunWeaponFR13CStateManager:
/* 801BA4BC 001B741C 41 82 00 88 */ beq lbl_801BA544
/* 801BA4C0 001B7420 7C 83 23 78 */ mr r3, r4
/* 801BA4C4 001B7424 48 0D 05 09 */ bl get_current_suit__12NWeaponTypesFRC13CStateManager
/* 801BA4C8 001B7428 3C 80 80 3D */ lis r4, lbl_803D17DC@ha
/* 801BA4C8 001B7428 3C 80 80 3D */ lis r4, skSuitArmNames@ha
/* 801BA4CC 001B742C 54 60 10 3A */ slwi r0, r3, 2
/* 801BA4D0 001B7430 38 64 17 DC */ addi r3, r4, lbl_803D17DC@l
/* 801BA4D0 001B7430 38 64 17 DC */ addi r3, r4, skSuitArmNames@l
/* 801BA4D4 001B7434 7C 63 00 2E */ lwzx r3, r3, r0
/* 801BA4D8 001B7438 48 0D 0F 71 */ bl get_asset_id_from_name__12NWeaponTypesFPCc
/* 801BA4DC 001B743C 90 61 00 08 */ stw r3, 8(r1)
@ -607,7 +607,7 @@ LoadSuitArm__10CGunWeaponFR13CStateManager:
/* 801BA500 001B7460 4B F5 C8 5D */ bl __ct__10CModelDataFRC10CStaticRes
/* 801BA504 001B7464 38 7F 00 B0 */ addi r3, r31, 0xb0
/* 801BA508 001B7468 38 81 00 18 */ addi r4, r1, 0x18
/* 801BA50C 001B746C 4B F2 39 6D */ bl sub_800dde78
/* 801BA50C 001B746C 4B F2 39 6D */ bl "__as__Q24rstl29optional_object<10CModelData>FRC10CModelData"
/* 801BA510 001B7470 38 61 00 18 */ addi r3, r1, 0x18
/* 801BA514 001B7474 38 80 FF FF */ li r4, -1
/* 801BA518 001B7478 4B F5 C5 35 */ bl __dt__10CModelDataFv
@ -643,7 +643,7 @@ AsyncLoadSuitArm__10CGunWeaponFR13CStateManager:
/* 801BA580 001B74E0 98 01 00 64 */ stb r0, 0x64(r1)
/* 801BA584 001B74E4 38 7E 00 B0 */ addi r3, r30, 0xb0
/* 801BA588 001B74E8 38 81 00 18 */ addi r4, r1, 0x18
/* 801BA58C 001B74EC 4B F6 37 C1 */ bl sub_8011dd4c
/* 801BA58C 001B74EC 4B F6 37 C1 */ bl "__as__Q24rstl29optional_object<10CModelData>FRCQ24rstl29optional_object<10CModelData>"
/* 801BA590 001B74F0 88 01 00 64 */ lbz r0, 0x64(r1)
/* 801BA594 001B74F4 28 00 00 00 */ cmplwi r0, 0
/* 801BA598 001B74F8 41 82 00 10 */ beq lbl_801BA5A8
@ -652,11 +652,11 @@ AsyncLoadSuitArm__10CGunWeaponFR13CStateManager:
/* 801BA5A4 001B7504 4B F5 C4 A9 */ bl __dt__10CModelDataFv
lbl_801BA5A8:
/* 801BA5A8 001B7508 38 00 00 00 */ li r0, 0
/* 801BA5AC 001B750C 3C 60 80 3D */ lis r3, lbl_803D17DC@ha
/* 801BA5AC 001B750C 3C 60 80 3D */ lis r3, skSuitArmNames@ha
/* 801BA5B0 001B7510 98 01 00 64 */ stb r0, 0x64(r1)
/* 801BA5B4 001B7514 57 E0 10 3A */ slwi r0, r31, 2
/* 801BA5B8 001B7518 80 8D A0 64 */ lwz r4, gpSimplePool@sda21(r13)
/* 801BA5BC 001B751C 38 A3 17 DC */ addi r5, r3, lbl_803D17DC@l
/* 801BA5BC 001B751C 38 A3 17 DC */ addi r5, r3, skSuitArmNames@l
/* 801BA5C0 001B7520 38 61 00 10 */ addi r3, r1, 0x10
/* 801BA5C4 001B7524 7C A5 00 2E */ lwzx r5, r5, r0
/* 801BA5C8 001B7528 81 84 00 00 */ lwz r12, 0(r4)
@ -733,10 +733,10 @@ AsyncLoadFidget__10CGunWeaponFR13CStateManagerQ28SamusGun11EFidgetTypei:
BuildDependencyList__10CGunWeaponFQ212CPlayerState7EBeamId:
/* 801BA6B8 001B7618 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 801BA6BC 001B761C 7C 08 02 A6 */ mflr r0
/* 801BA6C0 001B7620 3C A0 80 3D */ lis r5, lbl_803D17C8@ha
/* 801BA6C0 001B7620 3C A0 80 3D */ lis r5, skDependencyNames@ha
/* 801BA6C4 001B7624 90 01 00 44 */ stw r0, 0x44(r1)
/* 801BA6C8 001B7628 7C 80 23 78 */ mr r0, r4
/* 801BA6CC 001B762C 38 A5 17 C8 */ addi r5, r5, lbl_803D17C8@l
/* 801BA6CC 001B762C 38 A5 17 C8 */ addi r5, r5, skDependencyNames@l
/* 801BA6D0 001B7630 93 E1 00 3C */ stw r31, 0x3c(r1)
/* 801BA6D4 001B7634 93 C1 00 38 */ stw r30, 0x38(r1)
/* 801BA6D8 001B7638 54 1E 10 3A */ slwi r30, r0, 2
@ -761,8 +761,8 @@ BuildDependencyList__10CGunWeaponFQ212CPlayerState7EBeamId:
/* 801BA724 001B7684 90 01 00 2C */ stw r0, 0x2c(r1)
/* 801BA728 001B7688 48 18 67 19 */ bl __dt__6CTokenFv
/* 801BA72C 001B768C 80 8D A0 64 */ lwz r4, gpSimplePool@sda21(r13)
/* 801BA730 001B7690 3C 60 80 3D */ lis r3, lbl_803D17B4@ha
/* 801BA734 001B7694 38 A3 17 B4 */ addi r5, r3, lbl_803D17B4@l
/* 801BA730 001B7690 3C 60 80 3D */ lis r3, skAnimDependencyNames@ha
/* 801BA734 001B7694 38 A3 17 B4 */ addi r5, r3, skAnimDependencyNames@l
/* 801BA738 001B7698 38 61 00 08 */ addi r3, r1, 8
/* 801BA73C 001B769C 81 84 00 00 */ lwz r12, 0(r4)
/* 801BA740 001B76A0 7C A5 F0 2E */ lwzx r5, r5, r30
@ -790,11 +790,11 @@ BuildDependencyList__10CGunWeaponFQ212CPlayerState7EBeamId:
/* 801BA798 001B76F8 7F E3 FB 78 */ mr r3, r31
/* 801BA79C 001B76FC 38 9D 01 2C */ addi r4, r29, 0x12c
/* 801BA7A0 001B7700 38 A0 00 01 */ li r5, 1
/* 801BA7A4 001B7704 48 00 00 49 */ bl "FillTokenVector__10CGunWeaponFRCQ24rstl47vector<10SObjectTag,Q24rstl17rmemory_allocator>RQ24rstl42vector<6CToken,Q24rstl17rmemory_allocator>"
/* 801BA7A4 001B7704 48 00 00 49 */ bl "FillTokenVector__10CGunWeaponFRCQ24rstl47vector<10SObjectTag,Q24rstl17rmemory_allocator>RQ24rstl42vector<6CToken,Q24rstl17rmemory_allocator>b"
/* 801BA7A8 001B7708 7F C3 F3 78 */ mr r3, r30
/* 801BA7AC 001B770C 38 9D 01 2C */ addi r4, r29, 0x12c
/* 801BA7B0 001B7710 38 A0 00 00 */ li r5, 0
/* 801BA7B4 001B7714 48 00 00 39 */ bl "FillTokenVector__10CGunWeaponFRCQ24rstl47vector<10SObjectTag,Q24rstl17rmemory_allocator>RQ24rstl42vector<6CToken,Q24rstl17rmemory_allocator>"
/* 801BA7B4 001B7714 48 00 00 39 */ bl "FillTokenVector__10CGunWeaponFRCQ24rstl47vector<10SObjectTag,Q24rstl17rmemory_allocator>RQ24rstl42vector<6CToken,Q24rstl17rmemory_allocator>b"
/* 801BA7B8 001B7718 38 61 00 18 */ addi r3, r1, 0x18
/* 801BA7BC 001B771C 38 80 00 00 */ li r4, 0
/* 801BA7C0 001B7720 48 18 66 81 */ bl __dt__6CTokenFv
@ -809,8 +809,8 @@ BuildDependencyList__10CGunWeaponFQ212CPlayerState7EBeamId:
/* 801BA7E4 001B7744 38 21 00 40 */ addi r1, r1, 0x40
/* 801BA7E8 001B7748 4E 80 00 20 */ blr
.global "FillTokenVector__10CGunWeaponFRCQ24rstl47vector<10SObjectTag,Q24rstl17rmemory_allocator>RQ24rstl42vector<6CToken,Q24rstl17rmemory_allocator>"
"FillTokenVector__10CGunWeaponFRCQ24rstl47vector<10SObjectTag,Q24rstl17rmemory_allocator>RQ24rstl42vector<6CToken,Q24rstl17rmemory_allocator>":
.global "FillTokenVector__10CGunWeaponFRCQ24rstl47vector<10SObjectTag,Q24rstl17rmemory_allocator>RQ24rstl42vector<6CToken,Q24rstl17rmemory_allocator>b"
"FillTokenVector__10CGunWeaponFRCQ24rstl47vector<10SObjectTag,Q24rstl17rmemory_allocator>RQ24rstl42vector<6CToken,Q24rstl17rmemory_allocator>b":
/* 801BA7EC 001B774C 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 801BA7F0 001B7750 7C 08 02 A6 */ mflr r0
/* 801BA7F4 001B7754 90 01 00 34 */ stw r0, 0x34(r1)
@ -1545,11 +1545,11 @@ AllocResPools__10CGunWeaponFQ212CPlayerState7EBeamId:
/* 801BB1A8 001B8108 7C 96 23 78 */ mr r22, r4
/* 801BB1AC 001B810C 80 6D A1 48 */ lwz r3, gpTweakGunRes@sda21(r13)
/* 801BB1B0 001B8110 4B F0 07 A9 */ bl GetWeaponResourcePair__12CTweakGunResCFi
/* 801BB1B4 001B8114 3C A0 80 3D */ lis r5, lbl_803D1750@ha
/* 801BB1B4 001B8114 3C A0 80 3D */ lis r5, skMuzzleNames@ha
/* 801BB1B8 001B8118 3C 80 57 50 */ lis r4, 0x57505343@ha
/* 801BB1BC 001B811C 56 DA 18 38 */ slwi r26, r22, 3
/* 801BB1C0 001B8120 7C 7F 1B 78 */ mr r31, r3
/* 801BB1C4 001B8124 38 05 17 50 */ addi r0, r5, lbl_803D1750@l
/* 801BB1C4 001B8124 38 05 17 50 */ addi r0, r5, skMuzzleNames@l
/* 801BB1C8 001B8128 3B 98 01 70 */ addi r28, r24, 0x170
/* 801BB1CC 001B812C 7F C0 D2 14 */ add r30, r0, r26
/* 801BB1D0 001B8130 3B 78 01 48 */ addi r27, r24, 0x148
@ -1628,9 +1628,9 @@ lbl_801BB2BC:
/* 801BB2E8 001B8248 2C 19 00 02 */ cmpwi r25, 2
/* 801BB2EC 001B824C 3B DE 00 04 */ addi r30, r30, 4
/* 801BB2F0 001B8250 41 80 FE F0 */ blt lbl_801BB1E0
/* 801BB2F4 001B8254 3C 60 80 3D */ lis r3, lbl_803D1778@ha
/* 801BB2F4 001B8254 3C 60 80 3D */ lis r3, skFrozenNames@ha
/* 801BB2F8 001B8258 3B 38 01 8C */ addi r25, r24, 0x18c
/* 801BB2FC 001B825C 38 03 17 78 */ addi r0, r3, lbl_803D1778@l
/* 801BB2FC 001B825C 38 03 17 78 */ addi r0, r3, skFrozenNames@l
/* 801BB300 001B8260 3B 60 00 00 */ li r27, 0
/* 801BB304 001B8264 7E E0 D2 14 */ add r23, r0, r26
lbl_801BB308:
@ -1695,7 +1695,7 @@ Unload__10CGunWeaponFR13CStateManager:
/* 801BB3D4 001B8334 38 81 00 A8 */ addi r4, r1, 0xa8
/* 801BB3D8 001B8338 90 1F 02 04 */ stw r0, 0x204(r31)
/* 801BB3DC 001B833C 98 01 00 F4 */ stb r0, 0xf4(r1)
/* 801BB3E0 001B8340 4B F6 29 6D */ bl sub_8011dd4c
/* 801BB3E0 001B8340 4B F6 29 6D */ bl "__as__Q24rstl29optional_object<10CModelData>FRCQ24rstl29optional_object<10CModelData>"
/* 801BB3E4 001B8344 88 01 00 F4 */ lbz r0, 0xf4(r1)
/* 801BB3E8 001B8348 28 00 00 00 */ cmplwi r0, 0
/* 801BB3EC 001B834C 41 82 00 10 */ beq lbl_801BB3FC
@ -1708,7 +1708,7 @@ lbl_801BB3FC:
/* 801BB404 001B8364 98 01 00 F4 */ stb r0, 0xf4(r1)
/* 801BB408 001B8368 38 81 00 58 */ addi r4, r1, 0x58
/* 801BB40C 001B836C 98 01 00 A4 */ stb r0, 0xa4(r1)
/* 801BB410 001B8370 4B F6 29 3D */ bl sub_8011dd4c
/* 801BB410 001B8370 4B F6 29 3D */ bl "__as__Q24rstl29optional_object<10CModelData>FRCQ24rstl29optional_object<10CModelData>"
/* 801BB414 001B8374 88 01 00 A4 */ lbz r0, 0xa4(r1)
/* 801BB418 001B8378 28 00 00 00 */ cmplwi r0, 0
/* 801BB41C 001B837C 41 82 00 10 */ beq lbl_801BB42C
@ -1721,7 +1721,7 @@ lbl_801BB42C:
/* 801BB434 001B8394 98 01 00 A4 */ stb r0, 0xa4(r1)
/* 801BB438 001B8398 38 81 00 08 */ addi r4, r1, 8
/* 801BB43C 001B839C 98 01 00 54 */ stb r0, 0x54(r1)
/* 801BB440 001B83A0 4B F6 29 0D */ bl sub_8011dd4c
/* 801BB440 001B83A0 4B F6 29 0D */ bl "__as__Q24rstl29optional_object<10CModelData>FRCQ24rstl29optional_object<10CModelData>"
/* 801BB444 001B83A4 88 01 00 54 */ lbz r0, 0x54(r1)
/* 801BB448 001B83A8 28 00 00 00 */ cmplwi r0, 0
/* 801BB44C 001B83AC 41 82 00 10 */ beq lbl_801BB45C
@ -2030,7 +2030,7 @@ ReturnToDefault__10CGunWeaponFR13CStateManager:
/* 801BB868 001B87C8 38 A0 00 00 */ li r5, 0
/* 801BB86C 001B87CC 90 01 00 14 */ stw r0, 0x14(r1)
/* 801BB870 001B87D0 80 63 01 00 */ lwz r3, 0x100(r3)
/* 801BB874 001B87D4 48 01 0A 85 */ bl ReturnToDefault__14CGunControllerFR13CStateManagerf
/* 801BB874 001B87D4 48 01 0A 85 */ bl ReturnToDefault__14CGunControllerFR13CStateManagerfb
/* 801BB878 001B87D8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801BB87C 001B87DC 7C 08 03 A6 */ mtlr r0
/* 801BB880 001B87E0 38 21 00 10 */ addi r1, r1, 0x10
@ -2219,8 +2219,8 @@ lbl_801BBB08:
/* 801BBB18 001B8A78 50 60 36 72 */ rlwimi r0, r3, 6, 0x19, 0x19
/* 801BBB1C 001B8A7C 38 A0 00 00 */ li r5, 0
/* 801BBB20 001B8A80 98 17 02 18 */ stb r0, 0x218(r23)
/* 801BBB24 001B8A84 3C 60 80 57 */ lis r3, lbl_805719E8@ha
/* 801BBB28 001B8A88 38 83 19 E8 */ addi r4, r3, lbl_805719E8@l
/* 801BBB24 001B8A84 3C 60 80 57 */ lis r3, skChargedShotCameraShakeData__16CCameraShakeData@ha
/* 801BBB28 001B8A88 38 83 19 E8 */ addi r4, r3, skChargedShotCameraShakeData__16CCameraShakeData@l
/* 801BBB2C 001B8A8C 80 7B 08 70 */ lwz r3, 0x870(r27)
/* 801BBB30 001B8A90 4B E4 EE F1 */ bl AddCameraShaker__14CCameraManagerFRC16CCameraShakeDatab
lbl_801BBB34:
@ -2281,7 +2281,7 @@ DrawHologram__10CGunWeaponCFRC13CStateManagerRC12CTransform4fRC11CModelFlags:
/* 801BBC00 001B8B60 38 7E 00 60 */ addi r3, r30, 0x60
/* 801BBC04 001B8B64 38 80 00 00 */ li r4, 0
/* 801BBC08 001B8B68 38 C0 00 00 */ li r6, 0
/* 801BBC0C 001B8B6C 4B F5 A3 B9 */ bl FlatDraw__10CModelDataF11EWhichModelRC12CTransform4fbRC11CModelFlags
/* 801BBC0C 001B8B6C 4B F5 A3 B9 */ bl FlatDraw__10CModelDataCF11EWhichModelRC12CTransform4fbRC11CModelFlags
/* 801BBC10 001B8B70 48 00 00 E0 */ b lbl_801BBCF0
lbl_801BBC14:
/* 801BBC14 001B8B74 C0 5E 00 10 */ lfs f2, 0x10(r30)
@ -2330,7 +2330,7 @@ lbl_801BBC14:
/* 801BBCC0 001B8C20 4B E7 0C 5D */ bl "Render__9CAnimDataCFRC13CSkinnedModelRC11CModelFlagsRCQ24rstl37optional_object<18CVertexMorphEffect>PCf"
/* 801BBCC4 001B8C24 38 61 00 A4 */ addi r3, r1, 0xa4
/* 801BBCC8 001B8C28 38 80 FF FF */ li r4, -1
/* 801BBCCC 001B8C2C 4B EB BF C1 */ bl sub_80077c8c
/* 801BBCCC 001B8C2C 4B EB BF C1 */ bl "__dt__Q24rstl37optional_object<18CVertexMorphEffect>Fv"
/* 801BBCD0 001B8C30 48 18 E2 DD */ bl White__6CColorFv
/* 801BBCD4 001B8C34 7C 64 1B 78 */ mr r4, r3
/* 801BBCD8 001B8C38 80 6D A0 68 */ lwz r3, gpRender@sda21(r13)
@ -2386,7 +2386,7 @@ Draw__10CGunWeaponCFbRC13CStateManagerRC12CTransform4fRC11CModelFlagsPC12CActorL
/* 801BBD90 001B8CF0 41 82 00 10 */ beq lbl_801BBDA0
/* 801BBD94 001B8CF4 3C 80 80 1C */ lis r4, PointGenerator__10CGunWeaponFPvPC9CVector3fPC9CVector3fi@ha
/* 801BBD98 001B8CF8 38 84 A4 7C */ addi r4, r4, PointGenerator__10CGunWeaponFPvPC9CVector3fPC9CVector3fi@l
/* 801BBD9C 001B8CFC 48 19 69 79 */ bl SetPointGeneratorFunc__13CSkinnedModelFUiPFUiPC9CVector3fPC9CVector3fi_v
/* 801BBD9C 001B8CFC 48 19 69 79 */ bl SetPointGeneratorFunc__13CSkinnedModelFPvPFPvPC9CVector3fPC9CVector3fi_v
lbl_801BBDA0:
/* 801BBDA0 001B8D00 80 1C 0F 34 */ lwz r0, 0xf34(r28)
/* 801BBDA4 001B8D04 2C 00 00 00 */ cmpwi r0, 0
@ -3014,11 +3014,11 @@ PlayAnim__10CGunWeaponFQ212NWeaponTypes12EGunAnimTypeb:
lbl_801BC684:
/* 801BC684 001B95E4 80 63 00 20 */ lwz r3, 0x20(r3)
/* 801BC688 001B95E8 54 A7 06 3E */ clrlwi r7, r5, 0x18
/* 801BC68C 001B95EC 3C A0 80 3D */ lis r5, lbl_803D17FC@ha
/* 801BC68C 001B95EC 3C A0 80 3D */ lis r5, skAnimTypeList@ha
/* 801BC690 001B95F0 54 80 10 3A */ slwi r0, r4, 2
/* 801BC694 001B95F4 88 C3 02 20 */ lbz r6, 0x220(r3)
/* 801BC698 001B95F8 50 E6 36 72 */ rlwimi r6, r7, 6, 0x19, 0x19
/* 801BC69C 001B95FC 38 85 17 FC */ addi r4, r5, lbl_803D17FC@l
/* 801BC69C 001B95FC 38 85 17 FC */ addi r4, r5, skAnimTypeList@l
/* 801BC6A0 001B9600 39 00 00 01 */ li r8, 1
/* 801BC6A4 001B9604 98 C3 02 20 */ stb r6, 0x220(r3)
/* 801BC6A8 001B9608 38 C0 FF FF */ li r6, -1
@ -3271,7 +3271,7 @@ lbl_801BC9DC:
/* 801BCA14 001B9974 4B F5 A1 41 */ bl __ct__10CModelDataFRC8CAnimRes
/* 801BCA18 001B9978 38 7F 00 10 */ addi r3, r31, 0x10
/* 801BCA1C 001B997C 38 81 00 B4 */ addi r4, r1, 0xb4
/* 801BCA20 001B9980 4B F2 14 59 */ bl sub_800dde78
/* 801BCA20 001B9980 4B F2 14 59 */ bl "__as__Q24rstl29optional_object<10CModelData>FRC10CModelData"
/* 801BCA24 001B9984 38 61 00 B4 */ addi r3, r1, 0xb4
/* 801BCA28 001B9988 38 80 FF FF */ li r4, -1
/* 801BCA2C 001B998C 4B F5 A0 21 */ bl __dt__10CModelDataFv
@ -3293,7 +3293,7 @@ lbl_801BC9DC:
/* 801BCA6C 001B99CC 4B F5 A0 E9 */ bl __ct__10CModelDataFRC8CAnimRes
/* 801BCA70 001B99D0 38 7F 00 60 */ addi r3, r31, 0x60
/* 801BCA74 001B99D4 38 81 00 68 */ addi r4, r1, 0x68
/* 801BCA78 001B99D8 4B F2 14 01 */ bl sub_800dde78
/* 801BCA78 001B99D8 4B F2 14 01 */ bl "__as__Q24rstl29optional_object<10CModelData>FRC10CModelData"
/* 801BCA7C 001B99DC 38 61 00 68 */ addi r3, r1, 0x68
/* 801BCA80 001B99E0 38 80 FF FF */ li r4, -1
/* 801BCA84 001B99E4 4B F5 9F C9 */ bl __dt__10CModelDataFv
@ -3464,12 +3464,12 @@ __dt__10CGunWeaponFv:
/* 801BCCDC 001B9C3C 93 A1 00 44 */ stw r29, 0x44(r1)
/* 801BCCE0 001B9C40 93 81 00 40 */ stw r28, 0x40(r1)
/* 801BCCE4 001B9C44 41 82 03 54 */ beq lbl_801BD038
/* 801BCCE8 001B9C48 3C 80 80 3E */ lis r4, lbl_803E52B0@ha
/* 801BCCE8 001B9C48 3C 80 80 3E */ lis r4, __vt__10CGunWeapon@ha
/* 801BCCEC 001B9C4C 38 7E 01 D0 */ addi r3, r30, 0x1d0
/* 801BCCF0 001B9C50 38 04 52 B0 */ addi r0, r4, lbl_803E52B0@l
/* 801BCCF0 001B9C50 38 04 52 B0 */ addi r0, r4, __vt__10CGunWeapon@l
/* 801BCCF4 001B9C54 38 80 FF FF */ li r4, -1
/* 801BCCF8 001B9C58 90 1E 00 00 */ stw r0, 0(r30)
/* 801BCCFC 001B9C5C 48 00 03 61 */ bl sub_801bd05c
/* 801BCCFC 001B9C5C 48 00 03 61 */ bl __dt__13CVelocityInfoFv
/* 801BCD00 001B9C60 34 1E 01 B8 */ addic. r0, r30, 0x1b8
/* 801BCD04 001B9C64 41 82 00 24 */ beq lbl_801BCD28
/* 801BCD08 001B9C68 80 7E 01 B8 */ lwz r3, 0x1b8(r30)
@ -3722,8 +3722,8 @@ lbl_801BD038:
/* 801BD054 001B9FB4 38 21 00 50 */ addi r1, r1, 0x50
/* 801BD058 001B9FB8 4E 80 00 20 */ blr
.global sub_801bd05c
sub_801bd05c:
.global __dt__13CVelocityInfoFv
__dt__13CVelocityInfoFv:
/* 801BD05C 001B9FBC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 801BD060 001B9FC0 7C 08 02 A6 */ mflr r0
/* 801BD064 001B9FC4 90 01 00 14 */ stw r0, 0x14(r1)
@ -3830,9 +3830,9 @@ lbl_801BD198:
__ct__10CGunWeaponFUi11EWeaponType9TUniqueId14EMaterialTypesRC9CVector3f:
/* 801BD1B0 001BA110 94 21 FF C0 */ stwu r1, -0x40(r1)
/* 801BD1B4 001BA114 7C 08 02 A6 */ mflr r0
/* 801BD1B8 001BA118 3D 20 80 3E */ lis r9, lbl_803E52B0@ha
/* 801BD1B8 001BA118 3D 20 80 3E */ lis r9, __vt__10CGunWeapon@ha
/* 801BD1BC 001BA11C 90 01 00 44 */ stw r0, 0x44(r1)
/* 801BD1C0 001BA120 38 09 52 B0 */ addi r0, r9, lbl_803E52B0@l
/* 801BD1C0 001BA120 38 09 52 B0 */ addi r0, r9, __vt__10CGunWeapon@l
/* 801BD1C4 001BA124 39 20 00 00 */ li r9, 0
/* 801BD1C8 001BA128 BF 41 00 28 */ stmw r26, 0x28(r1)
/* 801BD1CC 001BA12C 7C 7E 1B 78 */ mr r30, r3
@ -3869,9 +3869,9 @@ __ct__10CGunWeaponFUi11EWeaponType9TUniqueId14EMaterialTypesRC9CVector3f:
/* 801BD248 001BA1A8 38 80 FF FF */ li r4, -1
/* 801BD24C 001BA1AC 48 18 3B F5 */ bl __dt__6CTokenFv
/* 801BD250 001BA1B0 38 00 00 00 */ li r0, 0
/* 801BD254 001BA1B4 3C 60 80 3D */ lis r3, lbl_803D17DC@ha
/* 801BD254 001BA1B4 3C 60 80 3D */ lis r3, skSuitArmNames@ha
/* 801BD258 001BA1B8 90 1E 01 10 */ stw r0, 0x110(r30)
/* 801BD25C 001BA1BC 38 83 17 DC */ addi r4, r3, lbl_803D17DC@l
/* 801BD25C 001BA1BC 38 83 17 DC */ addi r4, r3, skSuitArmNames@l
/* 801BD260 001BA1C0 38 61 00 10 */ addi r3, r1, 0x10
/* 801BD264 001BA1C4 80 A4 00 00 */ lwz r5, 0(r4)
/* 801BD268 001BA1C8 90 1E 01 14 */ stw r0, 0x114(r30)
@ -4057,8 +4057,8 @@ lbl_805AC710:
.section .rodata
.balign 8
.global lbl_803D1750
lbl_803D1750:
.global skMuzzleNames
skMuzzleNames:
# ROM: 0x3CE750
.4byte lbl_803D1828
.4byte lbl_803D1834
@ -4071,8 +4071,8 @@ lbl_803D1750:
.4byte lbl_803D1879
.4byte lbl_803D1886
.global lbl_803D1778
lbl_803D1778:
.global skFrozenNames
skFrozenNames:
# ROM: 0x3CE778
.4byte lbl_803D1892
.4byte lbl_803D189E
@ -4094,8 +4094,8 @@ lbl_803D17A0:
.4byte lbl_803D18E4
.4byte lbl_803D18EF
.global lbl_803D17B4
lbl_803D17B4:
.global skAnimDependencyNames
skAnimDependencyNames:
# ROM: 0x3CE7B4
.4byte lbl_803D18FA
.4byte lbl_803D190A
@ -4103,8 +4103,8 @@ lbl_803D17B4:
.4byte lbl_803D1927
.4byte lbl_803D1938
.global lbl_803D17C8
lbl_803D17C8:
.global skDependencyNames
skDependencyNames:
# ROM: 0x3CE7C8
.4byte lbl_803D1949
.4byte lbl_803D1954
@ -4112,8 +4112,8 @@ lbl_803D17C8:
.4byte lbl_803D1967
.4byte lbl_803D1973
.global lbl_803D17DC
lbl_803D17DC:
.global skSuitArmNames
skSuitArmNames:
# ROM: 0x3CE7DC
.4byte lbl_803D197F
.4byte lbl_803D1988
@ -4124,8 +4124,8 @@ lbl_803D17DC:
.4byte lbl_803D19BB
.4byte lbl_803D19C6
.global lbl_803D17FC
lbl_803D17FC:
.global skAnimTypeList
skAnimTypeList:
# ROM: 0x3CE7FC
.4byte 0
.4byte 0x00000004

View File

@ -143,8 +143,8 @@ Reset__14CGunControllerFv:
/* 801CC2F0 001C9250 90 83 00 50 */ stw r4, 0x50(r3)
/* 801CC2F4 001C9254 4E 80 00 20 */ blr
.global ReturnToDefault__14CGunControllerFR13CStateManagerf
ReturnToDefault__14CGunControllerFR13CStateManagerf:
.global ReturnToDefault__14CGunControllerFR13CStateManagerfb
ReturnToDefault__14CGunControllerFR13CStateManagerfb:
/* 801CC2F8 001C9258 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 801CC2FC 001C925C 7C 08 02 A6 */ mflr r0
/* 801CC300 001C9260 7C 88 23 78 */ mr r8, r4

View File

@ -89,7 +89,7 @@ ReturnToDefault__10CGunMotionFR13CStateManager:
/* 801D9088 001D5FE8 C0 22 AC 9C */ lfs f1, lbl_805AC9BC@sda21(r2)
/* 801D908C 001D5FEC 38 63 00 4C */ addi r3, r3, 0x4c
/* 801D9090 001D5FF0 90 01 00 14 */ stw r0, 0x14(r1)
/* 801D9094 001D5FF4 4B FF 32 65 */ bl ReturnToDefault__14CGunControllerFR13CStateManagerf
/* 801D9094 001D5FF4 4B FF 32 65 */ bl ReturnToDefault__14CGunControllerFR13CStateManagerfb
/* 801D9098 001D5FF8 80 01 00 14 */ lwz r0, 0x14(r1)
/* 801D909C 001D5FFC 7C 08 03 A6 */ mtlr r0
/* 801D90A0 001D6000 38 21 00 10 */ addi r1, r1, 0x10

View File

@ -3,12 +3,33 @@
#include "types.h"
#include "Kyoto/TToken.hpp"
#include "rstl/auto_ptr.hpp"
class CModel;
class CSkinRules;
class CCharLayoutInfo;
class CSkinnedModel {
public:
virtual ~CSkinnedModel();
static void ClearPointGeneratorFunc();
TLockedToken< CModel >& Model() { return x4_model; }
const TLockedToken< CModel >& GetModel() const { return x4_model; }
static void SetPointGeneratorFunc(void*, void (*)(void*, const CVector3f*, const CVector3f*, int));
private:
// TODO
TLockedToken< CModel > x4_model;
TLockedToken< CSkinRules > x10_skinRules;
TLockedToken< CCharLayoutInfo > x1c_layoutInfo;
rstl::auto_ptr< float[] > x24_vertWorkspace;
rstl::auto_ptr< float[] > x2c_normalWorkspace;
bool x34_owned;
bool x35_disableWorkspaces;
};
#endif // _CSKINNEDMODEL

View File

@ -27,6 +27,7 @@ public:
void Lock();
void Unlock();
IObj* GetObject();
const SObjectTag& GetTag() const { return x4_objTag; }
private:
short x0_refCount;

View File

@ -16,15 +16,15 @@ public:
CToken(const CToken& other);
~CToken();
CObjOwnerDerivedFromIObjUntyped* GetObj();
void Lock();
void Unlock();
bool IsLoaded() const { return x0_objRef->IsLoaded(); }
void RemoveRef();
CToken& operator=(const CToken&);
bool HasReference() const { return x0_objRef != nullptr; }
FourCC GetReferenceType() { return x0_objRef->GetTag().type; }
protected:
bool HasLock() { return x4_lockHeld; }
private:

View File

@ -7,6 +7,7 @@ class CModel {
public:
void Touch(int) const;
void Draw(const CModelFlags&) const;
bool IsLoaded(int matIdx) const;
};
#endif // _CMODEL

View File

@ -22,19 +22,19 @@ private:
class CVEParticleLocation : public CVectorElement {
public:
~CVEParticleLocation() override {}
bool GetValue(int frame, CVector3f& valOut) const;
bool GetValue(int frame, CVector3f& valOut) const override;
};
class CVEParticleColor : public CVectorElement {
public:
~CVEParticleColor() override {}
bool GetValue(int frame, CVector3f& valOut) const;
bool GetValue(int frame, CVector3f& valOut) const override;
};
class CVEParticleVelocity : public CVectorElement {
public:
~CVEParticleVelocity() override {}
bool GetValue(int frame, CVector3f& valOut) const;
bool GetValue(int frame, CVector3f& valOut) const override;
};
class CVEParticleSystemOrientationFront : public CVectorElement {

View File

@ -54,42 +54,43 @@ public:
void SetBlendMode_ColorMultiply() override;
void SetBlendMode_InvertDst() override;
void SetBlendMode_InvertSrc() override;
void SetBlendMode_Replace() override;
void SetBlendMode_AdditiveDestColor() override;
virtual void SetDebugOption();
virtual void BeginScene();
virtual void EndScene();
virtual void BeginPrimitive(GXPrimitive prim, int count);
virtual void BeginLines(int nverts);
virtual void BeginLineStrip(int nverts);
virtual void BeginTriangles(int nverts);
virtual void BeginTriangleStrip(int nverts);
virtual void BeginTriangleFan(int nverts);
virtual void PrimVertex(const CVector3f& vtx);
virtual void PrimNormal(const CVector3f& nrm);
virtual void PrimColor(float r, float g, float b, float a);
virtual void PrimColor(const CColor& color);
virtual void EndPrimitive();
virtual void SetAmbientColor(const CColor& color);
virtual void DrawString();
virtual void GetFPS();
virtual void CacheReflection();
virtual void DrawSpaceWarp();
virtual void DrawThermalModel();
virtual void DrawModelDisintegrate();
virtual void DrawModelFlat();
virtual void SetWireframeFlags();
virtual void SetWorldFog();
virtual void RenderFogVolume(const CColor&, const CAABox&, const TLockedToken< CModel >*,
const CSkinnedModel*);
virtual void SetThermal();
virtual void SetThermalColdScale();
virtual void DoThermalBlendCold();
virtual void DoThermalBlendHot();
virtual void GetStaticWorldDataSize();
virtual void SetGXRegister1Color();
virtual void SetWorldLightFadeLevel();
virtual void Something();
virtual void PrepareDynamicLights();
void SetDebugOption() override;
void BeginScene() override;
void EndScene() override;
void BeginPrimitive(GXPrimitive prim, int count) override;
void BeginLines(int nverts) override;
void BeginLineStrip(int nverts) override;
void BeginTriangles(int nverts) override;
void BeginTriangleStrip(int nverts) override;
void BeginTriangleFan(int nverts) override;
void PrimVertex(const CVector3f& vtx) override;
void PrimNormal(const CVector3f& nrm) override;
void PrimColor(float r, float g, float b, float a) override;
void PrimColor(const CColor& color) override;
void EndPrimitive() override;
void SetAmbientColor(const CColor& color) override;
void DrawString() override;
void GetFPS() override;
void CacheReflection() override;
void DrawSpaceWarp() override;
void DrawThermalModel() override;
void DrawModelDisintegrate() override;
void DrawModelFlat() override;
void SetWireframeFlags() override;
void SetWorldFog() override;
void RenderFogVolume(const CColor&, const CAABox&, const TLockedToken< CModel >*,
const CSkinnedModel*) override;
void SetThermal() override;
void SetThermalColdScale() override;
void DoThermalBlendCold() override;
void DoThermalBlendHot() override;
void GetStaticWorldDataSize() override;
void SetGXRegister1Color() override;
void SetWorldLightFadeLevel() override;
void Something() override;
void PrepareDynamicLights() override;
void AllocatePhazonSuitMaskTexture();

View File

@ -56,7 +56,44 @@ public:
virtual void SetBlendMode_ColorMultiply();
virtual void SetBlendMode_InvertDst();
virtual void SetBlendMode_InvertSrc();
virtual void SetBlendMode_Replace();
virtual void SetBlendMode_AdditiveDestColor();
virtual void SetDebugOption();
virtual void BeginScene();
virtual void EndScene();
virtual void BeginPrimitive(GXPrimitive prim, int count);
virtual void BeginLines(int nverts);
virtual void BeginLineStrip(int nverts);
virtual void BeginTriangles(int nverts);
virtual void BeginTriangleStrip(int nverts);
virtual void BeginTriangleFan(int nverts);
virtual void PrimVertex(const CVector3f& vtx);
virtual void PrimNormal(const CVector3f& nrm);
virtual void PrimColor(float r, float g, float b, float a);
virtual void PrimColor(const CColor& color);
virtual void EndPrimitive();
virtual void SetAmbientColor(const CColor& color);
virtual void DrawString();
virtual void GetFPS();
virtual void CacheReflection();
virtual void DrawSpaceWarp();
virtual void DrawThermalModel();
virtual void DrawModelDisintegrate();
virtual void DrawModelFlat();
virtual void SetWireframeFlags();
virtual void SetWorldFog();
virtual void RenderFogVolume(const CColor&, const CAABox&, const TLockedToken< CModel >*,
const CSkinnedModel*);
virtual void SetThermal();
virtual void SetThermalColdScale();
virtual void DoThermalBlendCold();
virtual void DoThermalBlendHot();
virtual void GetStaticWorldDataSize();
virtual void SetGXRegister1Color();
virtual void SetWorldLightFadeLevel();
virtual void Something();
virtual void PrepareDynamicLights();
};
namespace Renderer {

View File

@ -26,9 +26,13 @@ class CCharLayoutInfo;
class CSkinnedModel;
class CSkinnedModelWithAvgNormals;
class CTransitionManager;
class CVertexMorphEffect;
class CModelFlags;
class CAnimData {
public:
~CAnimData();
enum EAnimDir {
kAD_Forward,
kAD_Backward,
@ -40,6 +44,8 @@ public:
x220_24_animating = true;
}
const TLockedToken< CSkinnedModel >& GetModelData() const { return xd8_modelData; }
void SetIsAnimating(bool v) { x220_24_animating = v; }
void SetParticleEffectState(const rstl::string& name, bool active, CStateManager& mgr);
@ -89,6 +95,7 @@ public:
// PreRender__9CAnimDataFv
// SetupRender__9CAnimDataCFRC13CSkinnedModelRCQ24rstl37optional_object<18CVertexMorphEffect>PCf
// Render__9CAnimDataCFRC13CSkinnedModelRC11CModelFlagsRCQ24rstl37optional_object<18CVertexMorphEffect>PCf
void Render(const CSkinnedModel&, const CModelFlags&, const rstl::optional_object<CVertexMorphEffect>&, const float*) const;
// RenderAuxiliary__9CAnimDataCFRC14CFrustumPlanes
// RecalcPoseBuilder__9CAnimDataCFPC13CCharAnimTime
float GetAnimationDuration(int animIn) const;

View File

@ -23,6 +23,7 @@ class CFrustumPlanes;
class CModel;
class CModelFlags;
class CStateManager;
class CSkinnedModel;
// TODO move
#include "Kyoto/Math/CQuaternion.hpp"
@ -48,15 +49,15 @@ public:
CStaticRes(CAssetId id, const CVector3f& scale) : x0_cmdlId(id), x4_scale(scale) {}
};
enum EWhichModel {
kWM_Normal,
kWM_XRay,
kWM_Thermal,
kWM_ThermalHot,
};
class CModelData {
public:
enum EWhichModel {
kWM_Normal,
kWM_XRay,
kWM_Thermal,
kWM_ThermalHot,
};
// TODO these probably aren't real
bool HasNormalModel() const { return x1c_normalModel; }
@ -75,13 +76,18 @@ public:
const CModelFlags& flags) const;
void Render(const CStateManager&, const CTransform4f&, const CActorLights*,
const CModelFlags&) const;
void Render(CModelData::EWhichModel, const CTransform4f&, const CActorLights*,
void Render(EWhichModel, const CTransform4f&, const CActorLights*,
const CModelFlags&) const;
void FlatDraw(EWhichModel which, const CTransform4f& xf, bool unsortedOnly,
const CModelFlags& flags) const;
CSkinnedModel& PickAnimatedModel(EWhichModel which) const;
void Touch(const CStateManager& mgr, int) const;
const CAnimData* GetAnimationData() const { return xc_animData.get(); }
CAnimData* AnimationData() { return xc_animData.get(); }
CAABox GetBounds(const CTransform4f& xf) const;
CAABox GetBounds() const;
bool IsLoaded(int shaderIdx) const;
CTransform4f GetScaledLocatorTransform(const rstl::string& name) const;

View File

@ -5,7 +5,11 @@
#include "rstl/vector.hpp"
#include "types.h"
#include "Kyoto/CRandom16.hpp"
#include "Kyoto/Math/CVector3f.hpp"
class CVector3f;
class CStateManager;
class CRainSplashGenerator {
struct SSplashLine {
@ -39,11 +43,27 @@ public:
float alpha);
~CRainSplashGenerator() {}
bool IsRaining() const { return x48_25_raining; }
void Draw(const CTransform4f& xf) const;
void GeneratePoints(const CVector3f* vertices, const CVector3f* normals, int count);
private:
rstl::vector< SRainSplash > x0_rainSplashes;
CRandom16 x10_random;
CVector3f x14_scale;
uchar x0_pad[0x2c];
float x20_generateTimer;
float x24_generateInterval;
float x28_dt;
float x2c_minZ;
float x30_alpha;
uint x34_curPoint;
uint x38_queueTail;
uint x3c_queueHead;
uint x40_queueSize;
uint x44_genRate;
bool x48_24 : 1;
bool x48_25_raining : 1;
};
CHECK_SIZEOF(CRainSplashGenerator, 0x4c)

View File

@ -187,6 +187,7 @@ public:
const CWorldTransManager* GetWorldTransManager() const { return x8c4_worldTransManager.GetPtr(); }
CRandom16* Random() const { return x900_random; }
uint GetUpdateFrameIndex() const { return x8d8_updateFrameIdx; }
CObjectList& ObjectListById(EGameObjectList id) { return *x808_objectLists[id]; }
const CObjectList& GetObjectListById(EGameObjectList id) const { return *x808_objectLists[id]; }

View File

@ -70,6 +70,8 @@ public:
float GetCurTime() const { return x4_curTime; }
const CVector3f& GetPoint() const; // { return xc4_sfxPos; }
static CCameraShakeData skChargedShotCameraShakeData;
private:
float x0_duration;
float x4_curTime;

View File

@ -14,6 +14,13 @@ public:
typedef CAssetId ResId;
typedef CPlayerState::EBeamId EBeamId;
struct WeaponResourcePair {
ResId a;
ResId b;
ResId c;
ResId* d;
};
~CTweakGunRes() override;
ResId x4_gunMotion;
@ -43,6 +50,14 @@ public:
ResId xbc_grappleHit;
ResId xc0_grappleMuzzle;
ResId xc4_grappleSwoosh;
const WeaponResourcePair* GetWeaponResourcePair(int beam) const; /* {
const int b = int(beam);
if (b < 0 || b > 4) {
return x34_weapons[0];
}
return x34_weapons[b];
}*/
};
extern CTweakGunRes* gpTweakGunRes;

View File

@ -30,6 +30,17 @@ struct SShotParam {
, x10_radius(0.f)
, x14_knockback(0.f)
, x18_24_noImmunity(false) {}
SShotParam(float chargeFactor, const SShotParam& other) {
x14_knockback = chargeFactor * other.x14_knockback;
x0_weaponType = other.x0_weaponType;
x10_radius = chargeFactor * other.x10_radius;
x8_damage = chargeFactor * other.x8_damage;
x18_24_noImmunity = false;
*(reinterpret_cast<int*>(this) + 1) = *(reinterpret_cast<const int*>(&other) + 1);
xc_radiusDamage = chargeFactor * other.xc_radiusDamage;
}
explicit SShotParam(CInputStream& in);
};
@ -77,6 +88,8 @@ public:
const CVector3f& GetGunPosition() const { return x4c_gunPosition; }
const CVector3f& GetGrapplingArmPosition() const { return x64_grapplingArmPosition; }
const SWeaponInfo& GetBeamInfo(int beam) const;
private:
float x4_upLookAngle;
float x8_downLookAngle;

View File

@ -3,11 +3,14 @@
#include "types.h"
#include "MetroidPrime/CDamageInfo.hpp"
#include "MetroidPrime/CModelData.hpp"
#include "MetroidPrime/Player/CPlayerState.hpp"
#include "MetroidPrime/Weapons/GunController/CGunMotion.hpp"
#include "MetroidPrime/Weapons/WeaponCommon.hpp"
#include "MetroidPrime/Weapons/WeaponTypes.hpp"
#include "Kyoto/Math/CAABox.hpp"
#include "Kyoto/Math/CVector3f.hpp"
#include "Kyoto/TToken.hpp"
@ -28,16 +31,27 @@ class CTransform4f;
class CModelFlags;
class CActorLights;
class SWeaponInfo;
class SShotParam;
enum EFrozenFxType {
kFFT_None,
kFFT_Frozen,
kFFT_Thawed,
};
class CVelocityInfo {
public:
~CVelocityInfo();
CVector3f& Velocity(int i) { return x0_vel[i]; }
const CVector3f& GetVelocity(int i) const { return x0_vel[i]; }
bool GetTargetHoming(int i) const { return x1c_targetHoming[i]; }
void Clear() {
x0_vel.clear();
x1c_targetHoming.clear();
x24_trat.clear();
}
void Clear();
void AddVelocity(const CVector3f& vel) { x0_vel.push_back(vel); }
void AddTargetHoming(const bool& homing) { x1c_targetHoming.push_back(homing); }
void AddTrat(const float& trat) { x24_trat.push_back(trat); }
private:
rstl::reserved_vector< CVector3f, 2 > x0_vel;
@ -57,11 +71,6 @@ public:
kSFT_ToCombo,
kSFT_CancelCharge,
};
enum EFrozenFxType {
kFFT_None,
kFFT_Frozen,
kFFT_Thawed,
};
// Virtual Methods
virtual void Reset(CStateManager& mgr);
@ -87,10 +96,32 @@ public:
rstl::optional_object< CModelData >& SolidModelData() { return x10_solidModelData; }
const CModelData& GetSolidModelData() const { return x10_solidModelData.data(); }
TUniqueId GetPlayerId() const { return x1c4_playerId; }
CAABox GetBounds() const;
CAABox GetBounds(const CTransform4f& xf) const;
const SWeaponInfo& GetWeaponInfo() const;
void ActivateCharge(bool enable, bool resetEffect);
bool PlayPasAnim(SamusGun::EAnimationState state, CStateManager& mgr, float angle);
bool IsChargeAnimOver() const;
void UpdateMuzzleFx(float dt, const CVector3f& scale, const CVector3f& pos, bool emitting);
CElementGen* GetChargeMuzzleFx() const;
void DrawHologram(const CStateManager& mgr, const CTransform4f& xf,
const CModelFlags& flags) const;
void ReturnToDefault(CStateManager& mgr);
bool ComboFireOver() const;
void EnterFidget(CStateManager& mgr, SamusGun::EFidgetType type, int parm2);
void Touch(const CStateManager& mgr);
void TouchHolo(const CStateManager& mgr);
void AsyncLoadSuitArm(CStateManager& mgr);
void AsyncLoadFidget(CStateManager& mgr, SamusGun::EFidgetType type, int animSet);
void UnLoadFidget();
bool IsFidgetLoaded();
void EnableFrozenEffect(EFrozenFxType type);
CDamageInfo GetDamageInfo(CStateManager& mgr, CPlayerState::EChargeStage chargeState,
float chargeFactor);
CDamageInfo GetShotDamageInfo(const SShotParam& shotParam, CStateManager& mgr) const;
protected:
// x0 is vtable
@ -108,8 +139,7 @@ protected:
TCachedToken< CGenDescription > x160_xferEffect;
rstl::reserved_vector< TCachedToken< CGenDescription >, 2 > x16c_muzzleEffects;
rstl::reserved_vector< TCachedToken< CGenDescription >, 2 > x188_frozenEffects;
rstl::reserved_vector< rstl::single_ptr< CElementGen >, 2 > x1a4_muzzleGenerators;
uchar x1b0_pad[8];
rstl::reserved_vector< rstl::auto_ptr< CElementGen >, 2 > x1a4_muzzleGenerators;
rstl::single_ptr< CElementGen > x1b8_frozenGenerator;
CRainSplashGenerator* x1bc_rainSplashGenerator;
EWeaponType x1c0_weaponType;
@ -122,7 +152,7 @@ protected:
uint x208_muzzleEffectIdx;
uint x20c_shaderIdx;
// 0x1: load request, 0x2: muzzle fx, 0x4: projectile data, 0x8: anims, 0x10: everything else
uint x210_loadFlags;
int x210_loadFlags;
CAssetId x214_ancsId;
bool x218_24 : 1;
bool x218_25_enableCharge : 1;
@ -132,7 +162,24 @@ protected:
bool x218_28_suitArmLocked : 1;
bool x218_29_drawHologram : 1;
static const int skShootAnim[32];
static int skShootAnim[2];
void AllocResPools(CPlayerState::EBeamId beam);
void FreeResPools();
static void FillTokenVector(const rstl::vector< SObjectTag >& tags,
rstl::vector< CToken >& objects, bool includeTxtr);
void BuildDependencyList(CPlayerState::EBeamId beam);
void LoadSuitArm(CStateManager& mgr);
void LoadGunModels(CStateManager& mgr);
void LoadAnimations();
bool IsAnimsLoaded() const;
void LoadMuzzleFx(float dt);
void LoadProjectileData(CStateManager& mgr);
void LoadFxIdle(float dt, CStateManager& mgr);
void LockTokens(CStateManager& mgr);
void UnlockTokens();
static void PointGenerator(void*, const CVector3f*, const CVector3f*, int);
};
CHECK_SIZEOF(CGunWeapon, 0x21c)

View File

@ -4,6 +4,8 @@
#include "types.h"
#include "MetroidPrime/Weapons/GunController/CGSFreeLook.hpp"
#include "MetroidPrime/Weapons/GunController/CGSComboFire.hpp"
#include "MetroidPrime/Weapons/GunController/CGSFidget.hpp"
class CModelData;
@ -23,9 +25,9 @@ class CStateManager;
class CGunController {
CModelData& x0_modelData;
CGSFreeLook x4_freeLook;
// CGSComboFire x1c_comboFire;
// CGSFidget x30_fidget;
uchar x1c_pad[0x34];
CGSComboFire x1c_comboFire;
CGSFidget x30_fidget;
char x48_pad[0x4];
EGunState x50_gunState;
int x54_curAnimId;
bool x58_24_animDone : 1;
@ -33,7 +35,7 @@ class CGunController {
public:
explicit CGunController(CModelData& modelData);
~CGunController();
~CGunController();
void EnterFreeLook(CStateManager&, int, int);
void EnterComboFire(CStateManager&, int);
@ -42,9 +44,12 @@ public:
void LoadFidgetAnimAsync(CStateManager&, int, int, int);
int Update(float, CStateManager&);
void EnterIdle(CStateManager&);
void ReturnToDefault(CStateManager&, float);
void ReturnToDefault(CStateManager&, float, bool);
void Reset();
void ReturnToBasePosition(CStateManager&);
bool IsComboOver() const { return x1c_comboFire.IsComboOver(); }
void UnLoadFidget() { x30_fidget.UnLoadAnim(); }
bool IsFidgetLoaded() const { return x30_fidget.IsAnimLoaded(); }
int GetFreeLookSetId() const { return x4_freeLook.GetSetId(); }
};

View File

@ -29,6 +29,10 @@ void get_token_vector(CAnimData& animData, int, rstl::vector< CToken >& tokensOu
void get_token_vector(const CAnimData& animData, int begin, int end,
rstl::vector< CToken >& tokensOut, bool preLock);
bool are_tokens_ready(const rstl::vector< CToken >&);
CAssetId get_asset_id_from_name(const char* name);
void lock_tokens(rstl::vector< CToken >&);
void unlock_tokens(rstl::vector< CToken >&);
CPlayerState::EPlayerSuit get_current_suit(const CStateManager& mgr);
} // namespace NWeaponTypes

View File

@ -296,7 +296,7 @@ void CActor::AddToRenderer(const CFrustumPlanes& planes, const CStateManager& mg
void CActor::EnsureRendered(const CStateManager& mgr, const CVector3f& pos,
const CAABox& bounds) const {
if (GetModelData()) {
const CModelData::EWhichModel which = CModelData::GetRenderingModel(mgr);
const EWhichModel which = CModelData::GetRenderingModel(mgr);
GetModelData()->RenderUnsortedParts(which, GetTransform(), GetActorLights(), GetModelFlags());
}
mgr.AddDrawableActor(*this, pos, bounds);
@ -354,8 +354,8 @@ void CActor::Render(const CStateManager& mgr) const {
}
void CActor::RenderInternal(const CStateManager& mgr) const {
CModelData::EWhichModel which = CModelData::GetRenderingModel(mgr);
if (which == CModelData::kWM_ThermalHot) {
EWhichModel which = CModelData::GetRenderingModel(mgr);
if (which == kWM_ThermalHot) {
if (GetModelData()->GetSortThermal()) {
uchar addMag;
uchar mulMag = 255;

View File

@ -1,4 +1,747 @@
#include "MetroidPrime/Weapons/CGunWeapon.hpp"
#include "MetroidPrime/CAnimData.hpp"
#include "MetroidPrime/CAnimPlaybackParms.hpp"
#include "MetroidPrime/CAnimRes.hpp"
#include "MetroidPrime/CRainSplashGenerator.hpp"
#include "MetroidPrime/CStateManager.hpp"
#include "MetroidPrime/Cameras/CCameraManager.hpp"
#include "MetroidPrime/Cameras/CCameraShakeData.hpp"
#include "MetroidPrime/Tweaks/CTweakGunRes.hpp"
#include "MetroidPrime/Tweaks/CTweakPlayerGun.hpp"
#include "MetroidPrime/Weapons/CEnergyProjectile.hpp"
#include "MetroidPrime/Weapons/GunController/CGunController.hpp"
#include "Weapons/CWeaponDescription.hpp"
#include "Kyoto/Animation/CSkinnedModel.hpp"
#include "Kyoto/Animation/CVertexMorphEffect.hpp"
#include "Kyoto/Audio/CSfxManager.hpp"
#include "Kyoto/CDependencyGroup.hpp"
#include "Kyoto/Graphics/CGraphics.hpp"
#include "Kyoto/Graphics/CModel.hpp"
#include "Kyoto/Graphics/CModelFlags.hpp"
#include "Kyoto/Math/CloseEnough.hpp"
#include "Kyoto/Particles/CElementGen.hpp"
#include "MetaRender/CCubeRenderer.hpp"
const char* skMuzzleNames[] = {
"PowerMuzzle", "PowerCharge", "IceMuzzle", "IceCharge", "PowerMuzzle",
"WaveCharge", "PlasmaMuzzle", "PlasmaCharge", "PhazonMuzzle", "EmptyMuzzle",
};
const char* skFrozenNames[] = {
"powerFrozen", "Ice2nd_2", "iceFrozen", "Ice2nd_2", "waveFrozen",
"Ice2nd_2", "plasmaFrozen", "Ice2nd_2", "iceFrozen", "Ice2nd_2",
};
const char* skBeamXferNames[] = {
"PowerXfer", "IceXfer", "WaveXfer", "PlasmaXfer", "PhazonXfer",
};
const char* skAnimDependencyNames[] = {
"Power_Anim_DGRP", "Ice_Anim_DGRP", "Wave_Anim_DGRP", "Plasma_Anim_DGRP", "Phazon_Anim_DGRP",
};
const char* skDependencyNames[] = {
"Power_DGRP", "Ice_DGRP", "Wave_DGRP", "Plasma_DGRP", "Phazon_DGRP",
};
const char* skSuitArmNames[] = {
"PowerArm", "GravityArm", "VariaArm", "PhazonArm",
"FusionArm", "FusionArmG", "FusionArmV", "FusionArmP",
};
const int skAnimTypeList[] = {
0, 4, 1, 2, 3, 5, 6, 7, 8, 9, 10,
};
CPlayerState::EBeamId GetWeaponIndex(EWeaponType type) {
switch (type) {
case kWT_Power:
return CPlayerState::kBI_Power;
case kWT_Ice:
return CPlayerState::kBI_Ice;
case kWT_Wave:
return CPlayerState::kBI_Wave;
case kWT_Plasma:
return CPlayerState::kBI_Plasma;
case kWT_Phazon:
return CPlayerState::kBI_Phazon;
default:
return CPlayerState::kBI_Power;
}
}
CGunWeapon::CGunWeapon(CAssetId ancsId, EWeaponType type, TUniqueId playerId,
EMaterialTypes playerMaterial, const CVector3f& scale)
: x4_scale(scale)
, x104_gunCharacter(gpSimplePool->GetObj(SObjectTag('ANCS', ancsId)))
, x13c_armCharacter(gpSimplePool->GetObj(skSuitArmNames[0]))
, x160_xferEffect(gpSimplePool->GetObj(skBeamXferNames[size_t(GetWeaponIndex(type))]))
, x1bc_rainSplashGenerator(nullptr)
, x1c0_weaponType(type)
, x1c4_playerId(playerId)
, x1c8_playerMaterial(playerMaterial)
, x1cc_enabledSecondaryEffect(kSFT_None)
, x200_beamId(GetWeaponIndex(type))
, x204_frozenEffect(kFFT_None)
, x208_muzzleEffectIdx(0)
, x20c_shaderIdx(u32(x200_beamId))
, x210_loadFlags(0)
, x214_ancsId(ancsId)
, x218_24(false)
, x218_25_enableCharge(false)
, x218_26_loaded(false)
, x218_27_subtypeBasePose(false)
, x218_28_suitArmLocked(false)
, x218_29_drawHologram(false) {
AllocResPools(x200_beamId);
BuildDependencyList(x200_beamId);
}
CVelocityInfo::~CVelocityInfo() {}
CGunWeapon::~CGunWeapon() {}
const SWeaponInfo& CGunWeapon::GetWeaponInfo() const {
return gpTweakPlayerGun->GetBeamInfo(x200_beamId);
}
void CGunWeapon::LoadMuzzleFx(float dt) {
for (int i = 0; i < x16c_muzzleEffects.capacity(); ++i) {
CElementGen* newElement = new CElementGen(x16c_muzzleEffects[i]);
newElement->SetParticleEmission(false);
newElement->Update(dt);
x1a4_muzzleGenerators.push_back(newElement);
}
}
void CGunWeapon::LoadGunModels(CStateManager& mgr) {
int defaultAnim = 9;
if (x218_27_subtypeBasePose) {
defaultAnim = 0;
}
x10_solidModelData = CAnimRes(x214_ancsId, 0, x4_scale, defaultAnim, false);
x60_holoModelData = CAnimRes(x214_ancsId, 1, x4_scale, defaultAnim, false);
CAnimPlaybackParms parms(defaultAnim, -1, 1.f, true);
x10_solidModelData->AnimationData()->SetAnimation(parms, true);
LoadSuitArm(mgr);
x10_solidModelData->SetSortThermal(true);
x60_holoModelData->SetSortThermal(true);
x100_gunController = new CGunController(*x10_solidModelData);
}
void CGunWeapon::LoadProjectileData(CStateManager& mgr) {
CRandom16 random(mgr.GetUpdateFrameIndex());
CGlobalRandom grand(random);
for (int i = 0; i < x144_weapons.capacity(); ++i) {
CWeaponDescription& weapon = **x144_weapons[i];
CVector3f weaponVel = CVector3f::Zero();
if (const CVectorElement* ivec = weapon.x4_IVEC) {
ivec->GetValue(0, weaponVel);
}
x1d0_velInfo.AddVelocity(weaponVel);
float tratVal = 0.f;
if (const CRealElement* trat = weapon.x30_TRAT) {
trat->GetValue(0, tratVal);
}
x1d0_velInfo.AddTrat(tratVal);
x1d0_velInfo.AddTargetHoming(weapon.x29_HOMG);
if (weaponVel.GetY() > 0.f) {
x1d0_velInfo.Velocity(i) *= 60.f;
} else {
x1d0_velInfo.Velocity(i) = CVector3f::Forward();
}
}
}
bool CGunWeapon::PlayPasAnim(SamusGun::EAnimationState state, CStateManager& mgr, float angle) {
switch (state) {
case SamusGun::kAS_ComboFire:
x100_gunController->EnterComboFire(mgr, x200_beamId);
break;
default:
return false;
case SamusGun::kAS_Wander:
break;
}
return true;
}
bool CGunWeapon::IsChargeAnimOver() const {
if (x218_25_enableCharge) {
if (x10_solidModelData->GetAnimationData()->IsAnimTimeRemaining(0.001f,
rstl::string_l("Whole Body"))) {
return false;
}
}
return true;
}
void CGunWeapon::PlayAnim(NWeaponTypes::EGunAnimType type, bool loop) {
if (!x218_26_loaded || type < NWeaponTypes::kGAT_BasePosition ||
type > NWeaponTypes::kGAT_ToBeam) {
return;
}
x10_solidModelData->AnimationData()->EnableLooping(loop);
const CAnimPlaybackParms parms(skAnimTypeList[type], -1, 1.f, true);
x10_solidModelData->AnimationData()->SetAnimation(parms, false);
}
void CGunWeapon::Reset(CStateManager& mgr) {
if (!x218_26_loaded)
return;
x10_solidModelData->AnimationData()->EnableLooping(false);
if (x218_25_enableCharge)
x218_25_enableCharge = false;
else
x100_gunController->Reset();
}
void CGunWeapon::Update(float dt, CStateManager& mgr) {
if (x218_26_loaded) {
x10_solidModelData->AdvanceAnimation(dt, mgr, kInvalidAreaId, true);
x100_gunController->Update(dt, mgr);
if (x218_28_suitArmLocked) {
LoadSuitArm(mgr);
}
} else {
if (x104_gunCharacter.HasLock()) {
if (x104_gunCharacter.IsLoaded()) {
if ((x210_loadFlags & 0x1) != 0x1) {
LoadGunModels(mgr);
LoadAnimations();
x210_loadFlags |= 0x1;
}
if ((x210_loadFlags & 0x8) != 0x8) {
if (IsAnimsLoaded())
x210_loadFlags |= 0x8;
}
}
LoadFxIdle(dt, mgr);
if ((x210_loadFlags & 0x1f) == 0x1f) {
CSkinnedModel& model = x10_solidModelData->PickAnimatedModel(kWM_Normal);
bool flag1 = model.GetModel()->IsLoaded(x20c_shaderIdx);
bool flag2 = xb0_suitArmModelData->IsLoaded(0);
if (flag1 && flag2) {
x218_26_loaded = true;
}
}
}
}
}
void CGunWeapon::PostRenderGunFx(const CStateManager& mgr, const CTransform4f& xf) {
if (x218_26_loaded && x1b8_frozenGenerator.get() && x204_frozenEffect != kFFT_None)
x1b8_frozenGenerator->Render();
}
void CGunWeapon::UpdateGunFx(bool shotSmoke, float dt, const CStateManager& mgr,
const CTransform4f& xf) {
if (x218_26_loaded && x204_frozenEffect != kFFT_None) {
if (x204_frozenEffect == kFFT_Thawed) {
if (x1b8_frozenGenerator->IsSystemDeletable()) {
x204_frozenEffect = kFFT_None;
x1b8_frozenGenerator = nullptr;
} else {
x1b8_frozenGenerator->SetTranslation(xf.GetTranslation());
x1b8_frozenGenerator->SetOrientation(xf.GetRotation());
}
} else {
x1b8_frozenGenerator->SetGlobalOrientAndTrans(xf);
}
if (x1b8_frozenGenerator.get())
x1b8_frozenGenerator->Update(dt);
}
}
void CGunWeapon::UpdateMuzzleFx(float dt, const CVector3f& scale, const CVector3f& pos,
bool emitting) {
x1a4_muzzleGenerators[x208_muzzleEffectIdx]->SetGlobalTranslation(pos);
x1a4_muzzleGenerators[x208_muzzleEffectIdx]->SetGlobalScale(scale);
x1a4_muzzleGenerators[x208_muzzleEffectIdx]->SetParticleEmission(emitting);
x1a4_muzzleGenerators[x208_muzzleEffectIdx]->Update(dt);
}
CElementGen* CGunWeapon::GetChargeMuzzleFx() const {
CElementGen* result = x1a4_muzzleGenerators[1].get();
if (result) {
return result;
}
return nullptr;
}
void CGunWeapon::DrawMuzzleFx(const CStateManager& mgr) const {
if (!x1a4_muzzleGenerators[x208_muzzleEffectIdx].null()) {
if (x200_beamId != CPlayerState::kBI_Ice &&
mgr.GetPlayerState()->GetActiveVisor(mgr) == CPlayerState::kPV_XRay) {
CElementGen::SetSubtractBlend(true);
x1a4_muzzleGenerators[x208_muzzleEffectIdx]->Render();
CElementGen::SetSubtractBlend(false);
} else {
x1a4_muzzleGenerators[x208_muzzleEffectIdx]->Render();
}
}
}
void CGunWeapon::ActivateCharge(bool enable, bool resetEffect) {
x1a4_muzzleGenerators[x208_muzzleEffectIdx]->SetParticleEmission(false);
x208_muzzleEffectIdx = !!enable;
if (enable || resetEffect) {
x1a4_muzzleGenerators[x208_muzzleEffectIdx] =
new CElementGen(x16c_muzzleEffects[x208_muzzleEffectIdx]);
}
}
void CGunWeapon::Draw(bool drawSuitArm, const CStateManager& mgr, const CTransform4f& xf,
const CModelFlags& flags, const CActorLights* lights) const {}
const CModelFlags& flags, const CActorLights* lights) const {
if (!x218_26_loaded)
return;
CTransform4f armXf = xf * x10_solidModelData->GetScaledLocatorTransform(rstl::string_l("elbow"));
if (x1bc_rainSplashGenerator && x1bc_rainSplashGenerator->IsRaining()) {
CSkinnedModel::SetPointGeneratorFunc((void*)x1bc_rainSplashGenerator,
&CGunWeapon::PointGenerator);
}
if (mgr.GetThermalDrawFlag() == kTD_Hot && x200_beamId != CPlayerState::kBI_Ice) {
/* Hot Draw */
float a = flags.GetColor().GetAlpha();
const CColor mulColor(a, a, a, a);
CColor addColor((uchar)0x40, 0x40, 0x40, 0x40);
if (x218_29_drawHologram) {
DrawHologram(mgr, xf, flags);
} else {
CModelFlags useFlags(CModelFlags::kT_Opaque, 1.0f);
x10_solidModelData->RenderThermal(xf, mulColor, addColor, useFlags);
}
if (drawSuitArm && xb0_suitArmModelData) {
CModelFlags useFlags(CModelFlags::kT_Opaque, 1.0f);
xb0_suitArmModelData->RenderThermal(xf, mulColor, addColor, useFlags);
}
} else {
/* Cold Draw */
if (mgr.GetPlayerState()->GetCurrentVisor() != CPlayerState::kPV_XRay &&
!x218_29_drawHologram) {
x10_solidModelData->Render(mgr, xf, lights, flags.UseShaderSet(x20c_shaderIdx));
} else {
DrawHologram(mgr, xf, flags);
}
if (drawSuitArm && xb0_suitArmModelData) {
xb0_suitArmModelData->Render(mgr, armXf, lights, flags);
}
}
if (x1bc_rainSplashGenerator && x1bc_rainSplashGenerator->IsRaining()) {
CSkinnedModel::ClearPointGeneratorFunc();
x1bc_rainSplashGenerator->Draw(xf);
}
}
void CGunWeapon::DrawHologram(const CStateManager& mgr, const CTransform4f& xf,
const CModelFlags& flags) const {
if (!x218_26_loaded)
return;
// TODO
if (x218_29_drawHologram) {
x60_holoModelData->FlatDraw(kWM_Normal, xf, false, flags);
} else {
const CVector3f& scale = x10_solidModelData->GetScale();
CTransform4f modelMatrix(xf);
modelMatrix = modelMatrix * CTransform4f::Scale(scale.GetX(), scale.GetY(), scale.GetZ());
gpRender->SetModelMatrix(modelMatrix);
CGraphics::DisableAllLights();
gpRender->SetAmbientColor(CColor::White());
x10_solidModelData->GetAnimationData()->Render(
**x60_holoModelData->GetAnimationData()->GetModelData(), flags,
rstl::optional_object_null(), nullptr);
gpRender->SetAmbientColor(CColor::White());
CGraphics::DisableAllLights();
}
}
int CGunWeapon::skShootAnim[2] = {4, 3};
static float kChargeScaleFactor = 1.0f;
inline float GetChargeFactor(CPlayerState::EChargeStage chargeState, float chargeFactor2) {
float k = chargeFactor2;
if (chargeState == CPlayerState::kCS_Normal) {
k = 1.0f;
}
return k * kChargeScaleFactor;
}
void CGunWeapon::Fire(bool underwater, float dt, CPlayerState::EChargeStage chargeState,
const CTransform4f& xf, CStateManager& mgr, TUniqueId homingTarget,
float chargeFactor1, float chargeFactor2) {
CDamageInfo dInfo(GetDamageInfo(mgr, chargeState, chargeFactor1));
CVector3f scale(GetChargeFactor(chargeState, chargeFactor2),
GetChargeFactor(chargeState, chargeFactor2),
GetChargeFactor(chargeState, chargeFactor2));
bool partialCharge =
chargeState == CPlayerState::kCS_Normal ? false : !close_enough(chargeFactor1, 1.f);
uint particleChargeAttribs = 0;
if (partialCharge)
particleChargeAttribs = kPA_PartialCharge;
uint attribs = kPA_ArmCannon;
if (chargeState != CPlayerState::kCS_Normal)
attribs = kPA_ArmCannon | kPA_Charged;
CEnergyProjectile* proj = new CEnergyProjectile(
true, x144_weapons[chargeState], x1c0_weaponType, xf, x1c8_playerMaterial, dInfo,
mgr.AllocateUniqueId(), kInvalidAreaId, GetPlayerId(), homingTarget,
particleChargeAttribs | attribs, underwater, scale, rstl::optional_object_null(),
CSfxManager::kInternalInvalidSfxId, false);
if (proj) {
mgr.AddObject(proj);
proj->Think(dt, mgr);
}
if (chargeState != CPlayerState::kCS_Normal) {
x218_25_enableCharge = true;
mgr.CameraManager()->AddCameraShaker(CCameraShakeData::skChargedShotCameraShakeData, false);
}
x10_solidModelData->AnimationData()->EnableLooping(false);
CAnimPlaybackParms parms(skShootAnim[chargeState], -1, 1.f, true);
x10_solidModelData->AnimationData()->SetAnimation(parms, false);
}
void CGunWeapon::ReturnToDefault(CStateManager& mgr) {
x100_gunController->ReturnToDefault(mgr, 0.f, false);
}
bool CGunWeapon::ComboFireOver() const { return x100_gunController->IsComboOver(); }
void CGunWeapon::EnterFidget(CStateManager& mgr, SamusGun::EFidgetType type, int parm2) {
x100_gunController->EnterFidget(mgr, s32(type), s32(x200_beamId), parm2);
}
CDamageInfo CGunWeapon::GetDamageInfo(CStateManager& mgr, CPlayerState::EChargeStage chargeState,
float chargeFactor) {
const SWeaponInfo& wInfo = GetWeaponInfo();
if (chargeState == CPlayerState::kCS_Normal) {
return GetShotDamageInfo(wInfo.x4_normal, mgr);
} else {
SShotParam param(chargeFactor, wInfo.x20_charged);
return GetShotDamageInfo(param, mgr);
}
}
CAABox CGunWeapon::GetBounds() const {
if (x10_solidModelData)
return x10_solidModelData->GetBounds();
return CAABox::Identity();
}
CAABox CGunWeapon::GetBounds(const CTransform4f& xf) const {
if (x10_solidModelData)
return x10_solidModelData->GetBounds(xf);
return CAABox::Identity();
}
void CGunWeapon::Touch(const CStateManager& mgr) {
if (x10_solidModelData) {
x10_solidModelData->Touch(mgr, x20c_shaderIdx);
if (xb0_suitArmModelData)
xb0_suitArmModelData->Touch(mgr, 0);
}
}
void CGunWeapon::TouchHolo(const CStateManager& mgr) {
if (x60_holoModelData)
x60_holoModelData->Touch(mgr, 0);
}
void CGunWeapon::Load(CStateManager& mgr, bool subtypeBasePose) {
LockTokens(mgr);
x218_27_subtypeBasePose = subtypeBasePose;
x204_frozenEffect = kFFT_None;
x1b8_frozenGenerator = nullptr;
x104_gunCharacter.Lock();
x160_xferEffect.Lock();
for (int i = 0; i < x16c_muzzleEffects.capacity(); ++i) {
x16c_muzzleEffects[i].Lock();
x144_weapons[i].Lock();
}
for (int i = 0; i < x188_frozenEffects.capacity(); ++i) {
x188_frozenEffects[i].Lock();
}
}
void CGunWeapon::Unload(CStateManager& mgr) {
UnlockTokens();
x210_loadFlags = 0;
x204_frozenEffect = kFFT_None;
x10_solidModelData = rstl::optional_object_null();
x60_holoModelData = rstl::optional_object_null();
xb0_suitArmModelData = rstl::optional_object_null();
x100_gunController = nullptr;
x1bc_rainSplashGenerator = nullptr;
x1b8_frozenGenerator = nullptr;
FreeResPools();
x104_gunCharacter.Unlock();
x218_26_loaded = false;
}
bool CGunWeapon::IsLoaded() const { return x218_26_loaded; }
void CGunWeapon::AllocResPools(CPlayerState::EBeamId beam) {
const CTweakGunRes::WeaponResourcePair* wPair = gpTweakGunRes->GetWeaponResourcePair(beam);
const char* const* muzzleNames = &skMuzzleNames[size_t(beam) * 2];
for (int i = 0; i < x16c_muzzleEffects.capacity(); ++i) {
x16c_muzzleEffects.push_back(gpSimplePool->GetObj(muzzleNames[i]));
x144_weapons.push_back(gpSimplePool->GetObj(SObjectTag('WPSC', wPair->d[i])));
}
const char* const* frozenNames = &skFrozenNames[size_t(beam) * 2];
for (int i = 0; i < x16c_muzzleEffects.capacity(); ++i) {
x188_frozenEffects.push_back(gpSimplePool->GetObj(frozenNames[i]));
}
}
void CVelocityInfo::Clear() {
x0_vel = rstl::reserved_vector< CVector3f, 2 >();
x1c_targetHoming = rstl::reserved_vector< bool, 2 >();
x24_trat = rstl::reserved_vector< float, 2 >();
}
void CGunWeapon::FreeResPools() {
x160_xferEffect.Unlock();
for (int i = 0; i < x16c_muzzleEffects.capacity(); ++i) {
x16c_muzzleEffects[i].Unlock();
x144_weapons[i].Unlock();
}
for (int i = 0; i < x188_frozenEffects.capacity(); ++i) {
x188_frozenEffects[i].Unlock();
}
x10c_anims = rstl::vector< CToken >();
x1a4_muzzleGenerators = rstl::reserved_vector< rstl::auto_ptr< CElementGen >, 2 >();
x1d0_velInfo.Clear();
}
void CGunWeapon::LoadFxIdle(float dt, CStateManager& mgr) {
if (!NWeaponTypes::are_tokens_ready(x12c_deps)) {
return;
}
if ((x210_loadFlags & 0x2) != 0 && (x210_loadFlags & 0x4) != 0 && (x210_loadFlags & 0x10) != 0) {
return;
}
bool loaded = true;
for (int i = 0; i < x16c_muzzleEffects.capacity(); ++i) {
if (!x16c_muzzleEffects[i].IsLoaded()) {
loaded = false;
break;
}
if (!x144_weapons[i].IsLoaded()) {
loaded = false;
break;
}
}
for (int i = 0; i < x188_frozenEffects.capacity(); ++i) {
if (!x188_frozenEffects[i].IsLoaded()) {
loaded = false;
break;
}
}
if (!x160_xferEffect.IsLoaded()) {
loaded = false;
}
if (loaded) {
if ((x210_loadFlags & 0x2) != 0x2) {
LoadMuzzleFx(dt);
x210_loadFlags |= 0x2;
}
x210_loadFlags |= 0x10;
if ((x210_loadFlags & 0x4) != 0x4) {
LoadProjectileData(mgr);
x210_loadFlags |= 0x4;
}
}
}
void CGunWeapon::LockTokens(CStateManager& mgr) {
AsyncLoadSuitArm(mgr);
NWeaponTypes::lock_tokens(x12c_deps);
}
void CGunWeapon::UnlockTokens() {
x13c_armCharacter.Unlock();
NWeaponTypes::unlock_tokens(x12c_deps);
}
void CGunWeapon::FillTokenVector(const rstl::vector< SObjectTag >& tags,
rstl::vector< CToken >& out, bool includeTxtr) {
rstl::vector< SObjectTag >::const_iterator it;
for (it = tags.begin(); it != tags.end(); ++it) {
CToken token = gpSimplePool->GetObj(*it);
if (!includeTxtr && token.GetReferenceType() == 'TXTR') {
continue;
}
out.push_back(token);
}
}
void CGunWeapon::BuildDependencyList(CPlayerState::EBeamId beam) {
TLockedToken< CDependencyGroup > deps = gpSimplePool->GetObj(skDependencyNames[beam]);
TLockedToken< CDependencyGroup > animDeps = gpSimplePool->GetObj(skAnimDependencyNames[beam]);
CDependencyGroup* depsObj = *deps;
CDependencyGroup* animDepsObj = *animDeps;
x12c_deps.reserve(depsObj->GetObjectTagVector().size() +
animDepsObj->GetObjectTagVector().size());
FillTokenVector(depsObj->GetObjectTagVector(), x12c_deps, true);
FillTokenVector(animDepsObj->GetObjectTagVector(), x12c_deps, false);
}
void CGunWeapon::AsyncLoadFidget(CStateManager& mgr, SamusGun::EFidgetType type, int animSet) {
x100_gunController->LoadFidgetAnimAsync(mgr, type, x200_beamId, animSet);
}
void CGunWeapon::UnLoadFidget() { x100_gunController->UnLoadFidget(); }
bool CGunWeapon::IsFidgetLoaded() { return x100_gunController->IsFidgetLoaded(); }
void CGunWeapon::LoadAnimations() {
NWeaponTypes::get_token_vector(*x10_solidModelData->GetAnimationData(), 0, 15, x10c_anims, true);
}
bool CGunWeapon::IsAnimsLoaded() const {
for (rstl::vector< CToken >::const_iterator it = x10c_anims.begin(); it != x10c_anims.end();
++it) {
if (!it->IsLoaded()) {
return false;
}
}
return true;
}
void CGunWeapon::AsyncLoadSuitArm(CStateManager& mgr) {
CPlayerState::EPlayerSuit suit = NWeaponTypes::get_current_suit(mgr);
xb0_suitArmModelData = rstl::optional_object_null();
x13c_armCharacter = gpSimplePool->GetObj(skSuitArmNames[suit]);
x13c_armCharacter.Lock();
x218_28_suitArmLocked = true;
}
void CGunWeapon::LoadSuitArm(CStateManager& mgr) {
if (!x13c_armCharacter.IsLoaded()) {
return;
}
CPlayerState::EPlayerSuit suit = NWeaponTypes::get_current_suit(mgr);
const CAssetId armId = NWeaponTypes::get_asset_id_from_name(skSuitArmNames[suit]);
xb0_suitArmModelData = CStaticRes(armId, x4_scale);
xb0_suitArmModelData->SetSortThermal(true);
x218_28_suitArmLocked = false;
x13c_armCharacter.Unlock();
}
void CGunWeapon::PointGenerator(void* ptr, const CVector3f* vertices, const CVector3f* normals,
int count) {
((CRainSplashGenerator*)ptr)->GeneratePoints(vertices, normals, count);
}
void CGunWeapon::EnableFrozenEffect(EFrozenFxType type) {
switch (type) {
case kFFT_Thawed:
if (x204_frozenEffect == kFFT_Thawed)
break;
x1b8_frozenGenerator = new CElementGen(x188_frozenEffects[1]);
x1b8_frozenGenerator->SetGlobalScale(x4_scale);
break;
case kFFT_Frozen:
if (x204_frozenEffect == kFFT_Frozen)
break;
x1b8_frozenGenerator = new CElementGen(x188_frozenEffects[0]);
x1b8_frozenGenerator->SetGlobalScale(x4_scale);
break;
default:
break;
}
x204_frozenEffect = type;
}
void DrawClipCube(const CAABox& aabb) {
// Render AABB as completely transparent object, only modifying Z-buffer
const CColor color(1.f, 1.f, 1.f, 0.f);
gpRender->SetBlendMode_AlphaBlended();
CGraphics::SetCullMode(kCM_None);
gpRender->BeginTriangleStrip(4);
gpRender->PrimColor(color);
gpRender->PrimVertex(CVector3f(aabb.GetMaxPoint().GetX(), aabb.GetMaxPoint().GetY(), aabb.GetMinPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMaxPoint().GetX(), aabb.GetMinPoint().GetY(), aabb.GetMinPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMaxPoint().GetX(), aabb.GetMaxPoint().GetY(), aabb.GetMaxPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMaxPoint().GetX(), aabb.GetMinPoint().GetY(), aabb.GetMaxPoint().GetZ()));
gpRender->EndPrimitive();
gpRender->BeginTriangleStrip(4);
gpRender->PrimColor(color);
gpRender->PrimVertex(CVector3f(aabb.GetMinPoint().GetX(), aabb.GetMaxPoint().GetY(), aabb.GetMinPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMaxPoint().GetX(), aabb.GetMaxPoint().GetY(), aabb.GetMinPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMinPoint().GetX(), aabb.GetMaxPoint().GetY(), aabb.GetMaxPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMaxPoint().GetX(), aabb.GetMaxPoint().GetY(), aabb.GetMaxPoint().GetZ()));
gpRender->EndPrimitive();
gpRender->BeginTriangleStrip(4);
gpRender->PrimColor(color);
gpRender->PrimVertex(CVector3f(aabb.GetMinPoint().GetX(), aabb.GetMaxPoint().GetY(), aabb.GetMinPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMinPoint().GetX(), aabb.GetMinPoint().GetY(), aabb.GetMinPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMinPoint().GetX(), aabb.GetMaxPoint().GetY(), aabb.GetMaxPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMinPoint().GetX(), aabb.GetMinPoint().GetY(), aabb.GetMaxPoint().GetZ()));
gpRender->EndPrimitive();
gpRender->BeginTriangleStrip(4);
gpRender->PrimColor(color);
gpRender->PrimVertex(CVector3f(aabb.GetMinPoint().GetX(), aabb.GetMinPoint().GetY(), aabb.GetMinPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMaxPoint().GetX(), aabb.GetMinPoint().GetY(), aabb.GetMinPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMinPoint().GetX(), aabb.GetMinPoint().GetY(), aabb.GetMaxPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMaxPoint().GetX(), aabb.GetMinPoint().GetY(), aabb.GetMaxPoint().GetZ()));
gpRender->EndPrimitive();
gpRender->BeginTriangleStrip(4);
gpRender->PrimColor(color);
gpRender->PrimVertex(CVector3f(aabb.GetMinPoint().GetX(), aabb.GetMinPoint().GetY(), aabb.GetMaxPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMaxPoint().GetX(), aabb.GetMinPoint().GetY(), aabb.GetMaxPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMinPoint().GetX(), aabb.GetMaxPoint().GetY(), aabb.GetMaxPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMaxPoint().GetX(), aabb.GetMaxPoint().GetY(), aabb.GetMaxPoint().GetZ()));
gpRender->EndPrimitive();
gpRender->BeginTriangleStrip(4);
gpRender->PrimColor(color);
gpRender->PrimVertex(CVector3f(aabb.GetMinPoint().GetX(), aabb.GetMinPoint().GetY(), aabb.GetMinPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMaxPoint().GetX(), aabb.GetMinPoint().GetY(), aabb.GetMinPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMinPoint().GetX(), aabb.GetMaxPoint().GetY(), aabb.GetMinPoint().GetZ()));
gpRender->PrimVertex(CVector3f(aabb.GetMaxPoint().GetX(), aabb.GetMaxPoint().GetY(), aabb.GetMinPoint().GetZ()));
gpRender->EndPrimitive();
CGraphics::SetCullMode(kCM_Front);
}

View File

@ -21,7 +21,7 @@ int CGunController::Update(float, CStateManager&) { return 0; }
void CGunController::EnterIdle(CStateManager&) {}
void CGunController::ReturnToDefault(CStateManager&, float) {}
void CGunController::ReturnToDefault(CStateManager&, float, bool) {}
void CGunController::Reset() {}