CNewIntroBoss progress

Former-commit-id: fb4706a250
This commit is contained in:
Luke Street 2022-10-30 15:47:50 -04:00
parent 3b8eb2ed04
commit d4333c1f6a
52 changed files with 284 additions and 73 deletions

View File

@ -531,7 +531,7 @@ lbl_80245004:
/* 80245014 00241F74 7F A4 EB 78 */ mr r4, r29
/* 80245018 00241F78 7F C5 F3 78 */ mr r5, r30
/* 8024501C 00241F7C 7F E6 FB 78 */ mr r6, r31
/* 80245020 00241F80 4B E3 3E 91 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 80245020 00241F80 4B E3 3E 91 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_80245024:
/* 80245024 00241F84 E3 E1 01 28 */ psq_l f31, 296(r1), 0, qr0
/* 80245028 00241F88 80 01 01 34 */ lwz r0, 0x134(r1)

View File

@ -39,7 +39,7 @@ lbl_803E8E4C:
.4byte FluidFXThink__3CAiFQ26CActor11EFluidStateR12CScriptWaterR13CStateManager
.4byte OnScanStateChange__6CActorFQ26CActor10EScanStateR13CStateManager
.4byte GetSortingBounds__6CActorCFRC13CStateManager
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
.4byte GetCollisionPrimitive__13CPhysicsActorCFv
.4byte GetPrimitiveTransform__13CPhysicsActorCFv
.4byte CollidedWith__10CPatternedFRC9TUniqueIdRC18CCollisionInfoListR13CStateManager

View File

@ -6177,7 +6177,7 @@ lbl_80222830:
/* 80222840 0021F7A0 7F 84 E3 78 */ mr r4, r28
/* 80222844 0021F7A4 7F A5 EB 78 */ mr r5, r29
/* 80222848 0021F7A8 7F C6 F3 78 */ mr r6, r30
/* 8022284C 0021F7AC 4B E5 66 65 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 8022284C 0021F7AC 4B E5 66 65 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_80222850:
/* 80222850 0021F7B0 E3 E1 01 C8 */ psq_l f31, 456(r1), 0, qr0
/* 80222854 0021F7B4 CB E1 01 C0 */ lfd f31, 0x1c0(r1)

View File

@ -2326,7 +2326,7 @@ lbl_800E4A5C:
/* 800E4A6C 000E19CC 7F A4 EB 78 */ mr r4, r29
/* 800E4A70 000E19D0 7F C5 F3 78 */ mr r5, r30
/* 800E4A74 000E19D4 7F E6 FB 78 */ mr r6, r31
/* 800E4A78 000E19D8 4B F9 44 39 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 800E4A78 000E19D8 4B F9 44 39 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_800E4A7C:
/* 800E4A7C 000E19DC E3 E1 01 58 */ psq_l f31, 344(r1), 0, qr0
/* 800E4A80 000E19E0 CB E1 01 50 */ lfd f31, 0x150(r1)

View File

@ -958,7 +958,7 @@ lbl_80119548:
/* 80119558 001164B8 7F 84 E3 78 */ mr r4, r28
/* 8011955C 001164BC 7F A5 EB 78 */ mr r5, r29
/* 80119560 001164C0 7F C6 F3 78 */ mr r6, r30
/* 80119564 001164C4 4B F5 F9 4D */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 80119564 001164C4 4B F5 F9 4D */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_80119568:
/* 80119568 001164C8 E3 E1 00 58 */ psq_l f31, 88(r1), 0, qr0
/* 8011956C 001164CC CB E1 00 50 */ lfd f31, 0x50(r1)

View File

@ -577,7 +577,7 @@ lbl_8026FFF0:
/* 80270000 0026CF60 7F A4 EB 78 */ mr r4, r29
/* 80270004 0026CF64 7F C5 F3 78 */ mr r5, r30
/* 80270008 0026CF68 7F E6 FB 78 */ mr r6, r31
/* 8027000C 0026CF6C 4B E0 8E A5 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 8027000C 0026CF6C 4B E0 8E A5 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_80270010:
/* 80270010 0026CF70 E3 E1 00 D8 */ psq_l f31, 216(r1), 0, qr0
/* 80270014 0026CF74 CB E1 00 D0 */ lfd f31, 0xd0(r1)

View File

@ -765,7 +765,7 @@ lbl_8013F92C:
/* 8013F93C 0013C89C 7F A4 EB 78 */ mr r4, r29
/* 8013F940 0013C8A0 7F C5 F3 78 */ mr r5, r30
/* 8013F944 0013C8A4 7F E6 FB 78 */ mr r6, r31
/* 8013F948 0013C8A8 4B F3 95 69 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 8013F948 0013C8A8 4B F3 95 69 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_8013F94C:
/* 8013F94C 0013C8AC 2C 1F 00 06 */ cmpwi r31, 6
/* 8013F950 0013C8B0 40 82 00 0C */ bne lbl_8013F95C

View File

@ -8267,7 +8267,7 @@ lbl_80165EC8:
/* 80165ED8 00162E38 7F A4 EB 78 */ mr r4, r29
/* 80165EDC 00162E3C 7F C5 F3 78 */ mr r5, r30
/* 80165EE0 00162E40 7F E6 FB 78 */ mr r6, r31
/* 80165EE4 00162E44 4B F1 2F CD */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 80165EE4 00162E44 4B F1 2F CD */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_80165EE8:
/* 80165EE8 00162E48 CB E1 00 88 */ lfd f31, 0x88(r1)
/* 80165EEC 00162E4C BB 61 00 74 */ lmw r27, 0x74(r1)

View File

@ -6228,7 +6228,7 @@ lbl_8022C7A8:
/* 8022C7B8 00229718 7F A4 EB 78 */ mr r4, r29
/* 8022C7BC 0022971C 7F C5 F3 78 */ mr r5, r30
/* 8022C7C0 00229720 7F E6 FB 78 */ mr r6, r31
/* 8022C7C4 00229724 4B E4 C6 ED */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 8022C7C4 00229724 4B E4 C6 ED */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_8022C7C8:
/* 8022C7C8 00229728 E3 E1 01 D8 */ psq_l f31, 472(r1), 0, qr0
/* 8022C7CC 0022972C CB E1 01 D0 */ lfd f31, 0x1d0(r1)

