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

CActorContraption fixes, better CMake dependency handling

This commit is contained in:
Jack Andersen
2019-06-11 16:05:17 -10:00
parent 77d0ef942d
commit e218b8aeb5
295 changed files with 942 additions and 2219 deletions

View File

@@ -7,27 +7,35 @@ namespace urde {
class CFlameInfo;
class CElementGen;
class CFlameThrower : public CGameProjectile {
public:
enum class EFlameState {
Default,
FireStart,
FireActive,
FireStopTimer,
FireWaitForParticlesDone
};
private:
static const zeus::CVector3f kLightOffset;
zeus::CTransform x2e8_;
zeus::CAABox x318_ = zeus::skNullBox;
float x32c_ = 0.f;
float x330_ = 0.f;
float x334_ = 0.f;
zeus::CTransform x2e8_flameXf;
zeus::CAABox x318_flameBounds = zeus::skNullBox;
float x330_particleWaitDelayTimer = 0.f;
float x334_fireStopTimer = 0.f;
float x338_;
TToken<CGenDescription> x33c_flameDesc;
std::unique_ptr<CElementGen> x348_flameGen;
CFlameWarp x34c_;
u32 x3f0_flameState;
CAssetId x3f4_;
s16 x3f8_;
CAssetId x3fc_;
CFlameWarp x34c_flameWarp;
EFlameState x3f0_flameState = EFlameState::Default;
CAssetId x3f4_playerSteamTxtr;
s16 x3f8_playerHitSfx;
CAssetId x3fc_playerIceTxtr;
union {
struct {
bool x400_24_ : 1;
bool x400_25_ : 1;
bool x400_24_active : 1;
bool x400_25_particlesActive : 1;
bool x400_26_ : 1;
bool x400_27_ : 1;
bool x400_27_detailedParticles : 1; /* Z-sort and finer collision detection */
};
u32 _dummy = 0;
};
@@ -35,6 +43,8 @@ class CFlameThrower : public CGameProjectile {
void CreateFlameParticles(CStateManager&);
void SetFlameLightActive(CStateManager&, bool);
void UpdateFlameState(float, CStateManager&);
CRayCastResult DoCollisionCheck(TUniqueId& idOut, const zeus::CAABox& aabb, CStateManager& mgr);
void ApplyDamageToActor(CStateManager& mgr, TUniqueId id, float dt);
public:
CFlameThrower(const TToken<CWeaponDescription>& wDesc, std::string_view name, EWeaponType wType,
const CFlameInfo& flameInfo, const zeus::CTransform& xf, EMaterialTypes matType,
@@ -48,6 +58,6 @@ public:
void SetTransform(const zeus::CTransform& xf, float);
void Reset(CStateManager&, bool);
void Fire(const zeus::CTransform&, CStateManager&, bool);
bool GetX400_25() const { return x400_25_; }
bool GetParticlesActive() const { return x400_25_particlesActive; }
};
} // namespace urde