2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 21:07:42 +00:00

Finish CGroundMovement

This commit is contained in:
Jack Andersen
2017-06-20 21:24:26 -10:00
parent d4a97861dc
commit 59771cf630
5 changed files with 367 additions and 99 deletions

View File

@@ -17,32 +17,32 @@ class CGroundMovement
public:
struct SMovementOptions
{
bool x0_;
float x4_;
float x8_;
float xc_;
float x10_;
float x14_;
bool x18_;
bool x19_;
bool x1a_;
u32 x1c_;
float x20_;
float x24_;
float x28_;
float x2c_;
float x30_;
float x34_;
float x38_;
std::experimental::optional<zeus::CVector3f> x3c_;
bool x0_setWaterLandingForce;
float x4_waterLandingForceCoefficient;
float x8_minimumWaterLandingForce;
float xc_anyZThreshold;
float x10_downwardZThreshold;
float x14_waterLandingVelocityReduction;
bool x18_dampForceAndMomentum;
bool x19_alwaysClip;
bool x1a_disableClipForFloorOnly;
u32 x1c_maxCollisionCycles;
float x20_minimumTranslationDelta;
float x24_dampedNormalCoefficient;
float x28_dampedDeltaCoefficient;
float x2c_floorElasticForce;
float x30_wallElasticConstant;
float x34_wallElasticLinear;
float x38_maxPositiveVerticalVelocity;
std::experimental::optional<zeus::CVector3f> x3c_floorPlaneNormal;
};
struct SMoveObjectResult
{
std::experimental::optional<TUniqueId> x0_id;
std::experimental::optional<CCollisionInfo> x8_collision;
u32 x6c_;
float x70_;
u32 x6c_processedCollisions;
float x70_processedDt;
};
static void CheckFalling(CPhysicsActor& actor, CStateManager& mgr, float);
@@ -57,12 +57,12 @@ public:
static void MoveGroundColliderXY(CAreaCollisionCache& cache, CStateManager& mgr, CPhysicsActor& actor,
const CMaterialFilter& filter, rstl::reserved_vector<TUniqueId, 1024>& nearList,
float);
static void CollisionDamping(const zeus::CVector3f&, const zeus::CVector3f&, const zeus::CVector3f&,
float, float);
static zeus::CVector3f CollisionDamping(const zeus::CVector3f& a, const zeus::CVector3f& b,
const zeus::CVector3f& c, float d, float e);
static void MoveGroundCollider_New(CStateManager& mgr, CPhysicsActor& actor, float,
const rstl::reserved_vector<TUniqueId, 1024>* nearList);
static void RemoveNormalComponent(const zeus::CVector3f&, const zeus::CVector3f&, const zeus::CVector3f&, float&);
static void RemoveNormalComponent(const zeus::CVector3f&, const zeus::CVector3f&);
static bool RemoveNormalComponent(const zeus::CVector3f&, const zeus::CVector3f&, zeus::CVector3f&, float&);
static bool RemoveNormalComponent(const zeus::CVector3f& a, zeus::CVector3f& b);
static CMaterialList MoveObjectAnalytical(CStateManager& mgr, CPhysicsActor& actor, float,
rstl::reserved_vector<TUniqueId, 1024>& nearList,
CAreaCollisionCache& cache, const SMovementOptions& opts,