View File

@ -1088,7 +1088,7 @@ lbl_80225258:
/* 80225268 002221C8 7F 84 E3 78 */ mr r4, r28
/* 8022526C 002221CC 7F A5 EB 78 */ mr r5, r29
/* 80225270 002221D0 7F C6 F3 78 */ mr r6, r30
/* 80225274 002221D4 4B E5 3C 3D */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 80225274 002221D4 4B E5 3C 3D */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_80225278:
/* 80225278 002221D8 CB E1 00 88 */ lfd f31, 0x88(r1)
/* 8022527C 002221DC BB 61 00 74 */ lmw r27, 0x74(r1)

View File

@ -36,7 +36,7 @@ lbl_803E1C88:
.4byte FluidFXThink__3CAiFQ26CActor11EFluidStateR12CScriptWaterR13CStateManager
.4byte OnScanStateChange__6CActorFQ26CActor10EScanStateR13CStateManager
.4byte GetSortingBounds__6CActorCFRC13CStateManager
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
.4byte GetCollisionPrimitive__13CPhysicsActorCFv
.4byte GetPrimitiveTransform__13CPhysicsActorCFv
.4byte CollidedWith__10CPatternedFRC9TUniqueIdRC18CCollisionInfoListR13CStateManager

View File

@ -6447,7 +6447,7 @@ lbl_801B2AF8:
/* 801B2B08 001AFA68 7F 84 E3 78 */ mr r4, r28
/* 801B2B0C 001AFA6C 7F A5 EB 78 */ mr r5, r29
/* 801B2B10 001AFA70 7F C6 F3 78 */ mr r6, r30
/* 801B2B14 001AFA74 4B EC 63 9D */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 801B2B14 001AFA74 4B EC 63 9D */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_801B2B18:
/* 801B2B18 001AFA78 E3 E1 05 38 */ psq_l f31, 1336(r1), 0, qr0
/* 801B2B1C 001AFA7C CB E1 05 30 */ lfd f31, 0x530(r1)

View File

@ -32,7 +32,7 @@ lbl_803E6408:
.4byte FluidFXThink__3CAiFQ26CActor11EFluidStateR12CScriptWaterR13CStateManager
.4byte OnScanStateChange__6CActorFQ26CActor10EScanStateR13CStateManager
.4byte GetSortingBounds__6CActorCFRC13CStateManager
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
.4byte GetCollisionPrimitive__13CPhysicsActorCFv
.4byte GetPrimitiveTransform__13CPhysicsActorCFv
.4byte CollidedWith__10CPatternedFRC9TUniqueIdRC18CCollisionInfoListR13CStateManager

View File

@ -1230,7 +1230,7 @@ lbl_8013112C:
/* 8013113C 0012E09C 7F 84 E3 78 */ mr r4, r28
/* 80131140 0012E0A0 7F A5 EB 78 */ mr r5, r29
/* 80131144 0012E0A4 7F C6 F3 78 */ mr r6, r30
/* 80131148 0012E0A8 4B F4 7D 69 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 80131148 0012E0A8 4B F4 7D 69 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_8013114C:
/* 8013114C 0012E0AC CB E1 00 28 */ lfd f31, 0x28(r1)
/* 80131150 0012E0B0 BB 61 00 14 */ lmw r27, 0x14(r1)

View File

@ -5657,7 +5657,7 @@ lbl_801F8AF4:
/* 801F8B04 001F5A64 7F 24 CB 78 */ mr r4, r25
/* 801F8B08 001F5A68 7F 45 D3 78 */ mr r5, r26
/* 801F8B0C 001F5A6C 7F 66 DB 78 */ mr r6, r27
/* 801F8B10 001F5A70 4B E8 03 A1 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 801F8B10 001F5A70 4B E8 03 A1 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_801F8B14:
/* 801F8B14 001F5A74 E3 E1 01 F8 */ psq_l f31, 504(r1), 0, qr0
/* 801F8B18 001F5A78 CB E1 01 F0 */ lfd f31, 0x1f0(r1)

View File

@ -7481,7 +7481,7 @@ lbl_801A490C:
/* 801A491C 001A187C 7F A4 EB 78 */ mr r4, r29
/* 801A4920 001A1880 7F C5 F3 78 */ mr r5, r30
/* 801A4924 001A1884 7F E6 FB 78 */ mr r6, r31
/* 801A4928 001A1888 4B ED 45 89 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 801A4928 001A1888 4B ED 45 89 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_801A492C:
/* 801A492C 001A188C E3 E1 01 D8 */ psq_l f31, 472(r1), 0, qr0
/* 801A4930 001A1890 CB E1 01 D0 */ lfd f31, 0x1d0(r1)

View File

@ -1343,7 +1343,7 @@ lbl_801D886C:
/* 801D887C 001D57DC 7F A4 EB 78 */ mr r4, r29
/* 801D8880 001D57E0 7F C5 F3 78 */ mr r5, r30
/* 801D8884 001D57E4 7F E6 FB 78 */ mr r6, r31
/* 801D8888 001D57E8 4B EA 06 29 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 801D8888 001D57E8 4B EA 06 29 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_801D888C:
/* 801D888C 001D57EC E3 E1 00 58 */ psq_l f31, 88(r1), 0, qr0
/* 801D8890 001D57F0 80 01 00 64 */ lwz r0, 0x64(r1)

View File

@ -2519,7 +2519,7 @@ lbl_80236524:
/* 80236534 00233494 7F 84 E3 78 */ mr r4, r28
/* 80236538 00233498 7F A5 EB 78 */ mr r5, r29
/* 8023653C 0023349C 7F C6 F3 78 */ mr r6, r30
/* 80236540 002334A0 4B E4 29 71 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 80236540 002334A0 4B E4 29 71 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_80236544:
/* 80236544 002334A4 CB E1 00 28 */ lfd f31, 0x28(r1)
/* 80236548 002334A8 BB 61 00 14 */ lmw r27, 0x14(r1)

View File

