2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 04:27:42 +00:00

Work on CPlayerGun

This commit is contained in:
Jack Andersen
2017-08-25 18:36:25 -10:00
parent ed991a6ac0
commit 86ada63867
35 changed files with 1433 additions and 245 deletions

View File

@@ -1,9 +1,51 @@
#include "CGSFidget.hpp"
#include "WeaponCommon.hpp"
#include "Character/CPASAnimParmData.hpp"
#include "Character/CAnimData.hpp"
#include "CStateManager.hpp"
namespace urde
{
bool CGSFidget::Update(CAnimData&, float, CStateManager&)
bool CGSFidget::Update(CAnimData& data, float dt, CStateManager& mgr)
{
return false;
return !data.IsAnimTimeRemaining(0.001f, "Whole Body");
}
s32 CGSFidget::SetAnim(CAnimData& data, s32 type, s32 parm1, s32 parm2, CStateManager& mgr)
{
const CPASDatabase& pas = data.GetCharacterInfo().GetPASDatabase();
CPASAnimParmData parms(1, CPASAnimParm::FromEnum(type), CPASAnimParm::FromInt32(parm1),
CPASAnimParm::FromEnum(parm2));
auto anim = pas.FindBestAnimation(parms, *mgr.GetActiveRandom(), -1);
bool loop = pas.GetAnimState(1)->GetAnimParmData(anim.second, 3).GetBoolValue();
x14_parm1 = parm1;
x18_parm2 = parm2;
if (anim.second != -1)
{
data.EnableLooping(loop);
CAnimPlaybackParms aParms(anim.second, -1, 1.f, true);
data.SetAnimation(aParms, false);
UnLoadAnim();
}
return anim.second;
}
void CGSFidget::LoadAnimAsync(CAnimData& data, s32 type, s32 parm1, s32 parm2, CStateManager& mgr)
{
CPASAnimParmData parms(1, CPASAnimParm::FromEnum(type), CPASAnimParm::FromInt32(parm1),
CPASAnimParm::FromEnum(parm2));
auto anim = data.GetCharacterInfo().GetPASDatabase().FindBestAnimation(parms, *mgr.GetActiveRandom(), -1);
if (anim.second != -1)
NWeaponTypes::get_token_vector(data, anim.second, x0_anims, true);
}
void CGSFidget::UnLoadAnim()
{
x0_anims.clear();
}
bool CGSFidget::IsAnimLoaded() const
{
return NWeaponTypes::are_tokens_ready(x0_anims);
}
}