mirror of https://github.com/AxioDL/metaforce.git
51 lines
1.2 KiB
C++
51 lines
1.2 KiB
C++
#ifndef __URDE_CPATHCAMERA_HPP__
|
|
#define __URDE_CPATHCAMERA_HPP__
|
|
|
|
#include "CGameCamera.hpp"
|
|
#include "CCameraSpline.hpp"
|
|
|
|
namespace urde
|
|
{
|
|
|
|
class CPathCamera : public CGameCamera
|
|
{
|
|
public:
|
|
enum class EInitialSplinePosition
|
|
{
|
|
BallCamBasis,
|
|
Negative,
|
|
Positive,
|
|
ClampBasis
|
|
};
|
|
private:
|
|
|
|
CCameraSpline x188_spline;
|
|
float x1d4_pos = 0.f;
|
|
float x1d8_time = 0.f;
|
|
float x1dc_lengthExtent;
|
|
float x1e0_;
|
|
float x1e4_;
|
|
EInitialSplinePosition x1e8_initPos;
|
|
u32 x1ec_flags;
|
|
float x1f0_;
|
|
float x1f4_;
|
|
public:
|
|
|
|
CPathCamera(TUniqueId, std::string_view name, const CEntityInfo& info,
|
|
const zeus::CTransform& xf, bool, float, float, float,
|
|
float, float, u32, EInitialSplinePosition);
|
|
|
|
void Accept(IVisitor&);
|
|
void AcceptScriptMsg(EScriptObjectMessage, TUniqueId, CStateManager&);
|
|
void Think(float, CStateManager&);
|
|
void Render(const CStateManager&) const {}
|
|
void ProcessInput(const CFinalInput&, CStateManager& mgr);
|
|
void Reset(const zeus::CTransform&, CStateManager& mgr);
|
|
zeus::CTransform MoveAlongSpline(float, CStateManager&);
|
|
void ClampToClosedDoor(CStateManager&);
|
|
};
|
|
|
|
}
|
|
|
|
#endif // __URDE_CPATHCAMERA_HPP__
|