2022-10-09 05:13:17 +00:00
|
|
|
#ifndef _CTWEAKBALL
|
|
|
|
#define _CTWEAKBALL
|
2022-09-21 05:18:07 +00:00
|
|
|
|
|
|
|
#include "types.h"
|
|
|
|
|
|
|
|
#include "MetroidPrime/Tweaks/ITweakObject.hpp"
|
|
|
|
|
2022-11-10 21:16:05 +00:00
|
|
|
#include "Kyoto/TOneStatic.hpp"
|
2022-09-21 05:18:07 +00:00
|
|
|
#include "Kyoto/Math/CVector3f.hpp"
|
|
|
|
|
|
|
|
#include "rstl/string.hpp"
|
|
|
|
|
2022-11-10 21:16:05 +00:00
|
|
|
class CTweakBall;
|
|
|
|
|
|
|
|
class CTweakBall : public ITweakObject, public TOneStatic< CTweakBall > {
|
2022-09-21 05:18:07 +00:00
|
|
|
public:
|
2023-02-06 17:01:01 +00:00
|
|
|
~CTweakBall() override;
|
2022-11-10 21:16:05 +00:00
|
|
|
CTweakBall(CInputStream&);
|
2022-09-21 05:18:07 +00:00
|
|
|
|
2022-10-09 05:37:23 +00:00
|
|
|
float GetMaxBallTranslationAcceleration(int s) const { return x4_maxTranslationAcceleration[s]; }
|
|
|
|
float GetBallTranslationFriction(int s) const { return x24_translationFriction[s]; }
|
|
|
|
float GetBallTranslationMaxSpeed(int s) const { return x44_translationMaxSpeed[s]; }
|
|
|
|
float GetBallCameraElevation() const { return 2.736f; }
|
|
|
|
float GetBallCameraAnglePerSecond() const { return x74_ballCameraAnglePerSecond; }
|
2022-09-21 05:18:07 +00:00
|
|
|
const CVector3f& GetBallCameraOffset() const { return x78_ballCameraOffset; }
|
2022-10-09 05:37:23 +00:00
|
|
|
float GetBallCameraMinSpeedDistance() const { return x84_ballCameraMinSpeedDistance; }
|
|
|
|
float GetBallCameraMaxSpeedDistance() const { return x88_ballCameraMaxSpeedDistance; }
|
|
|
|
float GetBallCameraBackwardsDistance() const { return x8c_ballCameraBackwardsDistance; }
|
|
|
|
float GetBallCameraSpringConstant() const { return x94_ballCameraSpringConstant; }
|
|
|
|
float GetBallCameraSpringMax() const { return x98_ballCameraSpringMax; }
|
|
|
|
float GetBallCameraSpringTardis() const { return x9c_ballCameraSpringTardis; }
|
|
|
|
float GetBallCameraCentroidSpringConstant() const { return xa0_ballCameraCentroidSpringConstant; }
|
|
|
|
float GetBallCameraCentroidSpringMax() const { return xa4_ballCameraCentroidSpringMax; }
|
|
|
|
float GetBallCameraCentroidSpringTardis() const { return xa8_ballCameraCentroidSpringTardis; }
|
|
|
|
float GetBallCameraCentroidDistanceSpringConstant() const {
|
2022-09-21 05:18:07 +00:00
|
|
|
return xac_ballCameraCentroidDistanceSpringConstant;
|
|
|
|
}
|
2022-10-09 05:37:23 +00:00
|
|
|
float GetBallCameraCentroidDistanceSpringMax() const {
|
2022-09-21 05:18:07 +00:00
|
|
|
return xb0_ballCameraCentroidDistanceSpringMax;
|
|
|
|
}
|
2022-10-09 05:37:23 +00:00
|
|
|
float GetBallCameraCentroidDistanceSpringTardis() const {
|
2022-09-21 05:18:07 +00:00
|
|
|
return xb4_ballCameraCentroidDistanceSpringTardis;
|
|
|
|
}
|
2022-10-09 05:37:23 +00:00
|
|
|
float GetBallCameraLookAtSpringConstant() const { return xb8_ballCameraLookAtSpringConstant; }
|
|
|
|
float GetBallCameraLookAtSpringMax() const { return xbc_ballCameraLookAtSpringMax; }
|
|
|
|
float GetBallCameraLookAtSpringTardis() const { return xc0_ballCameraLookAtSpringTardis; }
|
|
|
|
float GetBallForwardBrakingAcceleration(int s) const {
|
2022-09-21 05:18:07 +00:00
|
|
|
return xc4_ballForwardBrakingAcceleration[s];
|
|
|
|
}
|
2022-10-09 05:37:23 +00:00
|
|
|
float GetBallGravity() const { return xe4_ballGravity; }
|
|
|
|
float GetBallWaterGravity() const { return xe8_ballWaterGravity; }
|
|
|
|
float GetBallSlipFactor(int s) const { return x12c_ballSlipFactor[s]; }
|
|
|
|
float GetConservativeDoorCameraDistance() const { return x170_conservativeDoorCamDistance; }
|
|
|
|
float GetBallCameraChaseElevation() const { return x178_ballCameraChaseElevation; }
|
|
|
|
float GetBallCameraChaseDampenAngle() const { return x17c_ballCameraChaseDampenAngle; }
|
|
|
|
float GetBallCameraChaseDistance() const { return x180_ballCameraChaseDistance; }
|
|
|
|
float GetBallCameraChaseYawSpeed() const { return x184_ballCameraChaseYawSpeed; }
|
|
|
|
float GetBallCameraChaseAnglePerSecond() const { return x188_ballCameraChaseAnglePerSecond; }
|
2022-09-21 05:18:07 +00:00
|
|
|
const CVector3f& GetBallCameraChaseLookAtOffset() const {
|
|
|
|
return x18c_ballCameraChaseLookAtOffset;
|
|
|
|
}
|
2022-10-09 05:37:23 +00:00
|
|
|
float GetBallCameraChaseSpringConstant() const { return x198_ballCameraChaseSpringConstant; }
|
|
|
|
float GetBallCameraChaseSpringMax() const { return x19c_ballCameraChaseSpringMax; }
|
|
|
|
float GetBallCameraChaseSpringTardis() const { return x1a0_ballCameraChaseSpringTardis; }
|
|
|
|
float GetBallCameraBoostElevation() const { return x1a4_ballCameraBoostElevation; }
|
|
|
|
float GetBallCameraBoostDampenAngle() const { return x1a8_ballCameraBoostDampenAngle; }
|
|
|
|
float GetBallCameraBoostDistance() const { return x1ac_ballCameraBoostDistance; }
|
|
|
|
float GetBallCameraBoostYawSpeed() const { return x1b0_ballCameraBoostYawSpeed; }
|
|
|
|
float GetBallCameraBoostAnglePerSecond() const { return x1b4_ballCameraBoostAnglePerSecond; }
|
2022-09-21 05:18:07 +00:00
|
|
|
const CVector3f& GetBallCameraBoostLookAtOffset() const {
|
|
|
|
return x1b8_ballCameraBoostLookAtOffset;
|
|
|
|
}
|
2022-10-09 05:37:23 +00:00
|
|
|
float GetBallCameraBoostSpringConstant() const { return x1c4_ballCameraBoostSpringConstant; }
|
|
|
|
float GetBallCameraBoostSpringMax() const { return x1c8_ballCameraBoostSpringMax; }
|
|
|
|
float GetBallCameraBoostSpringTardis() const { return x1cc_ballCameraBoostSpringTardis; }
|
|
|
|
float GetBallCameraControlDistance() const { return x1d0_ballCameraControlDistance; }
|
|
|
|
float GetMinimumAlignmentSpeed() const { return x1dc_minimumAlignmentSpeed; }
|
|
|
|
float GetTireness() const { return x1e0_tireness; }
|
|
|
|
float GetMaxLeanAngle() const { return x1ec_maxLeanAngle; }
|
|
|
|
float GetTireToMarbleThresholdSpeed() const { return x1f0_tireToMarbleThresholdSpeed; }
|
|
|
|
float GetMarbleToTireThresholdSpeed() const { return x1f4_marbleToTireThresholdSpeed; }
|
|
|
|
float GetForceToLeanGain() const { return x1f8_forceToLeanGain; }
|
|
|
|
float GetLeanTrackingGain() const { return x1fc_leanTrackingGain; }
|
|
|
|
float GetLeftStickDivisor() const { return x1e4_leftStickDivisor; }
|
|
|
|
float GetRightStickDivisor() const { return x1e8_rightStickDivisor; }
|
|
|
|
float GetBallTouchRadius() const { return x204_ballTouchRadius; }
|
|
|
|
float GetBoostBallDrainTime() const { return x20c_boostBallDrainTime; }
|
|
|
|
float GetBoostBallMaxChargeTime() const { return x210_boostBallMaxChargeTime; }
|
|
|
|
float GetBoostBallMinChargeTime() const { return x218_boostBallMinChargeTime; }
|
|
|
|
float GetBoostBallMinRelativeSpeedForDamage() const {
|
2022-09-21 05:18:07 +00:00
|
|
|
return x21c_boostBallMinRelativeSpeedForDamage;
|
|
|
|
}
|
2022-10-09 05:37:23 +00:00
|
|
|
float GetBoostBallChargeTimeTable(int i) const {
|
2022-09-21 05:18:07 +00:00
|
|
|
switch (i) {
|
|
|
|
default:
|
|
|
|
case 0:
|
|
|
|
return x220_boostBallChargeTime0;
|
|
|
|
case 1:
|
|
|
|
return x224_boostBallChargeTime1;
|
|
|
|
case 2:
|
|
|
|
return x228_boostBallChargeTime2;
|
|
|
|
}
|
|
|
|
}
|
2022-10-09 05:37:23 +00:00
|
|
|
float GetBoostBallIncrementalSpeedTable(int i) const {
|
2022-09-21 05:18:07 +00:00
|
|
|
switch (i) {
|
|
|
|
default:
|
|
|
|
case 0:
|
|
|
|
return x22c_boostBallIncrementalSpeed0;
|
|
|
|
case 1:
|
|
|
|
return x230_boostBallIncrementalSpeed1;
|
|
|
|
case 2:
|
|
|
|
return x234_boostBallIncrementalSpeed2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private:
|
2022-10-09 05:37:23 +00:00
|
|
|
float x4_maxTranslationAcceleration[8];
|
|
|
|
float x24_translationFriction[8];
|
|
|
|
float x44_translationMaxSpeed[8];
|
|
|
|
float x64_;
|
|
|
|
float x68_;
|
|
|
|
float x6c_;
|
|
|
|
float x70_;
|
|
|
|
float x74_ballCameraAnglePerSecond;
|
2022-09-21 05:18:07 +00:00
|
|
|
CVector3f x78_ballCameraOffset;
|
2022-10-09 05:37:23 +00:00
|
|
|
float x84_ballCameraMinSpeedDistance;
|
|
|
|
float x88_ballCameraMaxSpeedDistance;
|
|
|
|
float x8c_ballCameraBackwardsDistance;
|
|
|
|
float x90_;
|
|
|
|
float x94_ballCameraSpringConstant;
|
|
|
|
float x98_ballCameraSpringMax;
|
|
|
|
float x9c_ballCameraSpringTardis;
|
|
|
|
float xa0_ballCameraCentroidSpringConstant;
|
|
|
|
float xa4_ballCameraCentroidSpringMax;
|
|
|
|
float xa8_ballCameraCentroidSpringTardis;
|
|
|
|
float xac_ballCameraCentroidDistanceSpringConstant;
|
|
|
|
float xb0_ballCameraCentroidDistanceSpringMax;
|
|
|
|
float xb4_ballCameraCentroidDistanceSpringTardis;
|
|
|
|
float xb8_ballCameraLookAtSpringConstant;
|
|
|
|
float xbc_ballCameraLookAtSpringMax;
|
|
|
|
float xc0_ballCameraLookAtSpringTardis;
|
|
|
|
float xc4_ballForwardBrakingAcceleration[8];
|
|
|
|
float xe4_ballGravity;
|
|
|
|
float xe8_ballWaterGravity;
|
|
|
|
float xec_;
|
|
|
|
float xf0_;
|
|
|
|
float xf4_;
|
|
|
|
float xf8_;
|
|
|
|
float xfc_;
|
|
|
|
float x100_;
|
|
|
|
float x104_;
|
|
|
|
float x108_;
|
|
|
|
float x10c_;
|
|
|
|
float x110_;
|
|
|
|
float x114_;
|
|
|
|
float x118_;
|
|
|
|
float x11c_;
|
|
|
|
float x120_;
|
|
|
|
float x124_;
|
|
|
|
float x128_;
|
|
|
|
float x12c_ballSlipFactor[8];
|
|
|
|
float x14c_;
|
|
|
|
float x150_;
|
|
|
|
float x154_;
|
2022-11-10 21:16:05 +00:00
|
|
|
float x158_;
|
2022-10-09 05:37:23 +00:00
|
|
|
float x15c_;
|
|
|
|
float x160_;
|
|
|
|
float x164_;
|
|
|
|
float x168_;
|
|
|
|
float x16c_;
|
|
|
|
float x170_conservativeDoorCamDistance;
|
|
|
|
float x174_;
|
|
|
|
float x178_ballCameraChaseElevation;
|
|
|
|
float x17c_ballCameraChaseDampenAngle;
|
|
|
|
float x180_ballCameraChaseDistance;
|
|
|
|
float x184_ballCameraChaseYawSpeed;
|
|
|
|
float x188_ballCameraChaseAnglePerSecond;
|
2022-09-21 05:18:07 +00:00
|
|
|
CVector3f x18c_ballCameraChaseLookAtOffset;
|
2022-10-09 05:37:23 +00:00
|
|
|
float x198_ballCameraChaseSpringConstant;
|
|
|
|
float x19c_ballCameraChaseSpringMax;
|
|
|
|
float x1a0_ballCameraChaseSpringTardis;
|
|
|
|
float x1a4_ballCameraBoostElevation;
|
|
|
|
float x1a8_ballCameraBoostDampenAngle;
|
|
|
|
float x1ac_ballCameraBoostDistance;
|
|
|
|
float x1b0_ballCameraBoostYawSpeed;
|
|
|
|
float x1b4_ballCameraBoostAnglePerSecond;
|
2022-09-21 05:18:07 +00:00
|
|
|
CVector3f x1b8_ballCameraBoostLookAtOffset;
|
2022-10-09 05:37:23 +00:00
|
|
|
float x1c4_ballCameraBoostSpringConstant;
|
|
|
|
float x1c8_ballCameraBoostSpringMax;
|
|
|
|
float x1cc_ballCameraBoostSpringTardis;
|
|
|
|
float x1d0_ballCameraControlDistance;
|
|
|
|
float x1d4_;
|
|
|
|
float x1d8_;
|
|
|
|
float x1dc_minimumAlignmentSpeed;
|
|
|
|
float x1e0_tireness;
|
2022-11-10 21:16:05 +00:00
|
|
|
float x1e4_leftStickDivisor;
|
|
|
|
float x1e8_rightStickDivisor;
|
2022-10-09 05:37:23 +00:00
|
|
|
float x1ec_maxLeanAngle;
|
|
|
|
float x1f0_tireToMarbleThresholdSpeed;
|
|
|
|
float x1f4_marbleToTireThresholdSpeed;
|
|
|
|
float x1f8_forceToLeanGain;
|
|
|
|
float x1fc_leanTrackingGain;
|
|
|
|
float x200_;
|
|
|
|
float x204_ballTouchRadius;
|
|
|
|
float x208_;
|
|
|
|
float x20c_boostBallDrainTime;
|
2022-11-10 21:16:05 +00:00
|
|
|
float x210_boostBallMaxChargeTime;
|
|
|
|
float x214_;
|
2022-10-09 05:37:23 +00:00
|
|
|
float x218_boostBallMinChargeTime;
|
|
|
|
float x21c_boostBallMinRelativeSpeedForDamage;
|
|
|
|
float x220_boostBallChargeTime0;
|
|
|
|
float x224_boostBallChargeTime1;
|
|
|
|
float x228_boostBallChargeTime2;
|
|
|
|
float x22c_boostBallIncrementalSpeed0;
|
|
|
|
float x230_boostBallIncrementalSpeed1;
|
|
|
|
float x234_boostBallIncrementalSpeed2;
|
2022-09-21 05:18:07 +00:00
|
|
|
};
|
2022-11-10 21:16:05 +00:00
|
|
|
CHECK_SIZEOF(CTweakBall, 0x238)
|
2022-09-21 05:18:07 +00:00
|
|
|
|
|
|
|
extern CTweakBall* gpTweakBall;
|
|
|
|
|
2022-10-09 05:13:17 +00:00
|
|
|
#endif // _CTWEAKBALL
|