2018-10-07 03:42:33 +00:00
|
|
|
#pragma once
|
2016-08-14 21:11:44 +00:00
|
|
|
|
2019-09-22 21:52:05 +00:00
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
#include "Runtime/RetroTypes.hpp"
|
|
|
|
#include "Runtime/Character/CModelData.hpp"
|
|
|
|
#include "Runtime/Weapon/CGunController.hpp"
|
|
|
|
|
|
|
|
#include <zeus/CVector3f.hpp>
|
2016-08-14 21:11:44 +00:00
|
|
|
|
2021-04-10 08:42:06 +00:00
|
|
|
namespace metaforce {
|
2016-08-14 21:11:44 +00:00
|
|
|
|
2018-12-08 05:30:43 +00:00
|
|
|
namespace SamusGun {
|
|
|
|
enum class EAnimationState { Wander, Fidget, Struck, FreeLook, ComboFire, Idle, BasePosition };
|
|
|
|
enum class EFidgetType { Invalid = -1, Minor, Major };
|
|
|
|
} // namespace SamusGun
|
2017-08-25 06:18:09 +00:00
|
|
|
|
2018-12-08 05:30:43 +00:00
|
|
|
class CGunMotion {
|
|
|
|
CModelData x0_modelData;
|
|
|
|
CGunController x4c_gunController;
|
|
|
|
std::vector<CToken> xa8_anims;
|
2020-04-20 04:57:50 +00:00
|
|
|
bool xb8_24_animPlaying : 1 = false;
|
2017-08-26 04:36:25 +00:00
|
|
|
|
2018-12-08 05:30:43 +00:00
|
|
|
void LoadAnimations();
|
2016-08-14 21:11:44 +00:00
|
|
|
|
|
|
|
public:
|
2018-12-08 05:30:43 +00:00
|
|
|
CGunMotion(CAssetId ancsId, const zeus::CVector3f& scale);
|
2022-02-25 07:45:25 +00:00
|
|
|
CModelData& GetModelData() { return x0_modelData; }
|
2018-12-08 05:30:43 +00:00
|
|
|
const CModelData& GetModelData() const { return x0_modelData; }
|
|
|
|
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);
|
2020-08-02 03:45:47 +00:00
|
|
|
void Draw(const CStateManager& mgr, const zeus::CTransform& xf);
|
2018-12-08 05:30:43 +00:00
|
|
|
s32 GetFreeLookSetId() const { return x4c_gunController.GetFreeLookSetId(); }
|
|
|
|
CGunController& GunController() { return x4c_gunController; }
|
|
|
|
bool IsAnimPlaying() const { return xb8_24_animPlaying; }
|
2016-08-14 21:11:44 +00:00
|
|
|
};
|
|
|
|
|
2021-04-10 08:42:06 +00:00
|
|
|
} // namespace metaforce
|