Files
2026-03-19 20:55:56 -06:00

45 lines
1.4 KiB
C++

#ifndef _CPATHCAMERA
#define _CPATHCAMERA
#include "MetroidPrime/Cameras/CCameraSpline.hpp"
#include "MetroidPrime/Cameras/CGameCamera.hpp"
class CPathCamera : public CGameCamera {
public:
enum EInitialSplinePosition {
kISP_BallCamBasis,
kISP_Negative,
kISP_Positive,
kISP_ClampBasis,
};
CPathCamera(const TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
const CTransform4f& xf, bool active, const float lengthExtent, const float filterMag,
const float filterProportion, const float minEaseDist, const float maxEaseDist, const uint flags,
const EInitialSplinePosition initPos);
~CPathCamera() override;
void Accept(IVisitor& visitor) override;
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId sender, CStateManager& mgr) override;
void Think(float dt, CStateManager& mgr) override;
void Render(const CStateManager& mgr) const override;
void ProcessInput(const CFinalInput& input, CStateManager& mgr) override;
void Reset(const CTransform4f& xf, CStateManager& mgr) override;
CTransform4f MoveAlongSpline(float dt, CStateManager& mgr);
void AvoidDoorCollisions(CStateManager& mgr);
private:
CCameraSpline mSpline;
float mPos;
float mTime;
float mLengthExtent;
float mFilterMag;
float mFilterProportions;
EInitialSplinePosition mInitialPosition;
uint mFlags;
float mMinEaseDist;
float mMaxEaseDist;
};
#endif // _CPATHCAMERA