mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-21 11:39:10 +00:00
@@ -817,7 +817,7 @@ void CPlayerGun::UpdateGunIdle(bool inStrikeCooldown, float camBobT, float dt, C
|
||||
} else {
|
||||
if (x833_31_inFreeLook) {
|
||||
if ((x2f8_stateFlags & 0x10) != 0x10) {
|
||||
x73c_gunMotion->ReturnToDefault(mgr, x834_30_inBigStrike);
|
||||
x73c_gunMotion->ReturnToDefault(mgr);
|
||||
x740_grappleArm->ReturnToDefault(mgr, 0.f, false);
|
||||
}
|
||||
x833_31_inFreeLook = false;
|
||||
|
||||
@@ -1 +1,77 @@
|
||||
#include "MetroidPrime/Weapons/GunController/CGunMotion.hpp"
|
||||
|
||||
#include "MetroidPrime/CAnimRes.hpp"
|
||||
#include "MetroidPrime/CAnimData.hpp"
|
||||
#include "MetroidPrime/CPASDatabase.hpp"
|
||||
#include "MetroidPrime/CStateManager.hpp"
|
||||
|
||||
CGunMotion::CGunMotion(CAssetId ancsId, const CVector3f& scale)
|
||||
: x0_modelData(CAnimRes(ancsId, 0, scale, 0, false))
|
||||
, x4c_gunController(x0_modelData)
|
||||
, xb8_24_animPlaying(false) {
|
||||
LoadAnimations();
|
||||
}
|
||||
CGunMotion::~CGunMotion() {}
|
||||
|
||||
bool CGunMotion::PlayPasAnim(SamusGun::EAnimationState state, CStateManager& mgr, float angle,
|
||||
bool bigStrike) {
|
||||
const CPASDatabase& pas = x0_modelData.GetAnimationData()->GetCharacterInfo().GetPASDatabase();
|
||||
|
||||
s32 animId = -1;
|
||||
bool loop = true;
|
||||
switch (state) {
|
||||
case SamusGun::kAS_Wander: {
|
||||
CPASAnimParmData* parms; //((pas::EAnimationState(state)));
|
||||
rstl::pair<float, int> anim = pas.FindBestAnimation(*parms, *mgr.GetActiveRandom(), -1);
|
||||
animId = anim.second;
|
||||
break;
|
||||
}
|
||||
case SamusGun::kAS_Idle: {
|
||||
CPASAnimParmData* parms; //(pas::EAnimationState(state), CPASAnimParm::FromEnum(0));
|
||||
rstl::pair<float, int> anim = pas.FindBestAnimation(*parms, *mgr.GetActiveRandom(), -1);
|
||||
animId = anim.second;
|
||||
break;
|
||||
}
|
||||
case SamusGun::kAS_Struck: {
|
||||
CPASAnimParmData* parms; /*(pas::EAnimationState(state), CPASAnimParm::FromInt32(0),
|
||||
CPASAnimParm::FromReal32(angle), CPASAnimParm::FromBool(bigStrike),
|
||||
CPASAnimParm::FromBool(false));*/
|
||||
rstl::pair<float, int> anim = pas.FindBestAnimation(*parms, *mgr.GetActiveRandom(), -1);
|
||||
animId = anim.second;
|
||||
loop = false;
|
||||
break;
|
||||
}
|
||||
case SamusGun::kAS_FreeLook:
|
||||
x4c_gunController.EnterFreeLook(mgr, 0, -1);
|
||||
break;
|
||||
case SamusGun::kAS_ComboFire:
|
||||
x4c_gunController.EnterComboFire(mgr, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (animId != -1) {
|
||||
x0_modelData.AnimationData()->EnableLooping(loop);
|
||||
CAnimPlaybackParms aparms(animId, -1, 1.f, true);
|
||||
x0_modelData.AnimationData()->SetAnimation(aparms, false);
|
||||
}
|
||||
|
||||
return loop;
|
||||
}
|
||||
|
||||
void CGunMotion::Update(float, CStateManager&) {}
|
||||
|
||||
void CGunMotion::Draw(const CStateManager&, const CTransform4f&) const {}
|
||||
|
||||
void CGunMotion::ReturnToDefault(CStateManager& mgr) {
|
||||
x4c_gunController.ReturnToDefault(mgr, 0.f);
|
||||
}
|
||||
|
||||
void CGunMotion::GetFreeLookSetId() const {}
|
||||
|
||||
void CGunMotion::BasePosition(bool bigStrikeReset) {}
|
||||
|
||||
void CGunMotion::EnterFidget(CStateManager&, SamusGun::EFidgetType, int) {}
|
||||
|
||||
void CGunMotion::LoadAnimations() {}
|
||||
|
||||
Reference in New Issue
Block a user