mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-09 23:07:43 +00:00
New code style refactor
This commit is contained in:
@@ -4,65 +4,54 @@
|
||||
#include "Collision/CCollisionSurface.hpp"
|
||||
#include "Collision/CCollidableSphere.hpp"
|
||||
|
||||
namespace urde
|
||||
{
|
||||
class CWallWalker : public CPatterned
|
||||
{
|
||||
namespace urde {
|
||||
class CWallWalker : public CPatterned {
|
||||
public:
|
||||
enum class EWalkerType
|
||||
{
|
||||
Parasite = 0,
|
||||
Oculus = 1,
|
||||
Geemer = 2,
|
||||
IceZoomer = 3,
|
||||
Seedling = 4
|
||||
};
|
||||
protected:
|
||||
CCollisionSurface x568_alignNormal = CCollisionSurface(zeus::CVector3f(),
|
||||
zeus::CVector3f::skForward,
|
||||
zeus::CVector3f::skRight, -1);
|
||||
CCollidableSphere x590_colSphere;
|
||||
float x5b0_collisionCloseMargin;
|
||||
float x5b4_alignAngVel;
|
||||
float x5b8_tumbleAngle = 0.f;
|
||||
float x5bc_patrolPauseRemTime = 0.f;
|
||||
float x5c0_advanceWpRadius;
|
||||
float x5c4_playerObstructionMinDist;
|
||||
float x5c8_bendingHackWeight = 0.f;
|
||||
s32 x5cc_bendingHackAnim;
|
||||
EWalkerType x5d0_walkerType;
|
||||
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& pt, const zeus::CVector3f& plane)
|
||||
{
|
||||
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 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);
|
||||
enum class EWalkerType { Parasite = 0, Oculus = 1, Geemer = 2, IceZoomer = 3, Seedling = 4 };
|
||||
|
||||
void PreThink(float, CStateManager&);
|
||||
void Think(float, CStateManager&);
|
||||
void Render(const CStateManager&) const;
|
||||
const CCollisionPrimitive* GetCollisionPrimitive() const { return &x590_colSphere; }
|
||||
void UpdateWPDestination(CStateManager&);
|
||||
protected:
|
||||
CCollisionSurface x568_alignNormal =
|
||||
CCollisionSurface(zeus::CVector3f(), zeus::CVector3f::skForward, zeus::CVector3f::skRight, -1);
|
||||
CCollidableSphere x590_colSphere;
|
||||
float x5b0_collisionCloseMargin;
|
||||
float x5b4_alignAngVel;
|
||||
float x5b8_tumbleAngle = 0.f;
|
||||
float x5bc_patrolPauseRemTime = 0.f;
|
||||
float x5c0_advanceWpRadius;
|
||||
float x5c4_playerObstructionMinDist;
|
||||
float x5c8_bendingHackWeight = 0.f;
|
||||
s32 x5cc_bendingHackAnim;
|
||||
EWalkerType x5d0_walkerType;
|
||||
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& pt, const zeus::CVector3f& plane) {
|
||||
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 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&);
|
||||
void Render(const CStateManager&) const;
|
||||
const CCollisionPrimitive* GetCollisionPrimitive() const { return &x590_colSphere; }
|
||||
void UpdateWPDestination(CStateManager&);
|
||||
};
|
||||
}
|
||||
} // namespace urde
|
||||
|
||||
Reference in New Issue
Block a user