prime/include/MetroidPrime/Cameras/CPathCamera.hpp

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(TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
const CTransform4f& xf, bool active, float lengthExtent, float filterMag,
float filterProportion, float minEaseDist, float maxEaseDist, u32 flags,
EInitialSplinePosition initPos);
~CPathCamera();
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 ClampToClosedDoor(CStateManager& mgr);
private:
CCameraSpline x188_spline;
float x1d4_pos;
float x1d8_time;
float x1dc_lengthExtent;
float x1e0_filterMag;
float x1e4_filterProportion;
EInitialSplinePosition x1e8_initPos;
u32 x1ec_flags;
float x1f0_minEaseDist;
float x1f4_maxEaseDist;
};
#endif // _CPATHCAMERA