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

More CBallCamera and CCameraSpline work

This commit is contained in:
Jack Andersen
2017-10-12 21:19:22 -10:00
parent 651d0a27c2
commit 16f6307642
4 changed files with 378 additions and 18 deletions

View File

@@ -11,10 +11,12 @@ class CCameraSpline
friend class CBallCamera;
std::vector<zeus::CVector3f> x4_positions;
std::vector<TUniqueId> x14_;
std::vector<float> x24_;
std::vector<float> x24_t;
std::vector<zeus::CVector3f> x34_directions;
float x44_ = 0.f;
bool x48_ = false;
float x44_length = 0.f;
bool x48_closedLoop = false;
bool GetSurroundingPoints(int idx, rstl::reserved_vector<zeus::CVector3f, 4>& positions,
rstl::reserved_vector<zeus::CVector3f, 4>& directions) const;
public:
CCameraSpline(bool);
void CalculateKnots(TUniqueId, const std::vector<SConnection>&, CStateManager&);
@@ -22,7 +24,12 @@ public:
void Reset(int size);
void AddKnot(const zeus::CVector3f& pos, const zeus::CVector3f& dir);
void SetKnotPosition(int idx, const zeus::CVector3f& pos);
const zeus::CVector3f& GetKnotPosition(int idx) const;
float GetKnotT(int idx) const;
float CalculateSplineLength();
void UpdateSplineLength() { x44_length = CalculateSplineLength(); }
zeus::CTransform GetInterpolatedSplinePointByLength(float pos);
zeus::CVector3f GetInterpolatedSplinePointByTime(float time, float range);
};
}