@ -32,7 +32,7 @@ __vt__8CMetaree:
.4byte FluidFXThink__3CAiFQ26CActor11EFluidStateR12CScriptWaterR13CStateManager
.4byte OnScanStateChange__6CActorFQ26CActor10EScanStateR13CStateManager
.4byte GetSortingBounds__6CActorCFRC13CStateManager
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
.4byte GetCollisionPrimitive__13CPhysicsActorCFv
.4byte GetPrimitiveTransform__13CPhysicsActorCFv
.4byte CollidedWith__8CMetareeFRC9TUniqueIdRC18CCollisionInfoListR13CStateManager

View File

@ -8459,7 +8459,7 @@ lbl_801714B8:
/* 801714C8 0016E428 7F A4 EB 78 */ mr r4, r29
/* 801714CC 0016E42C 7F C5 F3 78 */ mr r5, r30
/* 801714D0 0016E430 7F E6 FB 78 */ mr r6, r31
/* 801714D4 0016E434 4B F0 79 DD */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 801714D4 0016E434 4B F0 79 DD */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_801714D8:
/* 801714D8 0016E438 80 01 00 24 */ lwz r0, 0x24(r1)
/* 801714DC 0016E43C CB E1 00 18 */ lfd f31, 0x18(r1)

View File

@ -5029,7 +5029,7 @@ lbl_801C5070:
/* 801C5080 001C1FE0 7F A4 EB 78 */ mr r4, r29
/* 801C5084 001C1FE4 7F C5 F3 78 */ mr r5, r30
/* 801C5088 001C1FE8 7F E6 FB 78 */ mr r6, r31
/* 801C508C 001C1FEC 4B EB 3E 25 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 801C508C 001C1FEC 4B EB 3E 25 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_801C5090:
/* 801C5090 001C1FF0 80 01 00 24 */ lwz r0, 0x24(r1)
/* 801C5094 001C1FF4 CB E1 00 18 */ lfd f31, 0x18(r1)

View File

@ -2486,7 +2486,7 @@ lbl_8027E814:
/* 8027E824 0027B784 7F A4 EB 78 */ mr r4, r29
/* 8027E828 0027B788 7F C5 F3 78 */ mr r5, r30
/* 8027E82C 0027B78C 7F E6 FB 78 */ mr r6, r31
/* 8027E830 0027B790 4B DF A6 81 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 8027E830 0027B790 4B DF A6 81 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_8027E834:
/* 8027E834 0027B794 E3 E1 01 28 */ psq_l f31, 296(r1), 0, qr0
/* 8027E838 0027B798 CB E1 01 20 */ lfd f31, 0x120(r1)

View File

@ -11512,7 +11512,7 @@ lbl_8027AC48:
/* 8027AC58 00277BB8 7F C4 F3 78 */ mr r4, r30
/* 8027AC5C 00277BBC 7F 85 E3 78 */ mr r5, r28
/* 8027AC60 00277BC0 7F A6 EB 78 */ mr r6, r29
/* 8027AC64 00277BC4 4B DF E2 4D */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 8027AC64 00277BC4 4B DF E2 4D */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_8027AC68:
/* 8027AC68 00277BC8 E3 E1 06 98 */ psq_l f31, 1688(r1), 0, qr0
/* 8027AC6C 00277BCC CB E1 06 90 */ lfd f31, 0x690(r1)

View File

@ -32,7 +32,7 @@ lbl_803E4018:
.4byte FluidFXThink__3CAiFQ26CActor11EFluidStateR12CScriptWaterR13CStateManager
.4byte OnScanStateChange__13CNewIntroBossFQ26CActor10EScanStateR13CStateManager
.4byte GetRenderBounds__13CNewIntroBossCFRC12CTransform4f
.4byte DoUserAnimEvent__13CNewIntroBossFR13CStateManagerRC13CInt32POINode14EUserEventType
.4byte DoUserAnimEvent__13CNewIntroBossFR13CStateManagerRC13CInt32POINode14EUserEventTypef
.4byte GetCollisionPrimitive__13CPhysicsActorCFv
.4byte GetPrimitiveTransform__13CPhysicsActorCFv
.4byte CollidedWith__10CPatternedFRC9TUniqueIdRC18CCollisionInfoListR13CStateManager
@ -2169,8 +2169,8 @@ GetTouchBounds__13CNewIntroBossCFv:
/* 8018BA38 00188998 98 03 00 18 */ stb r0, 0x18(r3)
/* 8018BA3C 0018899C 4E 80 00 20 */ blr
.global DoUserAnimEvent__13CNewIntroBossFR13CStateManagerRC13CInt32POINode14EUserEventType
DoUserAnimEvent__13CNewIntroBossFR13CStateManagerRC13CInt32POINode14EUserEventType:
.global DoUserAnimEvent__13CNewIntroBossFR13CStateManagerRC13CInt32POINode14EUserEventTypef
DoUserAnimEvent__13CNewIntroBossFR13CStateManagerRC13CInt32POINode14EUserEventTypef:
/* 8018BA40 001889A0 94 21 FE F0 */ stwu r1, -0x110(r1)
/* 8018BA44 001889A4 7C 08 02 A6 */ mflr r0
/* 8018BA48 001889A8 90 01 01 14 */ stw r0, 0x114(r1)
@ -2336,7 +2336,7 @@ lbl_8018BC94:
/* 8018BCA4 00188C04 7F A4 EB 78 */ mr r4, r29
/* 8018BCA8 00188C08 7F C5 F3 78 */ mr r5, r30
/* 8018BCAC 00188C0C 7F E6 FB 78 */ mr r6, r31
/* 8018BCB0 00188C10 4B EE D2 01 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 8018BCB0 00188C10 4B EE D2 01 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_8018BCB4:
/* 8018BCB4 00188C14 E3 E1 01 08 */ psq_l f31, 264(r1), 0, qr0
/* 8018BCB8 00188C18 80 01 01 14 */ lwz r0, 0x114(r1)

View File

