2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-10 15:47:43 +00:00

Work on CParasite

This commit is contained in:
Jack Andersen
2018-11-12 23:20:11 -10:00
parent bf3636a16e
commit 660e7cd239
17 changed files with 755 additions and 358 deletions

View File

@@ -18,36 +18,46 @@ public:
Seedling = 4
};
protected:
CCollisionSurface x568_ = CCollisionSurface(zeus::CVector3f(),
CCollisionSurface x568_alignNormal = CCollisionSurface(zeus::CVector3f(),
zeus::CVector3f::skForward,
zeus::CVector3f::skRight, -1);
CCollidableSphere x590_colSphere;
float x5b0_collisionCloseMargin;
float x5b4_;
float x5b8_ = 0.f;
float x5bc_ = 0.f;
float x5b4_alignAngVel;
float x5b8_tumbleAngle = 0.f;
float x5bc_patrolPauseRemTime = 0.f;
float x5c0_advanceWpRadius;
float x5c4_;
float x5c4_playerObstructionMinDist;
float x5c8_bendingHackWeight = 0.f;
s32 x5cc_bendingHackAnim;
EWalkerType x5d0_walkerType;
s16 x5d4_ = 0;
bool x5d6_24_ : 1;
bool x5d6_25_ : 1;
bool x5d6_26_ : 1;
bool x5d6_27_ : 1;
s16 x5d4_thinkCounter = 0;
bool x5d6_24_alignToFloor : 1;
bool x5d6_25_hasAlignSurface : 1;
bool x5d6_26_playerObstructed : 1;
bool x5d6_27_disableMove : 1;
bool x5d6_28_addBendingWeight : 1;
bool x5d6_29_applyBendingHack : 1;
static zeus::CVector3f ProjectVectorToPlane(const zeus::CVector3f& v0, const zeus::CVector3f& v1)
static zeus::CVector3f ProjectVectorToPlane(const zeus::CVector3f& pt, const zeus::CVector3f& plane)
{
return v0 - v1 * v0.dot(v1);
return pt - plane * pt.dot(plane);
}
static zeus::CVector3f ProjectPointToPlane(const zeus::CVector3f& p0, const zeus::CVector3f& p1,
const zeus::CVector3f& plane)
{
return p0 - (p0 - p1).dot(plane) * plane;
}
void OrientToSurfaceNormal(const zeus::CVector3f& normal, float clampAngle);
static bool PointOnSurface(const CCollisionSurface& surf, const zeus::CVector3f& point);
void AlignToFloor(CStateManager&, float, const zeus::CVector3f&, float);
void GotoNextWaypoint(CStateManager& mgr);
public:
CWallWalker(ECharacter, TUniqueId, std::string_view, EFlavorType, const CEntityInfo&, const zeus::CTransform&,
CModelData&&, const CPatternedInfo&, EMovementType, EColliderType, EBodyType,
const CActorParameters&, float, float, EKnockBackVariant, float, EWalkerType wType, float, bool);
CWallWalker(ECharacter chr, TUniqueId uid, std::string_view name, EFlavorType flavType,
const CEntityInfo& eInfo, const zeus::CTransform& xf,
CModelData&& mData, const CPatternedInfo& pInfo, EMovementType mType,
EColliderType colType, EBodyType bType, const CActorParameters& aParms,
float collisionCloseMargin, float alignAngVel, EKnockBackVariant kbVariant,
float advanceWpRadius, EWalkerType wType, float playerObstructionMinDist, bool disableMove);
void PreThink(float, CStateManager&);
void Think(float, CStateManager&);