#pragma once #include "../../DNACommon/Tweaks/ITweakBall.hpp" #include "zeus/CVector3f.hpp" namespace DataSpec::DNAMP1 { struct CTweakBall final : public ITweakBall { AT_DECL_EXPLICIT_DNA_YAML Value x4_maxTranslationAcceleration[8]; Value x24_translationFriction[8]; Value x44_translationMaxSpeed[8]; Value x64_; Value x68_; Value x6c_; Value x70_; Value x74_ballCameraAnglePerSecond; Value x78_ballCameraOffset; Value x84_ballCameraMinSpeedDistance; Value x88_ballCameraMaxSpeedDistance; Value x8c_ballCameraBackwardsDistance; Value x90_; Value x94_ballCameraSpringConstant; Value x98_ballCameraSpringMax; Value x9c_ballCameraSpringTardis; Value xa0_ballCameraCentroidSpringConstant; Value xa4_ballCameraCentroidSpringMax; Value xa8_ballCameraCentroidSpringTardis; Value xac_ballCameraCentroidDistanceSpringConstant; Value xb0_ballCameraCentroidDistanceSpringMax; Value xb4_ballCameraCentroidDistanceSpringTardis; Value xb8_ballCameraLookAtSpringConstant; Value xbc_ballCameraLookAtSpringMax; Value xc0_ballCameraLookAtSpringTardis; Value xc4_ballForwardBrakingAcceleration[8]; Value xe4_ballGravity; Value xe8_ballWaterGravity; float xec_ = 10000.f; float xf0_ = 1000.f; float xf4_ = 40000.f; float xf8_ = 40000.f; float xfc_ = 40000.f; float x100_ = 40000.f; float x104_ = 40000.f; float x108_ = 40000.f; float x10c_ = 10000.f; float x110_ = 1000.f; float x114_ = 40000.f; float x118_ = 40000.f; float x11c_ = 40000.f; float x120_ = 40000.f; float x124_ = 40000.f; float x128_ = 40000.f; float x12c_ballSlipFactor[8] = {10000.f, 10000.f, 1000.f, 10000.f, 2000.f, 2000.f, 2000.f, 2000.f}; Value x14c_; Value x150_; Value x158_; Value x154_; Value x15c_; Value x160_; Value x164_; Value x168_; Value x16c_; Value x170_conservativeDoorCamDistance; Value x174_; Value x178_ballCameraChaseElevation; Value x17c_ballCameraChaseDampenAngle; Value x180_ballCameraChaseDistance; Value x184_ballCameraChaseYawSpeed; Value x188_ballCameraChaseAnglePerSecond; Value x18c_ballCameraChaseLookAtOffset; Value x198_ballCameraChaseSpringConstant; Value x19c_ballCameraChaseSpringMax; Value x1a0_ballCameraChaseSpringTardis; Value x1a4_ballCameraBoostElevation; Value x1a8_ballCameraBoostDampenAngle; Value x1ac_ballCameraBoostDistance; Value x1b0_ballCameraBoostYawSpeed; Value x1b4_ballCameraBoostAnglePerSecond; Value x1b8_ballCameraBoostLookAtOffset; Value x1c4_ballCameraBoostSpringConstant; Value x1c8_ballCameraBoostSpringMax; Value x1cc_ballCameraBoostSpringTardis; Value x1d0_ballCameraControlDistance; Value x1d4_; Value x1d8_; Value x1dc_minimumAlignmentSpeed; Value x1e0_tireness; Value x1ec_maxLeanAngle; Value x1f0_tireToMarbleThresholdSpeed; Value x1f4_marbleToTireThresholdSpeed; Value x1f8_forceToLeanGain; Value x1fc_leanTrackingGain; Value x1e4_leftStickDivisor; Value x1e8_rightStickDivisor; Value x200_; Value x204_ballTouchRadius; float x208_; Value x20c_boostBallDrainTime; Value x218_boostBallMinChargeTime; Value x21c_boostBallMinRelativeSpeedForDamage; Value x220_boostBallChargeTime0; Value x224_boostBallChargeTime1; float x228_boostBallChargeTime2; Value x210_boostBallMaxChargeTime; Value x22c_boostBallIncrementalSpeed0; Value x230_boostBallIncrementalSpeed1; Value x234_boostBallIncrementalSpeed2; CTweakBall() = default; CTweakBall(athena::io::IStreamReader& r) { this->read(r); x6c_ = -x6c_; x70_ = -x70_; x74_ballCameraAnglePerSecond = zeus::degToRad(x74_ballCameraAnglePerSecond); x90_ = zeus::degToRad(x90_); xe4_ballGravity = -xe4_ballGravity; xe8_ballWaterGravity = -xe8_ballWaterGravity; x15c_ = zeus::degToRad(x15c_); x16c_ = zeus::degToRad(x16c_); x174_ = zeus::degToRad(x174_); x17c_ballCameraChaseDampenAngle = zeus::degToRad(x17c_ballCameraChaseDampenAngle); x184_ballCameraChaseYawSpeed = zeus::degToRad(x184_ballCameraChaseYawSpeed); x188_ballCameraChaseAnglePerSecond = zeus::degToRad(x188_ballCameraChaseAnglePerSecond); x1a8_ballCameraBoostDampenAngle = zeus::degToRad(x1a8_ballCameraBoostDampenAngle); x1b0_ballCameraBoostYawSpeed = zeus::degToRad(x1b0_ballCameraBoostYawSpeed); x1b4_ballCameraBoostAnglePerSecond = zeus::degToRad(x1b4_ballCameraBoostAnglePerSecond); x1ec_maxLeanAngle = zeus::degToRad(x1ec_maxLeanAngle); } 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; } const zeus::CVector3f& GetBallCameraOffset() const { return x78_ballCameraOffset; } 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 { return xac_ballCameraCentroidDistanceSpringConstant; } float GetBallCameraCentroidDistanceSpringMax() const { return xb0_ballCameraCentroidDistanceSpringMax; } float GetBallCameraCentroidDistanceSpringTardis() const { return xb4_ballCameraCentroidDistanceSpringTardis; } float GetBallCameraLookAtSpringConstant() const { return xb8_ballCameraLookAtSpringConstant; } float GetBallCameraLookAtSpringMax() const { return xbc_ballCameraLookAtSpringMax; } float GetBallCameraLookAtSpringTardis() const { return xc0_ballCameraLookAtSpringTardis; } float GetBallForwardBrakingAcceleration(int s) const { return xc4_ballForwardBrakingAcceleration[s]; } 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; } const zeus::CVector3f& GetBallCameraChaseLookAtOffset() const { return x18c_ballCameraChaseLookAtOffset; } 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; } const zeus::CVector3f& GetBallCameraBoostLookAtOffset() const { return x1b8_ballCameraBoostLookAtOffset; } 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 { return x21c_boostBallMinRelativeSpeedForDamage; } float GetBoostBallChargeTimeTable(int i) const { switch (i) { default: case 0: return x220_boostBallChargeTime0; case 1: return x224_boostBallChargeTime1; case 2: return x228_boostBallChargeTime2; } } float GetBoostBallIncrementalSpeedTable(int i) const { switch (i) { default: case 0: return x22c_boostBallIncrementalSpeed0; case 1: return x230_boostBallIncrementalSpeed1; case 2: return x234_boostBallIncrementalSpeed2; } } }; } // namespace DataSpec::DNAMP1