@ -43,7 +43,7 @@ lbl_803E3004:
.4byte FluidFXThink__3CAiFQ26CActor11EFluidStateR12CScriptWaterR13CStateManager
.4byte OnScanStateChange__6CActorFQ26CActor10EScanStateR13CStateManager
.4byte GetSortingBounds__6CActorCFRC13CStateManager
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
.4byte GetCollisionPrimitive__11CWallWalkerCFv
.4byte GetPrimitiveTransform__13CPhysicsActorCFv
.4byte CollidedWith__9CParasiteFRC9TUniqueIdRC18CCollisionInfoListR13CStateManager

View File

@ -36,7 +36,7 @@ lbl_803DA5C8:
.4byte FluidFXThink__3CAiFQ26CActor11EFluidStateR12CScriptWaterR13CStateManager
.4byte OnScanStateChange__6CActorFQ26CActor10EScanStateR13CStateManager
.4byte GetSortingBounds__6CActorCFRC13CStateManager
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
.4byte GetCollisionPrimitive__13CPhysicsActorCFv
.4byte GetPrimitiveTransform__13CPhysicsActorCFv
.4byte CollidedWith__10CPatternedFRC9TUniqueIdRC18CCollisionInfoListR13CStateManager
@ -2515,8 +2515,8 @@ lbl_80078E8C:
/* 80078EA8 00075E08 38 21 00 40 */ addi r1, r1, 0x40
/* 80078EAC 00075E0C 4E 80 00 20 */ blr
.global DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType:
.global DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef:
/* 80078EB0 00075E10 94 21 FD 80 */ stwu r1, -0x280(r1)
/* 80078EB4 00075E14 7C 08 02 A6 */ mflr r0
/* 80078EB8 00075E18 90 01 02 84 */ stw r0, 0x284(r1)

View File

@ -896,7 +896,7 @@ lbl_80295620:
/* 80295648 002925A8 48 00 00 0C */ b lbl_80295654
lbl_8029564C:
/* 8029564C 002925AC 7F E3 FB 78 */ mr r3, r31
/* 80295650 002925B0 4B DE 38 61 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 80295650 002925B0 4B DE 38 61 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_80295654:
/* 80295654 002925B4 80 01 00 34 */ lwz r0, 0x34(r1)
/* 80295658 002925B8 83 E1 00 2C */ lwz r31, 0x2c(r1)

View File

@ -1494,7 +1494,7 @@ lbl_80147C98:
/* 80147CA8 00144C08 7F 84 E3 78 */ mr r4, r28
/* 80147CAC 00144C0C 7F A5 EB 78 */ mr r5, r29
/* 80147CB0 00144C10 7F C6 F3 78 */ mr r6, r30
/* 80147CB4 00144C14 4B F3 11 FD */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 80147CB4 00144C14 4B F3 11 FD */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_80147CB8:
/* 80147CB8 00144C18 E3 E1 01 48 */ psq_l f31, 328(r1), 0, qr0
/* 80147CBC 00144C1C CB E1 01 40 */ lfd f31, 0x140(r1)

View File

@ -1326,7 +1326,7 @@ lbl_8014C324:
/* 8014C334 00149294 7F A4 EB 78 */ mr r4, r29
/* 8014C338 00149298 7F C5 F3 78 */ mr r5, r30
/* 8014C33C 0014929C 7F E6 FB 78 */ mr r6, r31
/* 8014C340 001492A0 4B F2 CB 71 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 8014C340 001492A0 4B F2 CB 71 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_8014C344:
/* 8014C344 001492A4 E3 E1 00 28 */ psq_l f31, 40(r1), 0, qr0
/* 8014C348 001492A8 80 01 00 34 */ lwz r0, 0x34(r1)

View File

@ -68,7 +68,7 @@ __vt__7CPuffer:
.4byte FluidFXThink__3CAiFQ26CActor11EFluidStateR12CScriptWaterR13CStateManager
.4byte OnScanStateChange__6CActorFQ26CActor10EScanStateR13CStateManager
.4byte GetSortingBounds__6CActorCFRC13CStateManager
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
.4byte GetCollisionPrimitive__13CPhysicsActorCFv
.4byte GetPrimitiveTransform__13CPhysicsActorCFv
.4byte CollidedWith__10CPatternedFRC9TUniqueIdRC18CCollisionInfoListR13CStateManager

View File

@ -7762,7 +7762,7 @@ lbl_80258CA0:
/* 80258CB0 00255C10 7F A4 EB 78 */ mr r4, r29
/* 80258CB4 00255C14 7F C5 F3 78 */ mr r5, r30
/* 80258CB8 00255C18 7F E6 FB 78 */ mr r6, r31
/* 80258CBC 00255C1C 4B E2 01 F5 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 80258CBC 00255C1C 4B E2 01 F5 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_80258CC0:
/* 80258CC0 00255C20 E3 E1 03 A8 */ psq_l f31, 936(r1), 0, qr0
/* 80258CC4 00255C24 CB E1 03 A0 */ lfd f31, 0x3a0(r1)

View File

@ -32,7 +32,7 @@ lbl_803E3348:
.4byte FluidFXThink__3CAiFQ26CActor11EFluidStateR12CScriptWaterR13CStateManager
.4byte OnScanStateChange__6CActorFQ26CActor10EScanStateR13CStateManager
.4byte GetSortingBounds__6CActorCFRC13CStateManager
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
.4byte GetCollisionPrimitive__13CPhysicsActorCFv
.4byte GetPrimitiveTransform__13CPhysicsActorCFv
.4byte CollidedWith__10CPatternedFRC9TUniqueIdRC18CCollisionInfoListR13CStateManager

View File

@ -497,7 +497,7 @@ lbl_80266424:
/* 80266434 00263394 7F A4 EB 78 */ mr r4, r29
/* 80266438 00263398 7F C5 F3 78 */ mr r5, r30
/* 8026643C 0026339C 7F E6 FB 78 */ mr r6, r31
/* 80266440 002633A0 4B E1 2A 71 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 80266440 002633A0 4B E1 2A 71 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_80266444:
/* 80266444 002633A4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 80266448 002633A8 CB E1 00 18 */ lfd f31, 0x18(r1)

View File

