mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-21 00:19:11 +00:00
@@ -13,6 +13,7 @@
|
||||
#include "rstl/auto_ptr.hpp"
|
||||
#include "rstl/optional_object.hpp"
|
||||
#include "rstl/pair.hpp"
|
||||
#include "rstl/string.hpp"
|
||||
|
||||
class CAABox;
|
||||
class CActorLights;
|
||||
@@ -82,6 +83,8 @@ public:
|
||||
CAABox GetBounds(const CTransform4f& xf) const;
|
||||
CAABox GetBounds() const;
|
||||
|
||||
CTransform4f GetScaledLocatorTransform(const rstl::string& name) const;
|
||||
|
||||
bool HasAnimation() const { return !xc_animData.null(); }
|
||||
bool IsNull() const { return xc_animData.null() && !x1c_normalModel; }
|
||||
|
||||
|
||||
@@ -3,10 +3,12 @@
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#include "MetroidPrime/CModelData.hpp"
|
||||
#include "MetroidPrime/Player/CPlayerState.hpp"
|
||||
#include "MetroidPrime/Weapons/WeaponCommon.hpp"
|
||||
#include "MetroidPrime/Weapons/WeaponTypes.hpp"
|
||||
|
||||
#include "Kyoto/Math/CAABox.hpp"
|
||||
#include "Kyoto/Math/CVector3f.hpp"
|
||||
#include "Kyoto/TToken.hpp"
|
||||
|
||||
@@ -16,13 +18,16 @@
|
||||
#include "rstl/reserved_vector.hpp"
|
||||
#include "rstl/single_ptr.hpp"
|
||||
|
||||
class CModelData;
|
||||
class CGenDescription;
|
||||
class CGunController;
|
||||
class CAnimCharacterSet;
|
||||
class CWeaponDescription;
|
||||
class CElementGen;
|
||||
class CRainSplashGenerator;
|
||||
class CTransform4f;
|
||||
class CModelFlags;
|
||||
class CActorLights;
|
||||
class SWeaponInfo;
|
||||
|
||||
class CVelocityInfo {
|
||||
public:
|
||||
@@ -42,10 +47,9 @@ private:
|
||||
|
||||
class CGunWeapon {
|
||||
public:
|
||||
// TODO ctor
|
||||
CGunWeapon();
|
||||
CGunWeapon(CAssetId ancsId, EWeaponType type, TUniqueId playerId, EMaterialTypes playerMaterial,
|
||||
const CVector3f& scale);
|
||||
virtual ~CGunWeapon();
|
||||
// TODO other virtual methods
|
||||
|
||||
enum ESecondaryFxType {
|
||||
kSFT_None,
|
||||
@@ -87,7 +91,7 @@ public:
|
||||
CAABox GetBounds(const CTransform4f& xf) const;
|
||||
const SWeaponInfo& GetWeaponInfo() const;
|
||||
|
||||
private:
|
||||
protected:
|
||||
// x0 is vtable
|
||||
CVector3f x4_scale;
|
||||
rstl::optional_object< CModelData > x10_solidModelData;
|
||||
|
||||
@@ -5,14 +5,37 @@
|
||||
|
||||
#include "MetroidPrime/Weapons/CGunWeapon.hpp"
|
||||
|
||||
#include "rstl/single_ptr.hpp"
|
||||
|
||||
class CPowerBeam : public CGunWeapon {
|
||||
public:
|
||||
CPowerBeam(CAssetId characterId, EWeaponType type, TUniqueId playerId,
|
||||
EMaterialTypes playerMaterial, const CVector3f& scale);
|
||||
~CPowerBeam();
|
||||
|
||||
void PreRenderGunFx(const CStateManager& mgr, const CTransform4f& xf) override;
|
||||
void PostRenderGunFx(const CStateManager& mgr, const CTransform4f& xf) override;
|
||||
void UpdateGunFx(bool shotSmoke, float dt, const CStateManager& mgr, const CTransform4f& xf) override;
|
||||
void Fire(bool underwater, float dt, CPlayerState::EChargeStage chargeState, const CTransform4f& xf, CStateManager& mgr,
|
||||
TUniqueId homingTarget, float chargeFactor1, float chargeFactor2) override;
|
||||
void EnableSecondaryFx(ESecondaryFxType type) override;
|
||||
void Update(float dt, CStateManager& mgr) override;
|
||||
void Load(CStateManager& mgr, bool subtypeBasePose) override;
|
||||
void Unload(CStateManager& mgr) override;
|
||||
bool IsLoaded() const override;
|
||||
|
||||
private:
|
||||
uchar x21c_pad[0x2C];
|
||||
enum ESmokeState { kSS_Inactive, kSS_Active, kSS_Done };
|
||||
TCachedToken<CGenDescription> x21c_shotSmoke;
|
||||
TCachedToken<CGenDescription> x228_power2nd1;
|
||||
rstl::single_ptr<CElementGen> x234_shotSmokeGen;
|
||||
rstl::single_ptr<CElementGen> x238_power2ndGen;
|
||||
float x23c_smokeTimer;
|
||||
ESmokeState x240_smokeState;
|
||||
bool x244_24 : 1;
|
||||
bool x244_25_loaded : 1;
|
||||
|
||||
void ReInitVariables();
|
||||
};
|
||||
CHECK_SIZEOF(CPowerBeam, 0x248)
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
class CToken;
|
||||
class CSfxHandle;
|
||||
class CAnimData;
|
||||
|
||||
namespace NWeaponTypes {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user