2016-08-14 21:11:44 +00:00
|
|
|
#ifndef __URDE_CPLAYERGUN_HPP__
|
|
|
|
#define __URDE_CPLAYERGUN_HPP__
|
|
|
|
|
|
|
|
#include "RetroTypes.hpp"
|
|
|
|
#include "Character/CActorLights.hpp"
|
|
|
|
#include "CFidget.hpp"
|
|
|
|
#include "zeus/CTransform.hpp"
|
|
|
|
#include "zeus/CAABox.hpp"
|
2016-11-22 20:43:16 +00:00
|
|
|
#include "World/CPlayerCameraBob.hpp"
|
2016-08-14 21:11:44 +00:00
|
|
|
#include "CGunMotion.hpp"
|
|
|
|
#include "CGrappleArm.hpp"
|
|
|
|
#include "CAuxWeapon.hpp"
|
|
|
|
#include "CPowerBeam.hpp"
|
|
|
|
#include "CIceBeam.hpp"
|
|
|
|
#include "CWaveBeam.hpp"
|
|
|
|
#include "CPlasmaBeam.hpp"
|
|
|
|
#include "CPhazonBeam.hpp"
|
|
|
|
#include "Particle/CElementGen.hpp"
|
|
|
|
#include "Character/CModelData.hpp"
|
2016-11-22 20:43:16 +00:00
|
|
|
#include "World/CWorldShadow.hpp"
|
2017-06-12 04:23:34 +00:00
|
|
|
#include "World/ScriptObjectSupport.hpp"
|
2017-08-22 03:20:22 +00:00
|
|
|
#include "Graphics/CRainSplashGenerator.hpp"
|
2016-08-14 21:11:44 +00:00
|
|
|
|
|
|
|
namespace urde
|
|
|
|
{
|
2017-07-16 06:13:37 +00:00
|
|
|
class CFinalInput;
|
2016-08-14 21:11:44 +00:00
|
|
|
|
|
|
|
class CPlayerGun
|
|
|
|
{
|
2017-04-04 05:48:13 +00:00
|
|
|
public:
|
|
|
|
enum class EMissleMode
|
|
|
|
{
|
|
|
|
Inactive,
|
|
|
|
Active
|
|
|
|
};
|
2017-08-16 05:34:02 +00:00
|
|
|
enum class EBWeapon
|
|
|
|
{
|
2017-08-29 13:17:52 +00:00
|
|
|
Bomb,
|
|
|
|
PowerBomb
|
2017-08-16 05:34:02 +00:00
|
|
|
};
|
2017-08-25 06:18:09 +00:00
|
|
|
enum class EGunOverrideMode
|
|
|
|
{
|
|
|
|
Normal,
|
|
|
|
One,
|
|
|
|
Two,
|
|
|
|
Three
|
|
|
|
};
|
2017-04-04 05:48:13 +00:00
|
|
|
private:
|
2017-08-16 05:34:02 +00:00
|
|
|
class CGunMorph
|
2016-08-14 21:11:44 +00:00
|
|
|
{
|
2017-08-25 06:18:09 +00:00
|
|
|
public:
|
|
|
|
enum class EGunState
|
|
|
|
{
|
2017-08-31 02:42:37 +00:00
|
|
|
InWipeDone,
|
|
|
|
OutWipeDone,
|
|
|
|
InWipe,
|
|
|
|
OutWipe
|
|
|
|
};
|
|
|
|
enum class EMorphEvent
|
|
|
|
{
|
|
|
|
None,
|
|
|
|
InWipeDone,
|
|
|
|
OutWipeDone
|
|
|
|
};
|
|
|
|
enum class EDir
|
|
|
|
{
|
|
|
|
In,
|
|
|
|
Out,
|
|
|
|
Done
|
2017-08-25 06:18:09 +00:00
|
|
|
};
|
|
|
|
private:
|
2017-08-31 02:42:37 +00:00
|
|
|
float x0_yLerp = 0.f;
|
2017-08-21 05:46:59 +00:00
|
|
|
float x4_gunTransformTime;
|
2017-08-31 02:42:37 +00:00
|
|
|
float x8_remTime = 0.f;
|
|
|
|
float xc_speed = 0.1f;
|
2017-08-21 05:46:59 +00:00
|
|
|
float x10_holoHoldTime;
|
2017-08-31 02:42:37 +00:00
|
|
|
float x14_remHoldTime = 2.f;
|
2017-08-16 05:34:02 +00:00
|
|
|
float x18_transitionFactor = 1.f;
|
2017-08-31 02:42:37 +00:00
|
|
|
EDir x1c_dir = EDir::Done;
|
|
|
|
EGunState x20_gunState = EGunState::OutWipeDone;
|
2016-08-15 01:19:04 +00:00
|
|
|
|
|
|
|
union
|
|
|
|
{
|
|
|
|
struct
|
|
|
|
{
|
2017-08-31 02:42:37 +00:00
|
|
|
bool x24_24_morphing : 1;
|
|
|
|
bool x24_25_weaponChanged : 1;
|
2016-08-15 01:19:04 +00:00
|
|
|
};
|
2017-08-16 05:34:02 +00:00
|
|
|
u32 _dummy = 0;
|
2016-08-15 01:19:04 +00:00
|
|
|
};
|
|
|
|
|
2017-08-16 05:34:02 +00:00
|
|
|
public:
|
2017-08-21 05:46:59 +00:00
|
|
|
CGunMorph(float gunTransformTime, float holoHoldTime)
|
|
|
|
: x4_gunTransformTime(gunTransformTime), x10_holoHoldTime(std::fabs(holoHoldTime)) {}
|
2017-08-31 02:42:37 +00:00
|
|
|
float GetYLerp() const { return x0_yLerp; }
|
2017-08-16 05:34:02 +00:00
|
|
|
float GetTransitionFactor() const { return x18_transitionFactor; }
|
2017-08-25 06:18:09 +00:00
|
|
|
EGunState GetGunState() const { return x20_gunState; }
|
2017-08-31 02:42:37 +00:00
|
|
|
void SetWeaponChanged() { x24_25_weaponChanged = true; }
|
|
|
|
EMorphEvent Update(float inY, float outY, float dt);
|
|
|
|
void StartWipe(EDir dir);
|
2017-08-16 05:34:02 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class CMotionState
|
|
|
|
{
|
2017-08-26 04:36:25 +00:00
|
|
|
public:
|
|
|
|
enum class EMotionState
|
|
|
|
{
|
|
|
|
Zero,
|
|
|
|
One,
|
|
|
|
Two
|
|
|
|
};
|
|
|
|
private:
|
2017-08-22 03:20:22 +00:00
|
|
|
static float gGunExtendDistance;
|
2017-08-26 04:36:25 +00:00
|
|
|
bool x0_24_ = true;
|
|
|
|
float x4_ = 0.f;
|
|
|
|
float x8_ = 0.f;
|
|
|
|
float xc_ = 0.f;
|
|
|
|
float x10_ = 0.f;
|
|
|
|
float x14_ = 0.f;
|
|
|
|
float x18_ = 0.f;
|
|
|
|
float x1c_ = 0.f;
|
|
|
|
EMotionState x20_state = EMotionState::Zero;
|
|
|
|
u32 x24_ = 0;
|
2017-08-22 03:20:22 +00:00
|
|
|
public:
|
|
|
|
static void SetExtendDistance(float d) { gGunExtendDistance = d; }
|
2017-08-26 04:36:25 +00:00
|
|
|
void SetState(EMotionState state) { x20_state = state; }
|
|
|
|
void Update(bool b1, float dt, zeus::CTransform& xf, CStateManager& mgr);
|
|
|
|
|
2016-08-14 21:11:44 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
CActorLights x0_lights;
|
2017-08-26 04:36:25 +00:00
|
|
|
CSfxHandle x2e0_chargeSfx;
|
|
|
|
CSfxHandle x2e4_invalidSfx;
|
2017-08-31 02:42:37 +00:00
|
|
|
CSfxHandle x2e8_phazonBeamSfx;
|
2017-08-27 03:02:18 +00:00
|
|
|
// 0x1: FireOrBomb, 0x2: MissileOrPowerBomb
|
|
|
|
u32 x2ec_lastFireButtonStates = 0;
|
|
|
|
u32 x2f0_pressedFireButtonStates = 0;
|
|
|
|
u32 x2f4_fireButtonStates = 0;
|
2016-08-14 21:11:44 +00:00
|
|
|
u32 x2f8_ = 1;
|
2017-08-27 03:02:18 +00:00
|
|
|
u32 x2fc_fidgetAnimBits = 0;
|
2016-08-14 21:11:44 +00:00
|
|
|
u32 x300_ = 0;
|
|
|
|
u32 x304_ = 0;
|
2017-02-18 02:19:50 +00:00
|
|
|
u32 x308_bombCount = 3;
|
2016-08-14 21:11:44 +00:00
|
|
|
u32 x30c_ = 0;
|
2017-08-31 02:42:37 +00:00
|
|
|
CPlayerState::EBeamId x310_currentBeam = CPlayerState::EBeamId::Power;
|
|
|
|
CPlayerState::EBeamId x314_nextBeam = CPlayerState::EBeamId::Power;
|
2016-08-14 21:11:44 +00:00
|
|
|
u32 x318_ = 0;
|
2017-04-04 05:48:13 +00:00
|
|
|
EMissleMode x31c_missileMode = EMissleMode::Inactive;
|
2017-08-31 02:42:37 +00:00
|
|
|
CPlayerState::EBeamId x320_currentAuxBeam = CPlayerState::EBeamId::Power;
|
2016-08-14 21:11:44 +00:00
|
|
|
u32 x324_ = 4;
|
|
|
|
u32 x328_ = 0x2000;
|
|
|
|
u32 x32c_ = 0;
|
2017-08-27 03:02:18 +00:00
|
|
|
EChargeState x330_chargeState = EChargeState::Normal;
|
2016-08-14 21:11:44 +00:00
|
|
|
u32 x334_ = 0;
|
|
|
|
u32 x338_ = 0;
|
2017-08-25 06:18:09 +00:00
|
|
|
EGunOverrideMode x33c_gunOverrideMode = EGunOverrideMode::Normal;
|
2017-04-04 05:48:13 +00:00
|
|
|
float x340_chargeBeamFactor = 0.f;
|
2016-08-14 21:11:44 +00:00
|
|
|
float x344_ = 0.f;
|
|
|
|
float x348_ = 0.f;
|
2017-08-26 04:36:25 +00:00
|
|
|
float x34c_shakeX = 0.f;
|
|
|
|
float x350_shakeZ = 0.f;
|
2017-08-21 05:46:59 +00:00
|
|
|
float x354_bombFuseTime;
|
|
|
|
float x358_bombDropDelayTime;
|
2017-02-18 02:19:50 +00:00
|
|
|
float x35c_bombTime = 0.f;
|
2016-08-14 21:11:44 +00:00
|
|
|
float x360_ = 0.f;
|
|
|
|
float x364_ = 0.f;
|
|
|
|
float x368_ = 0.f;
|
|
|
|
float x36c_ = 1.f;
|
2017-08-26 04:36:25 +00:00
|
|
|
float x370_gunMotionSpeedMult = 1.f;
|
2016-08-14 21:11:44 +00:00
|
|
|
float x374_ = 0.f;
|
|
|
|
float x378_ = 0.f;
|
|
|
|
float x37c_ = 0.f;
|
|
|
|
float x380_ = 0.f;
|
|
|
|
float x384_ = 0.f;
|
|
|
|
float x388_ = 0.f;
|
|
|
|
float x38c_ = 0.f;
|
2017-08-26 04:36:25 +00:00
|
|
|
float x390_cooldown = 0.f;
|
2017-08-25 06:18:09 +00:00
|
|
|
float x394_damageTimer = 0.f;
|
2017-07-05 18:34:12 +00:00
|
|
|
float x398_damageAmt = 0.f;
|
2017-08-31 02:42:37 +00:00
|
|
|
float x39c_phazonMorphT = 0.f;
|
2016-08-14 21:11:44 +00:00
|
|
|
float x3a0_ = 0.f;
|
|
|
|
CFidget x3a4_fidget;
|
2017-07-05 18:34:12 +00:00
|
|
|
zeus::CVector3f x3dc_damageLocation;
|
2017-07-19 17:47:57 +00:00
|
|
|
zeus::CTransform x3e8_xf;
|
2017-08-26 04:36:25 +00:00
|
|
|
zeus::CTransform x418_beamLocalXf;
|
|
|
|
zeus::CTransform x448_elbowWorldXf;
|
2017-07-23 23:45:04 +00:00
|
|
|
zeus::CTransform x478_assistAimXf;
|
2017-08-26 04:36:25 +00:00
|
|
|
zeus::CTransform x4a8_gunWorldXf;
|
|
|
|
zeus::CTransform x4d8_gunLocalXf;
|
|
|
|
zeus::CTransform x508_elbowLocalXf;
|
2017-08-25 06:18:09 +00:00
|
|
|
TUniqueId x538_playerId;
|
2017-08-27 03:02:18 +00:00
|
|
|
TUniqueId x53a_powerBomb = kInvalidUniqueId;
|
2017-08-25 06:18:09 +00:00
|
|
|
TUniqueId x53c_lightId = kInvalidUniqueId;
|
2017-08-22 03:20:22 +00:00
|
|
|
std::vector<CToken> x540_handAnimTokens;
|
2016-08-14 21:11:44 +00:00
|
|
|
CPlayerCameraBob x550_camBob;
|
|
|
|
u32 x658_ = 1;
|
|
|
|
float x65c_ = 0.f;
|
|
|
|
float x660_ = 0.f;
|
|
|
|
float x664_ = 0.f;
|
2017-08-21 05:46:59 +00:00
|
|
|
float x668_aimVerticalSpeed;
|
|
|
|
float x66c_aimHorizontalSpeed;
|
2016-08-14 21:11:44 +00:00
|
|
|
TUniqueId x670_ = kInvalidUniqueId;
|
|
|
|
u32 x674_ = 0;
|
|
|
|
CGunMorph x678_morph;
|
2017-08-26 04:36:25 +00:00
|
|
|
CMotionState x6a0_motionState;
|
2017-08-31 02:42:37 +00:00
|
|
|
zeus::CAABox x6c8_hologramClipCube;
|
2017-08-21 05:46:59 +00:00
|
|
|
CModelData x6e0_rightHandModel;
|
2016-08-15 01:19:04 +00:00
|
|
|
CGunWeapon* x72c_currentBeam = nullptr;
|
2017-08-31 02:42:37 +00:00
|
|
|
CGunWeapon* x730_outgoingBeam = nullptr;
|
|
|
|
CGunWeapon* x734_loadingBeam = nullptr;
|
2017-08-22 03:20:22 +00:00
|
|
|
CGunWeapon* x738_nextBeam = nullptr;
|
2016-08-15 01:19:04 +00:00
|
|
|
std::unique_ptr<CGunMotion> x73c_gunMotion;
|
|
|
|
std::unique_ptr<CGrappleArm> x740_grappleArm;
|
|
|
|
std::unique_ptr<CAuxWeapon> x744_auxWeapon;
|
2017-08-22 03:20:22 +00:00
|
|
|
std::unique_ptr<CRainSplashGenerator> x748_rainSplashGenerator;
|
2016-08-15 01:19:04 +00:00
|
|
|
std::unique_ptr<CPowerBeam> x74c_powerBeam;
|
|
|
|
std::unique_ptr<CIceBeam> x750_iceBeam;
|
|
|
|
std::unique_ptr<CWaveBeam> x754_waveBeam;
|
|
|
|
std::unique_ptr<CPlasmaBeam> x758_plasmaBeam;
|
|
|
|
std::unique_ptr<CPhazonBeam> x75c_phazonBeam;
|
2017-08-22 03:20:22 +00:00
|
|
|
CGunWeapon* x760_selectableBeams[4] = {}; // Used to be reserved_vector
|
|
|
|
std::unique_ptr<CElementGen> x774_holoTransitionGen;
|
2017-08-26 04:36:25 +00:00
|
|
|
std::unique_ptr<CElementGen> x77c_;
|
2017-08-22 03:20:22 +00:00
|
|
|
rstl::reserved_vector<rstl::reserved_vector<TLockedToken<CGenDescription>, 2>, 2> x784_bombEffects;
|
|
|
|
rstl::reserved_vector<TLockedToken<CGenDescription>, 5> x7c0_auxMuzzleEffects;
|
|
|
|
rstl::reserved_vector<std::unique_ptr<CElementGen>, 5> x800_auxMuzzleGenerators;
|
2016-08-15 01:19:04 +00:00
|
|
|
std::unique_ptr<CWorldShadow> x82c_shadow;
|
2017-08-26 04:36:25 +00:00
|
|
|
s16 x830_chargeRumbleHandle = -1;
|
2016-08-15 01:19:04 +00:00
|
|
|
|
|
|
|
union
|
|
|
|
{
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
bool x832_24_ : 1;
|
|
|
|
bool x832_25_ : 1;
|
|
|
|
bool x832_26_ : 1;
|
|
|
|
bool x832_27_ : 1;
|
|
|
|
bool x832_28_ : 1;
|
|
|
|
bool x832_29_ : 1;
|
|
|
|
bool x832_30_ : 1;
|
|
|
|
bool x832_31_ : 1;
|
|
|
|
|
2017-07-20 06:04:40 +00:00
|
|
|
bool x833_24_isFidgeting : 1;
|
2016-08-15 01:19:04 +00:00
|
|
|
bool x833_25_ : 1;
|
|
|
|
bool x833_26_ : 1;
|
|
|
|
bool x833_27_ : 1;
|
2017-08-25 06:18:09 +00:00
|
|
|
bool x833_28_phazonBeamActive : 1;
|
2017-08-26 04:36:25 +00:00
|
|
|
bool x833_29_pointBlankWorldSurface : 1;
|
2016-08-15 01:19:04 +00:00
|
|
|
bool x833_30_ : 1;
|
|
|
|
bool x833_31_ : 1;
|
|
|
|
|
2017-04-04 05:48:13 +00:00
|
|
|
bool x834_24_charging : 1;
|
2016-08-15 01:19:04 +00:00
|
|
|
bool x834_25_ : 1;
|
|
|
|
bool x834_26_ : 1;
|
2017-08-25 06:18:09 +00:00
|
|
|
bool x834_27_underwater : 1;
|
2016-08-15 01:19:04 +00:00
|
|
|
bool x834_28_ : 1;
|
2017-08-26 04:36:25 +00:00
|
|
|
bool x834_29_frozen : 1;
|
|
|
|
bool x834_30_inBigStrike : 1;
|
2016-08-15 01:19:04 +00:00
|
|
|
bool x834_31_ : 1;
|
|
|
|
|
2017-08-25 06:18:09 +00:00
|
|
|
bool x835_24_canFirePhazon : 1;
|
|
|
|
bool x835_25_inPhazonBeam : 1;
|
|
|
|
bool x835_26_phazonBeamMorphing : 1;
|
|
|
|
bool x835_27_intoPhazonBeam : 1;
|
2017-04-08 20:40:36 +00:00
|
|
|
bool x835_28_bombReady : 1;
|
|
|
|
bool x835_29_powerBombReady : 1;
|
2017-08-25 06:18:09 +00:00
|
|
|
bool x835_30_inPhazonPool : 1;
|
2017-08-19 06:52:13 +00:00
|
|
|
bool x835_31_actorAttached : 1;
|
2016-08-15 01:19:04 +00:00
|
|
|
};
|
|
|
|
u32 _dummy = 0;
|
|
|
|
};
|
2016-08-14 21:11:44 +00:00
|
|
|
|
2017-08-22 03:20:22 +00:00
|
|
|
void InitBeamData();
|
|
|
|
void InitBombData();
|
|
|
|
void InitMuzzleData();
|
|
|
|
void InitCTData();
|
|
|
|
void LoadHandAnimTokens();
|
2017-08-25 06:18:09 +00:00
|
|
|
void CreateGunLight(CStateManager& mgr);
|
|
|
|
void DeleteGunLight(CStateManager& mgr);
|
2017-08-26 04:36:25 +00:00
|
|
|
void UpdateGunLight(const zeus::CTransform& pos, CStateManager& mgr);
|
2017-08-25 06:18:09 +00:00
|
|
|
void SetGunLightActive(bool active, CStateManager& mgr);
|
|
|
|
void SetPhazonBeamMorph(bool intoPhazonBeam);
|
|
|
|
void Reset(CStateManager& mgr, bool b1);
|
|
|
|
void ResetBeamParams(CStateManager& mgr, const CPlayerState& playerState, bool playSelectionSfx);
|
2017-08-26 04:36:25 +00:00
|
|
|
CSfxHandle PlaySfx(u16 sfx, bool underwater, bool looped, float pan);
|
|
|
|
void PlayAnim(NWeaponTypes::EGunAnimType type, bool loop);
|
2017-08-25 06:18:09 +00:00
|
|
|
void CancelCharge(CStateManager& mgr, bool withEffect);
|
2017-08-26 04:36:25 +00:00
|
|
|
bool ExitMissile();
|
|
|
|
void StopChargeSound(CStateManager& mgr);
|
|
|
|
void UnLoadFidget();
|
|
|
|
void ReturnArmAndGunToDefault(CStateManager& mgr, bool b1);
|
|
|
|
void ReturnToRestPose();
|
|
|
|
void ChangeWeapon(const CPlayerState& playerState, CStateManager& mgr);
|
|
|
|
void GetLctrWithShake(zeus::CTransform& xfOut, const CModelData& mData, const std::string& lctrName,
|
2017-08-31 02:42:37 +00:00
|
|
|
bool shake, bool dyn);
|
2017-08-26 04:36:25 +00:00
|
|
|
void UpdateLeftArmTransform(const CModelData& mData, const CStateManager& mgr);
|
|
|
|
void ProcessGunMorph(float dt, CStateManager& mgr);
|
2017-08-31 02:42:37 +00:00
|
|
|
void SetPhazonBeamFeedback(bool active);
|
|
|
|
void StartPhazonBeamTransition(bool active, CStateManager& mgr, CPlayerState& playerState);
|
2017-08-26 04:36:25 +00:00
|
|
|
void ProcessPhazonGunMorph(float dt, CStateManager& mgr);
|
|
|
|
void UpdateChargeState(float dt, CStateManager& mgr);
|
|
|
|
void UpdateAuxWeapons(float dt, const zeus::CTransform& targetXf, CStateManager& mgr);
|
|
|
|
void DoUserAnimEvents(float dt, CStateManager& mgr);
|
|
|
|
TUniqueId GetTargetId(CStateManager& mgr) const;
|
|
|
|
void CancelLockOn();
|
2017-08-27 03:02:18 +00:00
|
|
|
void FireSecondary(float dt, CStateManager& mgr);
|
|
|
|
void ResetCharged(float dt, CStateManager& mgr);
|
|
|
|
void ActivateCombo(CStateManager& mgr);
|
|
|
|
void ProcessChargeState(u32 releasedStates, u32 pressedStates, CStateManager& mgr, float dt);
|
|
|
|
void ResetNormal(CStateManager& mgr);
|
|
|
|
void UpdateNormalShotCycle(float dt, CStateManager& mgr);
|
|
|
|
void ProcessNormalState(u32 releasedStates, u32 pressedStates, CStateManager& mgr, float dt);
|
2017-08-26 04:36:25 +00:00
|
|
|
void UpdateWeaponFire(float dt, const CPlayerState& playerState, CStateManager& mgr);
|
2017-08-27 03:02:18 +00:00
|
|
|
void EnterFreeLook(CStateManager& mgr);
|
|
|
|
void SetFidgetAnimBits(int parm2, bool beamOnly);
|
|
|
|
void AsyncLoadFidget(CStateManager& mgr);
|
|
|
|
bool IsFidgetLoaded() const;
|
|
|
|
void EnterFidget(CStateManager& mgr);
|
2017-08-26 04:36:25 +00:00
|
|
|
void UpdateGunIdle(bool b1, float camBobT, float dt, CStateManager& mgr);
|
2017-08-31 02:42:37 +00:00
|
|
|
void RenderEnergyDrainEffects(const CStateManager& mgr) const;
|
|
|
|
void DrawArm(const CStateManager& mgr, const zeus::CVector3f& pos, const CModelFlags& flags) const;
|
|
|
|
zeus::CVector3f ConvertToScreenSpace(const zeus::CVector3f& pos, const CGameCamera& cam) const;
|
2017-08-22 03:20:22 +00:00
|
|
|
|
2016-08-14 21:11:44 +00:00
|
|
|
public:
|
2017-08-22 03:20:22 +00:00
|
|
|
explicit CPlayerGun(TUniqueId playerId);
|
2017-08-26 04:36:25 +00:00
|
|
|
void TakeDamage(bool bigStrike, bool notFromMetroid, CStateManager& mgr);
|
2017-08-13 05:26:14 +00:00
|
|
|
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&);
|
2016-08-15 01:19:04 +00:00
|
|
|
void AsyncLoadSuit(CStateManager& mgr);
|
2017-07-31 05:19:05 +00:00
|
|
|
void TouchModel(const CStateManager& stateMgr);
|
2017-04-04 05:48:13 +00:00
|
|
|
EMissleMode GetMissleMode() const { return x31c_missileMode; }
|
2017-07-20 06:04:40 +00:00
|
|
|
bool IsFidgeting() const { return x833_24_isFidgeting; }
|
2017-04-08 20:40:36 +00:00
|
|
|
bool IsCharging() const { return x834_24_charging; }
|
|
|
|
float GetChargeBeamFactor() const { return x340_chargeBeamFactor; }
|
|
|
|
bool IsBombReady() const { return x835_28_bombReady; }
|
|
|
|
u32 GetBombCount() const { return x308_bombCount; }
|
|
|
|
bool IsPowerBombReady() const { return x835_29_powerBombReady; }
|
2017-08-31 02:42:37 +00:00
|
|
|
CPlayerState::EBeamId GetCurrentBeam() const { return x310_currentBeam; }
|
|
|
|
CPlayerState::EBeamId GetNextBeam() const { return x314_nextBeam; }
|
2017-04-09 06:14:22 +00:00
|
|
|
const CGunMorph& GetGunMorph() const { return x678_morph; }
|
2017-08-16 05:34:02 +00:00
|
|
|
float GetHoloTransitionFactor() const { return x678_morph.GetTransitionFactor(); }
|
2017-07-19 17:47:57 +00:00
|
|
|
void SetTransform(const zeus::CTransform& xf) { x3e8_xf = xf; }
|
2017-07-23 23:45:04 +00:00
|
|
|
void SetAssistAimTransform(const zeus::CTransform& xf) { x478_assistAimXf = xf; }
|
2017-06-18 01:58:13 +00:00
|
|
|
CGrappleArm& GetGrappleArm() { return *x740_grappleArm; }
|
2017-07-05 18:34:12 +00:00
|
|
|
void DamageRumble(const zeus::CVector3f& location, float damage, const CStateManager& mgr);
|
2017-08-25 06:18:09 +00:00
|
|
|
void ResetCharge(CStateManager& mgr, bool b1);
|
|
|
|
void HandleBeamChange(const CFinalInput& input, CStateManager& mgr);
|
|
|
|
void HandlePhazonBeamChange(CStateManager& mgr);
|
|
|
|
void HandleWeaponChange(const CFinalInput& input, CStateManager& mgr);
|
2017-07-16 06:13:37 +00:00
|
|
|
void ProcessInput(const CFinalInput& input, CStateManager& mgr);
|
2017-07-17 03:04:14 +00:00
|
|
|
void ResetIdle(CStateManager& mgr);
|
|
|
|
void CancelFiring(CStateManager& mgr);
|
2017-07-23 23:45:04 +00:00
|
|
|
float GetBeamVelocity() const;
|
2017-08-25 06:18:09 +00:00
|
|
|
void StopContinuousBeam(CStateManager& mgr, bool b1);
|
2017-08-16 05:34:02 +00:00
|
|
|
void Update(float grappleSwingT, float cameraBobT, float dt, CStateManager& mgr);
|
2017-07-31 05:19:05 +00:00
|
|
|
void PreRender(const CStateManager& mgr, const zeus::CFrustum& frustum, const zeus::CVector3f& camPos);
|
|
|
|
void Render(const CStateManager& mgr, const zeus::CVector3f& pos, const CModelFlags& flags) const;
|
|
|
|
void AddToRenderer(const zeus::CFrustum& frustum, const CStateManager& mgr) const;
|
2017-08-27 03:02:18 +00:00
|
|
|
u32 GetLastFireButtonStates() const { return x2ec_lastFireButtonStates; }
|
|
|
|
void DropBomb(EBWeapon weapon, CStateManager& mgr);
|
2017-08-16 05:34:02 +00:00
|
|
|
TUniqueId DropPowerBomb(CStateManager& mgr);
|
2017-08-19 06:52:13 +00:00
|
|
|
void SetActorAttached(bool b) { x835_31_actorAttached = b; }
|
2016-08-14 21:11:44 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // __URDE_CPLAYERGUN_HPP__
|