#ifndef _CWEAPON #define _CWEAPON #include "types.h" #include "MetroidPrime/CActor.hpp" #include "MetroidPrime/CDamageInfo.hpp" #include "MetroidPrime/Weapons/WeaponTypes.hpp" class CWeapon : public CActor { public: CWeapon(TUniqueId uid, TAreaId areaId, bool active, TUniqueId owner, EWeaponType type, const rstl::string& name, CTransform4f& xf, const CMaterialFilter& filter, const CMaterialList& mList, const CDamageInfo& dInfo, EProjectileAttrib attribs, const CModelData& mData); // CEntity ~CWeapon() override; void Think(float dt, CStateManager& mgr) override; // CActor void Render(const CStateManager&) const override; EWeaponCollisionResponseTypes GetCollisionResponseType(const CVector3f&, const CVector3f&, const CWeaponMode&, int /*EProjectileAttrib?*/) const override; void FluidFXThink(EFluidState, CScriptWater&, CStateManager&) override; EProjectileAttrib GetAttribField() const { return xe8_projectileAttribs; } void SetDamageFalloffSpeed(float d); private: EProjectileAttrib xe8_projectileAttribs; TUniqueId xec_ownerId; EWeaponType xf0_weaponType; CMaterialFilter xf8_filter; CDamageInfo x110_origDamageInfo; CDamageInfo x12c_curDamageInfo; float x148_curTime; float x14c_damageFalloffSpeed; float x150_damageDuration; float x154_interferenceDuration; }; CHECK_SIZEOF(CWeapon, 0x158) #endif // _CWEAPON