@ -2772,7 +2772,7 @@ lbl_80122084:
/* 80122094 0011EFF4 7F A4 EB 78 */ mr r4, r29
/* 80122098 0011EFF8 7F C5 F3 78 */ mr r5, r30
/* 8012209C 0011EFFC 7F E6 FB 78 */ mr r6, r31
/* 801220A0 0011F000 4B F5 6E 11 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 801220A0 0011F000 4B F5 6E 11 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_801220A4:
/* 801220A4 0011F004 E3 E1 00 88 */ psq_l f31, 136(r1), 0, qr0
/* 801220A8 0011F008 80 01 00 94 */ lwz r0, 0x94(r1)

View File

@ -32,7 +32,7 @@ lbl_803E2D28:
.4byte FluidFXThink__3CAiFQ26CActor11EFluidStateR12CScriptWaterR13CStateManager
.4byte OnScanStateChange__6CActorFQ26CActor10EScanStateR13CStateManager
.4byte GetSortingBounds__6CActorCFRC13CStateManager
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
.4byte GetCollisionPrimitive__13CPhysicsActorCFv
.4byte GetPrimitiveTransform__13CPhysicsActorCFv
.4byte CollidedWith__10CPatternedFRC9TUniqueIdRC18CCollisionInfoListR13CStateManager

View File

@ -7968,11 +7968,11 @@ lbl_801E1060:
/* 801E106C 001DDFCC 48 00 00 10 */ b lbl_801E107C
.global lbl_801E1070
lbl_801E1070:
/* 801E1070 001DDFD0 4B E9 7E 41 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 801E1070 001DDFD0 4B E9 7E 41 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
/* 801E1074 001DDFD4 48 00 00 08 */ b lbl_801E107C
.global lbl_801E1078
lbl_801E1078:
/* 801E1078 001DDFD8 4B E9 7E 39 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 801E1078 001DDFD8 4B E9 7E 39 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
.global lbl_801E107C
lbl_801E107C:
/* 801E107C 001DDFDC E3 E1 05 68 */ psq_l f31, 1384(r1), 0, qr0

View File

@ -32,7 +32,7 @@ lbl_803E6BE0:
.4byte FluidFXThink__3CAiFQ26CActor11EFluidStateR12CScriptWaterR13CStateManager
.4byte OnScanStateChange__6CActorFQ26CActor10EScanStateR13CStateManager
.4byte GetSortingBounds__6CActorCFRC13CStateManager
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
.4byte GetCollisionPrimitive__13CPhysicsActorCFv
.4byte GetPrimitiveTransform__13CPhysicsActorCFv
.4byte CollidedWith__10CPatternedFRC9TUniqueIdRC18CCollisionInfoListR13CStateManager

View File

@ -1207,7 +1207,7 @@ lbl_8025E85C:
/* 8025E86C 0025B7CC 7F A4 EB 78 */ mr r4, r29
/* 8025E870 0025B7D0 7F C5 F3 78 */ mr r5, r30
/* 8025E874 0025B7D4 7F E6 FB 78 */ mr r6, r31
/* 8025E878 0025B7D8 4B E1 A6 39 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 8025E878 0025B7D8 4B E1 A6 39 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_8025E87C:
/* 8025E87C 0025B7DC E3 E1 00 98 */ psq_l f31, 152(r1), 0, qr0
/* 8025E880 0025B7E0 CB E1 00 90 */ lfd f31, 0x90(r1)

View File

@ -32,7 +32,7 @@ lbl_803EA0F0:
.4byte FluidFXThink__3CAiFQ26CActor11EFluidStateR12CScriptWaterR13CStateManager
.4byte OnScanStateChange__6CActorFQ26CActor10EScanStateR13CStateManager
.4byte GetSortingBounds__6CActorCFRC13CStateManager
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
.4byte GetCollisionPrimitive__11CWallWalkerCFv
.4byte GetPrimitiveTransform__13CPhysicsActorCFv
.4byte CollidedWith__10CPatternedFRC9TUniqueIdRC18CCollisionInfoListR13CStateManager

View File

@ -6663,7 +6663,7 @@ lbl_80110710:
/* 80110720 0010D680 7F A4 EB 78 */ mr r4, r29
/* 80110724 0010D684 7F C5 F3 78 */ mr r5, r30
/* 80110728 0010D688 7F E6 FB 78 */ mr r6, r31
/* 8011072C 0010D68C 4B F6 87 85 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
/* 8011072C 0010D68C 4B F6 87 85 */ bl DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
lbl_80110730:
/* 80110730 0010D690 E3 E1 0A 18 */ psq_l f31, -1512(r1), 0, qr0
/* 80110734 0010D694 CB E1 0A 10 */ lfd f31, 0xa10(r1)

View File

@ -32,7 +32,7 @@ lbl_803EC0A0:
.4byte FluidFXThink__3CAiFQ26CActor11EFluidStateR12CScriptWaterR13CStateManager
.4byte OnScanStateChange__6CActorFQ26CActor10EScanStateR13CStateManager
.4byte GetSortingBounds__6CActorCFRC13CStateManager
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventType
.4byte DoUserAnimEvent__10CPatternedFR13CStateManagerRC13CInt32POINode14EUserEventTypef
.4byte GetCollisionPrimitive__13CPhysicsActorCFv
.4byte GetPrimitiveTransform__13CPhysicsActorCFv
.4byte CollidedWith__10CPatternedFRC9TUniqueIdRC18CCollisionInfoListR13CStateManager

View File

@ -16,9 +16,11 @@ public:
};
float GetTime() const { return x0_t; }
bool IsValid() const { return x20_valid; }
bool IsValid() const { return x20_valid == kI_Valid; }
// TODO: figure out what's going on here
bool IsInvalid() const { return x20_valid == kI_Invalid; }
// GetPlane__14CRayCastResultCFv
// GetPoint__14CRayCastResultCFv
const CVector3f& GetPoint() const { return x4_point; }
// GetMaterial__14CRayCastResultCFv
// Transform__14CRayCastResultFRC12CTransform4f

View File

