metaforce/Runtime/Weapon/CGunMotion.hpp

58 lines
1.4 KiB
C++
Raw Normal View History

#ifndef __URDE_CGUNMOTION_HPP__
#define __URDE_CGUNMOTION_HPP__
#include "RetroTypes.hpp"
#include "zeus/CVector3f.hpp"
#include "Character/CModelData.hpp"
2017-08-26 04:36:25 +00:00
#include "CGunController.hpp"
namespace urde
{
2017-08-25 06:18:09 +00:00
namespace SamusGun
{
enum class EAnimationState
{
2017-08-26 04:36:25 +00:00
Wander,
Fidget,
Struck,
FreeLook,
ComboFire,
Idle,
BasePosition
};
enum class EFidgetType
{
Invalid = -1,
2017-09-04 02:22:46 +00:00
Minor,
Major
2017-08-25 06:18:09 +00:00
};
}
class CGunMotion
{
CModelData x0_modelData;
2017-08-26 04:36:25 +00:00
CGunController x4c_gunController;
std::vector<CToken> xa8_anims;
bool xb8_24_animPlaying : 1;
2017-08-26 04:36:25 +00:00
void LoadAnimations();
public:
2017-08-26 04:36:25 +00:00
CGunMotion(CAssetId ancsId, const zeus::CVector3f& scale);
2017-08-25 06:18:09 +00:00
const CModelData& GetModelData() const { return x0_modelData; }
2017-08-26 04:36:25 +00:00
bool PlayPasAnim(SamusGun::EAnimationState state, CStateManager& mgr, float angle, bool bigStrike);
void ReturnToDefault(CStateManager& mgr, bool setState);
void BasePosition(bool bigStrikeReset);
void EnterFidget(CStateManager& mgr, SamusGun::EFidgetType type, s32 parm2);
void Update(float dt, CStateManager& mgr);
void Draw(const CStateManager& mgr, const zeus::CTransform& xf) const;
s32 GetFreeLookSetId() const { return x4c_gunController.GetFreeLookSetId(); }
CGunController& GunController() { return x4c_gunController; }
bool IsAnimPlaying() const { return xb8_24_animPlaying; }
};
}
#endif // __URDE_CGUNMOTION_HPP__