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

Finish pathfinding implementations

This commit is contained in:
Jack Andersen
2018-03-02 19:49:13 -10:00
parent 2018ef17d2
commit cb2988c9a4
6 changed files with 562 additions and 129 deletions

View File

@@ -12,25 +12,28 @@ class CPathFindSearch
public:
enum class EResult
{
Zero,
One,
Two,
Three,
Four
Success,
InvalidArea,
NoSourcePoint,
NoDestPoint,
NoPath
};
private:
CPFArea* x0_area;
rstl::reserved_vector<zeus::CVector3f, 16> x4_;
rstl::reserved_vector<zeus::CVector3f, 16> x4_waypoints;
u32 xc8_ = 0;
EResult xcc_result;
float xd0_f2;
float xd4_f1;
float xd8_ = 10.f;
u32 xdc_flags; // 0x2: flyer, 0x4: path-always-exists
float xd0_chHeight;
float xd4_chRadius;
float xd8_padding = 10.f;
u32 xdc_flags; // 0x2: flyer, 0x4: path-always-exists (swimmers)
u32 xe0_indexMask;
bool Search(rstl::reserved_vector<CPFRegion*, 4>& regs1, const zeus::CVector3f& p1,
rstl::reserved_vector<CPFRegion*, 4>& regs2, const zeus::CVector3f& p2);
public:
CPathFindSearch(CPFArea* area, u32 flags, u32 w2, float f1, float f2);
CPathFindSearch(CPFArea* area, u32 flags, u32 index, float chRadius, float chHeight);
EResult Search(const zeus::CVector3f& p1, const zeus::CVector3f& p2);
EResult FindClosestReachablePoint(const zeus::CVector3f& p1, zeus::CVector3f& p2) const;
};
}