@ -6,7 +6,22 @@
#include "Kyoto/Math/CVector3f.hpp"
#include "rstl/optional_object.hpp"
enum EBoneTrackingFlags {
kBTF_None = 0,
kBTF_NoParent = 1,
kBTF_NoParentOrigin = 2,
kBTF_NoHorizontalAim = 4,
kBTF_ParentIk = 8,
};
class CBoneTracking {
public:
CBoneTracking(const CAnimData& animData, const rstl::string& bone, float maxTrackingAngle,
float angSpeed, EBoneTrackingFlags flags);
void SetActive(bool v);
private:
CQuaternion x0_rotation;
float x10_;
@ -14,7 +29,7 @@ private:
float x18_time;
float x1c_maxTrackingAngle;
float x20_angSpeed;
rstl::optional_object<CVector3f> x24_targetPosition;
rstl::optional_object< CVector3f > x24_targetPosition;
TUniqueId x34_target;
uchar x36_flags;
};

View File

@ -9,6 +9,7 @@ class CCollisionPrimitive;
class CMaterialFilter;
class CStateManager;
class CTransform4f;
class CRayCastResult;
class CGameCollision {
public:
@ -25,6 +26,8 @@ public:
const CCollisionPrimitive&, const CTransform4f&,
const CMaterialFilter&, const TEntityList&, CVector3f,
TUniqueId&, CCollisionInfo&, double&);
static CRayCastResult RayStaticIntersection(const CStateManager&, const CVector3f&,
const CVector3f&, float, const CMaterialFilter&);
};
#endif // _CGAMECOLLISION

View File

@ -3,12 +3,13 @@
#include "MetroidPrime/Enemies/CPatterned.hpp"
#include "Kyoto/Animation/CharacterCommon.hpp"
#include "MetroidPrime/CBoneTracking.hpp"
#include "MetroidPrime/Weapons/CProjectileInfo.hpp"
#include "Kyoto/Animation/CharacterCommon.hpp"
class CCollisionActorManager;
class CPatternedInfo;
class CNewIntroBoss : public CPatterned {
public:
CNewIntroBoss(TUniqueId, const rstl::string&, const CEntityInfo& info, const CTransform4f& xf,
@ -17,6 +18,32 @@ public:
const CDamageInfo& dInfo, CAssetId beamContactFxId, CAssetId beamPulseFxId,
CAssetId beamTextureId, CAssetId beamGlowTextureId);
// CEntity
void Accept(IVisitor& visitor) override;
void Think(float dt, CStateManager& mgr) override;
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override;
// CActor
void AddToRenderer(const CFrustumPlanes&, const CStateManager&) const override;
rstl::optional_object< CAABox > GetTouchBounds() const override;
void OnScanStateChange(EScanState, CStateManager&) override;
CAABox GetSortingBounds(const CStateManager&) const override;
void DoUserAnimEvent(CStateManager& mgr, const CInt32POINode& node, EUserEventType type,
float dt) override;
// CAi
void Patrol(CStateManager&, EStateMsg, float) override;
void Generate(CStateManager& mgr, EStateMsg msg, float arg) override;
void Attack(CStateManager&, EStateMsg, float) override;
bool InAttackPosition(CStateManager&, float) override;
bool AnimOver(CStateManager&, float) override;
bool ShouldAttack(CStateManager&, float) override;
bool ShouldTurn(CStateManager&, float) override;
bool AIStage(CStateManager&, float) override;
// CPatterned
CProjectileInfo* ProjectileInfo() override;
pas::ELocomotionType GetLocoForHealth(const CStateManager& mgr) const;
pas::EGenerateType GetGenerateForHealth(const CStateManager& mgr) const;
float GetNextAttackTime(CStateManager& mgr) const;
@ -26,10 +53,9 @@ public:
float GetInitialHP() const { return x640_initialHp; }
void Generate(CStateManager& mgr, EStateMsg msg, float arg);
private:
pas::ELocomotionType x568_locomotion;
u32 x56c_stateProg;
uint x56c_stateProg;
float x570_minTurnAngle;
CBoneTracking x574_boneTracking;
CProjectileInfo x5ac_projectileInfo;
@ -53,7 +79,7 @@ private:
float x63c_attackTime;
float x640_initialHp;
CTransform4f x644_initialXf;
s16 x674_rumbleVoice;
short x674_rumbleVoice;
TUniqueId x676_curProjectile;
bool x678_;
};

View File

@ -233,7 +233,7 @@ public:
virtual u8 GetModelAlphau8(const CStateManager&) const { return x42c_color.GetAlphau8(); }
virtual bool IsOnGround() const { return x328_27_onGround; }
virtual float GetGravityConstant() const { return CPhysicsActor::GravityConstant(); }
virtual CProjectileInfo* GetProjectileInfo() { return nullptr; }
virtual CProjectileInfo* ProjectileInfo() { return nullptr; }
virtual void PhazeOut(CStateManager&);
virtual const rstl::optional_object< TLockedToken< CGenDescription > >&
GetDeathExplosionParticle() const {
@ -241,6 +241,7 @@ public:
}
void DeathDelete(CStateManager& mgr);
CTransform4f GetLctrTransform(const rstl::string&) const;
TUniqueId GetDestObj() const { return x2dc_destObj; } // TODO: name?
CStateMachineState& StateMachineState() { return x330_stateMachineState; }

View File

