mirror of
https://github.com/PrimeDecomp/prime.git
synced 2026-07-12 18:18:56 -07:00
45 lines
1.4 KiB
C++
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
|