mirror of https://github.com/PrimeDecomp/prime.git
Start mapping out PathFind related classes
This commit is contained in:
parent
6a3e0c0728
commit
60189e1b02
|
@ -215,6 +215,7 @@ else:
|
||||||
cflags_dolphin = [
|
cflags_dolphin = [
|
||||||
*cflags_base,
|
*cflags_base,
|
||||||
"-multibyte",
|
"-multibyte",
|
||||||
|
"-fp_contract off",
|
||||||
]
|
]
|
||||||
|
|
||||||
# Metrowerks library flags
|
# Metrowerks library flags
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
#ifndef _TSEGIDMAPVARIABLESIZE
|
||||||
|
#define _TSEGIDMAPVARIABLESIZE
|
||||||
|
|
||||||
|
#include <rstl/reserved_vector.hpp>
|
||||||
|
#include <rstl/pair.hpp>
|
||||||
|
|
||||||
|
template < typename T >
|
||||||
|
struct TSegIdMapVariableSize {
|
||||||
|
|
||||||
|
private:
|
||||||
|
rstl::reserved_vector< rstl::pair< signed char, signed char >, 100 > x4_links;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _TSEGIDMAPVARIABLESIZE
|
|
@ -0,0 +1,15 @@
|
||||||
|
#ifndef _CPFBITSET
|
||||||
|
#define _CPFBITSET
|
||||||
|
|
||||||
|
class CPFBitSet {
|
||||||
|
public:
|
||||||
|
void Clear();
|
||||||
|
void Add(int bit);
|
||||||
|
bool Test(int bit);
|
||||||
|
void Rmv(int bit);
|
||||||
|
|
||||||
|
private:
|
||||||
|
int mBits[16];
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _CPFBITSET
|
|
@ -0,0 +1,8 @@
|
||||||
|
#ifndef _CPATHFINDAREA
|
||||||
|
#define _CPATHFINDAREA
|
||||||
|
|
||||||
|
class CPFArea {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _CPATHFINDAREA
|
|
@ -0,0 +1,64 @@
|
||||||
|
#ifndef _CPATHFINDREGION
|
||||||
|
#define _CPATHFINDREGION
|
||||||
|
|
||||||
|
#include <Kyoto/Math/CVector3f.hpp>
|
||||||
|
#include <Kyoto/Math/CAABox.hpp>
|
||||||
|
|
||||||
|
class CPFRegion;
|
||||||
|
class CPFRegionData {
|
||||||
|
CPFRegionData();
|
||||||
|
|
||||||
|
void SetOpenLess(CPFRegion* region);
|
||||||
|
CPFRegion* GetOpenLess();
|
||||||
|
|
||||||
|
void SetOpenMore(CPFRegion* region);
|
||||||
|
CPFRegion* GetOpenMore();
|
||||||
|
|
||||||
|
float GetCost();
|
||||||
|
|
||||||
|
void* GetParent();
|
||||||
|
void Setup(CPFRegion* region, float cost);
|
||||||
|
void Setup(CPFRegion* region, float, float);
|
||||||
|
void GetG();
|
||||||
|
|
||||||
|
void SetBestPoint(const CVector3f& point);
|
||||||
|
const CVector3f& GetBestPoint() const;
|
||||||
|
|
||||||
|
void SetCookie(int cookie);
|
||||||
|
int GetCookie() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
float x0_bestPointDistSq;
|
||||||
|
CVector3f x4_bestPoint;
|
||||||
|
int x10_cookie;
|
||||||
|
float x14_cost;
|
||||||
|
float x18_g;
|
||||||
|
float x1c_h;
|
||||||
|
CPFRegion* x20_parent;
|
||||||
|
CPFRegion* x24_openLess;
|
||||||
|
CPFRegion* x28_openMore;
|
||||||
|
int x2c_parentLink;
|
||||||
|
};
|
||||||
|
|
||||||
|
class CPFArea;
|
||||||
|
class CPFNode;
|
||||||
|
class CPFLink;
|
||||||
|
class CPFRegion {
|
||||||
|
CPFRegion();
|
||||||
|
void Fixup(CPFArea& area, int& numNodes);
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint x0_numNodes;
|
||||||
|
CPFNode* x4_startNode;
|
||||||
|
uint x8_numLinks;
|
||||||
|
CPFLink* xc_startLink;
|
||||||
|
uint x10_flags;
|
||||||
|
float x14_height;
|
||||||
|
CVector3f x18_normal;
|
||||||
|
uint x24_regionIdx;
|
||||||
|
CVector3f x28_centroid;
|
||||||
|
CAABox x34_bounds;
|
||||||
|
CPFRegionData* x4c_data;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _CPATHFINDREGION
|
|
@ -0,0 +1,11 @@
|
||||||
|
#ifndef _CPATHFINDSEARCH
|
||||||
|
#define _CPATHFINDSEARCH
|
||||||
|
|
||||||
|
class CPFOpenList {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
class CPathFindSearch {
|
||||||
|
|
||||||
|
};
|
||||||
|
#endif // _CPATHFINDSEARCH
|
|
@ -36,8 +36,8 @@ void CGuiObject::Draw(const CGuiWidgetDrawParms& parms) const {
|
||||||
|
|
||||||
void CGuiObject::MoveInWorld(const CVector3f& offset) {
|
void CGuiObject::MoveInWorld(const CVector3f& offset) {
|
||||||
CVector3f pos;
|
CVector3f pos;
|
||||||
if (x64_parent != nullptr) {
|
if (GetParent() != nullptr) {
|
||||||
pos = x64_parent->RotateW2O(offset);
|
pos = GetParent()->RotateW2O(offset);
|
||||||
}
|
}
|
||||||
x4_localXF.AddTranslation(offset);
|
x4_localXF.AddTranslation(offset);
|
||||||
RecalculateTransforms();
|
RecalculateTransforms();
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include "MetroidPrime/CPhysicsActor.hpp"
|
#include "MetroidPrime/CPhysicsActor.hpp"
|
||||||
|
|
||||||
|
#include "Kyoto/Math/CTransform4f.hpp"
|
||||||
#include "Kyoto/Math/CloseEnough.hpp"
|
#include "Kyoto/Math/CloseEnough.hpp"
|
||||||
|
|
||||||
#include "rstl/math.hpp"
|
#include "rstl/math.hpp"
|
||||||
|
@ -93,8 +94,8 @@ CPhysicsState CPhysicsActor::GetPhysicsState() const {
|
||||||
|
|
||||||
void CPhysicsActor::SetPhysicsState(const CPhysicsState& state) {
|
void CPhysicsActor::SetPhysicsState(const CPhysicsState& state) {
|
||||||
SetTranslation(state.GetTranslation());
|
SetTranslation(state.GetTranslation());
|
||||||
const CQuaternion& quat = state.GetOrientationWR();
|
CQuaternion quat = state.GetOrientation();
|
||||||
const CVector3f& translation = GetTranslation();
|
CVector3f translation = GetTranslation();
|
||||||
SetTransform(quat.BuildTransform4f(translation));
|
SetTransform(quat.BuildTransform4f(translation));
|
||||||
SetConstantForceWR(state.GetConstantForceWR());
|
SetConstantForceWR(state.GetConstantForceWR());
|
||||||
SetAngularMomentumWR(state.GetAngularMomentumWR());
|
SetAngularMomentumWR(state.GetAngularMomentumWR());
|
||||||
|
@ -137,7 +138,7 @@ CMotionState CPhysicsActor::PredictAngularMotion(float dt) const {
|
||||||
|
|
||||||
CMotionState CPhysicsActor::PredictLinearMotion(float dt) const {
|
CMotionState CPhysicsActor::PredictLinearMotion(float dt) const {
|
||||||
CVector3f velocity = CalculateNewVelocityWR_UsingImpulses();
|
CVector3f velocity = CalculateNewVelocityWR_UsingImpulses();
|
||||||
CVector3f sum = x15c_force + x150_momentum;
|
CVector3f sum = GetConstantTotalForceWR();
|
||||||
|
|
||||||
return CMotionState(dt * velocity, CNUQuaternion(0.0f, CVector3f::Zero()),
|
return CMotionState(dt * velocity, CNUQuaternion(0.0f, CVector3f::Zero()),
|
||||||
dt * sum + x168_impulse, CAxisAngle::Identity());
|
dt * sum + x168_impulse, CAxisAngle::Identity());
|
||||||
|
@ -190,7 +191,6 @@ void CPhysicsActor::AddMotionState(const CMotionState& state) {
|
||||||
x108_angularMomentum += state.GetAngularMomentum();
|
x108_angularMomentum += state.GetAngularMomentum();
|
||||||
|
|
||||||
ComputeDerivedQuantities();
|
ComputeDerivedQuantities();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CPhysicsActor::WillMove(const CStateManager& mgr) {
|
bool CPhysicsActor::WillMove(const CStateManager& mgr) {
|
||||||
|
|
Loading…
Reference in New Issue