@ -48,13 +48,14 @@ class CPlayer : public CPhysicsActor {
, x4_curAlphaInDur(alphaInDur)
, x8_curAlphaOutDur(alphaOutDur)
, xc_tex(tex) {}
CAssetId GetTextureId() const { return xc_tex; }
CAssetId GetTextureId() const { return xc_tex; }
void SetSteam(float targetAlpha, float alphaInDur, float alphaOutDur, CAssetId txtr,
bool affectsThermal);
void Update(float dt);
float GetAlpha() const { return x20_alpha; }
bool AffectsThermal() const { return x28_affectsThermal; }
};
public:
enum EPlayerOrbitState {
kOS_NoOrbit,
@ -177,6 +178,7 @@ public:
CVector3f GetBallPosition() const;
CVector3f GetEyePosition() const;
float GetEyeHeight() const;
CTransform4f CreateTransformFromMovementDirection() const;
EPlayerOrbitState GetOrbitState() const { return x304_orbitState; }
const CVector3f& GetMovementDirection() const { return x50c_moveDir; }
@ -215,14 +217,14 @@ public:
void Teleport(const CTransform4f& xf, CStateManager& mgr, bool resetBallCam);
void SetSpawnedMorphBallState(EPlayerMorphBallState state, CStateManager& mgr);
const CVisorSteam& GetVisorSteam() const { return x7a0_visorSteam; }
void SetVisorSteam(float targetAlpha, float alphaInDur, float alphaOutDir, CAssetId txtr, bool affectsThermal);
void SetVisorSteam(float targetAlpha, float alphaInDur, float alphaOutDir, CAssetId txtr,
bool affectsThermal);
CVector3f GetDampedClampedVelocityWR() const;
float GetAverageSpeed() const;
float GetGravity() const;
private:
NPlayer::EPlayerMovementState x258_movementState;
rstl::vector< CToken > x25c_ballTransitionsRes;
TUniqueId x26c_attachedActor;

View File

@ -8,11 +8,12 @@
class CFluidPlaneCPU;
class CScriptWater {
uchar x0_pad[0x1b4];
rstl::single_ptr<CFluidPlaneCPU> x1b4_fluidPlane;
public:
CFluidPlaneCPU& FluidPlane() { return *x1b4_fluidPlane; }
public:
CFluidPlaneCPU& FluidPlane() { return *x1b4_fluidPlane; }
private:
uchar x0_pad[0x1b4];
rstl::single_ptr< CFluidPlaneCPU > x1b4_fluidPlane;
};
#endif // _CSCRIPTWATER

View File

@ -3,14 +3,14 @@
#include "MetroidPrime/CDamageInfo.hpp"
#include "Kyoto/TToken.hpp"
#include "Kyoto/Math/CVector3f.hpp"
#include "Kyoto/TToken.hpp"
class CPlayer;
class CWeaponDescription;
class CProjectileInfo {
TCachedToken<CWeaponDescription> x0_weaponDescription;
TCachedToken< CWeaponDescription > x0_weaponDescription;
CDamageInfo xc_damageInfo;
public:
@ -18,8 +18,12 @@ public:
explicit CProjectileInfo(CInputStream&);
float GetProjectileSpeed() const;
CVector3f PredictInterceptPos(const CVector3f& gunPos, const CVector3f& aimPos, const CPlayer& player, bool gravity, float dt);
static CVector3f PredictInterceptPos(const CVector3f& gunPos, const CVector3f& aimPos, const CPlayer& player, bool gravity, float speed, float dt);
CVector3f PredictInterceptPos(const CVector3f& gunPos, const CVector3f& aimPos,
const CPlayer& player, bool gravity, float dt);
static CVector3f PredictInterceptPos(const CVector3f& gunPos, const CVector3f& aimPos,
const CPlayer& player, bool gravity, float speed, float dt);
TCachedToken< CWeaponDescription >& Token() { return x0_weaponDescription; }
};
#endif // _CPROJECTILEINFO

View File

@ -99,7 +99,10 @@ public:
size_t size() const { return x8_size; }
void assign(const basic_string&);
basic_string& operator=(const basic_string&);
basic_string& operator=(const basic_string& other) {
assign(other);
return *this;
}
basic_string operator+(const basic_string&);
basic_string operator+(const _CharTp*);

View File

@ -1,7 +1,48 @@
#include "MetroidPrime/Enemies/CNewIntroBoss.hpp"
#include "MetroidPrime/CCollisionActorManager.hpp"
#include "MetroidPrime/CGameCollision.hpp"
#include "MetroidPrime/CHealthInfo.hpp"
#include "MetroidPrime/CPOINode.hpp"
#include "MetroidPrime/CRumbleManager.hpp"
#include "MetroidPrime/Player/CPlayer.hpp"
#include "MetroidPrime/Weapons/CBeamProjectile.hpp"
#include "Collision/CRayCastResult.hpp"
// TODO move
struct SSphereJointInfo {
const char* name;
float radius;
};
struct SOBBJointInfo {
const char* from;
const char* to;
float bX;
float bY;
float bZ;
};
const SOBBJointInfo skOBBJoints[] = {
{"Pelvis", "Spine_3", 4.f, 1.f, 4.f},
{"Spine_3", "Tail_1", 2.f, 1.f, 2.f},
{"Tail_1", "Tail_2", 1.f, 1.f, 1.f},
{"Tail_2", "Tail_3", 1.f, 1.f, 1.f},
{"Tail_3", "Tail_4", 1.f, 1.f, 1.f},
{"R_shoulder_front", "R_elbow_front", .5f, .5f, .5f},
{"R_elbow_front", "R_wrist_front", .5f, .5f, .5f},
{"L_shoulder_front", "L_elbow_front", .5f, .5f, .5f},
{"L_elbow_front", "L_wrist_front", .5f, .5f, .5f},
{"R_shoulder_back", "R_elbow_back", .5f, .5f, .5f},
{"R_elbow_back", "R_wrist_back", .5f, .5f, .5f},
{"L_shoulder_back", "L_elbow_back", .5f, .5f, .5f},
{"L_elbow_back", "L_wrist_back", .5f, .5f, .5f},
};
const SSphereJointInfo skSphereJoints[] = {
{"Head_1", 1.5f},
{"Tail_5", 1.5f},
};
pas::ELocomotionType CNewIntroBoss::GetLocoForHealth(const CStateManager& mgr) const {
const CHealthInfo* hInfo = GetHealthInfo(mgr);
@ -36,6 +77,118 @@ float CNewIntroBoss::GetNextAttackTime(CStateManager& mgr) const {
return attackTime - (0.825f * attackTime);
}
CNewIntroBoss::CNewIntroBoss(TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
const CTransform4f& xf, const CModelData& mData,
const CPatternedInfo& pInfo, const CActorParameters& actParms,
float minTurnAngle, CAssetId projectile, const CDamageInfo& dInfo,
CAssetId beamContactFxId, CAssetId beamPulseFxId,
CAssetId beamTextureId, CAssetId beamGlowTextureId)
: CPatterned(kC_NewIntroBoss, uid, name, kFT_Zero, info, xf, mData, pInfo, kMT_Flyer, kCT_One,
kBT_Restricted, actParms, kKBV_Medium)
, x568_locomotion(pas::kLT_Relaxed)
, x56c_stateProg(0)
, x570_minTurnAngle(minTurnAngle)
, x574_boneTracking(*GetAnimationData(), rstl::string_l("Head_1"), CMath::Deg2Rad(80.f),
CMath::Deg2Rad(180.f), kBTF_None)
, x5ac_projectileInfo(projectile, dInfo)
, x5d4_stage1Projectile(kInvalidUniqueId)
, x5d6_stage2Projectile(kInvalidUniqueId)
, x5d8_stage3Projectile(kInvalidUniqueId)
, x5f0_beamContactFxId(beamContactFxId)
, x5f4_beamPulseFxId(beamPulseFxId)
, x5f8_beamTextureId(beamTextureId)
, x5fc_beamGlowTextureId(beamGlowTextureId)
, x600_headActor(kInvalidUniqueId)
, x602_pelvisActor(kInvalidUniqueId)
, x604_predictedPlayerPos(CVector3f::Zero())
, x610_lookPos(CVector3f::Zero())
, x61c_startPlayerPos(CVector3f::Zero())
, x628_firingTime(0.f)
, x62c_targetPos(CVector3f::Zero())
, x638_(0.2f)
, x63c_attackTime(8.f)
, x640_initialHp(0.f)
, x644_initialXf(xf)
, x674_rumbleVoice(-1)
, x676_curProjectile(kInvalidUniqueId)
, x678_(false) {
x5ac_projectileInfo.Token().Lock();
x574_boneTracking.SetActive(true);
}
CProjectileInfo* CNewIntroBoss::ProjectileInfo() { return &x5ac_projectileInfo; }
CVector3f CNewIntroBoss::PlayerPos(const CStateManager& mgr) const {
float z0 = mgr.GetPlayer()->GetEyeHeight() / 2.f;
CVector3f pos = mgr.GetPlayer()->GetTranslation() + CVector3f(0.f, 0.f, z0);
CRayCastResult result = CGameCollision::RayStaticIntersection(
mgr, pos, CVector3f::Down(), 30.f, CMaterialFilter::MakeInclude(kMT_Solid));
if (result.IsInvalid()) {
float z = mgr.GetPlayer()->GetEyeHeight() / 2.f + 0.2f;
return mgr.GetPlayer()->GetTranslation() + CVector3f(0.f, 0.f, z);
} else {
float z = mgr.GetPlayer()->GetEyeHeight() / 2.f + 0.2f;
return result.GetPoint() + CVector3f(0.f, 0.f, z);
}
}
void CNewIntroBoss::DoUserAnimEvent(CStateManager& mgr, const CInt32POINode& node,
EUserEventType event, float dt) {
bool handled = false;
switch (event) {
case kUE_DamageOn: {
x5dc_damageLocator = node.GetLocatorName();
CTransform4f xf = GetLctrTransform(x5dc_damageLocator);
CVector3f playerPos = PlayerPos(mgr);
x62c_targetPos = x610_lookPos = x604_predictedPlayerPos = playerPos;
x61c_startPlayerPos = playerPos;
x628_firingTime = 0.f;
if (GetLocoForHealth(mgr) == pas::kLT_Combat) {
x676_curProjectile = x5d8_stage3Projectile;
} else if (GetLocoForHealth(mgr) == pas::kLT_Lurk) {
x676_curProjectile = x5d6_stage2Projectile;
} else {
x676_curProjectile = x5d4_stage1Projectile;
}
CTransform4f projXf = CTransform4f::LookAt(xf.GetTranslation(), x610_lookPos);
if (CBeamProjectile* projectile =
static_cast< CBeamProjectile* >(mgr.ObjectById(x676_curProjectile))) {
if (!projectile->GetActive()) {
projectile->Fire(projXf, mgr, false);
if (x674_rumbleVoice == -1)
x674_rumbleVoice =
mgr.GetRumbleManager()->Rumble(mgr, kRFX_IntroBossProjectile, 1.f, kRP_Two);
}
}
handled = true;
break;
}
case kUE_DamageOff: {
if (CBeamProjectile* projectile =
static_cast< CBeamProjectile* >(mgr.ObjectById(x676_curProjectile))) {
projectile->ResetBeam(mgr, false);
}
StopRumble(mgr);
x63c_attackTime = GetNextAttackTime(mgr);
SendScriptMsgs(kSS_Attack, mgr, kSM_None);
handled = true;
break;
}
case kUE_Projectile:
default:
break;
}
if (!handled) {
CPatterned::DoUserAnimEvent(mgr, node, event, dt);
}
}
rstl::optional_object< CAABox > CNewIntroBoss::GetTouchBounds() const {
return rstl::optional_object_null();
}
void CNewIntroBoss::Generate(CStateManager& mgr, EStateMsg msg, float arg) {
/*

View File

@ -83,19 +83,20 @@ void CWeapon::FluidFXThink(EFluidState state, CScriptWater& water, CStateManager
#if 0
if (doRipple) {
CVector3f pos = GetTranslation();
pos.SetZ(float(water.GetTriggerBoundsWR().GetMax().GetZ()));
pos.SetZ(water.GetSurfaceZ()); // <- GetTriggerBoundsWR().GetMax().GetZ()
if (True(xe8_projectileAttribs & EProjectileAttrib::ComboShot)) {
if (!water.CanRippleAtPoint(pos))
if (!water.CanRippleAtPoint(pos)) {
doRipple = false;
}
} else if (state == EFluidState::InFluid) {
doRipple = false;
}
if (doRipple) {
water.GetFluidPlane().AddRipple(mag, x8_uid, pos, water, mgr);
mgr.GetFluidPlaneManager()->CreateSplash(x8_uid, mgr, water, pos, mag,
state == EFluidState::EnteredFluid ||
state == EFluidState::LeftFluid);
water.FluidPlane().AddRipple(mag, x8_uid, pos, water, mgr);
mgr.FluidPlaneManager()->CreateSplash(x8_uid, mgr, water, pos, mag,
state == EFluidState::EnteredFluid ||
state == EFluidState::LeftFluid);
}
}
#endif