mirror of https://github.com/AxioDL/metaforce.git
More work on CPlayer
This commit is contained in:
parent
ec4d8c8f3c
commit
a71e48cf43
|
@ -15,6 +15,7 @@ struct ITweakPlayer : ITweak
|
|||
virtual float GetX5C() const=0;
|
||||
virtual float GetHardLandingVelocityThreshold() const=0;
|
||||
virtual float GetHudLagAmount() const=0;
|
||||
virtual float GetOrbitNormalDistance() const=0;
|
||||
virtual uint32_t GetOrbitScreenBoxHalfExtentX(int zone) const=0;
|
||||
virtual uint32_t GetOrbitScreenBoxHalfExtentY(int zone) const=0;
|
||||
virtual uint32_t GetOrbitScreenBoxCenterX(int zone) const=0;
|
||||
|
@ -26,6 +27,7 @@ struct ITweakPlayer : ITweak
|
|||
virtual float GetOrbitZRange() const=0;
|
||||
virtual float GetScanningRange() const=0; // x218
|
||||
virtual bool GetScanFreezesGame() const=0; // x21c_25
|
||||
virtual bool GetFiringCancelsCameraPitch() const=0;
|
||||
virtual float GetScanningFrameSenseRange() const=0;
|
||||
virtual float GetPlayerHeight() const=0; // x26c
|
||||
virtual float GetPlayerXYHalfExtent() const=0; // x270
|
||||
|
@ -33,6 +35,9 @@ struct ITweakPlayer : ITweak
|
|||
virtual float GetX274() const=0; // x274
|
||||
virtual float GetX278() const=0; // x278
|
||||
virtual float GetPlayerBallHalfExtent() const=0; // x27c
|
||||
virtual float GetGrappleSwingPeriod() const=0;
|
||||
virtual float GetGrappleJumpForce() const=0;
|
||||
virtual uint32_t GetGrappleJumpMode() const=0;
|
||||
virtual float GetX124() const=0; // x134
|
||||
virtual float GetX184() const=0; // x184
|
||||
virtual float GetX1fc() const=0;
|
||||
|
@ -49,7 +54,8 @@ struct ITweakPlayer : ITweak
|
|||
virtual float GetLeftLogicalThreshold() const=0;
|
||||
virtual float GetRightLogicalThreshold() const=0;
|
||||
virtual float GetX164(int type) const=0;
|
||||
virtual uint32_t GetIceBreakPressCount() const=0;
|
||||
virtual float GetFrozenTimeout() const=0;
|
||||
virtual uint32_t GetIceBreakJumpCount() const=0;
|
||||
virtual float GetVariaDamageReduction() const=0;
|
||||
virtual float GetGravityDamageReduction() const=0;
|
||||
virtual float GetPhazonDamageReduction() const=0;
|
||||
|
|
|
@ -40,6 +40,7 @@ struct ITweakPlayerGun : ITweak
|
|||
virtual float GetX30() const = 0; // x30
|
||||
virtual float GetX34() const = 0; // x34
|
||||
virtual float GetX38() const = 0; // x38
|
||||
virtual float GetGunHolsterTime() const=0;
|
||||
virtual float GetGunNotFiringTime() const=0;
|
||||
virtual float GetRichochetDamage(atUint32) const = 0;
|
||||
};
|
||||
|
|
|
@ -214,7 +214,7 @@ void CTweakPlayer::read(athena::io::IStreamReader& __dna_reader)
|
|||
/* x22a_25_ */
|
||||
x22a_25_ = __dna_reader.readBool();
|
||||
/* x22a_26_ */
|
||||
x22a_26_ = __dna_reader.readBool();
|
||||
x22a_26_firingCancelsCameraPitch = __dna_reader.readBool();
|
||||
/* x22a_27_ */
|
||||
x22a_27_ = __dna_reader.readBool();
|
||||
/* x22a_28_ */
|
||||
|
@ -272,7 +272,7 @@ void CTweakPlayer::read(athena::io::IStreamReader& __dna_reader)
|
|||
/* x17c_ */
|
||||
x17c_ = __dna_reader.readFloatBig();
|
||||
/* x180_ */
|
||||
x180_ = __dna_reader.readFloatBig();
|
||||
x180_orbitNormalDistance = __dna_reader.readFloatBig();
|
||||
/* x184_ */
|
||||
x184_ = __dna_reader.readFloatBig();
|
||||
/* x188_ */
|
||||
|
@ -365,8 +365,8 @@ void CTweakPlayer::read(athena::io::IStreamReader& __dna_reader)
|
|||
x2a0_ = __dna_reader.readFloatBig();
|
||||
/* x2a4_ */
|
||||
x2a4_ = __dna_reader.readFloatBig();
|
||||
/* x2a8_ */
|
||||
x2a8_ = __dna_reader.readFloatBig();
|
||||
/* x2a8_grappleSwingPeriod */
|
||||
x2a8_grappleSwingPeriod = __dna_reader.readFloatBig();
|
||||
/* x2ac_ */
|
||||
x2ac_ = __dna_reader.readFloatBig();
|
||||
/* x2b0_ */
|
||||
|
@ -381,12 +381,12 @@ void CTweakPlayer::read(athena::io::IStreamReader& __dna_reader)
|
|||
x2c0_ = __dna_reader.readFloatBig();
|
||||
/* x2c4_ */
|
||||
x2c4_ = __dna_reader.readFloatBig();
|
||||
/* x2c8_ */
|
||||
x2c8_ = __dna_reader.readFloatBig();
|
||||
/* x2c8_grappleJumpForce */
|
||||
x2c8_grappleJumpForce = __dna_reader.readFloatBig();
|
||||
/* x2cc_ */
|
||||
x2cc_ = __dna_reader.readFloatBig();
|
||||
/* x2d0_ */
|
||||
x2d0_ = __dna_reader.readUint32Big();
|
||||
/* x2d0_grappleJumpMode */
|
||||
x2d0_grappleJumpMode = __dna_reader.readUint32Big();
|
||||
/* x2d4_ */
|
||||
x2d4_ = __dna_reader.readBool();
|
||||
/* x2d5_ */
|
||||
|
@ -433,10 +433,10 @@ void CTweakPlayer::read(athena::io::IStreamReader& __dna_reader)
|
|||
x2f0_ = __dna_reader.readFloatBig();
|
||||
/* x2f4_ */
|
||||
x2f4_ = __dna_reader.readBool();
|
||||
/* x2f8_ */
|
||||
x2f8_ = __dna_reader.readFloatBig();
|
||||
/* x2fc_ */
|
||||
x2fc_iceBreakPressCount = __dna_reader.readUint32Big();
|
||||
/* x2f8_frozenTimeout */
|
||||
x2f8_frozenTimeout = __dna_reader.readFloatBig();
|
||||
/* x2fc_iceBreakJumpCount */
|
||||
x2fc_iceBreakJumpCount = __dna_reader.readUint32Big();
|
||||
/* x300_variaDamageReduction */
|
||||
x300_variaDamageReduction = __dna_reader.readFloatBig();
|
||||
/* x304_gravityDamageReduction */
|
||||
|
@ -654,7 +654,7 @@ void CTweakPlayer::write(athena::io::IStreamWriter& __dna_writer) const
|
|||
/* x22a_25_ */
|
||||
__dna_writer.writeBool(x22a_25_);
|
||||
/* x22a_26_ */
|
||||
__dna_writer.writeBool(x22a_26_);
|
||||
__dna_writer.writeBool(x22a_26_firingCancelsCameraPitch);
|
||||
/* x22a_27_ */
|
||||
__dna_writer.writeBool(x22a_27_);
|
||||
/* x22a_28_ */
|
||||
|
@ -712,7 +712,7 @@ void CTweakPlayer::write(athena::io::IStreamWriter& __dna_writer) const
|
|||
/* x17c_ */
|
||||
__dna_writer.writeFloatBig(x17c_);
|
||||
/* x180_ */
|
||||
__dna_writer.writeFloatBig(x180_);
|
||||
__dna_writer.writeFloatBig(x180_orbitNormalDistance);
|
||||
/* x184_ */
|
||||
__dna_writer.writeFloatBig(x184_);
|
||||
/* x188_ */
|
||||
|
@ -805,8 +805,8 @@ void CTweakPlayer::write(athena::io::IStreamWriter& __dna_writer) const
|
|||
__dna_writer.writeFloatBig(x2a0_);
|
||||
/* x2a4_ */
|
||||
__dna_writer.writeFloatBig(x2a4_);
|
||||
/* x2a8_ */
|
||||
__dna_writer.writeFloatBig(x2a8_);
|
||||
/* x2a8_grappleSwingPeriod */
|
||||
__dna_writer.writeFloatBig(x2a8_grappleSwingPeriod);
|
||||
/* x2ac_ */
|
||||
__dna_writer.writeFloatBig(x2ac_);
|
||||
/* x2b0_ */
|
||||
|
@ -821,12 +821,12 @@ void CTweakPlayer::write(athena::io::IStreamWriter& __dna_writer) const
|
|||
__dna_writer.writeFloatBig(x2c0_);
|
||||
/* x2c4_ */
|
||||
__dna_writer.writeFloatBig(x2c4_);
|
||||
/* x2c8_ */
|
||||
__dna_writer.writeFloatBig(x2c8_);
|
||||
/* x2c8_grappleJumpForce */
|
||||
__dna_writer.writeFloatBig(x2c8_grappleJumpForce);
|
||||
/* x2cc_ */
|
||||
__dna_writer.writeFloatBig(x2cc_);
|
||||
/* x2d0_ */
|
||||
__dna_writer.writeUint32Big(x2d0_);
|
||||
/* x2d0_grappleJumpMode */
|
||||
__dna_writer.writeUint32Big(x2d0_grappleJumpMode);
|
||||
/* x2d4_ */
|
||||
__dna_writer.writeBool(x2d4_);
|
||||
/* x2d5_ */
|
||||
|
@ -873,10 +873,10 @@ void CTweakPlayer::write(athena::io::IStreamWriter& __dna_writer) const
|
|||
__dna_writer.writeFloatBig(x2f0_);
|
||||
/* x2f4_ */
|
||||
__dna_writer.writeBool(x2f4_);
|
||||
/* x2f8_ */
|
||||
__dna_writer.writeFloatBig(x2f8_);
|
||||
/* x2fc_ */
|
||||
__dna_writer.writeUint32Big(x2fc_iceBreakPressCount);
|
||||
/* x2f8_frozenTimeout */
|
||||
__dna_writer.writeFloatBig(x2f8_frozenTimeout);
|
||||
/* x2fc_iceBreakJumpCount */
|
||||
__dna_writer.writeUint32Big(x2fc_iceBreakJumpCount);
|
||||
/* x300_variaDamageReduction */
|
||||
__dna_writer.writeFloatBig(x300_variaDamageReduction);
|
||||
/* x304_gravityDamageReduction */
|
||||
|
@ -1123,8 +1123,8 @@ void CTweakPlayer::read(athena::io::YAMLDocReader& __dna_docin)
|
|||
x22a_24_ = __dna_docin.readBool("x22a_24_");
|
||||
/* x22a_25_ */
|
||||
x22a_25_ = __dna_docin.readBool("x22a_25_");
|
||||
/* x22a_26_ */
|
||||
x22a_26_ = __dna_docin.readBool("x22a_26_");
|
||||
/* x22a_26_firingCancelsCameraPitch */
|
||||
x22a_26_firingCancelsCameraPitch = __dna_docin.readBool("x22a_26_firingCancelsCameraPitch");
|
||||
/* x22a_27_ */
|
||||
x22a_27_ = __dna_docin.readBool("x22a_27_");
|
||||
/* x22a_28_ */
|
||||
|
@ -1196,8 +1196,8 @@ void CTweakPlayer::read(athena::io::YAMLDocReader& __dna_docin)
|
|||
}
|
||||
/* x17c_ */
|
||||
x17c_ = __dna_docin.readFloat("x17c_");
|
||||
/* x180_ */
|
||||
x180_ = __dna_docin.readFloat("x180_");
|
||||
/* x180_orbitNormalDistance */
|
||||
x180_orbitNormalDistance = __dna_docin.readFloat("x180_orbitNormalDistance");
|
||||
/* x184_ */
|
||||
x184_ = __dna_docin.readFloat("x184_");
|
||||
/* x188_ */
|
||||
|
@ -1320,8 +1320,8 @@ void CTweakPlayer::read(athena::io::YAMLDocReader& __dna_docin)
|
|||
x2a0_ = __dna_docin.readFloat("x2a0_");
|
||||
/* x2a4_ */
|
||||
x2a4_ = __dna_docin.readFloat("x2a4_");
|
||||
/* x2a8_ */
|
||||
x2a8_ = __dna_docin.readFloat("x2a8_");
|
||||
/* x2a8_grappleSwingPeriod */
|
||||
x2a8_grappleSwingPeriod = __dna_docin.readFloat("x2a8_grappleSwingPeriod");
|
||||
/* x2ac_ */
|
||||
x2ac_ = __dna_docin.readFloat("x2ac_");
|
||||
/* x2b0_ */
|
||||
|
@ -1336,12 +1336,12 @@ void CTweakPlayer::read(athena::io::YAMLDocReader& __dna_docin)
|
|||
x2c0_ = __dna_docin.readFloat("x2c0_");
|
||||
/* x2c4_ */
|
||||
x2c4_ = __dna_docin.readFloat("x2c4_");
|
||||
/* x2c8_ */
|
||||
x2c8_ = __dna_docin.readFloat("x2c8_");
|
||||
/* x2c8_grappleJumpForce */
|
||||
x2c8_grappleJumpForce = __dna_docin.readFloat("x2c8_grappleJumpForce");
|
||||
/* x2cc_ */
|
||||
x2cc_ = __dna_docin.readFloat("x2cc_");
|
||||
/* x2d0_ */
|
||||
x2d0_ = __dna_docin.readUint32("x2d0_");
|
||||
/* x2d0_grappleJumpMode */
|
||||
x2d0_grappleJumpMode = __dna_docin.readUint32("x2d0_grappleJumpMode");
|
||||
/* x2d4_ */
|
||||
x2d4_ = __dna_docin.readBool("x2d4_");
|
||||
/* x2d5_ */
|
||||
|
@ -1388,10 +1388,10 @@ void CTweakPlayer::read(athena::io::YAMLDocReader& __dna_docin)
|
|||
x2f0_ = __dna_docin.readFloat("x2f0_");
|
||||
/* x2f4_ */
|
||||
x2f4_ = __dna_docin.readBool("x2f4_");
|
||||
/* x2f8_ */
|
||||
x2f8_ = __dna_docin.readFloat("x2f8_");
|
||||
/* x2fc_iceBreakPressCount */
|
||||
x2fc_iceBreakPressCount = __dna_docin.readUint32("x2fc_iceBreakPressCount");
|
||||
/* x2f8_frozenTimeout */
|
||||
x2f8_frozenTimeout = __dna_docin.readFloat("x2f8_frozenTimeout");
|
||||
/* x2fc_iceBreakJumpCount */
|
||||
x2fc_iceBreakJumpCount = __dna_docin.readUint32("x2fc_iceBreakJumpCount");
|
||||
/* x300_variaDamageReduction */
|
||||
x300_variaDamageReduction = __dna_docin.readFloat("x300_variaDamageReduction");
|
||||
/* x304_gravityDamageReduction */
|
||||
|
@ -1400,7 +1400,7 @@ void CTweakPlayer::read(athena::io::YAMLDocReader& __dna_docin)
|
|||
x308_phazonDamageReduction = __dna_docin.readFloat("x308_phazonDamageReduction");
|
||||
}
|
||||
|
||||
void CTweakPlayer::CTweakPlayer::write(athena::io::YAMLDocWriter& __dna_docout) const
|
||||
void CTweakPlayer::write(athena::io::YAMLDocWriter& __dna_docout) const
|
||||
{
|
||||
/* x4_ */
|
||||
if (auto v = __dna_docout.enterSubVector("x4_"))
|
||||
|
@ -1632,8 +1632,8 @@ void CTweakPlayer::CTweakPlayer::write(athena::io::YAMLDocWriter& __dna_docout)
|
|||
__dna_docout.writeBool("x22a_24_", x22a_24_);
|
||||
/* x22a_25_ */
|
||||
__dna_docout.writeBool("x22a_25_", x22a_25_);
|
||||
/* x22a_26_ */
|
||||
__dna_docout.writeBool("x22a_26_", x22a_26_);
|
||||
/* x22a_26_firingCancelsCameraPitch */
|
||||
__dna_docout.writeBool("x22a_26_firingCancelsCameraPitch", x22a_26_firingCancelsCameraPitch);
|
||||
/* x22a_27_ */
|
||||
__dna_docout.writeBool("x22a_27_", x22a_27_);
|
||||
/* x22a_28_ */
|
||||
|
@ -1702,8 +1702,8 @@ void CTweakPlayer::CTweakPlayer::write(athena::io::YAMLDocWriter& __dna_docout)
|
|||
}
|
||||
/* x17c_ */
|
||||
__dna_docout.writeFloat("x17c_", x17c_);
|
||||
/* x180_ */
|
||||
__dna_docout.writeFloat("x180_", x180_);
|
||||
/* x180_orbitNormalDistance */
|
||||
__dna_docout.writeFloat("x180_orbitNormalDistance", x180_orbitNormalDistance);
|
||||
/* x184_ */
|
||||
__dna_docout.writeFloat("x184_", x184_);
|
||||
/* x188_ */
|
||||
|
@ -1820,8 +1820,8 @@ void CTweakPlayer::CTweakPlayer::write(athena::io::YAMLDocWriter& __dna_docout)
|
|||
__dna_docout.writeFloat("x2a0_", x2a0_);
|
||||
/* x2a4_ */
|
||||
__dna_docout.writeFloat("x2a4_", x2a4_);
|
||||
/* x2a8_ */
|
||||
__dna_docout.writeFloat("x2a8_", x2a8_);
|
||||
/* x2a8_grappleSwingPeriod */
|
||||
__dna_docout.writeFloat("x2a8_grappleSwingPeriod", x2a8_grappleSwingPeriod);
|
||||
/* x2ac_ */
|
||||
__dna_docout.writeFloat("x2ac_", x2ac_);
|
||||
/* x2b0_ */
|
||||
|
@ -1836,12 +1836,12 @@ void CTweakPlayer::CTweakPlayer::write(athena::io::YAMLDocWriter& __dna_docout)
|
|||
__dna_docout.writeFloat("x2c0_", x2c0_);
|
||||
/* x2c4_ */
|
||||
__dna_docout.writeFloat("x2c4_", x2c4_);
|
||||
/* x2c8_ */
|
||||
__dna_docout.writeFloat("x2c8_", x2c8_);
|
||||
/* x2c8_grappleJumpForce */
|
||||
__dna_docout.writeFloat("x2c8_grappleJumpForce", x2c8_grappleJumpForce);
|
||||
/* x2cc_ */
|
||||
__dna_docout.writeFloat("x2cc_", x2cc_);
|
||||
/* x2d0_ */
|
||||
__dna_docout.writeUint32("x2d0_", x2d0_);
|
||||
/* x2d0_grappleJumpMode */
|
||||
__dna_docout.writeUint32("x2d0_grappleJumpMode", x2d0_grappleJumpMode);
|
||||
/* x2d4_ */
|
||||
__dna_docout.writeBool("x2d4_", x2d4_);
|
||||
/* x2d4_ */
|
||||
|
@ -1888,10 +1888,10 @@ void CTweakPlayer::CTweakPlayer::write(athena::io::YAMLDocWriter& __dna_docout)
|
|||
__dna_docout.writeFloat("x2f0_", x2f0_);
|
||||
/* x2f4_ */
|
||||
__dna_docout.writeBool("x2f4_", x2f4_);
|
||||
/* x2f8_ */
|
||||
__dna_docout.writeFloat("x2f8_", x2f8_);
|
||||
/* x2fc_iceBreakPressCount */
|
||||
__dna_docout.writeUint32("x2fc_iceBreakPressCount", x2fc_iceBreakPressCount);
|
||||
/* x2f8_frozenTimeout */
|
||||
__dna_docout.writeFloat("x2f8_frozenTimeout", x2f8_frozenTimeout);
|
||||
/* x2fc_iceBreakJumpCount */
|
||||
__dna_docout.writeUint32("x2fc_iceBreakJumpCount", x2fc_iceBreakJumpCount);
|
||||
/* x300_variaDamageReduction */
|
||||
__dna_docout.writeFloat("x300_variaDamageReduction", x300_variaDamageReduction);
|
||||
/* x304_gravityDamageReduction */
|
||||
|
|
|
@ -58,7 +58,7 @@ struct CTweakPlayer : ITweakPlayer
|
|||
Value<float> x164_[3];
|
||||
Value<float> x170_[3];
|
||||
Value<float> x17c_;
|
||||
Value<float> x180_;
|
||||
Value<float> x180_orbitNormalDistance;
|
||||
Value<float> x184_;
|
||||
Value<float> x188_;
|
||||
Value<float> x18c_;
|
||||
|
@ -115,7 +115,7 @@ struct CTweakPlayer : ITweakPlayer
|
|||
Value<bool> x229_31_ : 1;
|
||||
Value<bool> x22a_24_ : 1;
|
||||
Value<bool> x22a_25_ : 1;
|
||||
Value<bool> x22a_26_ : 1;
|
||||
Value<bool> x22a_26_firingCancelsCameraPitch : 1;
|
||||
Value<bool> x22a_27_ : 1;
|
||||
Value<bool> x22a_28_ : 1;
|
||||
Value<float> x22c_;
|
||||
|
@ -149,7 +149,7 @@ struct CTweakPlayer : ITweakPlayer
|
|||
Value<float> x29c_;
|
||||
Value<float> x2a0_;
|
||||
Value<float> x2a4_;
|
||||
Value<float> x2a8_;
|
||||
Value<float> x2a8_grappleSwingPeriod;
|
||||
Value<float> x2ac_;
|
||||
Value<float> x2b0_;
|
||||
Value<float> x2b4_;
|
||||
|
@ -157,9 +157,9 @@ struct CTweakPlayer : ITweakPlayer
|
|||
Value<float> x2bc_;
|
||||
Value<float> x2c0_;
|
||||
Value<float> x2c4_;
|
||||
Value<float> x2c8_;
|
||||
Value<float> x2c8_grappleJumpForce;
|
||||
Value<float> x2cc_;
|
||||
Value<atUint32> x2d0_;
|
||||
Value<atUint32> x2d0_grappleJumpMode;
|
||||
Value<bool> x2d4_;
|
||||
Value<bool> x2d5_;
|
||||
Value<float> x2d8_;
|
||||
|
@ -170,8 +170,8 @@ struct CTweakPlayer : ITweakPlayer
|
|||
Value<float> x2ec_;
|
||||
Value<float> x2f0_;
|
||||
Value<bool> x2f4_;
|
||||
Value<float> x2f8_;
|
||||
Value<atUint32> x2fc_iceBreakPressCount;
|
||||
Value<float> x2f8_frozenTimeout;
|
||||
Value<atUint32> x2fc_iceBreakJumpCount;
|
||||
Value<float> x300_variaDamageReduction;
|
||||
Value<float> x304_gravityDamageReduction;
|
||||
Value<float> x308_phazonDamageReduction;
|
||||
|
@ -181,6 +181,7 @@ struct CTweakPlayer : ITweakPlayer
|
|||
float GetX5C() const { return x44_[6]; }
|
||||
float GetHardLandingVelocityThreshold() const { return xc4_hardLandingVelocityThreshold; }
|
||||
float GetHudLagAmount() const { return x138_hudLagAmount; }
|
||||
float GetOrbitNormalDistance() const { return x180_orbitNormalDistance; }
|
||||
uint32_t GetOrbitScreenBoxHalfExtentX(int zone) const { return x1a8_orbitScreenBoxHalfExtentX[zone]; }
|
||||
uint32_t GetOrbitScreenBoxHalfExtentY(int zone) const { return x1b0_orbitScreenBoxHalfExtentY[zone]; }
|
||||
uint32_t GetOrbitScreenBoxCenterX(int zone) const { return x1b8_orbitScreenBoxCenterX[zone]; }
|
||||
|
@ -193,11 +194,15 @@ struct CTweakPlayer : ITweakPlayer
|
|||
float GetScanningRange() const { return x218_scanningRange; }
|
||||
bool GetScanFreezesGame() const { return x21c_25_scanFreezesGame; }
|
||||
float GetScanningFrameSenseRange() const { return x224_scanningFrameSenseRange; }
|
||||
bool GetFiringCancelsCameraPitch() const { return x22a_26_firingCancelsCameraPitch; }
|
||||
float GetPlayerHeight() const { return x26c_playerHeight; }
|
||||
float GetPlayerXYHalfExtent() const { return x270_playerXYHalfExtent; }
|
||||
float GetX274() const { return x274_; }
|
||||
float GetX278() const { return x278_; }
|
||||
float GetPlayerBallHalfExtent() const { return x27c_playerBallHalfExtent; }
|
||||
float GetGrappleSwingPeriod() const { return x2a8_grappleSwingPeriod; }
|
||||
float GetGrappleJumpForce() const { return x2c8_grappleJumpForce; }
|
||||
uint32_t GetGrappleJumpMode() const { return x2d0_grappleJumpMode; }
|
||||
float GetX124() const { return x134_; }
|
||||
float GetX184() const { return x184_; }
|
||||
float GetX1fc() const { return x1fc_; }
|
||||
|
@ -215,7 +220,8 @@ struct CTweakPlayer : ITweakPlayer
|
|||
float GetLeftLogicalThreshold() const { return x150_leftDiv; }
|
||||
float GetRightLogicalThreshold() const { return x154_rightDiv; }
|
||||
float GetX164(int type) const { return x164_[type]; }
|
||||
uint32_t GetIceBreakPressCount() const { return x2fc_iceBreakPressCount; }
|
||||
float GetFrozenTimeout() const { return x2f8_frozenTimeout; }
|
||||
uint32_t GetIceBreakJumpCount() const { return x2fc_iceBreakJumpCount; }
|
||||
float GetVariaDamageReduction() const { return x300_variaDamageReduction; }
|
||||
float GetGravityDamageReduction() const { return x304_gravityDamageReduction; }
|
||||
float GetPhazonDamageReduction() const { return x308_phazonDamageReduction; }
|
||||
|
|
|
@ -25,7 +25,7 @@ struct CTweakPlayerGun : ITweakPlayerGun
|
|||
Value<float> x30_;
|
||||
Value<float> x34_;
|
||||
Value<float> x38_;
|
||||
Value<float> x3c_;
|
||||
Value<float> x3c_gunHolsterTime;
|
||||
Value<float> x40_gunNotFiringTime;
|
||||
Value<float> x44_;
|
||||
Value<float> x48_;
|
||||
|
@ -59,6 +59,7 @@ struct CTweakPlayerGun : ITweakPlayerGun
|
|||
float GetX30() const { return x30_; }
|
||||
float GetX34() const { return x34_; }
|
||||
float GetX38() const { return x38_; }
|
||||
float GetGunHolsterTime() const { return x3c_gunHolsterTime; }
|
||||
float GetGunNotFiringTime() const { return x40_gunNotFiringTime; }
|
||||
float GetRichochetDamage(atUint32 type) const
|
||||
{
|
||||
|
|
|
@ -327,7 +327,7 @@ void ViewManager::pushRecentFile(const hecl::SystemString& path)
|
|||
|
||||
void ViewManager::init(boo::IApplication* app)
|
||||
{
|
||||
m_mainWindow = std::unique_ptr<boo::IWindow>(app->newWindow(_S("URDE"), 1));
|
||||
m_mainWindow = app->newWindow(_S("URDE"), 1);
|
||||
m_mainWindow->showWindow();
|
||||
m_mainWindow->setWaitCursor(true);
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ class ViewManager : public specter::IViewManager
|
|||
friend class RootSpace;
|
||||
friend class SplitSpace;
|
||||
|
||||
std::unique_ptr<boo::IWindow> m_mainWindow;
|
||||
std::shared_ptr<boo::IWindow> m_mainWindow;
|
||||
hecl::Runtime::FileStoreManager& m_fileStoreManager;
|
||||
hecl::CVarManager& m_cvarManager;
|
||||
ProjectManager m_projManager;
|
||||
|
|
|
@ -65,8 +65,8 @@ CPersistentOptions::CPersistentOptions(CBitStreamReader& stream)
|
|||
for (int b=0 ; b<64 ; ++b)
|
||||
x68_[b] = stream.ReadEncoded(1);
|
||||
|
||||
xc0_freezeBreakCount = stream.ReadEncoded(2);
|
||||
xc4_frozenCount = stream.ReadEncoded(2);
|
||||
xc0_frozenFpsCount = stream.ReadEncoded(2);
|
||||
xc4_frozenBallCount = stream.ReadEncoded(2);
|
||||
xc8_ = stream.ReadEncoded(1);
|
||||
xcc_logScanCount = stream.ReadEncoded(7);
|
||||
xd0_24_fusionLinked = stream.ReadEncoded(1);
|
||||
|
@ -111,8 +111,8 @@ void CPersistentOptions::PutTo(CBitStreamWriter& w) const
|
|||
for (int b=0 ; b<64 ; ++b)
|
||||
w.WriteEncoded(x68_[b], 1);
|
||||
|
||||
w.WriteEncoded(xc0_freezeBreakCount, 2);
|
||||
w.WriteEncoded(xc4_frozenCount, 2);
|
||||
w.WriteEncoded(xc0_frozenFpsCount, 2);
|
||||
w.WriteEncoded(xc4_frozenBallCount, 2);
|
||||
w.WriteEncoded(xc8_, 1);
|
||||
w.WriteEncoded(xcc_logScanCount, 7);
|
||||
w.WriteEncoded(xd0_24_fusionLinked, 1);
|
||||
|
|
|
@ -59,8 +59,8 @@ class CPersistentOptions
|
|||
bool x68_[64] = {};
|
||||
std::vector<std::pair<ResId, TEditorId>> xac_cinematicStates; /* (MLVL, Cinematic) */
|
||||
u32 xbc_autoMapperKeyState = 0;
|
||||
u32 xc0_freezeBreakCount = 0;
|
||||
u32 xc4_frozenCount = 0;
|
||||
u32 xc0_frozenFpsCount = 0;
|
||||
u32 xc4_frozenBallCount = 0;
|
||||
u32 xc8_ = 0;
|
||||
u32 xcc_logScanCount = 0;
|
||||
|
||||
|
@ -100,10 +100,10 @@ public:
|
|||
void SetAllItemsCollected(bool v) { xd0_29_allItemsCollected = v; }
|
||||
u32 GetLogScanCount() const { return xcc_logScanCount; }
|
||||
void SetLogScanCount(u32 v) { xcc_logScanCount = v; }
|
||||
void IncrFreezeBreakCount() { xc0_freezeBreakCount = std::min(int(xc0_freezeBreakCount + 1), 3); }
|
||||
bool GetShowBreakMessage() const { return xc0_freezeBreakCount != 3; }
|
||||
void IncrFrozenCount() { xc4_frozenCount = std::min(int(xc4_frozenCount + 1), 3); }
|
||||
bool GetShowFrozenMessage() const { return xc4_frozenCount != 3; }
|
||||
void IncrementFrozenFpsCount() { xc0_frozenFpsCount = std::min(int(xc0_frozenFpsCount + 1), 3); }
|
||||
bool GetShowFrozenFpsMessage() const { return xc0_frozenFpsCount != 3; }
|
||||
void IncrementFrozenBallCount() { xc4_frozenBallCount = std::min(int(xc4_frozenBallCount + 1), 3); }
|
||||
bool GetShowFrozenBallMessage() const { return xc4_frozenBallCount != 3; }
|
||||
void PutTo(CBitStreamWriter& w) const;
|
||||
|
||||
u8* GetNESState() { return x0_; }
|
||||
|
|
|
@ -1362,7 +1362,7 @@ void CStateManager::ApplyDamageToWorld(TUniqueId damager, const CActor& actor, c
|
|||
{
|
||||
if (player->GetFrozenState())
|
||||
{
|
||||
g_GameState->SystemOptions().IncrFrozenCount();
|
||||
g_GameState->SystemOptions().IncrementFrozenBallCount();
|
||||
CHUDMemoParms info = {0.f, true, true, true};
|
||||
MP1::CSamusHud::DisplayHudMemo(u"", info);
|
||||
player->Stop(*this);
|
||||
|
|
|
@ -86,9 +86,9 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt)
|
|||
playerXf.rotate({0.f, std::min(std::fabs(std::cos(x1c0_)), 1.0f), std::min(std::fabs(std::sin(x1c0_)), 1.0f)});
|
||||
if (player->x3dc_inFreeLook)
|
||||
{
|
||||
float angle = player->x3ec_;
|
||||
if (std::fabs(player->x3ec_) > (g_tweakPlayer->GetX124() - std::fabs(x1c0_)))
|
||||
angle = (player->x3ec_ > -0.f ? -1.f : 1.f);
|
||||
float angle = player->x3ec_freeLookPitchAngle;
|
||||
if (std::fabs(player->x3ec_freeLookPitchAngle) > (g_tweakPlayer->GetX124() - std::fabs(x1c0_)))
|
||||
angle = (player->x3ec_freeLookPitchAngle > -0.f ? -1.f : 1.f);
|
||||
zeus::CVector3f vec;
|
||||
vec.z = std::sin(angle);
|
||||
vec.y = std::cos(-player->x3e4_) * std::cos(angle);
|
||||
|
@ -124,9 +124,9 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt)
|
|||
player->GetMorphballTransitionState() == CPlayer::EPlayerMorphBallState::Unmorphed &&
|
||||
player->x3dc_inFreeLook && x1c4_pitchId == kInvalidUniqueId)
|
||||
{
|
||||
if (player->x294_ > 0.f)
|
||||
if (player->x294_jumpCameraPitchTimer > 0.f)
|
||||
{
|
||||
float angle = zeus::clamp(0.f, (player->x294_ - g_tweakPlayer->GetX288()) / g_tweakPlayer->GetX28c(), 1.f) *
|
||||
float angle = zeus::clamp(0.f, (player->x294_jumpCameraPitchTimer - g_tweakPlayer->GetX288()) / g_tweakPlayer->GetX28c(), 1.f) *
|
||||
g_tweakPlayer->GetX290();
|
||||
angle += x1c0_;
|
||||
rVec.x = 0.f;
|
||||
|
@ -135,9 +135,9 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt)
|
|||
|
||||
rVec = playerXf.rotate(rVec);
|
||||
}
|
||||
else if (player->x29c_ > 0.f)
|
||||
else if (player->x29c_spaceJumpCameraPitchTimer > 0.f)
|
||||
{
|
||||
float angle = zeus::clamp(0.f, (player->x29c_ - g_tweakPlayer->GetX294()) / g_tweakPlayer->GetX298(), 1.f) *
|
||||
float angle = zeus::clamp(0.f, (player->x29c_spaceJumpCameraPitchTimer - g_tweakPlayer->GetX294()) / g_tweakPlayer->GetX298(), 1.f) *
|
||||
g_tweakPlayer->GetX29C();
|
||||
rVec.x = 0.f;
|
||||
rVec.y = std::cos(angle);
|
||||
|
@ -175,7 +175,7 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt)
|
|||
|
||||
const CScriptGrapplePoint* gPoint =
|
||||
TCastToConstPtr<CScriptGrapplePoint>(mgr.GetObjectById(player->x310_orbitTargetId));
|
||||
if (gPoint && player->x29c_ > 0.f)
|
||||
if (gPoint && player->x29c_spaceJumpCameraPitchTimer > 0.f)
|
||||
{
|
||||
gunFrontVec = x190_gunFollowXf.frontVector();
|
||||
if (gunFrontVec.canBeNormalized())
|
||||
|
@ -248,7 +248,8 @@ void CFirstPersonCamera::UpdateTransform(CStateManager& mgr, float dt)
|
|||
|
||||
if (player->GetMorphballTransitionState() == CPlayer::EPlayerMorphBallState::Morphed ||
|
||||
player->GetOrbitState() == CPlayer::EPlayerOrbitState::Five ||
|
||||
player->x3b8_ == 0 || mgr.GetGameState() == CStateManager::EGameState::SoftPaused ||
|
||||
player->GetGrappleState() == CPlayer::EGrappleState::Zero ||
|
||||
mgr.GetGameState() == CStateManager::EGameState::SoftPaused ||
|
||||
mgr.GetCameraManager()->IsInCinematicCamera())
|
||||
{
|
||||
bobXf = zeus::CTransform::Identity();
|
||||
|
|
|
@ -9,10 +9,10 @@ namespace urde
|
|||
class CFirstPersonCamera : public CGameCamera
|
||||
{
|
||||
float x188_;
|
||||
u8 x18c_;
|
||||
bool x18c_ = false;
|
||||
zeus::CTransform x190_gunFollowXf;
|
||||
float x1c0_;
|
||||
TUniqueId x1c4_pitchId;
|
||||
float x1c0_ = 0.f;
|
||||
TUniqueId x1c4_pitchId = kInvalidUniqueId;
|
||||
union {
|
||||
struct
|
||||
{
|
||||
|
@ -40,6 +40,7 @@ public:
|
|||
void UpdateElevation(CStateManager&);
|
||||
void CalculateGunFollowOrientationAndTransform(zeus::CTransform&, zeus::CQuaternion&, float, zeus::CVector3f&);
|
||||
void SetScriptPitchId(TUniqueId uid) { x1c4_pitchId = uid; }
|
||||
void SetX18C(bool v) { x18c_ = v; }
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -11,4 +11,9 @@ void CGrappleArm::AsyncLoadSuit(CStateManager& mgr)
|
|||
{
|
||||
}
|
||||
|
||||
void CGrappleArm::SetAnimState(EArmState state)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -10,12 +10,27 @@ namespace urde
|
|||
|
||||
class CGrappleArm
|
||||
{
|
||||
public:
|
||||
enum class EArmState
|
||||
{
|
||||
Zero,
|
||||
One,
|
||||
Two,
|
||||
Three,
|
||||
Four,
|
||||
Five,
|
||||
Six,
|
||||
Seven,
|
||||
Eight,
|
||||
};
|
||||
private:
|
||||
CModelData x0_modelData;
|
||||
zeus::CTransform x220_;
|
||||
public:
|
||||
CGrappleArm(const zeus::CVector3f& vec);
|
||||
void AsyncLoadSuit(CStateManager& mgr);
|
||||
void SetX220(const zeus::CTransform& xf) { x220_ = xf; }
|
||||
void SetAnimState(EArmState state);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -51,4 +51,14 @@ void CPlayerGun::ProcessInput(const CFinalInput& input, CStateManager& mgr)
|
|||
|
||||
}
|
||||
|
||||
void CPlayerGun::ResetIdle(CStateManager& mgr)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void CPlayerGun::CancelFiring(CStateManager& mgr)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -224,6 +224,8 @@ public:
|
|||
CGrappleArm& GetGrappleArm() { return *x740_grappleArm; }
|
||||
void DamageRumble(const zeus::CVector3f& location, float damage, const CStateManager& mgr);
|
||||
void ProcessInput(const CFinalInput& input, CStateManager& mgr);
|
||||
void ResetIdle(CStateManager& mgr);
|
||||
void CancelFiring(CStateManager& mgr);
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -370,7 +370,7 @@ void CPlayer::TakeDamage(bool significant, const zeus::CVector3f& location,
|
|||
}
|
||||
}
|
||||
|
||||
if (x3b8_)
|
||||
if (x3b8_grappleState != EGrappleState::Zero)
|
||||
BreakGrapple(EPlayerOrbitRequest::Eleven, mgr);
|
||||
}
|
||||
|
||||
|
@ -582,7 +582,8 @@ void CPlayer::ProcessInput(const CFinalInput& input, CStateManager& mgr)
|
|||
UpdateVisorState(input, input.DeltaTime(), mgr);
|
||||
|
||||
if (x2f8_morphTransState == EPlayerMorphBallState::Morphed ||
|
||||
(x2f8_morphTransState == EPlayerMorphBallState::Unmorphed && x498_ == 2))
|
||||
(x2f8_morphTransState == EPlayerMorphBallState::Unmorphed &&
|
||||
x498_gunHolsterState == EGunHolsterState::Drawn))
|
||||
{
|
||||
x490_gun->ProcessInput(input, mgr);
|
||||
if (x2f8_morphTransState == EPlayerMorphBallState::Morphed && x2fc_ != kInvalidUniqueId)
|
||||
|
@ -609,7 +610,7 @@ void CPlayer::ProcessInput(const CFinalInput& input, CStateManager& mgr)
|
|||
|
||||
UpdateCameraState(mgr);
|
||||
UpdateMorphBallState(input, mgr);
|
||||
UpdateCameraTimers(input);
|
||||
UpdateCameraTimers(input.DeltaTime(), input);
|
||||
UpdateFootstepSounds(input, mgr, input.DeltaTime());
|
||||
x2a8_ += input.DeltaTime();
|
||||
|
||||
|
@ -812,14 +813,14 @@ void CPlayer::Stop(CStateManager& stateMgr)
|
|||
if (GetFrozenState())
|
||||
{
|
||||
x750_frozenTimeout = 0.f;
|
||||
x754_iceBreakPresses = 0;
|
||||
x754_iceBreakJumps = 0;
|
||||
CPhysicsActor::Stop();
|
||||
ClearForcesAndTorques();
|
||||
RemoveMaterial(EMaterialTypes::Immovable, stateMgr);
|
||||
if (!stateMgr.GetCameraManager()->IsInCinematicCamera() && xa0c_ != -1)
|
||||
if (!stateMgr.GetCameraManager()->IsInCinematicCamera() && xa0c_iceTextureId != kInvalidResId)
|
||||
{
|
||||
std::experimental::optional<TToken<CGenDescription>> gpsm;
|
||||
gpsm.emplace(g_SimplePool->GetObj(SObjectTag(FOURCC('PART'), xa0c_)));
|
||||
gpsm.emplace(g_SimplePool->GetObj(SObjectTag(FOURCC('PART'), xa0c_iceTextureId)));
|
||||
CHUDBillboardEffect* effect = new CHUDBillboardEffect(gpsm, {}, stateMgr.AllocateUniqueId(), true,
|
||||
"FrostExplosion", CHUDBillboardEffect::GetNearClipDistance(stateMgr),
|
||||
CHUDBillboardEffect::GetScaleForPOV(stateMgr), zeus::CColor::skWhite,
|
||||
|
@ -833,6 +834,43 @@ void CPlayer::Stop(CStateManager& stateMgr)
|
|||
}
|
||||
}
|
||||
|
||||
void CPlayer::Freeze(CStateManager& stateMgr, ResId steamTxtr, u16 sfx, ResId iceTxtr)
|
||||
{
|
||||
if (stateMgr.GetCameraManager()->IsInCinematicCamera() || GetFrozenState())
|
||||
return;
|
||||
|
||||
bool showMsg;
|
||||
if (x2f8_morphTransState == EPlayerMorphBallState::Unmorphed)
|
||||
showMsg = g_GameState->SystemOptions().GetShowFrozenFpsMessage();
|
||||
else
|
||||
showMsg = g_GameState->SystemOptions().GetShowFrozenBallMessage();
|
||||
|
||||
if (showMsg)
|
||||
{
|
||||
const char16_t* msg =
|
||||
g_MainStringTable->GetString(int(x2f8_morphTransState >= EPlayerMorphBallState::Morphed) + 19);
|
||||
CHUDMemoParms parms(5.f, true, false, false);
|
||||
MP1::CSamusHud::DisplayHudMemo(msg, parms);
|
||||
}
|
||||
|
||||
x750_frozenTimeout = x758_frozenTimeoutBias + g_tweakPlayer->GetFrozenTimeout();
|
||||
x754_iceBreakJumps = -x75c_additionalIceBreakJumps;
|
||||
|
||||
CPhysicsActor::Stop();
|
||||
ClearForcesAndTorques();
|
||||
if (x3b8_grappleState != EGrappleState::Zero)
|
||||
BreakGrapple(EPlayerOrbitRequest::Ten, stateMgr);
|
||||
else
|
||||
SetOrbitRequest(EPlayerOrbitRequest::Ten, stateMgr);
|
||||
|
||||
AddMaterial(EMaterialTypes::Immovable, stateMgr);
|
||||
xa08_steamTextureId = steamTxtr;
|
||||
xa0c_iceTextureId = iceTxtr;
|
||||
CSfxHandle hnd = CSfxManager::SfxStart(sfx, 1.f, 0.f, false, 0x7f, false, kInvalidAreaId);
|
||||
ApplySubmergedPitchBend(hnd);
|
||||
EndLandingControlFreeze();
|
||||
}
|
||||
|
||||
bool CPlayer::GetFrozenState() const { return x750_frozenTimeout > 0.f; }
|
||||
|
||||
void CPlayer::UpdateFrozenState(const CFinalInput& input, CStateManager& mgr)
|
||||
|
@ -860,7 +898,7 @@ void CPlayer::UpdateFrozenState(const CFinalInput& input, CStateManager& mgr)
|
|||
case EPlayerMorphBallState::Unmorphing:
|
||||
if (ControlMapper::GetAnalogInput(ControlMapper::ECommands::JumpOrBoost, input))
|
||||
{
|
||||
if (x754_iceBreakPresses)
|
||||
if (x754_iceBreakJumps)
|
||||
{
|
||||
/* Subsequent Breaks */
|
||||
CSfxHandle hnd = CSfxManager::SfxStart(3127, 1.f, 0.f, false, 0x7f, false, kInvalidAreaId);
|
||||
|
@ -872,10 +910,10 @@ void CPlayer::UpdateFrozenState(const CFinalInput& input, CStateManager& mgr)
|
|||
CSfxHandle hnd = CSfxManager::SfxStart(3128, 1.f, 0.f, false, 0x7f, false, kInvalidAreaId);
|
||||
ApplySubmergedPitchBend(hnd);
|
||||
}
|
||||
x754_iceBreakPresses += 1;
|
||||
if (x754_iceBreakPresses > g_tweakPlayer->GetIceBreakPressCount())
|
||||
x754_iceBreakJumps += 1;
|
||||
if (x754_iceBreakJumps > g_tweakPlayer->GetIceBreakJumpCount())
|
||||
{
|
||||
g_GameState->SystemOptions().IncrFreezeBreakCount();
|
||||
g_GameState->SystemOptions().IncrementFrozenFpsCount();
|
||||
CHUDMemoParms info(0.f, true, true, true);
|
||||
MP1::CSamusHud::DisplayHudMemo(u"", info);
|
||||
Stop(mgr);
|
||||
|
@ -1091,7 +1129,122 @@ void CPlayer::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, CState
|
|||
|
||||
void CPlayer::SetVisorSteam(float, float, float, ResId, bool) {}
|
||||
|
||||
void CPlayer::UpdateFootstepSounds(const CFinalInput& input, CStateManager&, float) {}
|
||||
static const u16 skLeftStepSounds[] =
|
||||
{
|
||||
0xFFFF, 0x05B9, 0x05D7, 0x0622, 0x0653,
|
||||
0xFFFF, 0x05D5, 0x0611, 0x05D9, 0x0887,
|
||||
0x0699, 0x063A, 0x0631, 0xFFFF, 0x0629,
|
||||
0x05D7, 0x05D7, 0x05D9, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0x05F9, 0x0629
|
||||
};
|
||||
|
||||
static const u16 skRightStepSounds[] =
|
||||
{
|
||||
0xFFFF, 0x05BA, 0x05D8, 0x0623, 0x0654,
|
||||
0xFFFF, 0x05D6, 0x0612, 0x05DB, 0x0888,
|
||||
0x069A, 0x063B, 0x0632, 0xFFFF, 0x062A,
|
||||
0x05D8, 0x05D8, 0x05DB, 0xFFFF, 0xFFFF,
|
||||
0xFFFF, 0xFFFF, 0x05FA, 0x062A
|
||||
};
|
||||
|
||||
void CPlayer::UpdateFootstepSounds(const CFinalInput& input, CStateManager& mgr, float dt)
|
||||
{
|
||||
if (x2f8_morphTransState != EPlayerMorphBallState::Unmorphed ||
|
||||
x258_movementState != EPlayerMovementState::OnGround ||
|
||||
x3dc_inFreeLook || x3dd_freeLookPitchAngleCalculated)
|
||||
return;
|
||||
|
||||
float sfxVol = 1.f;
|
||||
x78c_footstepSfxTimer += dt;
|
||||
float turn = std::fabs(TurnInput(input));
|
||||
float forward = std::fabs(ForwardInput(input, dt));
|
||||
float sfxDelay = 0.f;
|
||||
if (forward > 0.05f || x304_orbitState != EPlayerOrbitState::Zero)
|
||||
{
|
||||
float vel = std::min(1.f, x138_velocity.magnitude() / GetActualFirstPersonMaxVelocity());
|
||||
if (vel > 0.05f)
|
||||
{
|
||||
sfxDelay = -0.475f * vel + 0.85f;
|
||||
if (x790_footstepSfxSel == EFootstepSfx::None)
|
||||
x790_footstepSfxSel = EFootstepSfx::Left;
|
||||
}
|
||||
else
|
||||
{
|
||||
x78c_footstepSfxTimer = 0.f;
|
||||
x790_footstepSfxSel = EFootstepSfx::None;
|
||||
}
|
||||
|
||||
sfxVol = 0.3f * vel + 0.7f;
|
||||
}
|
||||
else if (turn > 0.05f)
|
||||
{
|
||||
if (x790_footstepSfxSel == EFootstepSfx::Left)
|
||||
sfxDelay = -0.813f * turn + 1.f;
|
||||
else
|
||||
sfxDelay = -2.438f * turn + 3.f;
|
||||
if (x790_footstepSfxSel == EFootstepSfx::None)
|
||||
{
|
||||
x790_footstepSfxSel = EFootstepSfx::Left;
|
||||
sfxDelay = x78c_footstepSfxTimer;
|
||||
}
|
||||
sfxVol = 0.75f;
|
||||
}
|
||||
else
|
||||
{
|
||||
x78c_footstepSfxTimer = 0.f;
|
||||
x790_footstepSfxSel = EFootstepSfx::None;
|
||||
}
|
||||
|
||||
if (x790_footstepSfxSel != EFootstepSfx::None && x78c_footstepSfxTimer > sfxDelay)
|
||||
{
|
||||
static float EarHeight = GetEyeHeight() - 0.1f;
|
||||
if (xe6_24_fluidCounter && x828_waterLevelOnPlayer > 0.f && x828_waterLevelOnPlayer < EarHeight)
|
||||
{
|
||||
if (x82c_inLava)
|
||||
{
|
||||
if (x790_footstepSfxSel == EFootstepSfx::Left)
|
||||
{
|
||||
CSfxHandle hnd = CSfxManager::SfxStart(2183, sfxVol, 0.f, true, 0x7f, false, kInvalidAreaId);
|
||||
ApplySubmergedPitchBend(hnd);
|
||||
}
|
||||
else
|
||||
{
|
||||
CSfxHandle hnd = CSfxManager::SfxStart(2184, sfxVol, 0.f, true, 0x7f, false, kInvalidAreaId);
|
||||
ApplySubmergedPitchBend(hnd);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (x790_footstepSfxSel == EFootstepSfx::Left)
|
||||
{
|
||||
CSfxHandle hnd = CSfxManager::SfxStart(1484, sfxVol, 0.f, true, 0x7f, false, kInvalidAreaId);
|
||||
ApplySubmergedPitchBend(hnd);
|
||||
}
|
||||
else
|
||||
{
|
||||
CSfxHandle hnd = CSfxManager::SfxStart(1485, sfxVol, 0.f, true, 0x7f, false, kInvalidAreaId);
|
||||
ApplySubmergedPitchBend(hnd);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
u16 sfx;
|
||||
if (x790_footstepSfxSel == EFootstepSfx::Left)
|
||||
sfx = GetMaterialSoundUnderPlayer(mgr, skLeftStepSounds, 24, -1);
|
||||
else
|
||||
sfx = GetMaterialSoundUnderPlayer(mgr, skRightStepSounds, 24, -1);
|
||||
CSfxHandle hnd = CSfxManager::SfxStart(sfx, sfxVol, 0.f, true, 0x7f, false, kInvalidAreaId);
|
||||
ApplySubmergedPitchBend(hnd);
|
||||
}
|
||||
|
||||
x78c_footstepSfxTimer = 0.f;
|
||||
if (x790_footstepSfxSel == EFootstepSfx::Left)
|
||||
x790_footstepSfxSel = EFootstepSfx::Right;
|
||||
else
|
||||
x790_footstepSfxSel = EFootstepSfx::Left;
|
||||
}
|
||||
}
|
||||
|
||||
u16 CPlayer::GetMaterialSoundUnderPlayer(CStateManager& mgr, const u16* table, u32 length, u16 defId)
|
||||
{
|
||||
|
@ -1136,7 +1289,38 @@ void CPlayer::UpdateCameraState(CStateManager& mgr) {}
|
|||
|
||||
void CPlayer::UpdateDebugCamera(CStateManager& mgr) {}
|
||||
|
||||
void CPlayer::UpdateCameraTimers(const CFinalInput& input) {}
|
||||
void CPlayer::UpdateCameraTimers(float dt, const CFinalInput& input)
|
||||
{
|
||||
if (x3dc_inFreeLook || x3dd_freeLookPitchAngleCalculated)
|
||||
{
|
||||
x294_jumpCameraPitchTimer = 0.f;
|
||||
x29c_spaceJumpCameraPitchTimer = 0.f;
|
||||
return;
|
||||
}
|
||||
|
||||
if (g_tweakPlayer->GetFiringCancelsCameraPitch())
|
||||
{
|
||||
if (ControlMapper::GetDigitalInput(ControlMapper::ECommands::FireOrBomb, input) ||
|
||||
ControlMapper::GetDigitalInput(ControlMapper::ECommands::MissileOrPowerBomb, input))
|
||||
{
|
||||
if (x288_startingJumpTimeout > 0.f)
|
||||
{
|
||||
x2a4_cancelCameraPitch = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (ControlMapper::GetPressInput(ControlMapper::ECommands::JumpOrBoost, input))
|
||||
++x298_jumpPresses;
|
||||
|
||||
if (ControlMapper::GetDigitalInput(ControlMapper::ECommands::JumpOrBoost, input) &&
|
||||
x294_jumpCameraPitchTimer > 0.f && !x2a4_cancelCameraPitch && x298_jumpPresses <= 2)
|
||||
x294_jumpCameraPitchTimer += dt;
|
||||
|
||||
if (x29c_spaceJumpCameraPitchTimer > 0.f && !x2a4_cancelCameraPitch)
|
||||
x29c_spaceJumpCameraPitchTimer += dt;
|
||||
}
|
||||
|
||||
void CPlayer::UpdateMorphBallState(const CFinalInput&, CStateManager& mgr) {}
|
||||
|
||||
|
@ -1164,9 +1348,30 @@ void CPlayer::ResetAimTargetPrediction(TUniqueId target)
|
|||
x3f4_aimTarget = target;
|
||||
}
|
||||
|
||||
void CPlayer::DrawGun(CStateManager& mgr) {}
|
||||
void CPlayer::DrawGun(CStateManager& mgr)
|
||||
{
|
||||
if (x498_gunHolsterState != EGunHolsterState::Holstered || InGrappleJumpCooldown())
|
||||
return;
|
||||
x498_gunHolsterState = EGunHolsterState::Drawing;
|
||||
x49c_gunNotFiringTimeout = 0.45f;
|
||||
x490_gun->ResetIdle(mgr);
|
||||
}
|
||||
|
||||
void CPlayer::HolsterGun(CStateManager& mgr) {}
|
||||
void CPlayer::HolsterGun(CStateManager& mgr)
|
||||
{
|
||||
if (x498_gunHolsterState == EGunHolsterState::Holstered ||
|
||||
x498_gunHolsterState == EGunHolsterState::Holstering)
|
||||
return;
|
||||
float time = x2f8_morphTransState == EPlayerMorphBallState::Morphing ? 0.1f :
|
||||
g_tweakPlayerGun->GetGunHolsterTime();
|
||||
if (x498_gunHolsterState == EGunHolsterState::Drawing)
|
||||
x49c_gunNotFiringTimeout = time * (1.f - x49c_gunNotFiringTimeout / 0.45f);
|
||||
else
|
||||
x49c_gunNotFiringTimeout = time;
|
||||
x498_gunHolsterState = EGunHolsterState::Holstering;
|
||||
x490_gun->CancelFiring(mgr);
|
||||
ResetAimTargetPrediction(kInvalidUniqueId);
|
||||
}
|
||||
|
||||
void CPlayer::UpdateGrappleArmTransform(const zeus::CVector3f&, CStateManager& mgr, float) {}
|
||||
|
||||
|
@ -1176,11 +1381,55 @@ bool CPlayer::ValidateFPPosition(const zeus::CVector3f& pos, CStateManager& mgr)
|
|||
|
||||
void CPlayer::UpdateGrappleState(const CFinalInput& input, CStateManager& mgr) {}
|
||||
|
||||
void CPlayer::ApplyGrappleJump(CStateManager& mgr) {}
|
||||
void CPlayer::ApplyGrappleJump(CStateManager& mgr)
|
||||
{
|
||||
if (TCastToPtr<CScriptGrapplePoint> point = mgr.ObjectById(x310_orbitTargetId))
|
||||
{
|
||||
zeus::CVector3f tmp = x3c0_grappleSwingAxis;
|
||||
if (x3bc_grappleSwingTimer < 0.5f * g_tweakPlayer->GetGrappleSwingPeriod())
|
||||
tmp *= zeus::CVector3f::skNegOne;
|
||||
zeus::CVector3f pointToPlayer = GetTranslation() - point->GetTranslation();
|
||||
zeus::CVector3f cross = pointToPlayer.normalized().cross(tmp);
|
||||
zeus::CVector3f pointToPlayerFlat(pointToPlayer.x, pointToPlayer.y, 0.f);
|
||||
float dot = 1.f;
|
||||
if (pointToPlayerFlat.canBeNormalized() && cross.canBeNormalized())
|
||||
dot = zeus::clamp(-1.f, std::fabs(cross.normalized().dot(pointToPlayerFlat.normalized())), 1.f);
|
||||
ApplyForceWR(g_tweakPlayer->GetGrappleJumpForce() * cross * 10000.f * dot, zeus::CAxisAngle::sIdentity);
|
||||
}
|
||||
}
|
||||
|
||||
void CPlayer::BeginGrapple(zeus::CVector3f&, CStateManager& mgr) {}
|
||||
void CPlayer::BeginGrapple(zeus::CVector3f& vec, CStateManager& mgr)
|
||||
{
|
||||
vec.z = 0.f;
|
||||
if (vec.canBeNormalized())
|
||||
{
|
||||
x3c0_grappleSwingAxis.x = vec.y;
|
||||
x3c0_grappleSwingAxis.y = -vec.x;
|
||||
x3c0_grappleSwingAxis.normalize();
|
||||
x3bc_grappleSwingTimer = 0.f;
|
||||
SetOrbitState(EPlayerOrbitState::Five, mgr);
|
||||
x3b8_grappleState = EGrappleState::Two;
|
||||
RemoveMaterial(EMaterialTypes::GroundCollider, mgr);
|
||||
}
|
||||
}
|
||||
|
||||
void CPlayer::BreakGrapple(EPlayerOrbitRequest, CStateManager& mgr) {}
|
||||
void CPlayer::BreakGrapple(EPlayerOrbitRequest req, CStateManager& mgr)
|
||||
{
|
||||
x294_jumpCameraPitchTimer = 0.f;
|
||||
x29c_spaceJumpCameraPitchTimer = 0.f;
|
||||
if (g_tweakPlayer->GetGrappleJumpMode() == 2 && x3b8_grappleState == EGrappleState::Three)
|
||||
{
|
||||
ApplyGrappleJump(mgr);
|
||||
PreventFallingCameraPitch();
|
||||
}
|
||||
|
||||
SetOrbitRequest(req, mgr);
|
||||
x3b8_grappleState = EGrappleState::Zero;
|
||||
AddMaterial(EMaterialTypes::GroundCollider, mgr);
|
||||
x490_gun->GetGrappleArm().SetAnimState(CGrappleArm::EArmState::Eight);
|
||||
if (!InGrappleJumpCooldown() && x3b8_grappleState != EGrappleState::Four)
|
||||
DrawGun(mgr);
|
||||
}
|
||||
|
||||
void CPlayer::SetOrbitRequest(EPlayerOrbitRequest req, CStateManager& mgr)
|
||||
{
|
||||
|
@ -1200,24 +1449,85 @@ void CPlayer::SetOrbitRequest(EPlayerOrbitRequest req, CStateManager& mgr)
|
|||
}
|
||||
}
|
||||
|
||||
void CPlayer::PreventFallingCameraPitch() {}
|
||||
bool CPlayer::InGrappleJumpCooldown() const
|
||||
{
|
||||
if (x258_movementState == EPlayerMovementState::OnGround)
|
||||
return false;
|
||||
return x3d8_grappleJumpTimeout > 0.f || x294_jumpCameraPitchTimer == 0.f;
|
||||
}
|
||||
|
||||
void CPlayer::OrbitCarcass(CStateManager&) {}
|
||||
void CPlayer::PreventFallingCameraPitch()
|
||||
{
|
||||
x294_jumpCameraPitchTimer = 0.f;
|
||||
x29c_spaceJumpCameraPitchTimer = 0.01f;
|
||||
x2a4_cancelCameraPitch = true;
|
||||
}
|
||||
|
||||
void CPlayer::OrbitPoint(EPlayerOrbitType, CStateManager& mgr) {}
|
||||
void CPlayer::OrbitCarcass(CStateManager& mgr)
|
||||
{
|
||||
if (x304_orbitState == EPlayerOrbitState::One)
|
||||
{
|
||||
x308_orbitType = EPlayerOrbitType::Two;
|
||||
SetOrbitState(EPlayerOrbitState::Three, mgr);
|
||||
}
|
||||
}
|
||||
|
||||
zeus::CVector3f CPlayer::GetHUDOrbitTargetPosition() const { return {}; }
|
||||
void CPlayer::OrbitPoint(EPlayerOrbitType type, CStateManager& mgr)
|
||||
{
|
||||
x308_orbitType = type;
|
||||
SetOrbitState(EPlayerOrbitState::Two, mgr);
|
||||
SetOrbitPosition(g_tweakPlayer->GetX164(int(x308_orbitType)), mgr);
|
||||
}
|
||||
|
||||
void CPlayer::SetOrbitState(EPlayerOrbitState, CStateManager& mgr) {}
|
||||
zeus::CVector3f CPlayer::GetHUDOrbitTargetPosition() const
|
||||
{
|
||||
return x314_orbitPoint + x76c_cameraBob->GetCameraBobTransformation().origin;
|
||||
}
|
||||
|
||||
void CPlayer::SetOrbitState(EPlayerOrbitState state, CStateManager& mgr)
|
||||
{
|
||||
x304_orbitState = state;
|
||||
CFirstPersonCamera* cam = mgr.GetCameraManager()->GetFirstPersonCamera();
|
||||
switch (x304_orbitState)
|
||||
{
|
||||
case EPlayerOrbitState::One:
|
||||
cam->SetX18C(false);
|
||||
break;
|
||||
case EPlayerOrbitState::Three:
|
||||
{
|
||||
cam->SetX18C(true);
|
||||
zeus::CVector3f playerToPoint = x314_orbitPoint - GetTranslation();
|
||||
if (playerToPoint.canBeNormalized())
|
||||
x340_ = playerToPoint.magnitude();
|
||||
else
|
||||
x340_ = 0.f;
|
||||
SetOrbitTargetId(kInvalidUniqueId, mgr);
|
||||
x33c_ = kInvalidUniqueId;
|
||||
break;
|
||||
}
|
||||
case EPlayerOrbitState::Zero:
|
||||
x32c_orbitDistance = g_tweakPlayer->GetOrbitNormalDistance();
|
||||
x32c_orbitDistance = 0.28f;
|
||||
SetOrbitTargetId(kInvalidUniqueId, mgr);
|
||||
x33c_ = kInvalidUniqueId;
|
||||
break;
|
||||
case EPlayerOrbitState::Two:
|
||||
SetOrbitTargetId(kInvalidUniqueId, mgr);
|
||||
x33c_ = kInvalidUniqueId;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void CPlayer::SetOrbitTargetId(TUniqueId id, CStateManager& mgr)
|
||||
{
|
||||
if (id != kInvalidUniqueId)
|
||||
{
|
||||
x394_ = (TCastToPtr<CPatterned>(mgr.ObjectById(id)) ||
|
||||
TCastToPtr<CWallCrawlerSwarm>(mgr.ObjectById(id)) ||
|
||||
CPatterned::CastTo<CThardusRockProjectile>(mgr.ObjectById(id)) ||
|
||||
TCastToPtr<CScriptGunTurret>(mgr.ObjectById(id)));
|
||||
x394_orbitingEnemy = (TCastToPtr<CPatterned>(mgr.ObjectById(id)) ||
|
||||
TCastToPtr<CWallCrawlerSwarm>(mgr.ObjectById(id)) ||
|
||||
CPatterned::CastTo<CThardusRockProjectile>(mgr.ObjectById(id)) ||
|
||||
TCastToPtr<CScriptGunTurret>(mgr.ObjectById(id)));
|
||||
}
|
||||
|
||||
x310_orbitTargetId = id;
|
||||
|
@ -1350,7 +1660,7 @@ void CPlayer::FindOrbitableObjects(const rstl::reserved_vector<TUniqueId, 1024>&
|
|||
{
|
||||
if (GetUniqueId() == act->GetUniqueId())
|
||||
continue;
|
||||
if (ValidateOrbitTargetId(act->GetUniqueId(), mgr))
|
||||
if (ValidateOrbitTargetId(act->GetUniqueId(), mgr) != EOrbitObjectType::Zero)
|
||||
continue;
|
||||
zeus::CVector3f orbitPos = act->GetOrbitPosition(mgr);
|
||||
zeus::CVector3f screenPos = fpCam->ConvertToScreenSpace(orbitPos);
|
||||
|
@ -1471,7 +1781,7 @@ void CPlayer::ActivateOrbitSource(CStateManager& mgr)
|
|||
SetOrbitRequest(EPlayerOrbitRequest::Six, mgr);
|
||||
break;
|
||||
case 2:
|
||||
if (x394_)
|
||||
if (x394_orbitingEnemy)
|
||||
OrbitPoint(EPlayerOrbitType::One, mgr);
|
||||
else
|
||||
OrbitCarcass(mgr);
|
||||
|
@ -1489,9 +1799,15 @@ float CPlayer::GetOrbitMaxLockDistance(CStateManager& mgr) const { return 0.f; }
|
|||
|
||||
float CPlayer::GetOrbitMaxTargetDistance(CStateManager& mgr) const { return 0.f; }
|
||||
|
||||
bool CPlayer::ValidateOrbitTargetId(TUniqueId, CStateManager& mgr) const { return false; }
|
||||
CPlayer::EOrbitObjectType CPlayer::ValidateOrbitTargetId(TUniqueId, CStateManager& mgr) const
|
||||
{
|
||||
return EOrbitObjectType::Zero;
|
||||
}
|
||||
|
||||
bool CPlayer::ValidateCurrentOrbitTargetId(CStateManager& mgr) { return false; }
|
||||
CPlayer::EOrbitObjectType CPlayer::ValidateCurrentOrbitTargetId(CStateManager& mgr)
|
||||
{
|
||||
return EOrbitObjectType::Zero;
|
||||
}
|
||||
|
||||
bool CPlayer::ValidateOrbitTargetIdAndPointer(TUniqueId, CStateManager& mgr) const { return false; }
|
||||
|
||||
|
@ -1779,7 +2095,7 @@ bool CPlayer::CheckSubmerged() const
|
|||
|
||||
void CPlayer::UpdateSubmerged(CStateManager& mgr)
|
||||
{
|
||||
x82c_ = false;
|
||||
x82c_inLava = false;
|
||||
x828_waterLevelOnPlayer = 0.f;
|
||||
if (xe6_24_fluidCounter)
|
||||
{
|
||||
|
@ -1788,7 +2104,7 @@ void CPlayer::UpdateSubmerged(CStateManager& mgr)
|
|||
x828_waterLevelOnPlayer =
|
||||
-(zeus::CVector3f::skUp.dot(x34_transform.origin) - water->GetTriggerBoundsWR().max.z);
|
||||
CFluidPlane::EFluidType fluidType = water->GetFluidPlane().GetFluidType();
|
||||
x82c_ = (fluidType == CFluidPlane::EFluidType::Two || fluidType == CFluidPlane::EFluidType::Five);
|
||||
x82c_inLava = (fluidType == CFluidPlane::EFluidType::Two || fluidType == CFluidPlane::EFluidType::Five);
|
||||
CheckSubmerged();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,7 +41,8 @@ public:
|
|||
enum class EPlayerOrbitType
|
||||
{
|
||||
Zero,
|
||||
One
|
||||
One,
|
||||
Two
|
||||
};
|
||||
|
||||
enum class EPlayerOrbitState
|
||||
|
@ -70,6 +71,17 @@ public:
|
|||
Eleven
|
||||
};
|
||||
|
||||
enum class EOrbitObjectType
|
||||
{
|
||||
Zero,
|
||||
One,
|
||||
Two,
|
||||
Three,
|
||||
Four,
|
||||
Five,
|
||||
Six
|
||||
};
|
||||
|
||||
enum class EPlayerZoneInfo
|
||||
{
|
||||
Zero,
|
||||
|
@ -121,6 +133,31 @@ public:
|
|||
SnakeWeed
|
||||
};
|
||||
|
||||
enum class EFootstepSfx
|
||||
{
|
||||
None,
|
||||
Left,
|
||||
Right
|
||||
};
|
||||
|
||||
enum class EGrappleState
|
||||
{
|
||||
Zero,
|
||||
One,
|
||||
Two,
|
||||
Three,
|
||||
Four,
|
||||
Five
|
||||
};
|
||||
|
||||
enum class EGunHolsterState
|
||||
{
|
||||
Holstered,
|
||||
Drawing,
|
||||
Drawn,
|
||||
Holstering
|
||||
};
|
||||
|
||||
private:
|
||||
struct CVisorSteam
|
||||
{
|
||||
|
@ -170,14 +207,14 @@ private:
|
|||
TUniqueId x26c_ = kInvalidUniqueId;
|
||||
float x270_ = 0.f;
|
||||
CPlayerEnergyDrain x274_energyDrain = CPlayerEnergyDrain(4);
|
||||
float x288_ = 0.f;
|
||||
float x288_startingJumpTimeout = 0.f;
|
||||
float x28c_sjTimer = 0.f;
|
||||
float x290_ = 0.f;
|
||||
float x294_ = 0.f;
|
||||
u32 x298_ = 0;
|
||||
float x29c_ = 0.f;
|
||||
float x294_jumpCameraPitchTimer = 0.f;
|
||||
u32 x298_jumpPresses = 0;
|
||||
float x29c_spaceJumpCameraPitchTimer = 0.f;
|
||||
float x2a0_ = 0.f;
|
||||
u8 x2a4_ = 0;
|
||||
bool x2a4_cancelCameraPitch = false;
|
||||
float x2a8_ = 1000.f;
|
||||
EPlayerMovementSurface x2ac_movementSurface = EPlayerMovementSurface::Normal;
|
||||
u32 x2b0_ = 2;
|
||||
|
@ -196,7 +233,7 @@ private:
|
|||
TUniqueId x310_orbitTargetId = kInvalidUniqueId;
|
||||
zeus::CVector3f x314_orbitPoint;
|
||||
zeus::CVector3f x320_orbitVector;
|
||||
float x32c_ = 0.f;
|
||||
float x32c_orbitDistance = 0.f;
|
||||
EPlayerZoneInfo x330_orbitZone = EPlayerZoneInfo::Zero;
|
||||
EPlayerZoneType x334_orbitType = EPlayerZoneType::Ellipse;
|
||||
u32 x338_ = 1;
|
||||
|
@ -207,36 +244,34 @@ private:
|
|||
std::vector<TUniqueId> x364_offScreenOrbitObjects;
|
||||
bool x374_ = false;
|
||||
float x378_ = 0.f;
|
||||
u8 x37c_ = 0;
|
||||
bool x37c_ = false;
|
||||
float x380_ = 0.f;
|
||||
float x384_ = 0.f;
|
||||
float x388_ = 0.f;
|
||||
bool x38c_ = false;
|
||||
u32 x390_orbitSource = 2;
|
||||
u8 x394_ = 0;
|
||||
bool x394_orbitingEnemy = false;
|
||||
float x398_ = 1.5f;
|
||||
u8 x39c_ = 0;
|
||||
bool x39c_ = false;
|
||||
float x3a0_ = 0.5f;
|
||||
float x3a4_ = 0.449f;
|
||||
EPlayerScanState x3a8_scanState = EPlayerScanState::NotScanning;
|
||||
float x3ac_scanningTime = 0.f;
|
||||
float x3b0_ = 0.f;
|
||||
TUniqueId x3b4_scanningObject = kInvalidUniqueId;
|
||||
u32 x3b8_ = 0;
|
||||
float x3bc_ = 0.f;
|
||||
float x3c0_ = 1.0f;
|
||||
float x3c4_ = 0.f;
|
||||
float x3c8_ = 0.f;
|
||||
EGrappleState x3b8_grappleState = EGrappleState::Zero;
|
||||
float x3bc_grappleSwingTimer = 0.f;
|
||||
zeus::CVector3f x3c0_grappleSwingAxis = zeus::CVector3f::skRight;
|
||||
float x3cc_ = 0.f;
|
||||
float x3d0_ = 0.f;
|
||||
float x3d4_ = 0.f;
|
||||
float x3d8_ = 0.f;
|
||||
bool x3dc_inFreeLook = 0;
|
||||
bool x3dd_ = 0;
|
||||
bool x3de_lookControlHeld = 0;
|
||||
float x3d8_grappleJumpTimeout = 0.f;
|
||||
bool x3dc_inFreeLook = false;
|
||||
bool x3dd_freeLookPitchAngleCalculated = false;
|
||||
bool x3de_lookControlHeld = false;
|
||||
float x3e4_ = 0.f;
|
||||
float x3e8_ = 0.f;
|
||||
float x3ec_ = 0.f;
|
||||
float x3ec_freeLookPitchAngle = 0.f;
|
||||
float x3f0_ = 0.f;
|
||||
TUniqueId x3f4_aimTarget = kInvalidUniqueId;
|
||||
zeus::CVector3f x3f8_targetAimPosition = zeus::CVector3f::skZero;
|
||||
|
@ -245,7 +280,7 @@ private:
|
|||
float x48c_ = 0.f;
|
||||
std::unique_ptr<CPlayerGun> x490_gun;
|
||||
float x494_mapAlpha = 1.f;
|
||||
u32 x498_ = 2;
|
||||
EGunHolsterState x498_gunHolsterState = EGunHolsterState::Drawn;
|
||||
float x49c_gunNotFiringTimeout;
|
||||
std::unique_ptr<CFailsafeTest> x4a0_failsafeTest;
|
||||
u32 x4a4_ = 0;
|
||||
|
@ -278,9 +313,9 @@ private:
|
|||
float x748_ = 0.f;
|
||||
float x74c_visorStaticAlpha = 1.f;
|
||||
float x750_frozenTimeout = 0.f;
|
||||
u32 x754_iceBreakPresses = 0;
|
||||
float x758_ = 0.f;
|
||||
u32 x75c_ = 0;
|
||||
s32 x754_iceBreakJumps = 0;
|
||||
float x758_frozenTimeoutBias = 0.f;
|
||||
s32 x75c_additionalIceBreakJumps = 0;
|
||||
bool x760_controlsFrozen = false;
|
||||
float x764_controlsFrozenTimeout = 0.f;
|
||||
std::unique_ptr<CMorphBall> x768_morphball;
|
||||
|
@ -292,18 +327,18 @@ private:
|
|||
int x780_samusVoicePriority = 0;
|
||||
float x784_ = 0.f;
|
||||
u16 x788_damageLoopSfxId = 0;
|
||||
float x78c_ = 0.f;
|
||||
u32 x790_ = 0;
|
||||
float x78c_footstepSfxTimer = 0.f;
|
||||
EFootstepSfx x790_footstepSfxSel = EFootstepSfx::None;
|
||||
zeus::CVector3f x794_;
|
||||
CVisorSteam x7a0_visorSteam = CVisorSteam(0.f, 0.f, 0.f, -1);
|
||||
ResId x7cc_ = -1;
|
||||
CVisorSteam x7a0_visorSteam = CVisorSteam(0.f, 0.f, 0.f, kInvalidResId);
|
||||
ResId x7cc_ = kInvalidResId;
|
||||
CAnimRes x7d0_animRes;
|
||||
CPlayerState::EBeamId x7ec_beam = CPlayerState::EBeamId::Power;
|
||||
std::unique_ptr<CModelData> x7f0_ballTransitionBeamModel;
|
||||
zeus::CTransform x7f4_;
|
||||
float x824_ = 0.f;
|
||||
float x828_waterLevelOnPlayer = 0.f;
|
||||
bool x82c_ = false;
|
||||
bool x82c_inLava = false;
|
||||
TUniqueId x82e_ridingPlatform = kInvalidUniqueId;
|
||||
TUniqueId x830_ = kInvalidUniqueId;
|
||||
u32 x834_ = 1000;
|
||||
|
@ -357,8 +392,8 @@ private:
|
|||
float x9fc_ = 0.f;
|
||||
TUniqueId xa00_ = kInvalidUniqueId;
|
||||
float xa04_ = 0.f;
|
||||
ResId xa08_steamTextureId = -1;
|
||||
ResId xa0c_;
|
||||
ResId xa08_steamTextureId = kInvalidResId;
|
||||
ResId xa0c_iceTextureId;
|
||||
u32 xa10_phazonCounter = 0;
|
||||
float xa14_ = 0.f;
|
||||
float xa18_ = 0.f;
|
||||
|
@ -428,6 +463,7 @@ public:
|
|||
void CalculatePlayerControlDirection(CStateManager& mgr);
|
||||
void CalculatePlayerMovementDirection(float dt);
|
||||
void Stop(CStateManager& stateMgr);
|
||||
void Freeze(CStateManager& stateMgr, ResId steamTxtr, u16 sfx, ResId iceTxtr);
|
||||
bool GetFrozenState() const;
|
||||
void UpdateFrozenState(const CFinalInput& input, CStateManager& mgr);
|
||||
void Think(float, CStateManager&);
|
||||
|
@ -444,7 +480,7 @@ public:
|
|||
void ForceGunOrientation(const zeus::CTransform&, CStateManager& mgr);
|
||||
void UpdateCameraState(CStateManager& mgr);
|
||||
void UpdateDebugCamera(CStateManager& mgr);
|
||||
void UpdateCameraTimers(const CFinalInput& input);
|
||||
void UpdateCameraTimers(float dt, const CFinalInput& input);
|
||||
void UpdateMorphBallState(const CFinalInput&, CStateManager& mgr);
|
||||
CFirstPersonCamera& GetFirstPersonCamera(CStateManager& mgr);
|
||||
void UpdateGunTransform(const zeus::CVector3f&, float, CStateManager& mgr, bool);
|
||||
|
@ -463,6 +499,7 @@ public:
|
|||
void BeginGrapple(zeus::CVector3f&, CStateManager& mgr);
|
||||
void BreakGrapple(EPlayerOrbitRequest, CStateManager& mgr);
|
||||
void SetOrbitRequest(EPlayerOrbitRequest req, CStateManager& mgr);
|
||||
bool InGrappleJumpCooldown() const;
|
||||
void PreventFallingCameraPitch();
|
||||
void OrbitCarcass(CStateManager&);
|
||||
void OrbitPoint(EPlayerOrbitType, CStateManager& mgr);
|
||||
|
@ -501,8 +538,8 @@ public:
|
|||
void UpdateOrbitTarget(CStateManager& mgr);
|
||||
float GetOrbitMaxLockDistance(CStateManager& mgr) const;
|
||||
float GetOrbitMaxTargetDistance(CStateManager& mgr) const;
|
||||
bool ValidateOrbitTargetId(TUniqueId, CStateManager& mgr) const;
|
||||
bool ValidateCurrentOrbitTargetId(CStateManager& mgr);
|
||||
EOrbitObjectType ValidateOrbitTargetId(TUniqueId uid, CStateManager& mgr) const;
|
||||
EOrbitObjectType ValidateCurrentOrbitTargetId(CStateManager& mgr);
|
||||
bool ValidateOrbitTargetIdAndPointer(TUniqueId, CStateManager& mgr) const;
|
||||
zeus::CVector3f GetBallPosition() const;
|
||||
zeus::CVector3f GetEyePosition() const;
|
||||
|
@ -536,6 +573,7 @@ public:
|
|||
float GetScanningTime() const { return x3ac_scanningTime; }
|
||||
TUniqueId GetOrbitTargetId() const { return x310_orbitTargetId; }
|
||||
TUniqueId GetScanningObjectId() const { return x3b4_scanningObject; }
|
||||
EGrappleState GetGrappleState() const { return x3b8_grappleState; }
|
||||
bool IsNewScanScanning() const { return x9c6_30_newScanScanning; }
|
||||
float GetThreatOverride() const { return xa1c_threatOverride; }
|
||||
bool IsOverrideRadarRadius() const { return x9c6_31_overrideRadarRadius; }
|
||||
|
|
2
amuse
2
amuse
|
@ -1 +1 @@
|
|||
Subproject commit 0bace131e877b24f29924b7d6887100e81461b48
|
||||
Subproject commit aef2b2a7074e0947771d92ac52069841dad69b20
|
2
hecl
2
hecl
|
@ -1 +1 @@
|
|||
Subproject commit 8a6ffc988577d52774e1a377a793c069517cf9a7
|
||||
Subproject commit d4f08d45d929733e7c10fa3993bf915aa54c074f
|
Loading…
Reference in New Issue