mirror of
https://github.com/PrimeDecomp/prime.git
synced 2026-07-12 18:18:56 -07:00
CThardusRockProjectile matches
This commit is contained in:
@@ -9162,11 +9162,11 @@ fn_801DB618 = .text:0x801DB618; // type:function size:0x21C
|
||||
StartAttack__8CThardusFR13CStateManagerf = .text:0x801DB834; // type:function size:0x8 scope:global
|
||||
Suck__8CThardusFR13CStateManager9EStateMsgf = .text:0x801DB83C; // type:function size:0x68 scope:global
|
||||
Explode__8CThardusFR13CStateManager9EStateMsgf = .text:0x801DB8A4; // type:function size:0x17C scope:global
|
||||
fn_801DBA20 = .text:0x801DBA20; // type:function size:0x1BC
|
||||
ShakeScreen__8CThardusFR13CStateManagerRC9CVector3ffff = .text:0x801DBA20; // type:function size:0x1BC
|
||||
fn_801DBBDC = .text:0x801DBBDC; // type:function size:0x64
|
||||
fn_801DBC40 = .text:0x801DBC40; // type:function size:0x1C
|
||||
fn_801DBC5C = .text:0x801DBC5C; // type:function size:0x3C
|
||||
fn_801DBC98 = .text:0x801DBC98; // type:function size:0x38
|
||||
StartTimedThermalFlash__8CThardusFR13CStateManagerfR6CActor = .text:0x801DBC98; // type:function size:0x38
|
||||
PathFind__8CThardusFR13CStateManager9EStateMsgf = .text:0x801DBCD0; // type:function size:0x25C scope:global
|
||||
PathFound__8CThardusFR13CStateManagerf = .text:0x801DBF2C; // type:function size:0x8 scope:global
|
||||
fn_801DBF34 = .text:0x801DBF34; // type:function size:0x394
|
||||
@@ -9231,7 +9231,7 @@ Accept__8CThardusFR8IVisitor = .text:0x801E21EC; // type:function size:0x38 scop
|
||||
__ct__8CThardusF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC10CModelDataRC16CActorParametersRC14CPatternedInfoRCQ24rstl47vector<10CModelData,Q24rstl17rmemory_allocator>RCQ24rstl47vector<10CModelData,Q24rstl17rmemory_allocator>UiUiUifffffff = .text:0x801E2224; // type:function size:0x910 scope:global
|
||||
fn_801E2B34 = .text:0x801E2B34; // type:function size:0x29C
|
||||
fn_801E2DD0 = .text:0x801E2DD0; // type:function size:0x3C
|
||||
fn_801E2E0C = .text:0x801E2E0C; // type:function size:0xB0
|
||||
__ct__Q24rstl47vector<10CModelData,Q24rstl17rmemory_allocator>FRCQ24rstl47vector<10CModelData,Q24rstl17rmemory_allocator> = .text:0x801E2E0C; // type:function size:0xB0
|
||||
fn_801E2EBC = .text:0x801E2EBC; // type:function size:0x74
|
||||
fn_801E2F30 = .text:0x801E2F30; // type:function size:0x28
|
||||
CanRenderUnsorted__16CDestroyableRockCFRC13CStateManager = .text:0x801E2F58; // type:function size:0x8 scope:global
|
||||
@@ -9617,19 +9617,19 @@ fn_802034E0 = .text:0x802034E0; // type:function size:0x110
|
||||
fn_802035F0 = .text:0x802035F0; // type:function size:0x64
|
||||
__insertion_sort<Q24rstl162pointer_iterator<Q212CMapUniverse18CMapObjectSortInfo,Q24rstl71vector<Q212CMapUniverse18CMapObjectSortInfo,Q24rstl17rmemory_allocator>,Q24rstl17rmemory_allocator>,29CMapObjectSortInfoGreaterThan>__4rstlFQ24rstl162pointer_iterator<Q212CMapUniverse18CMapObjectSortInfo,Q24rstl71vector<Q212CMapUniverse18CMapObjectSortInfo,Q24rstl17rmemory_allocator>,Q24rstl17rmemory_allocator>Q24rstl162pointer_iterator<Q212CMapUniverse18CMapObjectSortInfo,Q24rstl71vector<Q212CMapUniverse18CMapObject = .text:0x80203654; // type:function size:0xAC scope:global
|
||||
__dt__22CThardusRockProjectileFv = .text:0x80203700; // type:function size:0x124 scope:global
|
||||
fn_80203824 = .text:0x80203824; // type:function size:0x270
|
||||
fn_80203A94 = .text:0x80203A94; // type:function size:0x2C4
|
||||
fn_80203D58 = .text:0x80203D58; // type:function size:0x74
|
||||
AddParticleEffect__22CThardusRockProjectileFR13CStateManagerUiRC9CVector3fRC9CVector3fi = .text:0x80203824; // type:function size:0x270
|
||||
AddDeathEffects__22CThardusRockProjectileFR13CStateManagerRC9CVector3f = .text:0x80203A94; // type:function size:0x2C4
|
||||
AddGravity__22CThardusRockProjectileFR13CStateManager = .text:0x80203D58; // type:function size:0x74
|
||||
Render__22CThardusRockProjectileCFRC13CStateManager = .text:0x80203DCC; // type:function size:0x20 scope:global
|
||||
fn_80203DEC = .text:0x80203DEC; // type:function size:0x128
|
||||
ModifyChildrenMaterial__22CThardusRockProjectileFR13CStateManagerQ222CThardusRockProjectile15EModifyMaterial14EMaterialTypes = .text:0x80203DEC; // type:function size:0x128
|
||||
SetChildrenActive__22CThardusRockProjectileFR13CStateManagerb = .text:0x80203F14; // type:function size:0xD8 scope:global
|
||||
UpdateDestroyableRockCollisionActors__22CThardusRockProjectileFR13CStateManager = .text:0x80203FEC; // type:function size:0x254 scope:global
|
||||
UpdateDestroyableRockPositions__22CThardusRockProjectileFR13CStateManager = .text:0x80204240; // type:function size:0x14C scope:global
|
||||
fn_8020438C = .text:0x8020438C; // type:function size:0x16C
|
||||
AddSphereCollisionList__22CThardusRockProjectileFPCQ224CPatternedCollisionUtils16SSphereJointInfoiRQ24rstl63vector<26CJointCollisionDescription,Q24rstl17rmemory_allocator> = .text:0x8020438C; // type:function size:0x16C
|
||||
SetMaterialProperties__22CThardusRockProjectileFRQ24rstl36single_ptr<22CCollisionActorManager>R13CStateManager = .text:0x802044F8; // type:function size:0xF8 scope:global
|
||||
InitializeCollisionManager__22CThardusRockProjectileFR13CStateManager = .text:0x802045F0; // type:function size:0x1CC scope:global
|
||||
Delay__22CThardusRockProjectileFR13CStateManagerf = .text:0x802047BC; // type:function size:0x18 scope:global
|
||||
fn_802047D4 = .text:0x802047D4; // type:function size:0x14
|
||||
AnimOver__22CThardusRockProjectileFR13CStateManagerf = .text:0x802047D4; // type:function size:0x14
|
||||
HitSomething__22CThardusRockProjectileFR13CStateManagerf = .text:0x802047E8; // type:function size:0x8 scope:global
|
||||
ShouldAttack__22CThardusRockProjectileFR13CStateManagerf = .text:0x802047F0; // type:function size:0x34 scope:global
|
||||
ShouldMove__22CThardusRockProjectileFR13CStateManagerf = .text:0x80204824; // type:function size:0x1C scope:global
|
||||
@@ -9641,7 +9641,7 @@ GetUp__22CThardusRockProjectileFR13CStateManager9EStateMsgf = .text:0x80204D2C;
|
||||
Think__22CThardusRockProjectileFfR13CStateManager = .text:0x802050A0; // type:function size:0x1C0 scope:global
|
||||
AcceptScriptMsg__22CThardusRockProjectileF20EScriptObjectMessage9TUniqueIdR13CStateManager = .text:0x80205260; // type:function size:0x8C0 scope:global
|
||||
Accept__22CThardusRockProjectileFR8IVisitor = .text:0x80205B20; // type:function size:0x38 scope:global
|
||||
__ct__22CThardusRockProjectileF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC10CModelDataRC16CActorParametersRC14CPatternedInfoRCQ24rstl47vector<10CModelData,Q24rstl17rmemory_allocator>Ui = .text:0x80205B58; // type:function size:0x1DC scope:global
|
||||
__ct__22CThardusRockProjectileF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC10CModelDataRC16CActorParametersRC14CPatternedInfoRCQ24rstl47vector<10CStaticRes,Q24rstl17rmemory_allocator>Uif = .text:0x80205B58; // type:function size:0x1DC scope:global
|
||||
IsRightLogDynamic__16CInventoryScreenCFv = .text:0x80205D34; // type:function size:0x8 scope:global
|
||||
IsRightInventoryItemEquipped__16CInventoryScreenCFi = .text:0x80205D3C; // type:function size:0x254 scope:global
|
||||
HasRightInventoryItem__16CInventoryScreenCFi = .text:0x80205F90; // type:function size:0x214 scope:global
|
||||
@@ -18583,7 +18583,7 @@ jumptable_803E6B28 = .data:0x803E6B28; // type:object size:0x70 scope:local
|
||||
__vt__20CFlyingPirateRagDoll = .data:0x803E6B98; // type:object size:0x18 scope:global
|
||||
lbl_803E6BB0 = .data:0x803E6BB0; // type:object size:0x20
|
||||
lbl_803E6BD0 = .data:0x803E6BD0; // type:object size:0x10
|
||||
lbl_803E6BE0 = .data:0x803E6BE0; // type:object size:0x2D0
|
||||
__vt__22CThardusRockProjectile = .data:0x803E6BE0; // type:object size:0x2D0
|
||||
lbl_803E6EB0 = .data:0x803E6EB0; // type:object size:0x54
|
||||
jumptable_803E6F04 = .data:0x803E6F04; // type:object size:0x60 scope:local
|
||||
jumptable_803E6F64 = .data:0x803E6F64; // type:object size:0x60 scope:local
|
||||
@@ -25309,15 +25309,15 @@ lbl_805ACD84 = .sdata2:0x805ACD84; // type:object size:0x4 align:4 data:float
|
||||
lbl_805ACD88 = .sdata2:0x805ACD88; // type:object size:0x8 align:8 data:double
|
||||
lbl_805ACD90 = .sdata2:0x805ACD90; // type:object size:0x8 align:4 data:float
|
||||
lbl_805ACD98 = .sdata2:0x805ACD98; // type:object size:0x8 data:4byte
|
||||
lbl_805ACDA0 = .sdata2:0x805ACDA0; // type:object size:0x4 align:4 data:float
|
||||
lbl_805ACDA4 = .sdata2:0x805ACDA4; // type:object size:0x4 align:4 data:float
|
||||
lbl_805ACDA8 = .sdata2:0x805ACDA8; // type:object size:0x4 align:4 data:float
|
||||
lbl_805ACDAC = .sdata2:0x805ACDAC; // type:object size:0x4 align:4 data:float
|
||||
lbl_805ACDB0 = .sdata2:0x805ACDB0; // type:object size:0x4 align:4 data:float
|
||||
lbl_805ACDB4 = .sdata2:0x805ACDB4; // type:object size:0x4 align:4 data:float
|
||||
lbl_805ACDB8 = .sdata2:0x805ACDB8; // type:object size:0x4 align:4 data:float
|
||||
lbl_805ACDBC = .sdata2:0x805ACDBC; // type:object size:0x4 align:4 data:float
|
||||
lbl_805ACDC0 = .sdata2:0x805ACDC0; // type:object size:0x4 align:4 data:float
|
||||
@763 = .sdata2:0x805ACDA0; // type:object size:0x4 align:4 data:float
|
||||
@764 = .sdata2:0x805ACDA4; // type:object size:0x4 align:4 data:float
|
||||
@765 = .sdata2:0x805ACDA8; // type:object size:0x4 align:4 data:float
|
||||
@766 = .sdata2:0x805ACDAC; // type:object size:0x4 align:4 data:float
|
||||
@767 = .sdata2:0x805ACDB0; // type:object size:0x4 align:4 data:float
|
||||
@768 = .sdata2:0x805ACDB4; // type:object size:0x4 align:4 data:float
|
||||
@769 = .sdata2:0x805ACDB8; // type:object size:0x4 align:4 data:float
|
||||
@770 = .sdata2:0x805ACDBC; // type:object size:0x4 align:4 data:float
|
||||
@781 = .sdata2:0x805ACDC0; // type:object size:0x4 align:4 data:float
|
||||
lbl_805ACDC4 = .sdata2:0x805ACDC4; // type:object size:0x4 align:4 data:float
|
||||
lbl_805ACDC8 = .sdata2:0x805ACDC8; // type:object size:0x4 align:4 data:float
|
||||
lbl_805ACDCC = .sdata2:0x805ACDCC; // type:object size:0x4 align:4 data:float
|
||||
|
||||
@@ -9162,11 +9162,11 @@ fn_801DB618 = .text:0x801DB694; // type:function size:0x21C scope:global
|
||||
StartAttack__8CThardusFR13CStateManagerf = .text:0x801DB8B0; // type:function size:0x8 scope:global
|
||||
Suck__8CThardusFR13CStateManager9EStateMsgf = .text:0x801DB8B8; // type:function size:0x68 scope:global
|
||||
Explode__8CThardusFR13CStateManager9EStateMsgf = .text:0x801DB920; // type:function size:0x17C scope:global
|
||||
fn_801DBA20 = .text:0x801DBA9C; // type:function size:0x1BC scope:global
|
||||
ShakeScreen__8CThardusFR13CStateManagerRC9CVector3ffff = .text:0x801DBA9C; // type:function size:0x1BC scope:global
|
||||
fn_801DBBDC = .text:0x801DBC58; // type:function size:0x64 scope:global
|
||||
fn_801DBC40 = .text:0x801DBCBC; // type:function size:0x1C scope:global
|
||||
fn_801DBC5C = .text:0x801DBCD8; // type:function size:0x3C scope:global
|
||||
fn_801DBC98 = .text:0x801DBD14; // type:function size:0x38 scope:global
|
||||
StartTimedThermalFlash__8CThardusFR13CStateManagerfR6CActor = .text:0x801DBD14; // type:function size:0x38 scope:global
|
||||
PathFind__8CThardusFR13CStateManager9EStateMsgf = .text:0x801DBD4C; // type:function size:0x25C scope:global
|
||||
PathFound__8CThardusFR13CStateManagerf = .text:0x801DBFA8; // type:function size:0x8 scope:global
|
||||
fn_801DBF34 = .text:0x801DBFB0; // type:function size:0x394 scope:global
|
||||
@@ -9231,7 +9231,7 @@ Accept__8CThardusFR8IVisitor = .text:0x801E2268; // type:function size:0x38 scop
|
||||
__ct__8CThardusF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC10CModelDataRC16CActorParametersRC14CPatternedInfoRCQ24rstl47vector<10CModelData,Q24rstl17rmemory_allocator>RCQ24rstl47vector<10CModelData,Q24rstl17rmemory_allocator>UiUiUifffffff = .text:0x801E22A0; // type:function size:0x910 scope:global
|
||||
fn_801E2B34 = .text:0x801E2BB0; // type:function size:0x29C scope:global
|
||||
fn_801E2DD0 = .text:0x801E2E4C; // type:function size:0x3C scope:global
|
||||
fn_801E2E0C = .text:0x801E2E88; // type:function size:0xB0 scope:global
|
||||
__ct__Q24rstl47vector<10CModelData,Q24rstl17rmemory_allocator>FRCQ24rstl47vector<10CModelData,Q24rstl17rmemory_allocator> = .text:0x801E2E88; // type:function size:0xB0 scope:global
|
||||
fn_801E2EBC = .text:0x801E2F38; // type:function size:0x74 scope:global
|
||||
fn_801E2F30 = .text:0x801E2FAC; // type:function size:0x28 scope:global
|
||||
CanRenderUnsorted__16CDestroyableRockCFRC13CStateManager = .text:0x801E2FD4; // type:function size:0x8 scope:global
|
||||
@@ -9617,19 +9617,19 @@ fn_802034E0 = .text:0x8020355C; // type:function size:0x110 scope:global
|
||||
fn_802035F0 = .text:0x8020366C; // type:function size:0x64 scope:global
|
||||
__insertion_sort<Q24rstl162pointer_iterator<Q212CMapUniverse18CMapObjectSortInfo,Q24rstl71vector<Q212CMapUniverse18CMapObjectSortInfo,Q24rstl17rmemory_allocator>,Q24rstl17rmemory_allocator>,29CMapObjectSortInfoGreaterThan>__4rstlFQ24rstl162pointer_iterator<Q212CMapUniverse18CMapObjectSortInfo,Q24rstl71vector<Q212CMapUniverse18CMapObjectSortInfo,Q24rstl17rmemory_allocator>,Q24rstl17rmemory_allocator>Q24rstl162pointer_iterator<Q212CMapUniverse18CMapObjectSortInfo,Q24rstl71vector<Q212CMapUniverse18CMapObject = .text:0x802036D0; // type:function size:0xAC scope:global
|
||||
__dt__22CThardusRockProjectileFv = .text:0x8020377C; // type:function size:0x124 scope:global
|
||||
fn_80203824 = .text:0x802038A0; // type:function size:0x270 scope:global
|
||||
fn_80203A94 = .text:0x80203B10; // type:function size:0x2C4 scope:global
|
||||
fn_80203D58 = .text:0x80203DD4; // type:function size:0x74 scope:global
|
||||
AddParticleEffect__22CThardusRockProjectileFR13CStateManagerUiRC9CVector3fRC9CVector3fi = .text:0x802038A0; // type:function size:0x270 scope:global
|
||||
AddDeathEffects__22CThardusRockProjectileFR13CStateManagerRC9CVector3f = .text:0x80203B10; // type:function size:0x2C4 scope:global
|
||||
AddGravity__22CThardusRockProjectileFR13CStateManager = .text:0x80203DD4; // type:function size:0x74 scope:global
|
||||
Render__22CThardusRockProjectileCFRC13CStateManager = .text:0x80203E48; // type:function size:0x20 scope:global
|
||||
fn_80203DEC = .text:0x80203E68; // type:function size:0x128 scope:global
|
||||
ModifyChildrenMaterial__22CThardusRockProjectileFR13CStateManagerQ222CThardusRockProjectile15EModifyMaterial14EMaterialTypes = .text:0x80203E68; // type:function size:0x128 scope:global
|
||||
SetChildrenActive__22CThardusRockProjectileFR13CStateManagerb = .text:0x80203F90; // type:function size:0xD8 scope:global
|
||||
UpdateDestroyableRockCollisionActors__22CThardusRockProjectileFR13CStateManager = .text:0x80204068; // type:function size:0x254 scope:global
|
||||
UpdateDestroyableRockPositions__22CThardusRockProjectileFR13CStateManager = .text:0x802042BC; // type:function size:0x14C scope:global
|
||||
fn_8020438C = .text:0x80204408; // type:function size:0x16C scope:global
|
||||
AddSphereCollisionList__22CThardusRockProjectileFPCQ224CPatternedCollisionUtils16SSphereJointInfoiRQ24rstl63vector<26CJointCollisionDescription,Q24rstl17rmemory_allocator> = .text:0x80204408; // type:function size:0x16C scope:global
|
||||
SetMaterialProperties__22CThardusRockProjectileFRQ24rstl36single_ptr<22CCollisionActorManager>R13CStateManager = .text:0x80204574; // type:function size:0xF8 scope:global
|
||||
InitializeCollisionManager__22CThardusRockProjectileFR13CStateManager = .text:0x8020466C; // type:function size:0x1CC scope:global
|
||||
Delay__22CThardusRockProjectileFR13CStateManagerf = .text:0x80204838; // type:function size:0x18 scope:global
|
||||
fn_802047D4 = .text:0x80204850; // type:function size:0x14 scope:global
|
||||
AnimOver__22CThardusRockProjectileFR13CStateManagerf = .text:0x80204850; // type:function size:0x14 scope:global
|
||||
HitSomething__22CThardusRockProjectileFR13CStateManagerf = .text:0x80204864; // type:function size:0x8 scope:global
|
||||
ShouldAttack__22CThardusRockProjectileFR13CStateManagerf = .text:0x8020486C; // type:function size:0x34 scope:global
|
||||
ShouldMove__22CThardusRockProjectileFR13CStateManagerf = .text:0x802048A0; // type:function size:0x1C scope:global
|
||||
@@ -9641,7 +9641,7 @@ GetUp__22CThardusRockProjectileFR13CStateManager9EStateMsgf = .text:0x80204DA8;
|
||||
Think__22CThardusRockProjectileFfR13CStateManager = .text:0x8020511C; // type:function size:0x1C0 scope:global
|
||||
AcceptScriptMsg__22CThardusRockProjectileF20EScriptObjectMessage9TUniqueIdR13CStateManager = .text:0x802052DC; // type:function size:0x8C0 scope:global
|
||||
Accept__22CThardusRockProjectileFR8IVisitor = .text:0x80205B9C; // type:function size:0x38 scope:global
|
||||
__ct__22CThardusRockProjectileF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC10CModelDataRC16CActorParametersRC14CPatternedInfoRCQ24rstl47vector<10CModelData,Q24rstl17rmemory_allocator>Ui = .text:0x80205BD4; // type:function size:0x1DC scope:global
|
||||
__ct__22CThardusRockProjectileF9TUniqueIdRCQ24rstl66basic_string<c,Q24rstl14char_traits<c>,Q24rstl17rmemory_allocator>RC11CEntityInfoRC12CTransform4fRC10CModelDataRC16CActorParametersRC14CPatternedInfoRCQ24rstl47vector<10CStaticRes,Q24rstl17rmemory_allocator>Uif = .text:0x80205BD4; // type:function size:0x1DC scope:global
|
||||
IsRightLogDynamic__16CInventoryScreenCFv = .text:0x80205DB0; // type:function size:0x8 scope:global
|
||||
IsRightInventoryItemEquipped__16CInventoryScreenCFi = .text:0x80205DB8; // type:function size:0x254 scope:global
|
||||
HasRightInventoryItem__16CInventoryScreenCFi = .text:0x8020600C; // type:function size:0x214 scope:global
|
||||
|
||||
@@ -102,9 +102,9 @@ public:
|
||||
}
|
||||
explicit CMaterialList(u64 value) : value(value) {}
|
||||
|
||||
void Add(const EMaterialTypes material) { value |= u64(1) << material; }
|
||||
void Add(const EMaterialTypes material) { value |= 1ull << material; }
|
||||
void Add(const CMaterialList& material) { value |= material.value; }
|
||||
void Remove(EMaterialTypes material) { value &= ~(u64(1) << material); }
|
||||
void Remove(EMaterialTypes material) { value &= ~(1ull << material); }
|
||||
void Remove(const CMaterialList& material) { value &= ~material.value; }
|
||||
const CMaterialList Union(const CMaterialList& other) const {
|
||||
return CMaterialList(value | other.value);
|
||||
|
||||
@@ -89,9 +89,10 @@ public:
|
||||
|
||||
CAdvancementDeltas UpdateAnimation(float dt, CStateManager& mgr, bool advTree);
|
||||
|
||||
void ProcessSoundEvent(int sfxId, float weight, int flags, float fallOff, float maxDist,
|
||||
uchar minVol, uchar maxVol, const CVector3f& toListener,
|
||||
const CVector3f& position, int aid, CStateManager& mgr, bool translateId);
|
||||
void ProcessSoundEvent(const int sfxId, const float weight, const int flags, const float fallOff,
|
||||
const float maxDist, const uchar minVol, const uchar maxVol,
|
||||
const CVector3f& toListener, const CVector3f& position, const int aid,
|
||||
CStateManager& mgr, const bool translateId);
|
||||
|
||||
void UpdateSfxEmitters();
|
||||
void RemoveEmitter();
|
||||
|
||||
@@ -32,9 +32,9 @@ public:
|
||||
|
||||
uint GetNumCollisionActors() const { return x0_jointDescriptions.size(); }
|
||||
rstl::optional_object< CVector3f > GetDeviation(const CStateManager& mgr, CSegId seg);
|
||||
const CJointCollisionDescription& GetCollisionDescFromIndex(uint i) const {
|
||||
const CJointCollisionDescription& GetCollisionDescFromIndex(uint i) const; /*{
|
||||
return x0_jointDescriptions[i];
|
||||
}
|
||||
}*/
|
||||
|
||||
static CTransform4f GetWRLocatorTransform(const CAnimData& animData, CSegId id,
|
||||
const CTransform4f& worldXf,
|
||||
|
||||
@@ -70,7 +70,7 @@ public:
|
||||
CModelData();
|
||||
CModelData(const CAnimRes&);
|
||||
CModelData(const CStaticRes&);
|
||||
CModelData(const CModelData& other);
|
||||
//CModelData(const CModelData& other);
|
||||
~CModelData();
|
||||
|
||||
CAdvancementDeltas AdvanceAnimation(float dt, CStateManager& mgr, TAreaId aid, bool advTree);
|
||||
|
||||
@@ -228,8 +228,9 @@ public:
|
||||
|
||||
void ApplyDamageToWorld(TUniqueId, const CActor&, const CVector3f&, const CDamageInfo& info,
|
||||
const CMaterialFilter&);
|
||||
bool ApplyDamage(TUniqueId damagerId, TUniqueId damageeId, const TUniqueId radiusSender,
|
||||
const CDamageInfo& info, const CMaterialFilter& filter,
|
||||
bool ApplyDamage(const TUniqueId damagerId, const TUniqueId damageeId,
|
||||
const TUniqueId radiusSender, const CDamageInfo& info,
|
||||
const CMaterialFilter& filter,
|
||||
const CVector3f& knockbackVec = CVector3f::Zero());
|
||||
|
||||
void InformListeners(const CVector3f&, EListenNoiseType);
|
||||
@@ -300,7 +301,7 @@ public:
|
||||
void RemoveActiveFlickerBat(const TUniqueId& uid) { xf3c_activeFlickerBats.remove(uid); }
|
||||
|
||||
rstl::list< TUniqueId >& GetActiveFlickerBats() { return xf3c_activeFlickerBats; }
|
||||
|
||||
|
||||
void DrawSpaceWarp(const CVector3f& point, float strength) const;
|
||||
|
||||
private:
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#ifndef _CPATTERNEDCOLLISIONUTILS
|
||||
#define _CPATTERNEDCOLLISIONUTILS
|
||||
|
||||
namespace CPatternedCollisionUtils {
|
||||
struct SSphereJointInfo {
|
||||
const char* name;
|
||||
float radius;
|
||||
};
|
||||
}; // namespace CPatternedCollisionUtils
|
||||
#endif // MP1_CPATTERNEDCOLLISIONUTILS_HPP
|
||||
@@ -42,130 +42,130 @@ public:
|
||||
|
||||
virtual CVector3f GetOrigin(const CStateManager& mgr, const CTeamAiRole& role,
|
||||
const CVector3f& aimPos) const;
|
||||
virtual void Patrol(CStateManager&, EStateMsg, float);
|
||||
virtual void FollowPattern(CStateManager&, EStateMsg, float);
|
||||
virtual void Dead(CStateManager&, EStateMsg, float);
|
||||
virtual void PathFind(CStateManager&, EStateMsg, float);
|
||||
virtual void Start(CStateManager&, EStateMsg, float);
|
||||
virtual void SelectTarget(CStateManager&, EStateMsg, float);
|
||||
virtual void TargetPatrol(CStateManager&, EStateMsg, float);
|
||||
virtual void TargetPlayer(CStateManager&, EStateMsg, float);
|
||||
virtual void TargetCover(CStateManager&, EStateMsg, float);
|
||||
virtual void Halt(CStateManager&, EStateMsg, float);
|
||||
virtual void Walk(CStateManager&, EStateMsg, float);
|
||||
virtual void Run(CStateManager&, EStateMsg, float);
|
||||
virtual void Generate(CStateManager&, EStateMsg, float);
|
||||
virtual void Deactivate(CStateManager&, EStateMsg, float);
|
||||
virtual void Attack(CStateManager&, EStateMsg, float);
|
||||
virtual void LoopedAttack(CStateManager&, EStateMsg, float);
|
||||
virtual void JumpBack(CStateManager&, EStateMsg, float);
|
||||
virtual void DoubleSnap(CStateManager&, EStateMsg, float);
|
||||
virtual void Shuffle(CStateManager&, EStateMsg, float);
|
||||
virtual void TurnAround(CStateManager&, EStateMsg, float);
|
||||
virtual void Skid(CStateManager&, EStateMsg, float);
|
||||
virtual void Active(CStateManager&, EStateMsg, float);
|
||||
virtual void InActive(CStateManager&, EStateMsg, float);
|
||||
virtual void CoverAttack(CStateManager&, EStateMsg, float);
|
||||
virtual void Crouch(CStateManager&, EStateMsg, float);
|
||||
virtual void FadeIn(CStateManager&, EStateMsg, float);
|
||||
virtual void FadeOut(CStateManager&, EStateMsg, float);
|
||||
virtual void GetUp(CStateManager&, EStateMsg, float);
|
||||
virtual void Taunt(CStateManager&, EStateMsg, float);
|
||||
virtual void Suck(CStateManager&, EStateMsg, float);
|
||||
virtual void Flee(CStateManager&, EStateMsg, float);
|
||||
virtual void Lurk(CStateManager&, EStateMsg, float);
|
||||
virtual void ProjectileAttack(CStateManager&, EStateMsg, float);
|
||||
virtual void Flinch(CStateManager&, EStateMsg, float);
|
||||
virtual void Hurled(CStateManager&, EStateMsg, float);
|
||||
virtual void TelegraphAttack(CStateManager&, EStateMsg, float);
|
||||
virtual void Jump(CStateManager&, EStateMsg, float);
|
||||
virtual void Explode(CStateManager&, EStateMsg, float);
|
||||
virtual void Dodge(CStateManager&, EStateMsg, float);
|
||||
virtual void Retreat(CStateManager&, EStateMsg, float);
|
||||
virtual void Cover(CStateManager&, EStateMsg, float);
|
||||
virtual void Approach(CStateManager&, EStateMsg, float);
|
||||
virtual void WallHang(CStateManager&, EStateMsg, float);
|
||||
virtual void WallDetach(CStateManager&, EStateMsg, float);
|
||||
virtual void Enraged(CStateManager&, EStateMsg, float);
|
||||
virtual void SpecialAttack(CStateManager&, EStateMsg, float);
|
||||
virtual void Growth(CStateManager&, EStateMsg, float);
|
||||
virtual void Faint(CStateManager&, EStateMsg, float);
|
||||
virtual void Land(CStateManager&, EStateMsg, float);
|
||||
virtual void Bounce(CStateManager&, EStateMsg, float);
|
||||
virtual void PathFindEx(CStateManager&, EStateMsg, float);
|
||||
virtual void Dizzy(CStateManager&, EStateMsg, float);
|
||||
virtual void CallForBackup(CStateManager&, EStateMsg, float);
|
||||
virtual void BulbAttack(CStateManager&, EStateMsg, float);
|
||||
virtual void PodAttack(CStateManager&, EStateMsg, float);
|
||||
virtual void Patrol(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void FollowPattern(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Dead(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void PathFind(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Start(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void SelectTarget(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void TargetPatrol(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void TargetPlayer(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void TargetCover(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Halt(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Walk(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Run(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Generate(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Deactivate(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Attack(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void LoopedAttack(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void JumpBack(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void DoubleSnap(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Shuffle(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void TurnAround(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Skid(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Active(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void InActive(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void CoverAttack(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Crouch(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void FadeIn(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void FadeOut(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void GetUp(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Taunt(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Suck(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Flee(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Lurk(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void ProjectileAttack(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Flinch(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Hurled(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void TelegraphAttack(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Jump(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Explode(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Dodge(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Retreat(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Cover(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Approach(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void WallHang(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void WallDetach(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Enraged(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void SpecialAttack(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Growth(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Faint(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Land(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Bounce(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void PathFindEx(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void Dizzy(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void CallForBackup(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void BulbAttack(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
virtual void PodAttack(CStateManager& mgr, EStateMsg msg, float arg);
|
||||
|
||||
virtual bool InAttackPosition(CStateManager&, float);
|
||||
virtual bool Leash(CStateManager&, float);
|
||||
virtual bool OffLine(CStateManager&, float);
|
||||
virtual bool Attacked(CStateManager&, float);
|
||||
virtual bool PathShagged(CStateManager&, float);
|
||||
virtual bool PathOver(CStateManager&, float);
|
||||
virtual bool PathFound(CStateManager&, float);
|
||||
virtual bool TooClose(CStateManager&, float);
|
||||
virtual bool InRange(CStateManager&, float);
|
||||
virtual bool InMaxRange(CStateManager&, float);
|
||||
virtual bool InDetectionRange(CStateManager&, float);
|
||||
virtual bool SpotPlayer(CStateManager&, float);
|
||||
virtual bool PlayerSpot(CStateManager&, float);
|
||||
virtual bool PatternOver(CStateManager&, float);
|
||||
virtual bool PatternShagged(CStateManager&, float);
|
||||
virtual bool HasAttackPattern(CStateManager&, float);
|
||||
virtual bool HasPatrolPath(CStateManager&, float);
|
||||
virtual bool HasRetreatPattern(CStateManager&, float);
|
||||
virtual bool Delay(CStateManager&, float);
|
||||
virtual bool RandomDelay(CStateManager&, float);
|
||||
virtual bool FixedDelay(CStateManager&, float);
|
||||
virtual bool Default(CStateManager&, float);
|
||||
virtual bool AnimOver(CStateManager&, float);
|
||||
virtual bool ShouldAttack(CStateManager&, float);
|
||||
virtual bool ShouldDoubleSnap(CStateManager&, float);
|
||||
virtual bool InPosition(CStateManager&, float);
|
||||
virtual bool ShouldTurn(CStateManager&, float);
|
||||
virtual bool HitSomething(CStateManager&, float);
|
||||
virtual bool ShouldJumpBack(CStateManager&, float);
|
||||
virtual bool Stuck(CStateManager&, float);
|
||||
virtual bool NoPathNodes(CStateManager&, float);
|
||||
virtual bool Landed(CStateManager&, float);
|
||||
virtual bool HearShot(CStateManager&, float);
|
||||
virtual bool HearPlayer(CStateManager&, float);
|
||||
virtual bool CoverCheck(CStateManager&, float);
|
||||
virtual bool CoverFind(CStateManager&, float);
|
||||
virtual bool CoverBlown(CStateManager&, float);
|
||||
virtual bool CoverNearlyBlown(CStateManager&, float);
|
||||
virtual bool CoveringFire(CStateManager&, float);
|
||||
virtual bool GotUp(CStateManager&, float);
|
||||
virtual bool LineOfSight(CStateManager&, float);
|
||||
virtual bool AggressionCheck(CStateManager&, float);
|
||||
virtual bool AttackOver(CStateManager&, float);
|
||||
virtual bool ShouldTaunt(CStateManager&, float);
|
||||
virtual bool Inside(CStateManager&, float);
|
||||
virtual bool ShouldFire(CStateManager&, float);
|
||||
virtual bool ShouldFlinch(CStateManager&, float);
|
||||
virtual bool PatrolPathOver(CStateManager&, float);
|
||||
virtual bool ShouldDodge(CStateManager&, float);
|
||||
virtual bool ShouldRetreat(CStateManager&, float);
|
||||
virtual bool ShouldCrouch(CStateManager&, float);
|
||||
virtual bool ShouldMove(CStateManager&, float);
|
||||
virtual bool ShotAt(CStateManager&, float);
|
||||
virtual bool HasTargetingPoint(CStateManager&, float);
|
||||
virtual bool ShouldWallHang(CStateManager&, float);
|
||||
virtual bool SetAIStage(CStateManager&, float);
|
||||
virtual bool AIStage(CStateManager&, float);
|
||||
virtual bool StartAttack(CStateManager&, float);
|
||||
virtual bool BreakAttack(CStateManager&, float);
|
||||
virtual bool ShouldStrafe(CStateManager&, float);
|
||||
virtual bool ShouldSpecialAttack(CStateManager&, float);
|
||||
virtual bool LostInterest(CStateManager&, float);
|
||||
virtual bool CodeTrigger(CStateManager&, float);
|
||||
virtual bool BounceFind(CStateManager&, float);
|
||||
virtual bool Random(CStateManager&, float);
|
||||
virtual bool FixedRandom(CStateManager&, float);
|
||||
virtual bool IsDizzy(CStateManager&, float);
|
||||
virtual bool ShouldCallForBackup(CStateManager&, float);
|
||||
virtual bool InAttackPosition(CStateManager& mgr, float arg);
|
||||
virtual bool Leash(CStateManager& mgr, float arg);
|
||||
virtual bool OffLine(CStateManager& mgr, float arg);
|
||||
virtual bool Attacked(CStateManager& mgr, float arg);
|
||||
virtual bool PathShagged(CStateManager& mgr, float arg);
|
||||
virtual bool PathOver(CStateManager& mgr, float arg);
|
||||
virtual bool PathFound(CStateManager& mgr, float arg);
|
||||
virtual bool TooClose(CStateManager& mgr, float arg);
|
||||
virtual bool InRange(CStateManager& mgr, float arg);
|
||||
virtual bool InMaxRange(CStateManager& mgr, float arg);
|
||||
virtual bool InDetectionRange(CStateManager& mgr, float arg);
|
||||
virtual bool SpotPlayer(CStateManager& mgr, float arg);
|
||||
virtual bool PlayerSpot(CStateManager& mgr, float arg);
|
||||
virtual bool PatternOver(CStateManager& mgr, float arg);
|
||||
virtual bool PatternShagged(CStateManager& mgr, float arg);
|
||||
virtual bool HasAttackPattern(CStateManager& mgr, float arg);
|
||||
virtual bool HasPatrolPath(CStateManager& mgr, float arg);
|
||||
virtual bool HasRetreatPattern(CStateManager& mgr, float arg);
|
||||
virtual bool Delay(CStateManager& mgr, float arg);
|
||||
virtual bool RandomDelay(CStateManager& mgr, float arg);
|
||||
virtual bool FixedDelay(CStateManager& mgr, float arg);
|
||||
virtual bool Default(CStateManager& mgr, float arg);
|
||||
virtual bool AnimOver(CStateManager& mgr, float arg);
|
||||
virtual bool ShouldAttack(CStateManager& mgr, float arg);
|
||||
virtual bool ShouldDoubleSnap(CStateManager& mgr, float arg);
|
||||
virtual bool InPosition(CStateManager& mgr, float arg);
|
||||
virtual bool ShouldTurn(CStateManager& mgr, float arg);
|
||||
virtual bool HitSomething(CStateManager& mgr, float arg);
|
||||
virtual bool ShouldJumpBack(CStateManager& mgr, float arg);
|
||||
virtual bool Stuck(CStateManager& mgr, float arg);
|
||||
virtual bool NoPathNodes(CStateManager& mgr, float arg);
|
||||
virtual bool Landed(CStateManager& mgr, float arg);
|
||||
virtual bool HearShot(CStateManager& mgr, float arg);
|
||||
virtual bool HearPlayer(CStateManager& mgr, float arg);
|
||||
virtual bool CoverCheck(CStateManager& mgr, float arg);
|
||||
virtual bool CoverFind(CStateManager& mgr, float arg);
|
||||
virtual bool CoverBlown(CStateManager& mgr, float arg);
|
||||
virtual bool CoverNearlyBlown(CStateManager& mgr, float arg);
|
||||
virtual bool CoveringFire(CStateManager& mgr, float arg);
|
||||
virtual bool GotUp(CStateManager& mgr, float arg);
|
||||
virtual bool LineOfSight(CStateManager& mgr, float arg);
|
||||
virtual bool AggressionCheck(CStateManager& mgr, float arg);
|
||||
virtual bool AttackOver(CStateManager& mgr, float arg);
|
||||
virtual bool ShouldTaunt(CStateManager& mgr, float arg);
|
||||
virtual bool Inside(CStateManager& mgr, float arg);
|
||||
virtual bool ShouldFire(CStateManager& mgr, float arg);
|
||||
virtual bool ShouldFlinch(CStateManager& mgr, float arg);
|
||||
virtual bool PatrolPathOver(CStateManager& mgr, float arg);
|
||||
virtual bool ShouldDodge(CStateManager& mgr, float arg);
|
||||
virtual bool ShouldRetreat(CStateManager& mgr, float arg);
|
||||
virtual bool ShouldCrouch(CStateManager& mgr, float arg);
|
||||
virtual bool ShouldMove(CStateManager& mgr, float arg);
|
||||
virtual bool ShotAt(CStateManager& mgr, float arg);
|
||||
virtual bool HasTargetingPoint(CStateManager& mgr, float arg);
|
||||
virtual bool ShouldWallHang(CStateManager& mgr, float arg);
|
||||
virtual bool SetAIStage(CStateManager& mgr, float arg);
|
||||
virtual bool AIStage(CStateManager& mgr, float arg);
|
||||
virtual bool StartAttack(CStateManager& mgr, float arg);
|
||||
virtual bool BreakAttack(CStateManager& mgr, float arg);
|
||||
virtual bool ShouldStrafe(CStateManager& mgr, float arg);
|
||||
virtual bool ShouldSpecialAttack(CStateManager& mgr, float arg);
|
||||
virtual bool LostInterest(CStateManager& mgr, float arg);
|
||||
virtual bool CodeTrigger(CStateManager& mgr, float arg);
|
||||
virtual bool BounceFind(CStateManager& mgr, float arg);
|
||||
virtual bool Random(CStateManager& mgr, float arg);
|
||||
virtual bool FixedRandom(CStateManager& mgr, float arg);
|
||||
virtual bool IsDizzy(CStateManager& mgr, float arg);
|
||||
virtual bool ShouldCallForBackup(CStateManager& mgr, float arg);
|
||||
|
||||
private:
|
||||
CHealthInfo x258_healthInfo;
|
||||
|
||||
@@ -183,43 +183,43 @@ public:
|
||||
void KnockBack(const CVector3f&, CStateManager&, const CDamageInfo& info, EKnockBackType type,
|
||||
bool inDeferred, float magnitude) override;
|
||||
void TakeDamage(const CVector3f& direction, float magnitude) override;
|
||||
void Patrol(CStateManager&, EStateMsg, float) override;
|
||||
void FollowPattern(CStateManager&, EStateMsg, float) override;
|
||||
void Dead(CStateManager&, EStateMsg, float) override;
|
||||
void PathFind(CStateManager&, EStateMsg, float) override;
|
||||
void Start(CStateManager&, EStateMsg, float) override;
|
||||
void TargetPatrol(CStateManager&, EStateMsg, float) override;
|
||||
void TargetPlayer(CStateManager&, EStateMsg, float) override;
|
||||
bool Leash(CStateManager&, float) override;
|
||||
bool OffLine(CStateManager&, float) override;
|
||||
bool Attacked(CStateManager&, float) override;
|
||||
bool PathShagged(CStateManager&, float) override;
|
||||
bool PathOver(CStateManager&, float) override;
|
||||
bool PathFound(CStateManager&, float) override;
|
||||
bool TooClose(CStateManager&, float) override;
|
||||
bool InRange(CStateManager&, float) override;
|
||||
bool InMaxRange(CStateManager&, float) override;
|
||||
bool InDetectionRange(CStateManager&, float) override;
|
||||
bool SpotPlayer(CStateManager&, float) override;
|
||||
bool PlayerSpot(CStateManager&, float) override;
|
||||
bool PatternOver(CStateManager&, float) override;
|
||||
bool PatternShagged(CStateManager&, float) override;
|
||||
bool HasAttackPattern(CStateManager&, float) override;
|
||||
bool HasPatrolPath(CStateManager&, float) override;
|
||||
bool HasRetreatPattern(CStateManager&, float) override;
|
||||
bool Delay(CStateManager&, float) override;
|
||||
bool RandomDelay(CStateManager&, float) override;
|
||||
bool FixedDelay(CStateManager&, float) override;
|
||||
bool Default(CStateManager&, float) override;
|
||||
bool AnimOver(CStateManager&, float) override;
|
||||
bool InPosition(CStateManager&, float) override;
|
||||
bool Stuck(CStateManager&, float) override;
|
||||
bool NoPathNodes(CStateManager&, float) override;
|
||||
bool Landed(CStateManager&, float) override;
|
||||
bool PatrolPathOver(CStateManager&, float) override;
|
||||
bool CodeTrigger(CStateManager&, float) override;
|
||||
bool Random(CStateManager&, float) override;
|
||||
bool FixedRandom(CStateManager&, float) override;
|
||||
void Patrol(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||
void FollowPattern(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||
void Dead(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||
void PathFind(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||
void Start(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||
void TargetPatrol(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||
void TargetPlayer(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||
bool Leash(CStateManager& mgr, float arg) override;
|
||||
bool OffLine(CStateManager& mgr, float arg) override;
|
||||
bool Attacked(CStateManager& mgr, float arg) override;
|
||||
bool PathShagged(CStateManager& mgr, float arg) override;
|
||||
bool PathOver(CStateManager& mgr, float arg) override;
|
||||
bool PathFound(CStateManager& mgr, float arg) override;
|
||||
bool TooClose(CStateManager& mgr, float arg) override;
|
||||
bool InRange(CStateManager& mgr, float arg) override;
|
||||
bool InMaxRange(CStateManager& mgr, float arg) override;
|
||||
bool InDetectionRange(CStateManager& mgr, float arg) override;
|
||||
bool SpotPlayer(CStateManager& mgr, float arg) override;
|
||||
bool PlayerSpot(CStateManager& mgr, float arg) override;
|
||||
bool PatternOver(CStateManager& mgr, float arg) override;
|
||||
bool PatternShagged(CStateManager& mgr, float arg) override;
|
||||
bool HasAttackPattern(CStateManager& mgr, float arg) override;
|
||||
bool HasPatrolPath(CStateManager& mgr, float arg) override;
|
||||
bool HasRetreatPattern(CStateManager& mgr, float arg) override;
|
||||
bool Delay(CStateManager& mgr, float arg) override;
|
||||
bool RandomDelay(CStateManager& mgr, float arg) override;
|
||||
bool FixedDelay(CStateManager& mgr, float arg) override;
|
||||
bool Default(CStateManager& mgr, float arg) override;
|
||||
bool AnimOver(CStateManager& mgr, float arg) override;
|
||||
bool InPosition(CStateManager& mgr, float arg) override;
|
||||
bool Stuck(CStateManager& mgr, float arg) override;
|
||||
bool NoPathNodes(CStateManager& mgr, float arg) override;
|
||||
bool Landed(CStateManager& mgr, float arg) override;
|
||||
bool PatrolPathOver(CStateManager& mgr, float arg) override;
|
||||
bool CodeTrigger(CStateManager& mgr, float arg) override;
|
||||
bool Random(CStateManager& mgr, float arg) override;
|
||||
bool FixedRandom(CStateManager& mgr, float arg) override;
|
||||
|
||||
// CPatterned
|
||||
virtual void Freeze(CStateManager& mgr, const CVector3f& pos, const CUnitVector3f& dir,
|
||||
@@ -249,6 +249,8 @@ public:
|
||||
TUniqueId GetDestObj() const { return x2dc_destObj; } // TODO: name?
|
||||
float GetAverageAttackTime() const { return x304_averageAttackTime; }
|
||||
float GetAttackTimeVariation() const { return x308_attackTimeVariation; }
|
||||
const bool GetVerticalMovement() const { return x328_25_verticalMovement; }
|
||||
void SetVerticalMovement(const bool v) { x328_25_verticalMovement = v; }
|
||||
EAnimState GetAnimationState() const { return x32c_animState; }
|
||||
void SetAnimationState(const EAnimState state) { x32c_animState = state; }
|
||||
float GetStateMachineTime() const { return GetStateMachineState().GetTime(); }
|
||||
@@ -279,9 +281,10 @@ public:
|
||||
void TryCommand(CStateManager& mgr, int state, FTryCommandCallback cb, int arg);
|
||||
|
||||
void SetupPlayerCollision(const bool startsHidden);
|
||||
|
||||
|
||||
void ApproachDest(CStateManager& mgr);
|
||||
void SetDestPos(const CVector3f& pos);
|
||||
|
||||
protected:
|
||||
EPatrolState x2d8_patrolState;
|
||||
TUniqueId x2dc_destObj;
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#ifndef _CTHARDUS
|
||||
#define _CTHARDUS
|
||||
|
||||
class CThardus : public CPatterned {
|
||||
public:
|
||||
void ShakeScreen(CStateManager& mgr, const CVector3f& position, const float, const float,
|
||||
const float);
|
||||
void StartTimedThermalFlash(CStateManager& mgr, float, CActor& actor);
|
||||
};
|
||||
#endif
|
||||
@@ -3,9 +3,81 @@
|
||||
|
||||
#include "MetroidPrime/Enemies/CPatterned.hpp"
|
||||
|
||||
class CThardusRockProjectile : public CPatterned {
|
||||
#include "MetroidPrime/Collision/CJointCollisionDescription.hpp"
|
||||
#include "MetroidPrime/Collision/CPatternedCollisionUtils.hpp"
|
||||
|
||||
class CCollisionActorManager;
|
||||
class CThardusRockProjectile : public CPatterned {
|
||||
public:
|
||||
enum EModifyMaterial {
|
||||
kMM_Add,
|
||||
kMM_Remove,
|
||||
};
|
||||
CThardusRockProjectile(const TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
|
||||
const CTransform4f& xf, const CModelData& modelData,
|
||||
const CActorParameters& aParms, const CPatternedInfo& patternedInfo,
|
||||
const rstl::vector< CModelData >& mDataVec, const CAssetId stateMachine,
|
||||
const float);
|
||||
|
||||
void Accept(IVisitor& visitor) override;
|
||||
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override;
|
||||
void Think(float dt, CStateManager& mgr) override;
|
||||
|
||||
void GetUp(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||
void Patrol(CStateManager&, EStateMsg, float) override;
|
||||
void LoopedAttack(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||
void Dead(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||
void Lurk(CStateManager& mgr, EStateMsg msg, float arg) override;
|
||||
bool ShouldMove(CStateManager& mgr, float arg) override;
|
||||
bool ShouldAttack(CStateManager& mgr, float arg) override;
|
||||
bool HitSomething(CStateManager& mgr, float arg) override;
|
||||
bool AnimOver(CStateManager& mgr, float arg) override;
|
||||
bool Delay(CStateManager& mgr, float arg) override;
|
||||
|
||||
void Render(const CStateManager&) const override;
|
||||
|
||||
void AddGravity(CStateManager& mgr);
|
||||
void AddDeathEffects(CStateManager& mgr, const CVector3f& position);
|
||||
void AddParticleEffect(CStateManager& mgr, const CAssetId particle, const CVector3f& position,
|
||||
const CVector3f& scale, const int unk);
|
||||
|
||||
private:
|
||||
void InitializeCollisionManager(CStateManager& mgr);
|
||||
void SetMaterialProperties(rstl::single_ptr< CCollisionActorManager >& colMgr,
|
||||
CStateManager& mgr);
|
||||
void AddSphereCollisionList(const CPatternedCollisionUtils::SSphereJointInfo*, int,
|
||||
rstl::vector< CJointCollisionDescription >&);
|
||||
void UpdateDestroyableRockPositions(CStateManager& mgr);
|
||||
void UpdateDestroyableRockCollisionActors(CStateManager& mgr);
|
||||
void SetChildrenActive(CStateManager& mgr, bool active);
|
||||
void ModifyChildrenMaterial(CStateManager& mgr, EModifyMaterial modify, EMaterialTypes material);
|
||||
|
||||
float x568_;
|
||||
int mAiState;
|
||||
TUniqueId x570_;
|
||||
bool x572_;
|
||||
EAnimState mAnimState;
|
||||
rstl::single_ptr< CCollisionActorManager > mCollisionManager;
|
||||
rstl::vector< CModelData > x57c_;
|
||||
rstl::vector< TUniqueId > mDestroyableRocks;
|
||||
CAssetId mStateMachineId;
|
||||
uint x5a0_;
|
||||
bool x5a4_;
|
||||
float mDelayTime;
|
||||
float mAttackTime;
|
||||
CVector3f x5b0_;
|
||||
bool x5bc_;
|
||||
float x5c0_;
|
||||
uint x5c4_;
|
||||
uint x5c8_;
|
||||
uint x5cc_;
|
||||
TUniqueId mThardusId;
|
||||
uint x5d4_;
|
||||
uint x5d8_;
|
||||
bool x5dc_;
|
||||
bool x5dd_;
|
||||
|
||||
static CPatternedCollisionUtils::SSphereJointInfo skJointInfoList[1];
|
||||
};
|
||||
|
||||
|
||||
#endif // _CTHARDUSROCKPROJECTILE
|
||||
|
||||
@@ -0,0 +1,245 @@
|
||||
#include "MetroidPrime/Enemies/CThardusRockProjectile.hpp"
|
||||
|
||||
#include "Kyoto/Particles/CGenDescription.hpp"
|
||||
#include "MetroidPrime/CCollisionActorManager.hpp"
|
||||
#include "MetroidPrime/CExplosion.hpp"
|
||||
#include "MetroidPrime/Enemies/CThardus.hpp"
|
||||
#include "MetroidPrime/Player/CPlayer.hpp"
|
||||
|
||||
CPatternedCollisionUtils::SSphereJointInfo CThardusRockProjectile::skJointInfoList[] = {
|
||||
{"Rock_01_Collision_LCTR", 1.5f},
|
||||
};
|
||||
|
||||
CThardusRockProjectile::CThardusRockProjectile(const TUniqueId uid, const rstl::string& name,
|
||||
const CEntityInfo& info, const CTransform4f& xf,
|
||||
const CModelData& modelData,
|
||||
const CActorParameters& aParms,
|
||||
const CPatternedInfo& patternedInfo,
|
||||
const rstl::vector< CModelData >& mDataVec,
|
||||
const CAssetId stateMachine, const float f1)
|
||||
: CPatterned(kC_ThardusRockProjectile, uid, name, kFT_Zero, info, xf, modelData, patternedInfo,
|
||||
kMT_Flyer, kCT_One, kBT_Flyer, aParms, kKBV_Medium)
|
||||
, x568_(1.f)
|
||||
, x570_(kInvalidUniqueId)
|
||||
, x572_(false)
|
||||
, mAnimState(kAS_Invalid)
|
||||
, x57c_(mDataVec)
|
||||
, mStateMachineId(stateMachine)
|
||||
, x5a0_(0)
|
||||
, x5a4_(true)
|
||||
, mDelayTime(0.f)
|
||||
, mAttackTime(0.f)
|
||||
, x5b0_(0.f, 1.f, 0.f)
|
||||
, x5bc_(true)
|
||||
, x5c0_(f1)
|
||||
, x5c4_(0)
|
||||
, x5c8_(0)
|
||||
, x5cc_(0)
|
||||
, mThardusId(kInvalidUniqueId)
|
||||
, x5d4_(0)
|
||||
, x5d8_(0)
|
||||
, x5dc_(false)
|
||||
, x5dd_(false) {
|
||||
CMaterialList exclude = GetMaterialFilter().GetExcludeList();
|
||||
exclude.Add(CMaterialList(kMT_Player, kMT_Character, kMT_NoPlatformCollision));
|
||||
SetMaterialFilter(
|
||||
CMaterialFilter::MakeIncludeExclude(GetMaterialFilter().GetIncludeList(), exclude));
|
||||
x50c_baseDamageMag = 1.f;
|
||||
}
|
||||
|
||||
void CThardusRockProjectile::Accept(IVisitor& visitor) { visitor.Visit(*this); }
|
||||
|
||||
void CThardusRockProjectile::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid,
|
||||
CStateManager& mgr) {}
|
||||
|
||||
void CThardusRockProjectile::Think(float dt, CStateManager& mgr) {}
|
||||
|
||||
void CThardusRockProjectile::GetUp(CStateManager& mgr, const EStateMsg msg, const float arg) {
|
||||
switch (msg) {
|
||||
case kStateMsg_Activate:
|
||||
break;
|
||||
case kStateMsg_Update:
|
||||
break;
|
||||
case kStateMsg_Deactivate:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CThardusRockProjectile::Patrol(CStateManager& mgr, const EStateMsg msg, const float arg) {
|
||||
switch (msg) {
|
||||
case kStateMsg_Activate:
|
||||
break;
|
||||
case kStateMsg_Update:
|
||||
break;
|
||||
case kStateMsg_Deactivate:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CThardusRockProjectile::LoopedAttack(CStateManager& mgr, EStateMsg msg, float arg) {
|
||||
switch (msg) {
|
||||
case kStateMsg_Activate:
|
||||
break;
|
||||
case kStateMsg_Update:
|
||||
break;
|
||||
case kStateMsg_Deactivate:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CThardusRockProjectile::Dead(CStateManager& mgr, EStateMsg msg, float arg) {
|
||||
switch (msg) {
|
||||
case kStateMsg_Activate:
|
||||
break;
|
||||
case kStateMsg_Update:
|
||||
break;
|
||||
case kStateMsg_Deactivate:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CThardusRockProjectile::Lurk(CStateManager& mgr, EStateMsg msg, float arg) {
|
||||
switch (msg) {
|
||||
case kStateMsg_Activate:
|
||||
break;
|
||||
case kStateMsg_Update:
|
||||
break;
|
||||
case kStateMsg_Deactivate:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool CThardusRockProjectile::ShouldMove(CStateManager& mgr, float arg) { return mAiState >= 1; }
|
||||
|
||||
bool CThardusRockProjectile::ShouldAttack(CStateManager& mgr, float arg) {
|
||||
if (GetStateMachineTime() > mAttackTime && mAiState != 3) {
|
||||
mAiState = 2;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CThardusRockProjectile::HitSomething(CStateManager& mgr, float arg) { return x572_; }
|
||||
|
||||
bool CThardusRockProjectile::AnimOver(CStateManager& mgr, float arg) { return mAnimState == 3; }
|
||||
|
||||
bool CThardusRockProjectile::Delay(CStateManager& mgr, float arg) {
|
||||
return GetStateMachineTime() > mDelayTime;
|
||||
}
|
||||
|
||||
void CThardusRockProjectile::InitializeCollisionManager(CStateManager& mgr) {}
|
||||
|
||||
void CThardusRockProjectile::SetMaterialProperties(
|
||||
rstl::single_ptr< CCollisionActorManager >& colMgr, CStateManager& mgr) {}
|
||||
|
||||
void CThardusRockProjectile::AddSphereCollisionList(
|
||||
const CPatternedCollisionUtils::SSphereJointInfo*, int,
|
||||
rstl::vector< CJointCollisionDescription >&) {}
|
||||
|
||||
void CThardusRockProjectile::UpdateDestroyableRockPositions(CStateManager& mgr) {}
|
||||
void CThardusRockProjectile::UpdateDestroyableRockCollisionActors(CStateManager& mgr) {}
|
||||
|
||||
void CThardusRockProjectile::SetChildrenActive(CStateManager& mgr, bool active) {
|
||||
const int rockCount = mDestroyableRocks.size();
|
||||
for (uint i = 0; i < rockCount; i++) {
|
||||
const TUniqueId rockId = mDestroyableRocks[i];
|
||||
const TUniqueId colId = mCollisionManager->GetCollisionDescFromIndex(i).GetCollisionActorId();
|
||||
CEntity* rockAct = mgr.ObjectById(rockId);
|
||||
if (!rockAct) {
|
||||
continue;
|
||||
}
|
||||
CEntity* colAct = mgr.ObjectById(colId);
|
||||
if (!colAct) {
|
||||
continue;
|
||||
}
|
||||
|
||||
rockAct->SetActive(active);
|
||||
colAct->SetActive(active);
|
||||
}
|
||||
}
|
||||
|
||||
void CThardusRockProjectile::ModifyChildrenMaterial(CStateManager& mgr, EModifyMaterial modify,
|
||||
EMaterialTypes material) {
|
||||
const int rockCount = mDestroyableRocks.size();
|
||||
for (uint i = 0; i < rockCount; i++) {
|
||||
TUniqueId rockId = mDestroyableRocks[i];
|
||||
TUniqueId colId = mCollisionManager->GetCollisionDescFromIndex(i).GetCollisionActorId();
|
||||
|
||||
CActor* rockAct = TCastToPtr< CActor >(mgr.ObjectById(rockId));
|
||||
|
||||
if (!rockAct) {
|
||||
continue;
|
||||
}
|
||||
CActor* colAct = TCastToPtr< CActor >(mgr.ObjectById(colId));
|
||||
if (!colAct) {
|
||||
continue;
|
||||
}
|
||||
switch (modify) {
|
||||
case kMM_Add:
|
||||
rockAct->AddMaterial(material, mgr);
|
||||
colAct->AddMaterial(material, mgr);
|
||||
break;
|
||||
case kMM_Remove:
|
||||
rockAct->RemoveMaterial(material, mgr);
|
||||
colAct->RemoveMaterial(material, mgr);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CThardusRockProjectile::Render(const CStateManager& mgr) const { CPatterned::Render(mgr); }
|
||||
|
||||
void CThardusRockProjectile::AddGravity(CStateManager& mgr) {
|
||||
SetVerticalMovement(false);
|
||||
Stop();
|
||||
SetMomentumWR(CVector3f(0.f, 0.f, 2.f * -GetWeight()));
|
||||
mAiState = 3;
|
||||
}
|
||||
|
||||
void CThardusRockProjectile::AddDeathEffects(CStateManager& mgr, const CVector3f& position) {
|
||||
if (mThardusId == kInvalidUniqueId) {
|
||||
return;
|
||||
}
|
||||
|
||||
CThardus* thardus = static_cast< CThardus* >(mgr.ObjectById(mThardusId));
|
||||
if (!thardus) {
|
||||
return;
|
||||
}
|
||||
|
||||
AddParticleEffect(mgr, x5c8_, position, CVector3f(GetModelData()->GetScale()), 0);
|
||||
thardus->ShakeScreen(mgr, position, 0.75f, 125.f, 1.f);
|
||||
const CPlayer* player = mgr.GetPlayer();
|
||||
const CVector3f diff = player->GetTranslation() - GetTranslation();
|
||||
const float widthTimes10 = GetModelData()->GetScale().GetX() * 10.f;
|
||||
|
||||
if (diff.MagSquared() < widthTimes10 * widthTimes10) {
|
||||
mgr.ApplyDamage(GetUniqueId(), player->GetUniqueId(), GetUniqueId(),
|
||||
CDamageInfo(CWeaponMode(kWT_AI), GetContactDamage().GetDamage() * 0.5f,
|
||||
widthTimes10, GetContactDamage().GetKnockBackPower() * 0.5f),
|
||||
CMaterialFilter::GetPassEverything(), diff.AsNormalized());
|
||||
}
|
||||
|
||||
ProcessSoundEvent(x5d8_, 1.f, 0, 0.1f, 1000.f, 20, 127, CVector3f::Zero(), GetTranslation(),
|
||||
mgr.GetNextAreaId().Value(), mgr, true);
|
||||
|
||||
if (x5dd_) {
|
||||
thardus->StartTimedThermalFlash(mgr, 2.f, *this);
|
||||
SendScriptMsgs(kSS_Zero, mgr, kSM_None);
|
||||
}
|
||||
}
|
||||
|
||||
void CThardusRockProjectile::AddParticleEffect(CStateManager& mgr, CAssetId particle,
|
||||
const CVector3f& position, const CVector3f& scale,
|
||||
int unk) {
|
||||
TUniqueId uid = mgr.AllocateUniqueId();
|
||||
char buf[1024];
|
||||
sprintf(buf, "ROCK_PROJECTILE_EFFECT-%u-%i", particle, uid.Value());
|
||||
|
||||
CEntity* ent = rs_new CExplosion(
|
||||
TLockedToken< CGenDescription >(gpSimplePool->GetObj(SObjectTag('PART', particle))), uid,
|
||||
true, CEntityInfo(mgr.GetNextAreaId(), rstl::vector< SConnection >()), rstl::string(buf),
|
||||
CTransform4f(CMatrix3f::Identity(), position), unk, scale, CColor::White());
|
||||
|
||||
mgr.AddObject(*ent);
|
||||
}
|
||||
Reference in New Issue
Block a user