mirror of https://github.com/PrimeDecomp/prime.git
Match and link CFire, minor fixes
This commit is contained in:
parent
1ec5a25fa6
commit
82901862fa
|
@ -158,7 +158,7 @@ MetroidPrime/Tweaks/CTweakGame.cpp:
|
||||||
.text start:0x800371E4 end:0x80037400
|
.text start:0x800371E4 end:0x80037400
|
||||||
.data start:0x803D9CD0 end:0x803D9CE0
|
.data start:0x803D9CD0 end:0x803D9CE0
|
||||||
|
|
||||||
MetroidPrime/CGameProjectile.cpp:
|
MetroidPrime/Weapons/CGameProjectile.cpp:
|
||||||
.text start:0x80037400 end:0x8003A7A4
|
.text start:0x80037400 end:0x8003A7A4
|
||||||
.rodata start:0x803CCE20 end:0x803CCE38
|
.rodata start:0x803CCE20 end:0x803CCE38
|
||||||
.data start:0x803D9CE0 end:0x803D9D50
|
.data start:0x803D9CE0 end:0x803D9D50
|
||||||
|
|
|
@ -10777,7 +10777,7 @@ __ct__7CPufferF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rs
|
||||||
AcceptScriptMsg__5CFireF20EScriptObjectMessage9TUniqueIdR13CStateManager = .text:0x8025CC24; // type:function size:0x80 scope:global
|
AcceptScriptMsg__5CFireF20EScriptObjectMessage9TUniqueIdR13CStateManager = .text:0x8025CC24; // type:function size:0x80 scope:global
|
||||||
Think__5CFireFfR13CStateManager = .text:0x8025CCA4; // type:function size:0x24C scope:global
|
Think__5CFireFfR13CStateManager = .text:0x8025CCA4; // type:function size:0x24C scope:global
|
||||||
Accept__5CFireFR8IVisitor = .text:0x8025CEF0; // type:function size:0x38 scope:global
|
Accept__5CFireFR8IVisitor = .text:0x8025CEF0; // type:function size:0x38 scope:global
|
||||||
Render__5CFireCFRC13CStateManager = .text:0x8025CF28; // type:function size:0xEC scope:global
|
AddToRenderer__5CFireCFRC14CFrustumPlanesRC13CStateManager = .text:0x8025CF28; // type:function size:0xEC scope:global
|
||||||
GetTouchBounds__5CFireCFv = .text:0x8025D014; // type:function size:0x68 scope:global
|
GetTouchBounds__5CFireCFv = .text:0x8025D014; // type:function size:0x68 scope:global
|
||||||
Touch__5CFireFR6CActorR13CStateManager = .text:0x8025D07C; // type:function size:0xC4 scope:global
|
Touch__5CFireFR6CActorR13CStateManager = .text:0x8025D07C; // type:function size:0xC4 scope:global
|
||||||
__dt__5CFireFv = .text:0x8025D140; // type:function size:0x9C scope:global
|
__dt__5CFireFv = .text:0x8025D140; // type:function size:0x9C scope:global
|
||||||
|
@ -17543,7 +17543,7 @@ lbl_803D51F6 = .rodata:0x803D51F6; // type:object size:0xC data:string
|
||||||
lbl_803D5202 = .rodata:0x803D5202; // type:object size:0xC data:string
|
lbl_803D5202 = .rodata:0x803D5202; // type:object size:0xC data:string
|
||||||
lbl_803D520E = .rodata:0x803D520E; // type:object size:0xC data:string
|
lbl_803D520E = .rodata:0x803D520E; // type:object size:0xC data:string
|
||||||
lbl_803D521A = .rodata:0x803D521A; // type:object size:0x16
|
lbl_803D521A = .rodata:0x803D521A; // type:object size:0x16
|
||||||
lbl_803D5230 = .rodata:0x803D5230; // type:object size:0x10
|
@stringBase0 = .rodata:0x803D5230; // type:object size:0xC scope:local data:string_table
|
||||||
@stringBase0 = .rodata:0x803D5240; // type:object size:0x15 scope:local data:string_table
|
@stringBase0 = .rodata:0x803D5240; // type:object size:0x15 scope:local data:string_table
|
||||||
lbl_803D5258 = .rodata:0x803D5258; // type:object size:0x11 data:string
|
lbl_803D5258 = .rodata:0x803D5258; // type:object size:0x11 data:string
|
||||||
lbl_803D5269 = .rodata:0x803D5269; // type:object size:0xF
|
lbl_803D5269 = .rodata:0x803D5269; // type:object size:0xF
|
||||||
|
@ -18051,7 +18051,7 @@ lbl_803D9CA8 = .data:0x803D9CA8; // type:object size:0x10
|
||||||
__vt__12CTweakPlayer = .data:0x803D9CB8; // type:object size:0xC scope:weak
|
__vt__12CTweakPlayer = .data:0x803D9CB8; // type:object size:0xC scope:weak
|
||||||
__vt__12ITweakObject = .data:0x803D9CC4; // type:object size:0xC scope:weak
|
__vt__12ITweakObject = .data:0x803D9CC4; // type:object size:0xC scope:weak
|
||||||
__vt__10CTweakGame = .data:0x803D9CD0; // type:object size:0xC scope:global
|
__vt__10CTweakGame = .data:0x803D9CD0; // type:object size:0xC scope:global
|
||||||
lbl_803D9CE0 = .data:0x803D9CE0; // type:object size:0x70
|
__vt__15CGameProjectile = .data:0x803D9CE0; // type:object size:0x70
|
||||||
kVerticalAngleTable = .data:0x803D9D50; // type:object size:0xC scope:global data:float
|
kVerticalAngleTable = .data:0x803D9D50; // type:object size:0xC scope:global data:float
|
||||||
kHorizontalAngleTable = .data:0x803D9D5C; // type:object size:0xC scope:global
|
kHorizontalAngleTable = .data:0x803D9D5C; // type:object size:0xC scope:global
|
||||||
kVerticalVarianceTable = .data:0x803D9D68; // type:object size:0xC scope:global
|
kVerticalVarianceTable = .data:0x803D9D68; // type:object size:0xC scope:global
|
||||||
|
@ -18543,7 +18543,7 @@ jumptable_803E95A4 = .data:0x803E95A4; // type:object size:0xAC scope:local
|
||||||
skGasJetLocators = .data:0x803E9650; // type:object size:0x38 scope:global data:4byte
|
skGasJetLocators = .data:0x803E9650; // type:object size:0x38 scope:global data:4byte
|
||||||
skGasLocators = .data:0x803E9688; // type:object size:0x38 scope:global data:4byte
|
skGasLocators = .data:0x803E9688; // type:object size:0x38 scope:global data:4byte
|
||||||
__vt__7CPuffer = .data:0x803E96C0; // type:object size:0x2D0 scope:global
|
__vt__7CPuffer = .data:0x803E96C0; // type:object size:0x2D0 scope:global
|
||||||
lbl_803E9990 = .data:0x803E9990; // type:object size:0x70
|
__vt__5CFire = .data:0x803E9990; // type:object size:0x6C
|
||||||
__vt__16CPauseScreenBlur = .data:0x803E9A00; // type:object size:0xC scope:global
|
__vt__16CPauseScreenBlur = .data:0x803E9A00; // type:object size:0xC scope:global
|
||||||
lbl_803E9A10 = .data:0x803E9A10; // type:object size:0xC data:4byte
|
lbl_803E9A10 = .data:0x803E9A10; // type:object size:0xC data:4byte
|
||||||
lbl_803E9A1C = .data:0x803E9A1C; // type:object size:0xC data:4byte
|
lbl_803E9A1C = .data:0x803E9A1C; // type:object size:0xC data:4byte
|
||||||
|
@ -20987,8 +20987,8 @@ lbl_805A8378 = .sdata:0x805A8378; // type:object size:0x8
|
||||||
lbl_805A8380 = .sdata:0x805A8380; // type:object size:0x4 data:4byte
|
lbl_805A8380 = .sdata:0x805A8380; // type:object size:0x4 data:4byte
|
||||||
lbl_805A8384 = .sdata:0x805A8384; // type:object size:0x4 data:4byte
|
lbl_805A8384 = .sdata:0x805A8384; // type:object size:0x4 data:4byte
|
||||||
lbl_805A8388 = .sdata:0x805A8388; // type:object size:0x8 data:4byte
|
lbl_805A8388 = .sdata:0x805A8388; // type:object size:0x8 data:4byte
|
||||||
lbl_805A8390 = .sdata:0x805A8390; // type:object size:0x4 data:4byte
|
kSolidMat = .sdata:0x805A8390; // type:object size:0x4 scope:local data:4byte
|
||||||
lbl_805A8394 = .sdata:0x805A8394; // type:object size:0x4 data:4byte
|
kProjectileMat = .sdata:0x805A8394; // type:object size:0x4 scope:local data:4byte
|
||||||
@281 = .sdata:0x805A8398; // type:object size:0x4 scope:local data:float
|
@281 = .sdata:0x805A8398; // type:object size:0x4 scope:local data:float
|
||||||
@286 = .sdata:0x805A839C; // type:object size:0x4 scope:local data:float
|
@286 = .sdata:0x805A839C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_805A83A0 = .sdata:0x805A83A0; // type:object size:0x4 data:4byte
|
lbl_805A83A0 = .sdata:0x805A83A0; // type:object size:0x4 data:4byte
|
||||||
|
@ -25715,11 +25715,11 @@ lbl_805AD708 = .sdata2:0x805AD708; // type:object size:0x4 data:float
|
||||||
lbl_805AD70C = .sdata2:0x805AD70C; // type:object size:0x4 data:float
|
lbl_805AD70C = .sdata2:0x805AD70C; // type:object size:0x4 data:float
|
||||||
lbl_805AD710 = .sdata2:0x805AD710; // type:object size:0x4 data:float
|
lbl_805AD710 = .sdata2:0x805AD710; // type:object size:0x4 data:float
|
||||||
lbl_805AD714 = .sdata2:0x805AD714; // type:object size:0x4 data:float
|
lbl_805AD714 = .sdata2:0x805AD714; // type:object size:0x4 data:float
|
||||||
lbl_805AD718 = .sdata2:0x805AD718; // type:object size:0x4 data:float
|
@429 = .sdata2:0x805AD718; // type:object size:0x4 scope:local data:float
|
||||||
lbl_805AD71C = .sdata2:0x805AD71C; // type:object size:0x4 data:float
|
@430 = .sdata2:0x805AD71C; // type:object size:0x4 scope:local data:float
|
||||||
lbl_805AD720 = .sdata2:0x805AD720; // type:object size:0x4 data:float
|
@431 = .sdata2:0x805AD720; // type:object size:0x4 scope:local data:float
|
||||||
lbl_805AD724 = .sdata2:0x805AD724; // type:object size:0x4 data:float
|
@432 = .sdata2:0x805AD724; // type:object size:0x4 scope:local data:float
|
||||||
lbl_805AD728 = .sdata2:0x805AD728; // type:object size:0x8 align:8 data:double
|
@434 = .sdata2:0x805AD728; // type:object size:0x8 scope:local align:8 data:double
|
||||||
@395 = .sdata2:0x805AD730; // type:object size:0x4 scope:local data:float
|
@395 = .sdata2:0x805AD730; // type:object size:0x4 scope:local data:float
|
||||||
@396 = .sdata2:0x805AD734; // type:object size:0x4 scope:local data:float
|
@396 = .sdata2:0x805AD734; // type:object size:0x4 scope:local data:float
|
||||||
@454 = .sdata2:0x805AD738; // type:object size:0x4 scope:local data:float
|
@454 = .sdata2:0x805AD738; // type:object size:0x4 scope:local data:float
|
||||||
|
@ -26838,8 +26838,7 @@ lbl_805AEC80 = .sdata2:0x805AEC80; // type:object size:0x8 align:8 data:double
|
||||||
lbl_805AEC88 = .sdata2:0x805AEC88; // type:object size:0x8 align:8 data:double
|
lbl_805AEC88 = .sdata2:0x805AEC88; // type:object size:0x8 align:8 data:double
|
||||||
@38 = .sdata2:0x805AEC90; // type:object size:0x4 scope:local data:4byte
|
@38 = .sdata2:0x805AEC90; // type:object size:0x4 scope:local data:4byte
|
||||||
lbl_805AEC98 = .sdata2:0x805AEC98; // type:object size:0x8 align:8 data:double
|
lbl_805AEC98 = .sdata2:0x805AEC98; // type:object size:0x8 align:8 data:double
|
||||||
@150 = .sdata2:0x805AECA0; // type:object size:0x4 scope:local data:4byte
|
@150 = .sdata2:0x805AECA0; // type:object size:0x5 scope:local data:string
|
||||||
lbl_805AECA4 = .sdata2:0x805AECA4; // type:object size:0x1 data:byte
|
|
||||||
lbl_805AECA8 = .sdata2:0x805AECA8; // type:object size:0x8 align:8 data:double
|
lbl_805AECA8 = .sdata2:0x805AECA8; // type:object size:0x8 align:8 data:double
|
||||||
lbl_805AECB0 = .sdata2:0x805AECB0; // type:object size:0x8 align:8 data:double
|
lbl_805AECB0 = .sdata2:0x805AECB0; // type:object size:0x8 align:8 data:double
|
||||||
@136 = .sdata2:0x805AECB8; // type:object size:0x8 scope:local align:8 data:double
|
@136 = .sdata2:0x805AECB8; // type:object size:0x8 scope:local align:8 data:double
|
||||||
|
|
|
@ -154,7 +154,7 @@ MetroidPrime/Tweaks/CTweakGame.cpp:
|
||||||
.text start:0x80037260 end:0x8003747C
|
.text start:0x80037260 end:0x8003747C
|
||||||
.data start:0x803D9EB0 end:0x803D9EC0
|
.data start:0x803D9EB0 end:0x803D9EC0
|
||||||
|
|
||||||
MetroidPrime/CGameProjectile.cpp:
|
MetroidPrime/Weapons/CGameProjectile.cpp:
|
||||||
.text start:0x8003747C end:0x8003A820
|
.text start:0x8003747C end:0x8003A820
|
||||||
.rodata start:0x803CD000 end:0x803CD018
|
.rodata start:0x803CD000 end:0x803CD018
|
||||||
.data start:0x803D9EC0 end:0x803D9F30
|
.data start:0x803D9EC0 end:0x803D9F30
|
||||||
|
|
|
@ -10777,7 +10777,7 @@ __ct__7CPufferF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rs
|
||||||
AcceptScriptMsg__5CFireF20EScriptObjectMessage9TUniqueIdR13CStateManager = .text:0x8025CCA0; // type:function size:0x80 scope:global
|
AcceptScriptMsg__5CFireF20EScriptObjectMessage9TUniqueIdR13CStateManager = .text:0x8025CCA0; // type:function size:0x80 scope:global
|
||||||
Think__5CFireFfR13CStateManager = .text:0x8025CD20; // type:function size:0x24C scope:global
|
Think__5CFireFfR13CStateManager = .text:0x8025CD20; // type:function size:0x24C scope:global
|
||||||
Accept__5CFireFR8IVisitor = .text:0x8025CF6C; // type:function size:0x38 scope:global
|
Accept__5CFireFR8IVisitor = .text:0x8025CF6C; // type:function size:0x38 scope:global
|
||||||
Render__5CFireCFRC13CStateManager = .text:0x8025CFA4; // type:function size:0xEC scope:global
|
AddToRenderer__5CFireCFRC14CFrustumPlanesRC13CStateManager = .text:0x8025CFA4; // type:function size:0xEC scope:global
|
||||||
GetTouchBounds__5CFireCFv = .text:0x8025D090; // type:function size:0x68 scope:global
|
GetTouchBounds__5CFireCFv = .text:0x8025D090; // type:function size:0x68 scope:global
|
||||||
Touch__5CFireFR6CActorR13CStateManager = .text:0x8025D0F8; // type:function size:0xC4 scope:global
|
Touch__5CFireFR6CActorR13CStateManager = .text:0x8025D0F8; // type:function size:0xC4 scope:global
|
||||||
__dt__5CFireFv = .text:0x8025D1BC; // type:function size:0x9C scope:global
|
__dt__5CFireFv = .text:0x8025D1BC; // type:function size:0x9C scope:global
|
||||||
|
@ -17581,7 +17581,7 @@ lbl_803D53D6 = .rodata:0x803D53D6; // type:object size:0xC data:string
|
||||||
lbl_803D53E2 = .rodata:0x803D53E2; // type:object size:0xC data:string
|
lbl_803D53E2 = .rodata:0x803D53E2; // type:object size:0xC data:string
|
||||||
lbl_803D53EE = .rodata:0x803D53EE; // type:object size:0xC data:string
|
lbl_803D53EE = .rodata:0x803D53EE; // type:object size:0xC data:string
|
||||||
lbl_803D53FA = .rodata:0x803D53FA; // type:object size:0x16
|
lbl_803D53FA = .rodata:0x803D53FA; // type:object size:0x16
|
||||||
lbl_803D5410 = .rodata:0x803D5410; // type:object size:0x10
|
@stringBase0 = .rodata:0x803D5410; // type:object size:0xC scope:local data:string_table
|
||||||
lbl_803D5420 = .rodata:0x803D5420; // type:object size:0x18
|
lbl_803D5420 = .rodata:0x803D5420; // type:object size:0x18
|
||||||
lbl_803D5438 = .rodata:0x803D5438; // type:object size:0x11 data:string
|
lbl_803D5438 = .rodata:0x803D5438; // type:object size:0x11 data:string
|
||||||
lbl_803D5449 = .rodata:0x803D5449; // type:object size:0xF
|
lbl_803D5449 = .rodata:0x803D5449; // type:object size:0xF
|
||||||
|
@ -18578,7 +18578,7 @@ jumptable_803E9784 = .data:0x803E9784; // type:object size:0xAC scope:local
|
||||||
lbl_803E9830 = .data:0x803E9830; // type:object size:0x38 data:4byte
|
lbl_803E9830 = .data:0x803E9830; // type:object size:0x38 data:4byte
|
||||||
lbl_803E9868 = .data:0x803E9868; // type:object size:0x38 data:4byte
|
lbl_803E9868 = .data:0x803E9868; // type:object size:0x38 data:4byte
|
||||||
lbl_803E98A0 = .data:0x803E98A0; // type:object size:0x2D0
|
lbl_803E98A0 = .data:0x803E98A0; // type:object size:0x2D0
|
||||||
lbl_803E9B70 = .data:0x803E9B70; // type:object size:0x70
|
__vt__5CFire = .data:0x803E9B70; // type:object size:0x6C scope:local
|
||||||
__vt__16CPauseScreenBlur = .data:0x803E9BE0; // type:object size:0x10
|
__vt__16CPauseScreenBlur = .data:0x803E9BE0; // type:object size:0x10
|
||||||
lbl_803E9BF0 = .data:0x803E9BF0; // type:object size:0xC data:4byte
|
lbl_803E9BF0 = .data:0x803E9BF0; // type:object size:0xC data:4byte
|
||||||
lbl_803E9BFC = .data:0x803E9BFC; // type:object size:0xC data:4byte
|
lbl_803E9BFC = .data:0x803E9BFC; // type:object size:0xC data:4byte
|
||||||
|
@ -20891,8 +20891,8 @@ lbl_805A8558 = .sdata:0x805A8558; // type:object size:0x8
|
||||||
lbl_805A8560 = .sdata:0x805A8560; // type:object size:0x4 data:4byte
|
lbl_805A8560 = .sdata:0x805A8560; // type:object size:0x4 data:4byte
|
||||||
lbl_805A8564 = .sdata:0x805A8564; // type:object size:0x4 data:4byte
|
lbl_805A8564 = .sdata:0x805A8564; // type:object size:0x4 data:4byte
|
||||||
lbl_805A8568 = .sdata:0x805A8568; // type:object size:0x8 data:4byte
|
lbl_805A8568 = .sdata:0x805A8568; // type:object size:0x8 data:4byte
|
||||||
lbl_805A8570 = .sdata:0x805A8570; // type:object size:0x4 data:4byte
|
kSolidMat = .sdata:0x805A8570; // type:object size:0x4 scope:local data:4byte
|
||||||
lbl_805A8574 = .sdata:0x805A8574; // type:object size:0x4 data:4byte
|
kProjectileMat = .sdata:0x805A8574; // type:object size:0x4 scope:local data:4byte
|
||||||
lbl_805A8578 = .sdata:0x805A8578; // type:object size:0x4 data:float
|
lbl_805A8578 = .sdata:0x805A8578; // type:object size:0x4 data:float
|
||||||
lbl_805A857C = .sdata:0x805A857C; // type:object size:0x4 data:float
|
lbl_805A857C = .sdata:0x805A857C; // type:object size:0x4 data:float
|
||||||
lbl_805A8580 = .sdata:0x805A8580; // type:object size:0x4 data:4byte
|
lbl_805A8580 = .sdata:0x805A8580; // type:object size:0x4 data:4byte
|
||||||
|
@ -25618,11 +25618,11 @@ lbl_805AD8E8 = .sdata2:0x805AD8E8; // type:object size:0x4 data:float
|
||||||
lbl_805AD8EC = .sdata2:0x805AD8EC; // type:object size:0x4 data:float
|
lbl_805AD8EC = .sdata2:0x805AD8EC; // type:object size:0x4 data:float
|
||||||
lbl_805AD8F0 = .sdata2:0x805AD8F0; // type:object size:0x4 data:float
|
lbl_805AD8F0 = .sdata2:0x805AD8F0; // type:object size:0x4 data:float
|
||||||
lbl_805AD8F4 = .sdata2:0x805AD8F4; // type:object size:0x4 data:float
|
lbl_805AD8F4 = .sdata2:0x805AD8F4; // type:object size:0x4 data:float
|
||||||
lbl_805AD8F8 = .sdata2:0x805AD8F8; // type:object size:0x4 data:float
|
@429 = .sdata2:0x805AD8F8; // type:object size:0x4 scope:local data:float
|
||||||
lbl_805AD8FC = .sdata2:0x805AD8FC; // type:object size:0x4 data:float
|
@430 = .sdata2:0x805AD8FC; // type:object size:0x4 scope:local data:float
|
||||||
lbl_805AD900 = .sdata2:0x805AD900; // type:object size:0x4 data:float
|
@431 = .sdata2:0x805AD900; // type:object size:0x4 scope:local data:float
|
||||||
lbl_805AD904 = .sdata2:0x805AD904; // type:object size:0x4 data:float
|
@432 = .sdata2:0x805AD904; // type:object size:0x4 scope:local data:float
|
||||||
lbl_805AD908 = .sdata2:0x805AD908; // type:object size:0x8 data:double
|
@434 = .sdata2:0x805AD908; // type:object size:0x8 scope:local data:double
|
||||||
lbl_805AD910 = .sdata2:0x805AD910; // type:object size:0x4 data:float
|
lbl_805AD910 = .sdata2:0x805AD910; // type:object size:0x4 data:float
|
||||||
lbl_805AD914 = .sdata2:0x805AD914; // type:object size:0x4 data:float
|
lbl_805AD914 = .sdata2:0x805AD914; // type:object size:0x4 data:float
|
||||||
lbl_805AD918 = .sdata2:0x805AD918; // type:object size:0x4 data:float
|
lbl_805AD918 = .sdata2:0x805AD918; // type:object size:0x4 data:float
|
||||||
|
|
|
@ -411,7 +411,7 @@ config.libs = [
|
||||||
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "MetroidPrime/Tweaks/CTweakPlayer.cpp"),
|
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "MetroidPrime/Tweaks/CTweakPlayer.cpp"),
|
||||||
Object(NonMatching, "MetroidPrime/Tweaks/CTweaks.cpp"),
|
Object(NonMatching, "MetroidPrime/Tweaks/CTweaks.cpp"),
|
||||||
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "MetroidPrime/Tweaks/CTweakGame.cpp"),
|
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "MetroidPrime/Tweaks/CTweakGame.cpp"),
|
||||||
Object(NonMatching, "MetroidPrime/CGameProjectile.cpp"),
|
Object(NonMatching, "MetroidPrime/Weapons/CGameProjectile.cpp"),
|
||||||
Object(NonMatching, "MetroidPrime/Player/CPlayerGun.cpp"),
|
Object(NonMatching, "MetroidPrime/Player/CPlayerGun.cpp"),
|
||||||
Object(NonMatching, "MetroidPrime/CStateManager.cpp"),
|
Object(NonMatching, "MetroidPrime/CStateManager.cpp"),
|
||||||
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "MetroidPrime/CEntity.cpp"),
|
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "MetroidPrime/CEntity.cpp"),
|
||||||
|
@ -729,7 +729,7 @@ config.libs = [
|
||||||
Object(NonMatching, "MetroidPrime/Weapons/CElectricBeamProjectile.cpp"),
|
Object(NonMatching, "MetroidPrime/Weapons/CElectricBeamProjectile.cpp"),
|
||||||
Object(NonMatching, "MetroidPrime/Enemies/CRidley.cpp"),
|
Object(NonMatching, "MetroidPrime/Enemies/CRidley.cpp"),
|
||||||
Object(NonMatching, "MetroidPrime/Enemies/CPuffer.cpp"),
|
Object(NonMatching, "MetroidPrime/Enemies/CPuffer.cpp"),
|
||||||
Object(NonMatching, "MetroidPrime/ScriptObjects/CFire.cpp"),
|
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "MetroidPrime/ScriptObjects/CFire.cpp"),
|
||||||
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "MetroidPrime/CPauseScreenBlur.cpp"),
|
Object(MatchingFor("GM8E01_00", "GM8E01_01"), "MetroidPrime/CPauseScreenBlur.cpp"),
|
||||||
Object(NonMatching, "MetroidPrime/Enemies/CTryclops.cpp"),
|
Object(NonMatching, "MetroidPrime/Enemies/CTryclops.cpp"),
|
||||||
Object(NonMatching, "MetroidPrime/Weapons/CNewFlameThrower.cpp"),
|
Object(NonMatching, "MetroidPrime/Weapons/CNewFlameThrower.cpp"),
|
||||||
|
|
|
@ -16,8 +16,8 @@ class CFinalInput {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CFinalInput();
|
CFinalInput();
|
||||||
CFinalInput(int channel, float dt, const CControllerGamepadData& data, float leftDif,
|
CFinalInput(const int channel, const float dt, const CControllerGamepadData& data, const float leftDiv,
|
||||||
float rightDiv);
|
const float rightDiv);
|
||||||
CFinalInput(int channel, float dt, const COsContext& context);
|
CFinalInput(int channel, float dt, const COsContext& context);
|
||||||
CFinalInput(const CFinalInput& other)
|
CFinalInput(const CFinalInput& other)
|
||||||
: x0_dt(other.x0_dt)
|
: x0_dt(other.x0_dt)
|
||||||
|
|
|
@ -35,7 +35,8 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
CAABox(const CVector3f& min, const CVector3f& max);
|
CAABox(const CVector3f& min, const CVector3f& max);
|
||||||
CAABox(float minX, float minY, float minZ, float maxX, float maxY, float maxZ)
|
CAABox(const float minX, const float minY, const float minZ, const float maxX, const float maxY,
|
||||||
|
const float maxZ)
|
||||||
: min(minX, minY, minZ), max(maxX, maxY, maxZ) {}
|
: min(minX, minY, minZ), max(maxX, maxY, maxZ) {}
|
||||||
CAABox(CInputStream& in);
|
CAABox(CInputStream& in);
|
||||||
// CAABox(const CAABox& other)
|
// CAABox(const CAABox& other)
|
||||||
|
|
|
@ -74,12 +74,13 @@ public:
|
||||||
virtual void DestroyParticles() override;
|
virtual void DestroyParticles() override;
|
||||||
virtual void AddModifier(CWarp*) override;
|
virtual void AddModifier(CWarp*) override;
|
||||||
virtual uint Get4CharId() const override;
|
virtual uint Get4CharId() const override;
|
||||||
|
int GetMaxParticles() const { return x90_MAXP; }
|
||||||
int GetEmitterTime() const;
|
int GetEmitterTime() const;
|
||||||
int GetSystemCount();
|
int GetSystemCount();
|
||||||
|
|
||||||
int GetCumulativeParticleCount() const { return x260_cumulativeParticles; }
|
int GetCumulativeParticleCount() const { return x260_cumulativeParticles; }
|
||||||
bool IsIndirectTextured() const; // { return x28_loadedGenDesc->x54_x40_TEXR && x28_loadedGenDesc->x58_x44_TIND; }
|
bool IsIndirectTextured()
|
||||||
|
const; // { return x28_loadedGenDesc->x54_x40_TEXR && x28_loadedGenDesc->x58_x44_TIND; }
|
||||||
float GetExternalVar(int index) const;
|
float GetExternalVar(int index) const;
|
||||||
|
|
||||||
static void Initialize();
|
static void Initialize();
|
||||||
|
|
|
@ -25,7 +25,7 @@ const CArchMsgParmUserInput& GetParmUserInput(const CArchitectureMessage& msg);
|
||||||
|
|
||||||
const CArchMsgParmInt32& GetParmNewGameflowState(const CArchitectureMessage& msg);
|
const CArchMsgParmInt32& GetParmNewGameflowState(const CArchitectureMessage& msg);
|
||||||
|
|
||||||
CArchitectureMessage CreateControllerStatus(EArchMsgTarget target, const short& chan,
|
CArchitectureMessage CreateControllerStatus(const EArchMsgTarget target, const short& chan,
|
||||||
const bool& connected);
|
const bool& connected);
|
||||||
CArchitectureMessage CreateQuitGameplay(EArchMsgTarget target);
|
CArchitectureMessage CreateQuitGameplay(EArchMsgTarget target);
|
||||||
|
|
||||||
|
|
|
@ -26,28 +26,28 @@ public:
|
||||||
void ResetToDefaults();
|
void ResetToDefaults();
|
||||||
void EnsureOptions();
|
void EnsureOptions();
|
||||||
|
|
||||||
void SetScreenBrightness(int, bool);
|
void SetScreenBrightness(const int, const bool);
|
||||||
float TuneScreenBrightness();
|
const float TuneScreenBrightness();
|
||||||
void SetScreenPositionX(int, bool);
|
void SetScreenPositionX(const int, const bool);
|
||||||
void SetScreenPositionY(int, bool);
|
void SetScreenPositionY(const int, const bool);
|
||||||
void SetScreenStretch(int, bool);
|
void SetScreenStretch(const int, const bool);
|
||||||
void SetSfxVolume(int, bool);
|
void SetSfxVolume(const int, const bool);
|
||||||
void SetMusicVolume(int, bool);
|
void SetMusicVolume(const int,const bool);
|
||||||
void SetSurroundMode(CAudioSys::ESurroundModes, bool);
|
void SetSurroundMode(CAudioSys::ESurroundModes, bool);
|
||||||
|
|
||||||
float GetHudAlpha() const;
|
const float GetHudAlpha() const;
|
||||||
float GetHelmetAlpha() const;
|
const float GetHelmetAlpha() const;
|
||||||
void SetHelmetAlpha(int);
|
void SetHelmetAlpha(const int);
|
||||||
void SetHUDLag(bool);
|
void SetHUDLag(const bool);
|
||||||
void SetIsHintSystemEnabled(bool);
|
void SetIsHintSystemEnabled(bool);
|
||||||
void ToggleControls(bool);
|
void ToggleControls(const bool);
|
||||||
void ResetControllerAssets(int);
|
void ResetControllerAssets(const int);
|
||||||
void SetControls(int);
|
void SetControls(const int);
|
||||||
|
|
||||||
void SetInvertYAxis(bool invert);
|
void SetInvertYAxis(const bool invert);
|
||||||
bool GetInvertYAxis() const { return x68_25_invertY; }
|
const bool GetInvertYAxis() const { return x68_25_invertY; }
|
||||||
void SetIsRumbleEnabled(bool rumble);
|
void SetIsRumbleEnabled(const bool rumble);
|
||||||
bool GetIsRumbleEnabled() const { return x68_26_rumble; }
|
const bool GetIsRumbleEnabled() const { return x68_26_rumble; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
rstl::reserved_vector< uchar, 64 > x0_;
|
rstl::reserved_vector< uchar, 64 > x0_;
|
||||||
|
|
|
@ -53,7 +53,7 @@ class CPlayer : public CPhysicsActor, public TOneStatic< CPlayer > {
|
||||||
void SetSteam(float targetAlpha, float alphaInDur, float alphaOutDur, CAssetId txtr,
|
void SetSteam(float targetAlpha, float alphaInDur, float alphaOutDur, CAssetId txtr,
|
||||||
bool affectsThermal);
|
bool affectsThermal);
|
||||||
void Update(float dt);
|
void Update(float dt);
|
||||||
float GetAlpha() const { return x20_alpha; }
|
const float GetAlpha() const { return x20_alpha; }
|
||||||
bool AffectsThermal() const { return x28_affectsThermal; }
|
bool AffectsThermal() const { return x28_affectsThermal; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -377,6 +377,7 @@ public:
|
||||||
void Teleport(const CTransform4f& xf, CStateManager& mgr, bool resetBallCam);
|
void Teleport(const CTransform4f& xf, CStateManager& mgr, bool resetBallCam);
|
||||||
void SetSpawnedMorphBallState(EPlayerMorphBallState state, CStateManager& mgr);
|
void SetSpawnedMorphBallState(EPlayerMorphBallState state, CStateManager& mgr);
|
||||||
const CVisorSteam& GetVisorSteam() const { return x7a0_visorSteam; }
|
const CVisorSteam& GetVisorSteam() const { return x7a0_visorSteam; }
|
||||||
|
const float GetVisorSteamAlpha() const { return x7a0_visorSteam.GetAlpha(); }
|
||||||
void SetVisorSteam(float targetAlpha, float alphaInDur, float alphaOutDir, CAssetId txtr,
|
void SetVisorSteam(float targetAlpha, float alphaInDur, float alphaOutDir, CAssetId txtr,
|
||||||
bool affectsThermal);
|
bool affectsThermal);
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ public:
|
||||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override;
|
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override;
|
||||||
|
|
||||||
// CActor
|
// CActor
|
||||||
void Render(const CStateManager&) const override;
|
void AddToRenderer(const CFrustumPlanes&, const CStateManager&) const override;
|
||||||
rstl::optional_object< CAABox > GetTouchBounds() const override;
|
rstl::optional_object< CAABox > GetTouchBounds() const override;
|
||||||
void Touch(CActor&, CStateManager&) override;
|
void Touch(CActor&, CStateManager&) override;
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,6 @@ CHECK_SIZEOF(TEditorId, 0x4)
|
||||||
|
|
||||||
struct TUniqueId {
|
struct TUniqueId {
|
||||||
ushort value;
|
ushort value;
|
||||||
|
|
||||||
TUniqueId(ushort version, ushort id) : value(((version & 0x3F) << 10) | (id & 0x3FF)) {}
|
TUniqueId(ushort version, ushort id) : value(((version & 0x3F) << 10) | (id & 0x3FF)) {}
|
||||||
|
|
||||||
ushort Value() const { return value & 0x3FF; }
|
ushort Value() const { return value & 0x3FF; }
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef _CGAMEPROJECTILE
|
#ifndef _CGAMEPROJECTILE
|
||||||
#define _CGAMEPROJECTILE
|
#define _CGAMEPROJECTILE
|
||||||
|
|
||||||
|
#include "Collision/CRayCastResult.hpp"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
#include "MetroidPrime/CStateManager.hpp"
|
#include "MetroidPrime/CStateManager.hpp"
|
||||||
|
@ -13,20 +14,25 @@
|
||||||
#include "rstl/vector.hpp"
|
#include "rstl/vector.hpp"
|
||||||
|
|
||||||
class CGenDescription;
|
class CGenDescription;
|
||||||
class CProjectileTouchResult;
|
class CProjectileTouchResult {
|
||||||
|
public:
|
||||||
|
private:
|
||||||
|
TUniqueId x0_id;
|
||||||
|
rstl::optional_object< CRayCastResult > x4_result;
|
||||||
|
};
|
||||||
|
|
||||||
class CGameProjectile : public CWeapon {
|
class CGameProjectile : public CWeapon {
|
||||||
public:
|
public:
|
||||||
CGameProjectile(bool active, const TToken< CWeaponDescription >&, const rstl::string& name,
|
CGameProjectile(const bool active, const TToken< CWeaponDescription >&, const rstl::string& name,
|
||||||
EWeaponType wType, const CTransform4f& xf, EMaterialTypes excludeMat,
|
const EWeaponType wType, const CTransform4f& xf, const EMaterialTypes excludeMat,
|
||||||
const CDamageInfo& dInfo, TUniqueId uid, TAreaId aid, TUniqueId owner,
|
const CDamageInfo& dInfo, const TUniqueId uid, const TAreaId aid,
|
||||||
TUniqueId homingTarget, uint attribs, bool underwater,
|
const TUniqueId owner, const TUniqueId homingTarget, const uint attribs,
|
||||||
const CVector3f& scale,
|
const bool underwater, const CVector3f& scale,
|
||||||
const rstl::optional_object< TLockedToken< CGenDescription > >& visorParticle,
|
const rstl::optional_object< TLockedToken< CGenDescription > >& visorParticle,
|
||||||
ushort visorSfx, bool sendCollideMsg);
|
const ushort visorSfx, bool sendCollideMsg);
|
||||||
|
|
||||||
// CEntity
|
// CEntity
|
||||||
~CGameProjectile() override;
|
~CGameProjectile() override {}
|
||||||
void Accept(IVisitor& visitor) override;
|
void Accept(IVisitor& visitor) override;
|
||||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override;
|
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override;
|
||||||
|
|
||||||
|
@ -39,6 +45,7 @@ public:
|
||||||
virtual void ResolveCollisionWithActor(const CRayCastResult& res, CActor& act,
|
virtual void ResolveCollisionWithActor(const CRayCastResult& res, CActor& act,
|
||||||
CStateManager& mgr);
|
CStateManager& mgr);
|
||||||
|
|
||||||
|
CProjectileTouchResult CanCollideWithTrigger(CActor& act, CStateManager& mgr);
|
||||||
const CProjectileWeapon& GetProjectile() const { return x170_projectile; }
|
const CProjectileWeapon& GetProjectile() const { return x170_projectile; }
|
||||||
const CVector3f& GetPreviousPos() const { return x298_previousPos; }
|
const CVector3f& GetPreviousPos() const { return x298_previousPos; }
|
||||||
TUniqueId GetHomingTargetId() const { return x2c0_homingTargetId; }
|
TUniqueId GetHomingTargetId() const { return x2c0_homingTargetId; }
|
||||||
|
@ -49,8 +56,12 @@ public:
|
||||||
void DeleteProjectileLight(CStateManager&);
|
void DeleteProjectileLight(CStateManager&);
|
||||||
|
|
||||||
void ApplyDamageToActors(CStateManager& mgr, const CDamageInfo& dInfo);
|
void ApplyDamageToActors(CStateManager& mgr, const CDamageInfo& dInfo);
|
||||||
CRayCastResult RayCollisionCheckWithWorld(TUniqueId& idOut, const CVector3f& start, const CVector3f& end,
|
CRayCastResult RayCollisionCheckWithWorld(TUniqueId& idOut, const CVector3f& start,
|
||||||
float mag, const TEntityList& nearList, CStateManager& mgr);
|
const CVector3f& end, float mag,
|
||||||
|
const TEntityList& nearList, CStateManager& mgr);
|
||||||
|
static EProjectileAttrib GetBeamAttribType(EWeaponType wType);
|
||||||
|
|
||||||
|
CAABox GetProjectileBounds() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
rstl::optional_object< TLockedToken< CGenDescription > > x158_visorParticle;
|
rstl::optional_object< TLockedToken< CGenDescription > > x158_visorParticle;
|
||||||
|
|
|
@ -20,11 +20,11 @@ class CParticleSwoosh;
|
||||||
class CProjectileWeapon {
|
class CProjectileWeapon {
|
||||||
public:
|
public:
|
||||||
// TODO ctor
|
// TODO ctor
|
||||||
|
CProjectileWeapon(const TToken<CWeaponDescription>& wDesc, const CVector3f& origin, const CTransform4f& orient, const CVector3f& scale, const int);
|
||||||
virtual ~CProjectileWeapon();
|
virtual ~CProjectileWeapon();
|
||||||
virtual void Update(float dt);
|
virtual void Update(float dt);
|
||||||
virtual void AddToRenderer();
|
virtual void AddToRenderer();
|
||||||
virtual void Render();
|
virtual void Render() const;
|
||||||
virtual CVector3f GetTranslation() const;
|
virtual CVector3f GetTranslation() const;
|
||||||
virtual CTransform4f GetTransform() const;
|
virtual CTransform4f GetTransform() const;
|
||||||
|
|
||||||
|
|
|
@ -31,9 +31,9 @@ public:
|
||||||
kPA_KeepInCinematic = (1 << 17),
|
kPA_KeepInCinematic = (1 << 17),
|
||||||
};
|
};
|
||||||
|
|
||||||
CWeapon(TUniqueId uid, TAreaId areaId, bool active, TUniqueId owner, EWeaponType type,
|
CWeapon(const TUniqueId uid, const TAreaId areaId, const bool active, const TUniqueId owner, const EWeaponType type,
|
||||||
const rstl::string& name, const CTransform4f& xf, const CMaterialFilter& filter,
|
const rstl::string& name, const CTransform4f& xf, const CMaterialFilter& filter,
|
||||||
const CMaterialList& mList, const CDamageInfo& dInfo, int attribs,
|
const CMaterialList& mList, const CDamageInfo& dInfo, const int attribs,
|
||||||
const CModelData& mData);
|
const CModelData& mData);
|
||||||
|
|
||||||
// CEntity
|
// CEntity
|
||||||
|
|
|
@ -41,7 +41,7 @@ const CArchMsgParmInt32& MakeMsg::GetParmNewGameflowState(const CArchitectureMes
|
||||||
return *static_cast< const CArchMsgParmInt32* >(msg.GetParm());
|
return *static_cast< const CArchMsgParmInt32* >(msg.GetParm());
|
||||||
}
|
}
|
||||||
|
|
||||||
CArchitectureMessage MakeMsg::CreateControllerStatus(EArchMsgTarget target, const short& chan,
|
CArchitectureMessage MakeMsg::CreateControllerStatus(const EArchMsgTarget target, const short& chan,
|
||||||
const bool& connected) {
|
const bool& connected) {
|
||||||
return CArchitectureMessage(target, kAM_ControllerStatus,
|
return CArchitectureMessage(target, kAM_ControllerStatus,
|
||||||
rs_new CArchMsgParmControllerStatus(chan, connected));
|
rs_new CArchMsgParmControllerStatus(chan, connected));
|
||||||
|
|
|
@ -27,7 +27,7 @@ void CFaceplateDecoration::Update(float dt, const CStateManager& mgr) {
|
||||||
void CFaceplateDecoration::Draw(const CStateManager& stateMgr) const {
|
void CFaceplateDecoration::Draw(const CStateManager& stateMgr) const {
|
||||||
if (x4_tex.valid() && x4_tex->IsLoaded()) {
|
if (x4_tex.valid() && x4_tex->IsLoaded()) {
|
||||||
CTexture* texture = TToken< CTexture >(*x4_tex).GetT();
|
CTexture* texture = TToken< CTexture >(*x4_tex).GetT();
|
||||||
float alpha = stateMgr.GetPlayer()->GetVisorSteam().GetAlpha();
|
float alpha = stateMgr.GetPlayer()->GetVisorSteamAlpha();
|
||||||
if (!close_enough(alpha, 0.f)) {
|
if (!close_enough(alpha, 0.f)) {
|
||||||
CCameraFilterPass::DrawFilter(CCameraFilterPass::kFT_Blend,
|
CCameraFilterPass::DrawFilter(CCameraFilterPass::kFT_Blend,
|
||||||
CCameraFilterPass::kFS_FullscreenQuarters,
|
CCameraFilterPass::kFS_FullscreenQuarters,
|
||||||
|
|
|
@ -167,7 +167,7 @@ void CGameOptions::SetScreenBrightness(int value, bool apply) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float CGameOptions::TuneScreenBrightness() {
|
const float CGameOptions::TuneScreenBrightness() {
|
||||||
float f = x48_screenBrightness - 4;
|
float f = x48_screenBrightness - 4;
|
||||||
return f / 4.f * 0.375f + 1.f;
|
return f / 4.f * 0.375f + 1.f;
|
||||||
}
|
}
|
||||||
|
@ -223,21 +223,21 @@ void CGameOptions::SetSurroundMode(CAudioSys::ESurroundModes mode, bool apply) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
float CGameOptions::GetHudAlpha() const { return x60_hudAlpha * 0.003921569f; }
|
const float CGameOptions::GetHudAlpha() const { return x60_hudAlpha * 0.003921569f; }
|
||||||
|
|
||||||
float CGameOptions::GetHelmetAlpha() const { return x64_helmetAlpha * 0.003921569f; }
|
const float CGameOptions::GetHelmetAlpha() const { return x64_helmetAlpha * 0.003921569f; }
|
||||||
|
|
||||||
void CGameOptions::SetHelmetAlpha(int alpha) { x64_helmetAlpha = alpha; }
|
void CGameOptions::SetHelmetAlpha(const int alpha) { x64_helmetAlpha = alpha; }
|
||||||
|
|
||||||
void CGameOptions::SetHUDLag(bool flag) { x68_24_hudLag = flag; }
|
void CGameOptions::SetHUDLag(const bool flag) { x68_24_hudLag = flag; }
|
||||||
|
|
||||||
void CGameOptions::SetIsHintSystemEnabled(bool flag) { x68_28_hintSystem = flag; }
|
void CGameOptions::SetIsHintSystemEnabled(bool flag) { x68_28_hintSystem = flag; }
|
||||||
|
|
||||||
void CGameOptions::SetInvertYAxis(bool flag) { x68_25_invertY = flag; }
|
void CGameOptions::SetInvertYAxis(const bool flag) { x68_25_invertY = flag; }
|
||||||
|
|
||||||
void CGameOptions::SetIsRumbleEnabled(bool flag) { x68_26_rumble = flag; }
|
void CGameOptions::SetIsRumbleEnabled(const bool flag) { x68_26_rumble = flag; }
|
||||||
|
|
||||||
void CGameOptions::ToggleControls(bool flag) {
|
void CGameOptions::ToggleControls(const bool flag) {
|
||||||
x68_27_swapBeamsControls = flag;
|
x68_27_swapBeamsControls = flag;
|
||||||
if (flag) {
|
if (flag) {
|
||||||
SetControls(1);
|
SetControls(1);
|
||||||
|
|
|
@ -1,14 +1,30 @@
|
||||||
#include "MetroidPrime/ScriptObjects/CFire.hpp"
|
#include "MetroidPrime/ScriptObjects/CFire.hpp"
|
||||||
#include "MetroidPrime/CActorParameters.hpp"
|
|
||||||
|
|
||||||
static inline CMaterialList MakeMaterialList() { return CMaterialList(kMT_Projectile); }
|
#include "Kyoto/CToken.hpp"
|
||||||
|
#include "Kyoto/SObjectTag.hpp"
|
||||||
|
#include "MetroidPrime/CActorParameters.hpp"
|
||||||
|
#include "MetroidPrime/CStateManager.hpp"
|
||||||
|
#include "MetroidPrime/Player/CPlayer.hpp"
|
||||||
|
#include "MetroidPrime/Player/CPlayerState.hpp"
|
||||||
|
|
||||||
|
#include "Collision/CMaterialFilter.hpp"
|
||||||
|
#include "Collision/CMaterialList.hpp"
|
||||||
|
|
||||||
|
#include "Kyoto/Math/CFrustumPlanes.hpp"
|
||||||
|
#include "MetaRender/CCubeRenderer.hpp"
|
||||||
|
|
||||||
|
#include "rstl/optional_object.hpp"
|
||||||
|
#include <rstl/math.hpp>
|
||||||
|
|
||||||
|
static EMaterialTypes kSolidMat = kMT_Solid;
|
||||||
|
static EMaterialTypes kProjectileMat = kMT_Projectile;
|
||||||
|
|
||||||
CFire::CFire(const TToken< CGenDescription >& effect, TUniqueId uid, TAreaId area, bool active,
|
CFire::CFire(const TToken< CGenDescription >& effect, TUniqueId uid, TAreaId area, bool active,
|
||||||
TUniqueId owner, const CTransform4f& xf, const CDamageInfo& dInfo, const CAABox& aabox,
|
TUniqueId owner, const CTransform4f& xf, const CDamageInfo& dInfo, const CAABox& aabox,
|
||||||
const CVector3f& vec, bool b1, CAssetId visorEffect, bool b2, bool b3, bool b4,
|
const CVector3f& vec, bool b1, CAssetId visorEffect, bool b2, bool b3, bool b4,
|
||||||
float f1, float f2, float f3, float f4)
|
float f1, float f2, float f3, float f4)
|
||||||
: CActor(uid, active, "Fire", CEntityInfo(area, NullConnectionList), xf,
|
: CActor(uid, active, "Fire", CEntityInfo(area, NullConnectionList), xf,
|
||||||
CModelData::CModelDataNull(), MakeMaterialList(), CActorParameters::None(),
|
CModelData::CModelDataNull(), CMaterialList(kProjectileMat), CActorParameters::None(),
|
||||||
kInvalidUniqueId)
|
kInvalidUniqueId)
|
||||||
, xe8_(rs_new CElementGen(effect))
|
, xe8_(rs_new CElementGen(effect))
|
||||||
, xec_owner(owner)
|
, xec_owner(owner)
|
||||||
|
@ -19,7 +35,7 @@ CFire::CFire(const TToken< CGenDescription >& effect, TUniqueId uid, TAreaId are
|
||||||
, x148_24_(b2)
|
, x148_24_(b2)
|
||||||
, x148_25_(b3)
|
, x148_25_(b3)
|
||||||
, x148_26_(b4)
|
, x148_26_(b4)
|
||||||
, x148_27_(b2 && b3 && b4)
|
, x148_27_(b4 && b3 && b2)
|
||||||
, x148_28_(false)
|
, x148_28_(false)
|
||||||
, x148_29_(b1)
|
, x148_29_(b1)
|
||||||
, x14c_(f2)
|
, x14c_(f2)
|
||||||
|
@ -32,3 +48,91 @@ CFire::CFire(const TToken< CGenDescription >& effect, TUniqueId uid, TAreaId are
|
||||||
}
|
}
|
||||||
|
|
||||||
CFire::~CFire() {}
|
CFire::~CFire() {}
|
||||||
|
|
||||||
|
void CFire::Touch(CActor& act, CStateManager& mgr) {
|
||||||
|
if (act.GetUniqueId() == xec_owner) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mgr.ApplyDamage(GetUniqueId(), act.GetUniqueId(), GetUniqueId(), x10c_damageInfo2,
|
||||||
|
CMaterialFilter::MakeIncludeExclude(CMaterialList(kSolidMat), CMaterialList()),
|
||||||
|
CVector3f::Zero());
|
||||||
|
}
|
||||||
|
|
||||||
|
rstl::optional_object< CAABox > CFire::GetTouchBounds() const {
|
||||||
|
if (GetActive()) {
|
||||||
|
return x128_;
|
||||||
|
}
|
||||||
|
|
||||||
|
return rstl::optional_object_null();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CFire::AddToRenderer(const CFrustumPlanes& frustum, const CStateManager& mgr) const {
|
||||||
|
bool drawParticles = true;
|
||||||
|
if (!x148_27_) {
|
||||||
|
switch (mgr.GetPlayerState()->GetActiveVisor(mgr)) {
|
||||||
|
case CPlayerState::kPV_Combat:
|
||||||
|
case CPlayerState::kPV_Scan:
|
||||||
|
drawParticles = x148_24_;
|
||||||
|
break;
|
||||||
|
case CPlayerState::kPV_XRay:
|
||||||
|
drawParticles = x148_26_;
|
||||||
|
break;
|
||||||
|
case CPlayerState::kPV_Thermal:
|
||||||
|
drawParticles = x148_25_;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (drawParticles)
|
||||||
|
gpRender->AddParticleGen(*xe8_);
|
||||||
|
CActor::AddToRenderer(frustum, mgr);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CFire::Accept(IVisitor& visitor) { visitor.Visit(*this); }
|
||||||
|
|
||||||
|
void CFire::Think(float dt, CStateManager& mgr) {
|
||||||
|
const float particleCount = static_cast< float >(xe8_->GetParticleCount()) /
|
||||||
|
static_cast< float >(xe8_->GetMaxParticles());
|
||||||
|
if (GetActive()) {
|
||||||
|
xe8_->Update(dt * x144_);
|
||||||
|
x10c_damageInfo2 =
|
||||||
|
CDamageInfo(xf0_damageInfo1, (particleCount > 0.5f ? particleCount : 0.f) * dt);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool doFree = false;
|
||||||
|
if (xe8_->IsSystemDeletable()) {
|
||||||
|
doFree = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (x148_29_) {
|
||||||
|
if (mgr.GetPlayer()->GetTouchBounds()->DoBoundsOverlap(*GetTouchBounds()) && !doFree &&
|
||||||
|
particleCount > 0.5f) {
|
||||||
|
mgr.Player()->SetVisorSteam(particleCount * x14c_, x154_, x158_, x150_, true);
|
||||||
|
} else {
|
||||||
|
mgr.Player()->SetVisorSteam(0.f, 1.f, 1.f, kInvalidAssetId, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
x15c_ += dt;
|
||||||
|
|
||||||
|
if (x15c_ > 45.f)
|
||||||
|
doFree = true;
|
||||||
|
|
||||||
|
if (doFree) {
|
||||||
|
mgr.DeleteObjectRequest(GetUniqueId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CFire::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) {
|
||||||
|
CActor::AcceptScriptMsg(msg, uid, mgr);
|
||||||
|
|
||||||
|
switch (msg) {
|
||||||
|
case kSM_Registered:
|
||||||
|
xe8_->SetParticleEmission(true);
|
||||||
|
SetActive(true);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue