mirror of https://github.com/PrimeDecomp/prime.git
parent
c7250e132f
commit
b70ed602b4
|
@ -3898,11 +3898,11 @@ __ct__10CGunWeaponFUi11EWeaponType9TUniqueId14EMaterialTypesRC9CVector3f:
|
||||||
/* 801BD2BC 001BA21C 90 1E 01 44 */ stw r0, 0x144(r30)
|
/* 801BD2BC 001BA21C 90 1E 01 44 */ stw r0, 0x144(r30)
|
||||||
/* 801BD2C0 001BA220 48 00 01 29 */ bl GetWeaponIndex__F11EWeaponType
|
/* 801BD2C0 001BA220 48 00 01 29 */ bl GetWeaponIndex__F11EWeaponType
|
||||||
/* 801BD2C4 001BA224 80 8D A0 64 */ lwz r4, gpSimplePool@sda21(r13)
|
/* 801BD2C4 001BA224 80 8D A0 64 */ lwz r4, gpSimplePool@sda21(r13)
|
||||||
/* 801BD2C8 001BA228 3C A0 80 3D */ lis r5, lbl_803D17A0@ha
|
/* 801BD2C8 001BA228 3C A0 80 3D */ lis r5, skBeamXferNames@ha
|
||||||
/* 801BD2CC 001BA22C 54 60 10 3A */ slwi r0, r3, 2
|
/* 801BD2CC 001BA22C 54 60 10 3A */ slwi r0, r3, 2
|
||||||
/* 801BD2D0 001BA230 38 61 00 08 */ addi r3, r1, 8
|
/* 801BD2D0 001BA230 38 61 00 08 */ addi r3, r1, 8
|
||||||
/* 801BD2D4 001BA234 81 84 00 00 */ lwz r12, 0(r4)
|
/* 801BD2D4 001BA234 81 84 00 00 */ lwz r12, 0(r4)
|
||||||
/* 801BD2D8 001BA238 38 A5 17 A0 */ addi r5, r5, lbl_803D17A0@l
|
/* 801BD2D8 001BA238 38 A5 17 A0 */ addi r5, r5, skBeamXferNames@l
|
||||||
/* 801BD2DC 001BA23C 7C A5 00 2E */ lwzx r5, r5, r0
|
/* 801BD2DC 001BA23C 7C A5 00 2E */ lwzx r5, r5, r0
|
||||||
/* 801BD2E0 001BA240 81 8C 00 10 */ lwz r12, 0x10(r12)
|
/* 801BD2E0 001BA240 81 8C 00 10 */ lwz r12, 0x10(r12)
|
||||||
/* 801BD2E4 001BA244 7D 89 03 A6 */ mtctr r12
|
/* 801BD2E4 001BA244 7D 89 03 A6 */ mtctr r12
|
||||||
|
@ -4085,8 +4085,8 @@ skFrozenNames:
|
||||||
.4byte lbl_803D18A7
|
.4byte lbl_803D18A7
|
||||||
.4byte lbl_803D189E
|
.4byte lbl_803D189E
|
||||||
|
|
||||||
.global lbl_803D17A0
|
.global skBeamXferNames
|
||||||
lbl_803D17A0:
|
skBeamXferNames:
|
||||||
# ROM: 0x3CE7A0
|
# ROM: 0x3CE7A0
|
||||||
.4byte lbl_803D18C9
|
.4byte lbl_803D18C9
|
||||||
.4byte lbl_803D18D3
|
.4byte lbl_803D18D3
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
#ifndef _CVERTEXMORPHEFFECT
|
||||||
|
#define _CVERTEXMORPHEFFECT
|
||||||
|
|
||||||
|
#include "Kyoto/Math/CUnitVector3f.hpp"
|
||||||
|
#include "Kyoto/Math/CVector3f.hpp"
|
||||||
|
|
||||||
|
#include "rstl/vector.hpp"
|
||||||
|
|
||||||
|
class CRandom16;
|
||||||
|
|
||||||
|
class CVertexMorphEffect {
|
||||||
|
public:
|
||||||
|
~CVertexMorphEffect() {}
|
||||||
|
|
||||||
|
private:
|
||||||
|
CUnitVector3f x0_dir;
|
||||||
|
CVector3f xc_pos;
|
||||||
|
float x18_duration;
|
||||||
|
float x1c_elapsed;
|
||||||
|
float x20_diagExtent;
|
||||||
|
CRandom16& x24_random;
|
||||||
|
rstl::vector< uint > x28_indices;
|
||||||
|
rstl::vector< float > x38_floats;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _CVERTEXMORPHEFFECT
|
|
@ -0,0 +1,21 @@
|
||||||
|
#ifndef _CDEPENDENCYGROUP
|
||||||
|
#define _CDEPENDENCYGROUP
|
||||||
|
|
||||||
|
#include "Kyoto/SObjectTag.hpp"
|
||||||
|
|
||||||
|
#include "rstl/vector.hpp"
|
||||||
|
|
||||||
|
class CInputStream;
|
||||||
|
|
||||||
|
class CDependencyGroup {
|
||||||
|
public:
|
||||||
|
explicit CDependencyGroup(CInputStream& in);
|
||||||
|
void ReadFromStream(CInputStream& in);
|
||||||
|
|
||||||
|
const rstl::vector< SObjectTag >& GetObjectTagVector() const { return x0_objectTags; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
rstl::vector< SObjectTag > x0_objectTags;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _CDEPENDENCYGROUP
|
|
@ -32,7 +32,7 @@ bool are_tokens_ready(const rstl::vector< CToken >&);
|
||||||
CAssetId get_asset_id_from_name(const char* name);
|
CAssetId get_asset_id_from_name(const char* name);
|
||||||
void lock_tokens(rstl::vector< CToken >&);
|
void lock_tokens(rstl::vector< CToken >&);
|
||||||
void unlock_tokens(rstl::vector< CToken >&);
|
void unlock_tokens(rstl::vector< CToken >&);
|
||||||
CPlayerState::EPlayerSuit get_current_suit(const CStateManager& mgr);
|
int get_current_suit(const CStateManager& mgr);
|
||||||
|
|
||||||
} // namespace NWeaponTypes
|
} // namespace NWeaponTypes
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ const char* skSuitArmNames[] = {
|
||||||
"FusionArm", "FusionArmG", "FusionArmV", "FusionArmP",
|
"FusionArm", "FusionArmG", "FusionArmV", "FusionArmP",
|
||||||
};
|
};
|
||||||
|
|
||||||
const int skAnimTypeList[] = {
|
int skAnimTypeList[] = {
|
||||||
0, 4, 1, 2, 3, 5, 6, 7, 8, 9, 10,
|
0, 4, 1, 2, 3, 5, 6, 7, 8, 9, 10,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -75,11 +75,10 @@ CPlayerState::EBeamId GetWeaponIndex(EWeaponType type) {
|
||||||
|
|
||||||
CGunWeapon::CGunWeapon(CAssetId ancsId, EWeaponType type, TUniqueId playerId,
|
CGunWeapon::CGunWeapon(CAssetId ancsId, EWeaponType type, TUniqueId playerId,
|
||||||
EMaterialTypes playerMaterial, const CVector3f& scale)
|
EMaterialTypes playerMaterial, const CVector3f& scale)
|
||||||
|
|
||||||
: x4_scale(scale)
|
: x4_scale(scale)
|
||||||
, x104_gunCharacter(gpSimplePool->GetObj(SObjectTag('ANCS', ancsId)))
|
, x104_gunCharacter(gpSimplePool->GetObj(SObjectTag('ANCS', ancsId)))
|
||||||
, x13c_armCharacter(gpSimplePool->GetObj(skSuitArmNames[0]))
|
, x13c_armCharacter(gpSimplePool->GetObj(skSuitArmNames[0]))
|
||||||
, x160_xferEffect(gpSimplePool->GetObj(skBeamXferNames[size_t(GetWeaponIndex(type))]))
|
, x160_xferEffect(gpSimplePool->GetObj(skBeamXferNames[GetWeaponIndex(type)]))
|
||||||
, x1bc_rainSplashGenerator(nullptr)
|
, x1bc_rainSplashGenerator(nullptr)
|
||||||
, x1c0_weaponType(type)
|
, x1c0_weaponType(type)
|
||||||
, x1c4_playerId(playerId)
|
, x1c4_playerId(playerId)
|
||||||
|
@ -587,6 +586,20 @@ void CGunWeapon::LoadFxIdle(float dt, CStateManager& mgr) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CGunWeapon::LoadAnimations() {
|
||||||
|
NWeaponTypes::get_token_vector(*x10_solidModelData->GetAnimationData(), 0, 15, x10c_anims, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CGunWeapon::IsAnimsLoaded() const {
|
||||||
|
for (rstl::vector< CToken >::const_iterator it = x10c_anims.begin(); it != x10c_anims.end();
|
||||||
|
++it) {
|
||||||
|
if (!it->IsLoaded()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void CGunWeapon::LockTokens(CStateManager& mgr) {
|
void CGunWeapon::LockTokens(CStateManager& mgr) {
|
||||||
AsyncLoadSuitArm(mgr);
|
AsyncLoadSuitArm(mgr);
|
||||||
NWeaponTypes::lock_tokens(x12c_deps);
|
NWeaponTypes::lock_tokens(x12c_deps);
|
||||||
|
@ -628,22 +641,8 @@ void CGunWeapon::UnLoadFidget() { x100_gunController->UnLoadFidget(); }
|
||||||
|
|
||||||
bool CGunWeapon::IsFidgetLoaded() { return x100_gunController->IsFidgetLoaded(); }
|
bool CGunWeapon::IsFidgetLoaded() { return x100_gunController->IsFidgetLoaded(); }
|
||||||
|
|
||||||
void CGunWeapon::LoadAnimations() {
|
|
||||||
NWeaponTypes::get_token_vector(*x10_solidModelData->GetAnimationData(), 0, 15, x10c_anims, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool CGunWeapon::IsAnimsLoaded() const {
|
|
||||||
for (rstl::vector< CToken >::const_iterator it = x10c_anims.begin(); it != x10c_anims.end();
|
|
||||||
++it) {
|
|
||||||
if (!it->IsLoaded()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void CGunWeapon::AsyncLoadSuitArm(CStateManager& mgr) {
|
void CGunWeapon::AsyncLoadSuitArm(CStateManager& mgr) {
|
||||||
CPlayerState::EPlayerSuit suit = NWeaponTypes::get_current_suit(mgr);
|
int suit = NWeaponTypes::get_current_suit(mgr);
|
||||||
xb0_suitArmModelData = rstl::optional_object_null();
|
xb0_suitArmModelData = rstl::optional_object_null();
|
||||||
x13c_armCharacter = gpSimplePool->GetObj(skSuitArmNames[suit]);
|
x13c_armCharacter = gpSimplePool->GetObj(skSuitArmNames[suit]);
|
||||||
x13c_armCharacter.Lock();
|
x13c_armCharacter.Lock();
|
||||||
|
@ -654,7 +653,7 @@ void CGunWeapon::LoadSuitArm(CStateManager& mgr) {
|
||||||
if (!x13c_armCharacter.IsLoaded()) {
|
if (!x13c_armCharacter.IsLoaded()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CPlayerState::EPlayerSuit suit = NWeaponTypes::get_current_suit(mgr);
|
int suit = NWeaponTypes::get_current_suit(mgr);
|
||||||
const CAssetId armId = NWeaponTypes::get_asset_id_from_name(skSuitArmNames[suit]);
|
const CAssetId armId = NWeaponTypes::get_asset_id_from_name(skSuitArmNames[suit]);
|
||||||
xb0_suitArmModelData = CStaticRes(armId, x4_scale);
|
xb0_suitArmModelData = CStaticRes(armId, x4_scale);
|
||||||
xb0_suitArmModelData->SetSortThermal(true);
|
xb0_suitArmModelData->SetSortThermal(true);
|
||||||
|
|
Loading…
Reference in New Issue